<?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>51664</bug_id>
          
          <creation_ts>2010-12-27 18:20:33 -0800</creation_ts>
          <short_desc>Refactoring: Extract RoundedIntRect class</short_desc>
          <delta_ts>2011-01-18 17:11:19 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>ossy</cc>
    
    <cc>rhodovan.u-szeged</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>327168</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-27 18:20:33 -0800</bug_when>
    <thetext>a quad of IntSize is often used to represent the radii of a rect. 
Extracting it to the class will simplify the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327170</commentid>
    <comment_count>1</comment_count>
      <attachid>77532</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-27 18:46:59 -0800</bug_when>
    <thetext>Created attachment 77532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327172</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-27 19:04:14 -0800</bug_when>
    <thetext>Attachment 77532 did not build on chromium:
Build output: http://queues.webkit.org/results/7211223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327176</commentid>
    <comment_count>3</comment_count>
      <attachid>77534</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-27 20:01:29 -0800</bug_when>
    <thetext>Created attachment 77534
try to fix chromium buid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329381</commentid>
    <comment_count>4</comment_count>
      <attachid>77962</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-04 19:30:21 -0800</bug_when>
    <thetext>Created attachment 77962
updates to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332238</commentid>
    <comment_count>5</comment_count>
      <attachid>78511</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-11 03:32:01 -0800</bug_when>
    <thetext>Created attachment 78511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332239</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-11 03:32:55 -0800</bug_when>
    <thetext>Hi Simon, could you take a look?
I&apos;d like to land this before other box-shadow fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332392</commentid>
    <comment_count>7</comment_count>
      <attachid>78511</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-11 09:21:31 -0800</bug_when>
    <thetext>Comment on attachment 78511
Patch

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

&gt; Source/WebCore/platform/graphics/IntRectRadii.cpp:43
&gt; +void IntRectRadii::constrainFor(const IntRect&amp; rect)
&gt; +{
&gt; +    // Constrain corner radii using CSS3 rules:
&gt; +    // http://www.w3.org/TR/css3-background/#the-border-radius

I&apos;m not sure that CSS-specific behavior belongs in a utility class like this. Is this just one possible way of constraining the radii?

&gt; Source/WebCore/platform/graphics/IntRectRadii.h:38
&gt; +class IntRectRadii {
&gt; +public:
&gt; +    IntRectRadii() {}

I wonder if it might not be better to have a RoundedIntRect that includes the rect and the radii. Maybe it could inherit from IntRect?

&gt; Source/WebCore/rendering/RenderObject.cpp:1030
&gt; +        graphicsContext-&gt;addRoundedRectClip(halfBorderRect, 
&gt; +                                            style-&gt;getInnerBorderRadiiForRectWithBorderWidths(halfBorderRect, 
&gt; +                                                                                              style-&gt;borderLeftWidth() / 2, 
&gt; +                                                                                              style-&gt;borderBottomWidth() / 2, 
&gt; +                                                                                              style-&gt;borderLeftWidth() / 2, 
&gt; +                                                                                              style-&gt;borderRightWidth() / 2));

We don&apos;t normally indent like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334211</commentid>
    <comment_count>8</comment_count>
      <attachid>78918</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-14 02:27:18 -0800</bug_when>
    <thetext>Created attachment 78918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334214</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-14 02:32:16 -0800</bug_when>
    <thetext>Hi Simon, thank you for reviewing and I&apos;m sorry for my slow response.
I updated the patch to address the feedback. Could you take another look?

(In reply to comment #7)
&gt; (From update of attachment 78511 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78511&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/IntRectRadii.cpp:43
&gt; &gt; +void IntRectRadii::constrainFor(const IntRect&amp; rect)
&gt; &gt; +{
&gt; &gt; +    // Constrain corner radii using CSS3 rules:
&gt; &gt; +    // http://www.w3.org/TR/css3-background/#the-border-radius
&gt; 
&gt; I&apos;m not sure that CSS-specific behavior belongs in a utility class like this. Is this just one possible way of constraining the radii?
Sure. Moved to RenderStyle.cpp

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/IntRectRadii.h:38
&gt; &gt; +class IntRectRadii {
&gt; &gt; +public:
&gt; &gt; +    IntRectRadii() {}
&gt; 
&gt; I wonder if it might not be better to have a RoundedIntRect that includes the rect and the radii. Maybe it could inherit from IntRect?
It makes sense. I extracted RoundedIntRect. The radii are also grouped int RoundedIntRect::Radii
class because there are some cases that handle radii individually.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:1030
&gt; &gt; +        graphicsContext-&gt;addRoundedRectClip(halfBorderRect, 
&gt; &gt; +                                            style-&gt;getInnerBorderRadiiForRectWithBorderWidths(halfBorderRect, 
&gt; &gt; +                                                                                              style-&gt;borderLeftWidth() / 2, 
&gt; &gt; +                                                                                              style-&gt;borderBottomWidth() / 2, 
&gt; &gt; +                                                                                              style-&gt;borderLeftWidth() / 2, 
&gt; &gt; +                                                                                              style-&gt;borderRightWidth() / 2));
&gt; 
&gt; We don&apos;t normally indent like this.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334220</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-14 02:44:57 -0800</bug_when>
    <thetext>Attachment 78918 did not build on chromium:
Build output: http://queues.webkit.org/results/7593027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334225</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-14 03:01:32 -0800</bug_when>
    <thetext>Attachment 78918 did not build on win:
Build output: http://queues.webkit.org/results/7523040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335148</commentid>
    <comment_count>12</comment_count>
      <attachid>79127</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-16 22:46:36 -0800</bug_when>
    <thetext>Created attachment 79127
trying to fix the build break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335231</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 03:30:51 -0800</bug_when>
    <thetext>Simon, if you have time, would you be able to take a look again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335378</commentid>
    <comment_count>14</comment_count>
      <attachid>79127</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-17 10:19:43 -0800</bug_when>
    <thetext>Comment on attachment 79127
trying to fix the build break

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

&gt; Source/WebCore/platform/graphics/RoundedIntRect.h:48
&gt; +        Radii(const IntSize&amp; topLeft, const IntSize&amp; topRight, const IntSize&amp; bottomLeft, const IntSize&amp; bottomRight)
&gt; +            : m_topLeft(topLeft)
&gt; +            , m_topRight(topRight)
&gt; +            , m_bottomLeft(bottomLeft)
&gt; +            , m_bottomRight(bottomRight)
&gt; +        {
&gt; +        }
&gt; +
&gt; +        void setTopLeft(const IntSize&amp; size) { m_topLeft = size; }

I think you should include x(), y(), width(), height(), right() and bottom() here just as IntRect has.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335692</commentid>
    <comment_count>15</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 00:59:25 -0800</bug_when>
    <thetext>Committed r76004: &lt;http://trac.webkit.org/changeset/76004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335702</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-01-18 01:25:20 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Committed r76004: &lt;http://trac.webkit.org/changeset/76004&gt;

It broke the build on all GTK bots. It seems you missed
adding the following files to the GTK buildsystem:

platform/graphics/RoundedIntRect.cpp
platform/graphics/RoundedIntRect.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335749</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 04:27:07 -0800</bug_when>
    <thetext>Committed r76016: &lt;http://trac.webkit.org/changeset/76016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335750</commentid>
    <comment_count>18</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 04:28:44 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Committed r76016: &lt;http://trac.webkit.org/changeset/76016&gt;
This commit rolled the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335763</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 04:47:40 -0800</bug_when>
    <thetext>Rolled at http://trac.webkit.org/changeset/76016 due to pixel test failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335787</commentid>
    <comment_count>20</comment_count>
      <attachid>79270</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 05:48:57 -0800</bug_when>
    <thetext>Created attachment 79270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335792</commentid>
    <comment_count>21</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 05:56:47 -0800</bug_when>
    <thetext>Hi Simon, I found pixel test failures and other redness on the buildbot so rolled the last patch out.
Now I uploaded revised one. Would you able to take it again?

This addresses following isssues:

- Added missing file for WebCore.vcproj and GNUMakefile.am
- Added missing null check (which caused a crash on some release builds) in paintBoxShadow().
   Extracting includeLogicalEdges() causes null-access.
- Shadow radii computation was broken, again in paintBoxSadow(), which causes
   pixel test failures with 0 tolerance. So I fixed it and now they passes.

Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335840</commentid>
    <comment_count>22</comment_count>
      <attachid>79270</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-18 08:39:41 -0800</bug_when>
    <thetext>Comment on attachment 79270
Patch

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

Nice work!

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:546
&gt; +    path.addRoundedRect(rect.rect(), rect.radii().topLeft(), rect.radii().topRight(), rect.radii().bottomLeft(), rect.radii().bottomRight());

It would nice if Path::addRoundedRect get the &quot;const RoundedIntRect&amp;&quot; as parameter, and extract the values from there.

Caller sites would look better, maybe.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:556
&gt; +    path.addRoundedRect(rect.rect(), rect.radii().topLeft(), rect.radii().topRight(), rect.radii().bottomLeft(), rect.radii().bottomRight());

Would affect here too.

&gt; Source/WebCore/platform/graphics/RoundedIntRect.h:87
&gt; +    void move(const IntSize size) { m_rect.move(size); }

const IntSize&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336219</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 16:57:55 -0800</bug_when>
    <thetext>Simon, Antonio, thank you for taking the review!

&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:546
&gt; &gt; +    path.addRoundedRect(rect.rect(), rect.radii().topLeft(), rect.radii().topRight(), rect.radii().bottomLeft(), rect.radii().bottomRight());
&gt; 
&gt; It would nice if Path::addRoundedRect get the &quot;const RoundedIntRect&amp;&quot; as parameter, and extract the values from there.
&gt; 
&gt; Caller sites would look better, maybe.
I noticed that Path has only float-based APIs. So I think we should have RoundedFloatRect
for this purpose. I filed Bug 52685 and will take this.

&gt; &gt; Source/WebCore/platform/graphics/RoundedIntRect.h:87
&gt; &gt; +    void move(const IntSize size) { m_rect.move(size); }
&gt; 
&gt; const IntSize&amp;
Will fix before land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336225</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 17:11:19 -0800</bug_when>
    <thetext>Committed r76083: &lt;http://trac.webkit.org/changeset/76083&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77532</attachid>
            <date>2010-12-27 18:46:59 -0800</date>
            <delta_ts>2010-12-27 20:01:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51664-20101228114657.patch</filename>
            <type>text/plain</type>
            <size>96294</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxMWZlZGZiZWRhMGY2ZGM4ZjVhMDBjOWQ2ZTZlMzczMmIyZWRjYzlkLi40MGJhOTZlMTk4M2I5
OTMxZGMwNDJhY2YwODdlM2MxY2E3MWM2MzIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC01MjcsNiArNTI3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBcCiAJcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAgXAorCXBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5j
cHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggN2M2ZTNlNTlhNGQ0NWZkZjk5YTIyYWY0MDJmOTlhMjhiZDQzMWE1MC4u
YTlhY2E5NWJjMjJiNjA4MGYxNzcxN2NjODMzODliM2ZhOTYwZjEyNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzQz
LDYgKzEzNDMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0UmFkaWkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMWRkYmI0ZDIxZGFmY2YxYmUwNTdkYjFmODMwY2UzYmYxNGY3YWVmZC4u
NjdjZjhmYTU2Y2I2OTk3MGE2ZDRlODMxNmQyODhlMWM2YzFkODkyMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAor
MjAxMC0xMi0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZzogRXh0
cmFjdCBJbnRSZWN0UmFkaWkgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUxNjY0CisKKyAgICAgICAgSW50UmVjdFJhZGlpIGlzIGEgcXVhZCBv
ZiBJbnRTaXplIGZvciB0aGUgcmVjdGFuZ2xlIHJhZGlpLAorICAgICAgICB3aGljaCBpcyBvZnRl
biBtYW5pcHVsYXRlZCBhdCBvbmNlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RS
YWRpaS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjppc1plcm8p
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpjb25zdHJhaW5Gb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
UmVjdFJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0UmFkaWkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFk
aWk6OkludFJlY3RSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldFRv
cExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRUb3BSaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlp
Ojp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmJvdHRvbUxlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpib3R0b21SaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRS
ZWN0UmFkaWk6OnNocmluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFRleHRGaWVsZEludGVybmFsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
U2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bkNFOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJEYXRhOjpjYWxjUmFkaWkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRJbm5lckJv
cmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dEJvcmRlclJhZGl1cyk6CisKIDIwMTAtMTItMjcgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0u
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRmNGI0NjNm
MDBmMTczMmI0M2YzODIzZThjOGVkYjZjMjRlY2MzYjUuLmE5N2M3YmJjNDNlNjIxNWRjNDU4NzEz
OWMyZWY4MGJkZTRiZjQxZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yOTQ0LDYgKzI5NDQsOCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRS
ZWN0LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemVIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBhYWM3NjBhMmI3MmQ4MTg0OGE3YzgyNDgzYzQyOWFi
ZDhkOTA2OTY5Li5hOTg3ZGFmZDA1YTdkMzliYmJmODMzYzc3NDJhNDk0NzA3Zjk5YWJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTEyMDAsNiArMTIwMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdFJhZGlpLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIFwKQEAgLTIxMjUsNiArMjEyNiw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmgg
XAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5oIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDMyM2U1MjZhNzNmOWY4M2FhYWE4YTY0NjE5MTA0
ZWRkM2QwNDMzZjIuLmEwZTRiMzk0ODdiOGY5MTU0YzQ3OTE2MzI4OTk5NTQwMmVlYzNhNDIgMTAw
NzU1Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjY1NDEsNiArMjY1NDEsMTQg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXEludFJlY3RSYWRpaS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbnRS
ZWN0UmFkaWkuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEludFNpemUuaCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTFkNmY2
N2U3N2M5NWU3M2U4N2Q2MGJmYmRkMTZhNTlkYzVhOWE0Mi4uYjVkYTgxMDdjMzQ3ODY5MGVmYTgz
OGVlOTIyZDJmNTU2NDFmNWI1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTMxMDIsNiArMzEwMiw4IEBACiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVD
RSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxl
ck1hYy5tbSAqLzsgfTsKIAkJQTczNTJDMTkwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi87IH07CiAJCUE3
MzUyQzFBMEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczNTJDMTgwQjFCQjg5RDAwQTk4NkQw
IC8qIFJlbmRlclNWR0Jsb2NrLmggKi87IH07CisJCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAv
KiBJbnRSZWN0UmFkaWkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIEludFJlY3RSYWRpaS5jcHAgKi87
IH07CisJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZEMTJDOTdCRkUw
MDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5
NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NTEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKIAkJQTc1RThCODgwRTFE
RTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3Bw
ICovOyB9OwpAQCAtOTQzNCw2ICs5NDM2LDggQEAKIAkJQTcxQTcwQzkxMUFGQjAyMDAwOTg5RDZE
IC8qIEhUTUxNZXRlckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxNZXRl
ckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM1MkMxNzBCMUJC
ODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTczNTJDMTgwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVj
dFJhZGlpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RS
YWRpaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0Y5NUZEMTJDOTdCRkUw
MDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50UmVjdFJhZGlpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0
MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1
RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRkVCbGVuZC5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZFQmxlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNjUsNiArMTcyNjksOCBAQAogCQkJ
CUU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLywKIAkJCQlCMjc1
MzU0NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5jcHAgKi8sCiAJCQkJQjI3NTM1NDYwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuaCAqLywKKwkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFB
RjkgLyogSW50UmVjdFJhZGlpLmNwcCAqLywKKwkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkg
LyogSW50UmVjdFJhZGlpLmggKi8sCiAJCQkJQjI3NTM1NDcwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemUuaCAqLywKIAkJCQlCMjc1MzU0ODBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2gu
aCAqLywKIAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICov
LApAQCAtMjIyMjIsNiArMjIyMjgsNyBAQAogCQkJCTZFQkYwRTQ5MTJBODkyNjEwMERCMTcwOSAv
KiBPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgw
MERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNzcx
MkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVjdFJhZGlpLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI0ODk0LDYgKzI0OTAxLDcgQEAKIAkJCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkg
LyogT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFQkYwRTU0MTJBODky
OTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUJG
MEU3NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIEludFJlY3RSYWRpaS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA5NmE5MmZiNjA0ZGI2YTgwMjM3NTAxZGNiNzYzY2FmOTlmNjg1Mzg2Li5iZjVj
N2Y4NThiY2UxZjllNmRiMTY2MWYwZGFjMDdlOTU2OWI5ZTUzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiSW50UmVjdFJhZGlpLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTUyOSwyNSArNTMwLDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTCiAgICAgICAg
IGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0
Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodCwKLSAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVj
dENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdFJhZGlpJiByYWRpaSkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQYXRo
IHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
cmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJh
ZGlpLmJvdHRvbVJpZ2h0KCkpOwogICAgIGNsaXAocGF0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0
IEludFNpemUmIGJvdHRvbVJpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3Vu
ZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0UmFkaWkmIHJhZGlpKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
dGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0
LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwg
cmFkaWkuYm90dG9tUmlnaHQoKSk7CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIApAQCAtNTc4LDYg
KzU3NywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBHZW5lcmF0b3ImIGdlbmVyYXRvcikKICAgICBnZW5lcmF0b3IuZmlsbCh0aGlzLCBy
ZWN0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0UmFkaWkmIHJhZGlpLCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBmaWxsUm91bmRlZFJlY3QocmVjdCwg
cmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJh
ZGlpLmJvdHRvbVJpZ2h0KCksIGNvbG9yLCBjb2xvclNwYWNlKTsKK30KKwogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24pCiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0
ZU9wZXJhdGlvbjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGE0YTI2OTVhNTI5ZmEzYWQ4MzM1NTViOGQyNTMyNGE3Y2JiODRiMjkuLmM1NjRjOGZk
Yjk3MjhiOWE1YWEzOTJkMzMwZjAxYmM5MDU4ODVlOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTIxLDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBHZW5lcmF0b3I7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlOwogICAgIGNsYXNzIEltYWdlQnVmZmVyOworICAgIGNsYXNzIEludFJl
Y3RSYWRpaTsKICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOwogICAgIGNsYXNzIFRleHRSdW47CkBAIC0yODMsNiArMjg0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiwgR2VuZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29u
c3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0UmFkaWkmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OwogCiAgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMTEs
MTAgKzMxMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKIAogICAgICAgICB2b2lk
IGNsaXAoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3RDbGlw
KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0
b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHQpOworICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdFJhZGlpJik7CiAgICAgICAgIHZvaWQgYWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoY29uc3QgSW50UmVjdCYsIGludCB0aGlja25lc3MpOwogICAgICAgICB2b2lkIGNsaXBPdXQo
Y29uc3QgSW50UmVjdCYpOwotICAgICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsK
KyAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFJlY3RSYWRpaSYpOwogICAgICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29u
c3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7CiAgICAgICAgIHZvaWQgY2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTgxM2RjNGU0
MjEzMmMxNzFiNzkxYTgzOTAxNWUwNzVlNWRmNTRjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
dFJlY3RSYWRpaS5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEludFJlY3RSYWRpaTo6aXNaZXJvKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BMZWZ0LmlzWmVybygpICYmIG1fdG9wUmlnaHQuaXNa
ZXJvKCkgJiYgbV9ib3R0b21MZWZ0LmlzWmVybygpICYmIG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7
Cit9CisKK3ZvaWQgSW50UmVjdFJhZGlpOjpjb25zdHJhaW5Gb3IoY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICAvLyBDb25zdHJhaW4gY29ybmVyIHJhZGlpIHVzaW5nIENTUzMgcnVsZXM6Cisg
ICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJh
ZGl1cworICAgIAorICAgIGZsb2F0IGZhY3RvciA9IDE7CisgICAgdW5zaWduZWQgcmFkaWlTdW07
CisKKyAgICAvLyB0b3AKKyAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Rv
cExlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90b3BSaWdodC53aWR0aCgp
KTsgLy8gQ2FzdHMgdG8gYXZvaWQgaW50ZWdlciBvdmVyZmxvdy4KKyAgICBpZiAocmFkaWlTdW0g
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC53aWR0aCgpKSkKKyAgICAgICAgZmFjdG9yID0g
c3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFj
dG9yKTsKKworICAgIC8vIGJvdHRvbQorICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fYm90dG9tTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2JvdHRv
bVJpZ2h0LndpZHRoKCkpOworICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyZWN0LndpZHRoKCkpKQorICAgICAgICBmYWN0b3IgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxm
bG9hdD4ocmVjdC53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAgIAorICAgIC8vIGxl
ZnQKKyAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RvcExlZnQuaGVpZ2h0
KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fYm90dG9tTGVmdC5oZWlnaHQoKSk7CisgICAg
aWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QuaGVpZ2h0KCkpKQorICAg
ICAgICBmYWN0b3IgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC5oZWlnaHQoKSkg
LyByYWRpaVN1bSwgZmFjdG9yKTsKKyAgICAKKyAgICAvLyByaWdodAorICAgIHJhZGlpU3VtID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpOworICAgIGlmIChyYWRpaVN1bSA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSkKKyAgICAgICAgZmFjdG9yID0gc3Rk
OjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KCkpIC8gcmFkaWlTdW0sIGZhY3Rv
cik7CisgICAgCisgICAgLy8gU2NhbGUgYWxsIHJhZGlpIGJ5IGYgaWYgbmVjZXNzYXJ5LgorICAg
IGlmIChmYWN0b3IgPCAxKSB7CisgICAgICAgIC8vIElmIGVpdGhlciByYWRpdXMgb24gYSBjb3Ju
ZXIgYmVjb21lcyB6ZXJvLCByZXNldCBib3RoIHJhZGlpIG9uIHRoYXQgY29ybmVyLgorICAgICAg
ICBtX3RvcExlZnQuc2NhbGUoZmFjdG9yKTsKKyAgICAgICAgaWYgKCFtX3RvcExlZnQud2lkdGgo
KSB8fCAhbV90b3BMZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6
ZSgpOworICAgICAgICBtX3RvcFJpZ2h0LnNjYWxlKGZhY3Rvcik7CisgICAgICAgIGlmICghbV90
b3BSaWdodC53aWR0aCgpIHx8ICFtX3RvcFJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgbV90
b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7
CisgICAgICAgIGlmICghbV9ib3R0b21MZWZ0LndpZHRoKCkgfHwgIW1fYm90dG9tTGVmdC5oZWln
aHQoKSkKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV9i
b3R0b21SaWdodC5zY2FsZShmYWN0b3IpOworICAgICAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lk
dGgoKSB8fCAhbV9ib3R0b21SaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIG1fYm90dG9tUmln
aHQgPSBJbnRTaXplKCk7CisgICAgfQorCit9CisKK3ZvaWQgSW50UmVjdFJhZGlpOjpleHBhbmQo
aW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdp
ZHRoKQoreworICAgIG1fdG9wTGVmdC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX3RvcExlZnQud2lk
dGgoKSArIGxlZnRXaWR0aCkpOworICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3RkOjptYXgoMCwg
bV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKworICAgIG1fdG9wUmlnaHQuc2V0V2lk
dGgoc3RkOjptYXgoMCwgbV90b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgIG1f
dG9wUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BX
aWR0aCkpOworCisgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4KDAsIG1fYm90dG9t
TGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV9ib3R0b21MZWZ0LnNldEhlaWdodChz
dGQ6Om1heCgwLCBtX2JvdHRvbUxlZnQuaGVpZ2h0KCkgKyBib3R0b21XaWR0aCkpOworCisgICAg
bV9ib3R0b21SaWdodC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX2JvdHRvbVJpZ2h0LndpZHRoKCkg
KyByaWdodFdpZHRoKSk7CisgICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQoc3RkOjptYXgoMCwg
bV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Cit9CisKK3ZvaWQgSW50UmVj
dFJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IEludFJlY3RSYWRpaSYgZWRnZXMsIGJv
b2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAgaWYgKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsK
KyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVk
Z2VzLmJvdHRvbUxlZnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3BSaWdodCA9
IGVkZ2VzLnRvcFJpZ2h0KCk7CisgICAgICAgIG1fdG9wTGVmdCA9IGVkZ2VzLnRvcExlZnQoKTsK
KyAgICB9CisKKyAgICBpZiAoaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKKyAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBlZGdlcy50b3BSaWdodCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0b21M
ZWZ0KCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBlZGdlcy5ib3R0b21SaWdodCgpOworICAg
IH0KKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0UmFkaWkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzExMDU0ZTg0MDYyZWJjNThhM2U4Zjk4NmY5
MDUzMjY4NTk1N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0UmFkaWkuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJbnRSZWN0UmFkaWlfaAorI2RlZmluZSBJbnRSZWN0UmFkaWlfaAorCisjaW5j
bHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEludFJlY3Q7
CisKK2NsYXNzIEludFJlY3RSYWRpaSB7CitwdWJsaWM6CisgICAgSW50UmVjdFJhZGlpKCkge30K
KyAgICBJbnRSZWN0UmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRv
bVJpZ2h0KQorICAgICAgICA6IG1fdG9wTGVmdCh0b3BMZWZ0KQorICAgICAgICAsIG1fdG9wUmln
aHQodG9wUmlnaHQpCisgICAgICAgICwgbV9ib3R0b21MZWZ0KGJvdHRvbUxlZnQpCisgICAgICAg
ICwgbV9ib3R0b21SaWdodChib3R0b21SaWdodCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBz
ZXRUb3BMZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90b3BMZWZ0ID0gc2l6ZTsgfQorICAg
IHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6
ZTsgfQorICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90
dG9tTGVmdCA9IHNpemU7IH0KKyAgICB2b2lkIHNldEJvdHRvbVJpZ2h0KGNvbnN0IEludFNpemUm
IHNpemUpIHsgbV9ib3R0b21SaWdodCA9IHNpemU7IH0KKyAgICBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9CisgICAgY29uc3QgSW50U2l6ZSYgdG9w
UmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CisgICAgY29uc3QgSW50U2l6ZSYg
Ym90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsgfQorICAgIGNvbnN0IElu
dFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQorCisg
ICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKworICAgIHZvaWQgY29uc3RyYWluRm9yKGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgSW50UmVjdFJhZGlp
JiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgdm9pZCBleHBhbmQoaW50IHRvcFdp
ZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoKTsKKyAg
ICB2b2lkIGV4cGFuZChpbnQgc2l6ZSkgeyBleHBhbmQoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7
IH0KKyAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxl
ZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRvbVdpZHRo
LCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KKyAgICB2b2lkIHNocmluayhpbnQgc2l6ZSkg
eyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKworcHJpdmF0ZToKKyAgICBJbnRT
aXplIG1fdG9wTGVmdDsKKyAgICBJbnRTaXplIG1fdG9wUmlnaHQ7CisgICAgSW50U2l6ZSBtX2Jv
dHRvbUxlZnQ7CisgICAgSW50U2l6ZSBtX2JvdHRvbVJpZ2h0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW50UmVjdFJhZGlpX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDVkZTk4ZTcxMTgwODgxNzY4YjJlZDZmYjkyMDM3YzY1N2ZhMjlkYTcuLjQ0OTIz
MzY4MTY1Zjc2MTkwZWQ2NTdhODhiZWE1ZmVmOTc0N2I5MTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtMTA2MiwxNCArMTA2Miw4IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHND
bGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICB9CiAgICAgSW50
UmVjdCBjbGlwUmVjdChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KHR4LCB0eSkgOiBv
dmVyZmxvd0NsaXBSZWN0KHR4LCB0eSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7
Ci0gICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIEludFNpemUg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICBJbnRS
ZWN0IGJvcmRlclJlY3QgPSBJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotICAg
ICAgICBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwg
dG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLQotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0gICAgfQotICAgIAorICAgIGlmIChzdHlsZSgp
LT5oYXNCb3JkZXJSYWRpdXMoKSkKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpLCBzdHlsZSgpLT5n
ZXRCb3JkZXJSYWRpaUZvclJlY3QoSW50UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSkp
OwogICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBk
NWZiMTNlNDEyNTczOWNmMzNhYzBhYmMxNGNiNGQzYjE3OWFmZjhkLi5hNzRlYTY0NzJmZTZjNGIw
NmJhZTUxNDAxNzIxOWEyYjE2OWY5YWYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCkBAIC01MzQsMjYgKzUzNCwyNSBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjbwogCiAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKIAotICAgICAgICBJbnRTaXplIHRvcExl
ZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgc3R5bGUoKS0+
Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0
b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgIEludFJlY3RSYWRpaSByYWRpaSA9IHN0eWxl
KCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0KTsKIAogICAgICAgICBpZiAoIWlu
Y2x1ZGVMZWZ0RWRnZSkgewotICAgICAgICAgICAgdG9wTGVmdCA9IEludFNpemUoKTsKKyAgICAg
ICAgICAgIHJhZGlpLnNldFRvcExlZnQoSW50U2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChib3gt
PmlzSG9yaXpvbnRhbCgpKQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBJbnRTaXplKCk7
CisgICAgICAgICAgICAgICAgcmFkaWkuc2V0Qm90dG9tTGVmdChJbnRTaXplKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAg
ICAgICAgICAgIHJhZGlpLnNldFRvcFJpZ2h0KEludFNpemUoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmICghaW5jbHVkZVJpZ2h0RWRnZSkgewogICAgICAgICAgICAgaWYgKGJv
eC0+aXNIb3Jpem9udGFsKCkpCi0gICAgICAgICAgICAgICAgdG9wUmlnaHQgPSBJbnRTaXplKCk7
CisgICAgICAgICAgICAgICAgcmFkaWkuc2V0VG9wUmlnaHQoSW50U2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgICAg
ICAgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgICAgICAgICAgcmFkaWkuc2V0
Qm90dG9tTGVmdChJbnRTaXplKCkpOworICAgICAgICAgICAgcmFkaWkuc2V0Qm90dG9tUmlnaHQo
SW50U2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBi
b3R0b21SaWdodCk7CisgICAgICAgIGNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJS
ZWN0LCByYWRpaSk7CiAgICAgICAgIGNsaXBwZWRUb0JvcmRlclJhZGl1cyA9IHRydWU7CiAgICAg
fQogCkBAIC0xMDExLDE0ICsxMDEwLDEzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAg
Ym9vbCByZW5kZXJSaWdodCA9IHJpZ2h0U3R5bGUgPiBCSElEREVOICYmICFyaWdodFRyYW5zcGFy
ZW50ICYmICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgYm9v
bCByZW5kZXJCb3R0b20gPSBib3R0b21TdHlsZSA+IEJISURERU4gJiYgIWJvdHRvbVRyYW5zcGFy
ZW50ICYmIChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgIGJv
b2wgcmVuZGVyUmFkaWkgPSBmYWxzZTsKICAgICBQYXRoIHJvdW5kZWRQYXRoOwotICAgIEludFNp
emUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OworICAgIEludFJl
Y3RSYWRpaSBib3JkZXI7CiAgICAgSW50UmVjdCBib3JkZXJSZWN0KHR4LCB0eSwgdywgaCk7CiAK
ICAgICBpZiAoc3R5bGUtPmhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIEludFNpemUgdG9w
TGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0
UmFkaXVzOwotICAgICAgICBzdHlsZS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3Qs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7CisgICAgICAgIGJvcmRlci5pbmNsdWRlTG9naWNhbEVkZ2VzKHN0eWxlLT5n
ZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKIAogICAgICAgICBpbnQgbGVmdFdpZHRoID0gKCFob3Jpem9udGFs
IHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDog
MDsKICAgICAgICAgaW50IHJpZ2h0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpID8gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA6IDA7CkBAIC0xMDI2LDQ3
ICsxMDI0LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCBib3R0b21X
aWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IHN0eWxlLT5i
b3JkZXJCb3R0b21XaWR0aCgpIDogMDsKIAogICAgICAgICBJbnRSZWN0IGlubmVyQm9yZGVyUmVj
dCA9IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxl
ZnRXaWR0aCwgcmlnaHRXaWR0aCk7Ci0gICAgICAgIEludFNpemUgaW5uZXJUb3BMZWZ0UmFkaXVz
LCBpbm5lclRvcFJpZ2h0UmFkaXVzLCBpbm5lckJvdHRvbUxlZnRSYWRpdXMsIGlubmVyQm90dG9t
UmlnaHRSYWRpdXM7CisgICAgICAgIEludFJlY3RSYWRpaSBpbm5lcjsKKyAgICAgICAgaW5uZXIu
aW5jbHVkZUxvZ2ljYWxFZGdlcyhzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRo
Qm9yZGVyV2lkdGhzKGlubmVyQm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0
V2lkdGgsIHJpZ2h0V2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhv
cml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KTsKICAgICAgICAgCi0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdp
dGhCb3JkZXJXaWR0aHMoaW5uZXJCb3JkZXJSZWN0LCB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxl
ZnRXaWR0aCwgcmlnaHRXaWR0aCwgaW5uZXJUb3BMZWZ0UmFkaXVzLCBpbm5lclRvcFJpZ2h0UmFk
aXVzLCBpbm5lckJvdHRvbUxlZnRSYWRpdXMsIGlubmVyQm90dG9tUmlnaHRSYWRpdXMpOwotCi0g
ICAgICAgIEludFNpemUgaW5uZXJUb3BMZWZ0LCBpbm5lclRvcFJpZ2h0LCBpbm5lckJvdHRvbUxl
ZnQsIGlubmVyQm90dG9tUmlnaHQ7Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UpIHsKLSAgICAgICAgICAgIHRvcExlZnQgPSB0b3BMZWZ0UmFkaXVzOwotICAgICAgICAgICAg
aW5uZXJUb3BMZWZ0ID0gaW5uZXJUb3BMZWZ0UmFkaXVzOwotICAgICAgICAgICAgaWYgKGhvcml6
b250YWwpIHsKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVmdFJhZGl1czsK
LSAgICAgICAgICAgICAgICBpbm5lckJvdHRvbUxlZnQgPSBpbm5lckJvdHRvbUxlZnRSYWRpdXM7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9wUmln
aHRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJUb3BSaWdodCA9IGlubmVyVG9wUmlnaHRS
YWRpdXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpIHsKLSAgICAgICAgICAgIGlmIChob3Jpem9udGFsKSB7Ci0gICAgICAg
ICAgICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgICAgICAgICBpbm5l
clRvcFJpZ2h0ID0gaW5uZXJUb3BSaWdodFJhZGl1czsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAg
ICAgICAgaW5uZXJCb3R0b21MZWZ0ID0gaW5uZXJCb3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAgICAg
ICAgICAgIGlubmVyQm90dG9tUmlnaHQgPSBpbm5lckJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmVuZGVyUmFkaWkgPSAhdG9wTGVmdC5pc1plcm8oKSB8fCAhdG9wUmln
aHQuaXNaZXJvKCkgfHwgIWJvdHRvbUxlZnQuaXNaZXJvKCkgfHwgIWJvdHRvbVJpZ2h0LmlzWmVy
bygpOwotICAgICAgICAKLSAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CisgICAgICAgIGlmICgh
Ym9yZGVyLmlzWmVybygpKSB7CiAgICAgICAgICAgICAvLyBDbGlwIHRvIHRoZSBpbm5lciBhbmQg
b3V0ZXIgcmFkaWkgcmVjdHMuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsK
LSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJl
Y3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlclJlY3Qs
IGlubmVyVG9wTGVmdCwgaW5uZXJUb3BSaWdodCwgaW5uZXJCb3R0b21MZWZ0LCBpbm5lckJvdHRv
bVJpZ2h0KTsKLSAgICAgICAgICAgIHJvdW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlclJl
Y3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCBib3Jk
ZXIpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoaW5u
ZXJCb3JkZXJSZWN0LCBpbm5lcik7CisgICAgICAgICAgICByb3VuZGVkUGF0aC5hZGRSb3VuZGVk
UmVjdChib3JkZXJSZWN0LCBib3JkZXIudG9wTGVmdCgpLCBib3JkZXIudG9wUmlnaHQoKSwgYm9y
ZGVyLmJvdHRvbUxlZnQoKSwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICB9CiAgICAg
fQogCisgICAgYm9vbCByZW5kZXJSYWRpaSA9ICFib3JkZXIuaXNaZXJvKCk7CiAgICAgYm9vbCB1
cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRvcFN0eWxlID09IGxl
ZnRTdHlsZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9vbCB1cHBlclJpZ2h0
Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUgPT0gcmlnaHRTdHls
ZSkgJiYgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAhPSBPVVRTRVQpICYm
ICh0b3BTdHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAmJiAodG9wU3R5bGUg
IT0gR1JPT1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVy
TGVmdCAmJiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0gbGVm
dENvbG9yKSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gUklE
R0UpICYmIChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IEdST09WRSk7
CkBAIC0xMDc2LDkgKzEwNDcsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICBp
bnQgeCA9IHR4OwogICAgICAgICBpbnQgeDIgPSB0eCArIHc7CiAKLSAgICAgICAgaWYgKHJlbmRl
clJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UodG9wTGVmdCwgdG9wUmlnaHQsIHN0eWxl
LT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCkpKSB7CisgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxs
QXJjSW5uZXJFZGdlKGJvcmRlci50b3BMZWZ0KCksIGJvcmRlci50b3BSaWdodCgpLCBzdHlsZS0+
Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0g
ICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJS
ZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTVG9wLCB1
cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBz
dHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwor
ICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
UmVjdCwgYm9yZGVyLCBCU1RvcCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIHVwcGVyUmln
aHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heCht
YXgoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSksIHN0
eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0
aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSwgdGhpY2tuZXNzLCBCU1RvcCwgc3R5bGUsIHRvcENvbG9yLCB0b3BTdHlsZSk7
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEwOTcsOSArMTA2
OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAg
ICAgIGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVy
V2lsbEFyY0lubmVyRWRnZShib3R0b21MZWZ0LCBib3R0b21SaWdodCwgc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9t
V2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5l
ckVkZ2UoYm9yZGVyLmJvdHRvbUxlZnQoKSwgYm9yZGVyLmJvdHRvbVJpZ2h0KCksIHN0eWxlLT5i
b3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCkpKSB7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsK
LSAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRl
clJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNCb3R0
b20sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0
Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CisgICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCBib3JkZXIsIEJTQm90dG9tLCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwg
bG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNz
ID0gbWF4KG1heChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUtPmJvcmRlckxlZnRX
aWR0aCgpKSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAgICAgICAgICAgICBkcmF3Qm94
U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgcm91bmRlZFBhdGgsIHN0
eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCB0aGlja25lc3MsIEJTQm90dG9tLCBzdHlsZSwgYm90
dG9tQ29sb3IsIGJvdHRvbVN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVz
dG9yZSgpOwpAQCAtMTEyMCw5ICsxMDkxLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAg
ICAgICAgaW50IHkgPSB0eTsKICAgICAgICAgaW50IHkyID0gdHkgKyBoOwogCi0gICAgICAgIGlm
IChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvdHRvbUxlZnQsIHRvcExl
ZnQsIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKSkgeworICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYg
Ym9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIuYm90dG9tTGVmdCgpLCBib3JkZXIudG9wTGVm
dCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSkpIHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2F2ZSgpOwotICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29u
dGV4dCwgYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJp
Z2h0LCBCU0xlZnQsIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlckxlZnRCb3JkZXJT
dHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKKyAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0Nv
bnRleHQsIGJvcmRlclJlY3QsIGJvcmRlciwgQlNMZWZ0LCB1cHBlckxlZnRCb3JkZXJTdHlsZXNN
YXRjaCwgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgICAgICBmbG9hdCB0aGlj
a25lc3MgPSBtYXgobWF4KHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUtPmJvcmRlclRv
cFdpZHRoKCkpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgICAgICBkcmF3
Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgcm91bmRlZFBhdGgs
IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgdGhpY2tuZXNzLCBCU0xlZnQsIHN0eWxlLCBsZWZ0
Q29sb3IsIGxlZnRTdHlsZSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUo
KTsKQEAgLTExMzksOSArMTExMCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgfQog
CiAgICAgaWYgKHJlbmRlclJpZ2h0KSB7Ci0gICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3Jk
ZXJXaWxsQXJjSW5uZXJFZGdlKGJvdHRvbVJpZ2h0LCB0b3BSaWdodCwgc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpKSkgeworICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVy
RWRnZShib3JkZXIuYm90dG9tUmlnaHQoKSwgYm9yZGVyLnRvcFJpZ2h0KCksIHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlclJp
Z2h0V2lkdGgoKSkpIHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAg
ICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVj
dCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBCU1JpZ2h0LCB1
cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwg
c3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
KyAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRl
clJlY3QsIGJvcmRlciwgQlNSaWdodCwgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBsb3dl
clJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3MgPSBt
YXgobWF4KHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgp
KSwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVG
cm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpLCB0aGlja25lc3MsIEJTUmlnaHQsIHN0eWxlLCByaWdodENvbG9y
LCByaWdodFN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpA
QCAtMTE5Niw2NSArMTE2Nyw0NiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIGJvb2wg
cmVuZGVyUmlnaHQgPSByaWdodFN0eWxlID4gQkhJRERFTiAmJiAhcmlnaHRUcmFuc3BhcmVudCAm
JiAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIGJvb2wgcmVu
ZGVyQm90dG9tID0gYm90dG9tU3R5bGUgPiBCSElEREVOICYmICFib3R0b21UcmFuc3BhcmVudCAm
JiAoaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKLSAgICBib29sIHJl
bmRlclJhZGlpID0gZmFsc2U7Ci0gICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQ7CisKKyAgICBJbnRSZWN0UmFkaWkgYm9yZGVyOwogCiAgICAgaWYg
KHN0eWxlLT5oYXNCb3JkZXJSYWRpdXMoKSkgewogICAgICAgICBJbnRSZWN0IGJvcmRlclJlY3Qg
PSBJbnRSZWN0KHR4LCB0eSwgdywgaCk7Ci0KLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVz
LCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0g
ICAgICAgIHN0eWxlLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdFJh
ZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVz
KTsKLQotICAgICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewotICAgICAgICAgICAg
dG9wTGVmdCA9IHRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAgICBpZiAoaG9yaXpvbnRhbCkKLSAg
ICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKLSAg
ICAgICAgICAgIGlmIChob3Jpem9udGFsKQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9w
UmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm90dG9tTGVm
dCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBib3R0b21SaWdodCA9IGJvdHRvbVJp
Z2h0UmFkaXVzOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVuZGVyUmFkaWkgPSAhdG9wTGVmdC5p
c1plcm8oKSB8fCAhdG9wUmlnaHQuaXNaZXJvKCkgfHwgIWJvdHRvbUxlZnQuaXNaZXJvKCkgfHwg
IWJvdHRvbVJpZ2h0LmlzWmVybygpOworICAgICAgICBib3JkZXIuaW5jbHVkZUxvZ2ljYWxFZGdl
cyhzdHlsZS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
LCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVuZGVy
UmFkaWkpIHsKLSAgICAgICAgICAgIC8vIENsaXAgdG8gdGhlIHJvdW5kZWQgcmVjdGFuZ2xlLgor
ICAgICAgICBpZiAoIWJvcmRlci5pc1plcm8oKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0
Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9y
ZGVyUmVjdCwgYm9yZGVyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGludCBmaXJzdEFuZ2xl
U3RhcnQsIHNlY29uZEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLCBzZWNvbmRBbmdsZVNwYW47
CiAgICAgZmxvYXQgdGhpY2tuZXNzOworICAgIGJvb2wgcmVuZGVyUmFkaWkgPSAhYm9yZGVyLmlz
WmVybygpOwogICAgIGJvb2wgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJMZWZ0
ICYmICh0b3BTdHlsZSA9PSBsZWZ0U3R5bGUpICYmICh0b3BDb2xvciA9PSBsZWZ0Q29sb3IpOwog
ICAgIGJvb2wgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyUmlnaHQgJiYgKHRv
cFN0eWxlID09IHJpZ2h0U3R5bGUpICYmICh0b3BDb2xvciA9PSByaWdodENvbG9yKSAmJiAodG9w
U3R5bGUgIT0gT1VUU0VUKSAmJiAodG9wU3R5bGUgIT0gUklER0UpICYmICh0b3BTdHlsZSAhPSBJ
TlNFVCkgJiYgKHRvcFN0eWxlICE9IEdST09WRSk7CiAgICAgYm9vbCBsb3dlckxlZnRCb3JkZXJT
dHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKGJvdHRvbVN0eWxlID09IGxlZnRTdHlsZSkgJiYg
KGJvdHRvbUNvbG9yID09IGxlZnRDb2xvcikgJiYgKGJvdHRvbVN0eWxlICE9IE9VVFNFVCkgJiYg
KGJvdHRvbVN0eWxlICE9IFJJREdFKSAmJiAoYm90dG9tU3R5bGUgIT0gSU5TRVQpICYmIChib3R0
b21TdHlsZSAhPSBHUk9PVkUpOwogICAgIGJvb2wgbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNo
ID0gcmVuZGVyUmlnaHQgJiYgKGJvdHRvbVN0eWxlID09IHJpZ2h0U3R5bGUpICYmIChib3R0b21D
b2xvciA9PSByaWdodENvbG9yKTsKIAogICAgIGlmIChyZW5kZXJUb3ApIHsKLSAgICAgICAgYm9v
bCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAmJiB0b3BMZWZ0LndpZHRoKCkgPiAwKSB8fAot
ICAgICAgICAgICAgKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBs
ZWZ0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKGxl
ZnRTdHlsZSA9PSBET1RURUQgfHwgbGVmdFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0g
U09MSUQgfHwgbGVmdFN0eWxlID09IE9VVFNFVCkpOwotCi0gICAgICAgIGJvb2wgaWdub3JlX3Jp
Z2h0ID0gKHJlbmRlclJhZGlpICYmIHRvcFJpZ2h0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAg
ICAgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFu
c3BhcmVudCAmJiB0b3BTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAocmlnaHRTdHls
ZSA9PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBEQVNIRUQgfHwgcmlnaHRTdHlsZSA9PSBTT0xJ
RCB8fCByaWdodFN0eWxlID09IElOU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlTGVmdCA9IChy
ZW5kZXJSYWRpaSAmJiBib3JkZXIudG9wTGVmdCgpLndpZHRoKCkgPiAwKQorICAgICAgICAgICAg
fHwgKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNw
YXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKGxlZnRTdHls
ZSA9PSBET1RURUQgfHwgbGVmdFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQg
fHwgbGVmdFN0eWxlID09IE9VVFNFVCkpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpZ25vcmVS
aWdodCA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpID4gMCkKKyAg
ICAgICAgICAgIHx8ICh0b3BDb2xvciA9PSByaWdodENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09
IHJpZ2h0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAg
JiYgKHJpZ2h0U3R5bGUgPT0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0
U3R5bGUgPT0gU09MSUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkpOwogCiAgICAgICAgIGludCB4
ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKICAgICAgICAgaWYgKHJlbmRlclJhZGlp
KSB7Ci0gICAgICAgICAgICB4ICs9IHRvcExlZnQud2lkdGgoKTsKLSAgICAgICAgICAgIHgyIC09
IHRvcFJpZ2h0LndpZHRoKCk7CisgICAgICAgICAgICB4ICs9IGJvcmRlci50b3BMZWZ0KCkud2lk
dGgoKTsKKyAgICAgICAgICAgIHgyIC09IGJvcmRlci50b3BSaWdodCgpLndpZHRoKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0
eSwgeDIsIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0b3BDb2xvciwgdG9w
U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgo
KSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlTGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCksIGlnbm9yZVJpZ2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwog
CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAgICAgICAgICAgaW50IGxlZnRZID0gdHk7
CkBAIC0xMjY0LDE1ICsxMjE2LDE1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAg
ICAgICAvLyB3aXRoIHRoZSBhcmMtZHJhd2luZyBmdW5jdGlvbi4KICAgICAgICAgICAgIHRoaWNr
bmVzcyA9IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpICogMjsKIAotICAgICAgICAgICAgaWYgKHRv
cExlZnQud2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKGJvcmRlci50b3BMZWZ0KCkud2lkdGgo
KSkgewogICAgICAgICAgICAgICAgIGludCBsZWZ0WCA9IHR4OwogICAgICAgICAgICAgICAgIC8v
IFRoZSBpbm5lciBjbGlwIGNsaXBzIGluc2lkZSB0aGUgYXJjLiBUaGlzIGlzIGVzcGVjaWFsbHkg
aW1wb3J0YW50IGZvciAxcHggYm9yZGVycy4KLSAgICAgICAgICAgICAgICBib29sIGFwcGx5TGVm
dElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCB0b3BMZWZ0LndpZHRoKCkp
Ci0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcExl
ZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgYm9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAo
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCBib3JkZXIudG9w
TGVmdCgpLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAodG9wU3R5bGUgIT0gRE9V
QkxFIHx8IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYg
KGFwcGx5TGVmdElubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgdG9wTGVmdC53aWR0aCgpICog
MiwgdG9wTGVmdC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobGVmdFgsIGxlZnRZLCBib3Jk
ZXIudG9wTGVmdCgpLndpZHRoKCkgKiAyLCBib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpICogMiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAt
MTI4MCwyMCArMTIzMiwyMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRl
cihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAg
ICAgIGZpcnN0QW5nbGVTcGFuID0gdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPyA5MCA6IDQ1
OwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB1cHBlciBsZWZ0IGFyYwotICAgICAgICAgICAg
ICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgbGVmdFgsIGxlZnRZLCB0aGlj
a25lc3MsIHRvcExlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAg
ICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFks
IHRoaWNrbmVzcywgYm9yZGVyLnRvcExlZnQoKSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xl
U3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9w
U3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApCiAg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAodG9wUmlnaHQud2lkdGgoKSkgewotICAgICAgICAgICAg
ICAgIGludCByaWdodFggPSB0eCArIHcgLSB0b3BSaWdodC53aWR0aCgpICogMjsKLSAgICAgICAg
ICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lk
dGgoKSA8IHRvcFJpZ2h0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcFJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgaWYgKGJv
cmRlci50b3BSaWdodCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0g
dHggKyB3IC0gYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSAqIDI7CisgICAgICAgICAgICAgICAg
Ym9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBi
b3JkZXIudG9wUmlnaHQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUt
PmJvcmRlclRvcFdpZHRoKCkgPCBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAg
ICAgICAgICAgICAgJiYgKHRvcFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyVG9wV2lk
dGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qo
cmlnaHRYLCBsZWZ0WSwgdG9wUmlnaHQud2lkdGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICog
MiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoSW50UmVjdChyaWdodFgsIGxlZnRZLCBib3JkZXIudG9wUmlnaHQoKS53aWR0aCgp
ICogMiwgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMzA2LDcgKzEyNTgsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIC8vIERyYXcgdXBwZXIgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCByaWdodFgsIGxlZnRZLCB0aGlja25lc3MsIHRvcFJpZ2h0
LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJh
d0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCByaWdodFgsIGxlZnRZLCB0aGlja25lc3Ms
IGJvcmRlci50b3BSaWdodCgpLCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3IsIHRvcFN0eWxlLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApCiAgICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTMxNSwzNiArMTI2
NywzNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5kZXJC
b3R0b20pIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAmJiBib3R0
b21MZWZ0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAgKGJvdHRvbUNvbG9yID09IGxlZnRD
b2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5
bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKGxlZnRTdHlsZSA9PSBET1RURUQgfHwgbGVm
dFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQgfHwgbGVmdFN0eWxlID09IE9V
VFNFVCkpOworICAgICAgICBib29sIGlnbm9yZUxlZnQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVy
LmJvdHRvbUxlZnQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHx8IChib3R0b21Db2xvciA9
PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGJv
dHRvbVN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgPT0gRE9U
VEVEIHx8IGxlZnRTdHlsZSA9PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRT
dHlsZSA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9yZV9yaWdodCA9IChyZW5kZXJS
YWRpaSAmJiBib3R0b21SaWdodC53aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAgIChib3R0b21D
b2xvciA9PSByaWdodENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJl
bnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKHJpZ2h0U3R5bGUg
PT0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQg
fHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkpOworICAgICAgICBib29sIGlnbm9yZVJpZ2h0ID0gKHJl
bmRlclJhZGlpICYmIGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkgPiAwKQorICAgICAgICAg
ICAgfHwgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0g
cmlnaHRUcmFuc3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQKKyAgICAgICAgICAgICAg
ICAmJiAocmlnaHRTdHlsZSA9PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBEQVNIRUQgfHwgcmln
aHRTdHlsZSA9PSBTT0xJRCB8fCByaWdodFN0eWxlID09IElOU0VUKSk7CiAKICAgICAgICAgaW50
IHggPSB0eDsKICAgICAgICAgaW50IHgyID0gdHggKyB3OwogICAgICAgICBpZiAocmVuZGVyUmFk
aWkpIHsKLSAgICAgICAgICAgIHggKz0gYm90dG9tTGVmdC53aWR0aCgpOwotICAgICAgICAgICAg
eDIgLT0gYm90dG9tUmlnaHQud2lkdGgoKTsKKyAgICAgICAgICAgIHggKz0gYm9yZGVyLmJvdHRv
bUxlZnQoKS53aWR0aCgpOworICAgICAgICAgICAgeDIgLT0gYm9yZGVyLmJvdHRvbVJpZ2h0KCku
d2lkdGgoKTsKICAgICAgICAgfQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHgsIHR5ICsgaCAtIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCB4MiwgdHkg
KyBoLCBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlLAotICAgICAgICAgICAgICAg
ICAgIGlnbm9yZV9sZWZ0ID8gMCA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3JlX3Jp
Z2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOworICAgICAgICAgICAgICAgICAg
IGlnbm9yZUxlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVSaWdodCA/
IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFk
aWkpIHsKICAgICAgICAgICAgIHRoaWNrbmVzcyA9IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
ICogMjsKIAotICAgICAgICAgICAgaWYgKGJvdHRvbUxlZnQud2lkdGgoKSkgeworICAgICAgICAg
ICAgaWYgKGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSkgewogICAgICAgICAgICAgICAgIGlu
dCBsZWZ0WCA9IHR4OwotICAgICAgICAgICAgICAgIGludCBsZWZ0WSA9IHR5ICsgaCAtIGJvdHRv
bUxlZnQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJD
bGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvdHRvbUxlZnQud2lkdGgoKSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm90dG9t
TGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBpbnQgbGVmdFkgPSB0eSArIGggLSBib3Jk
ZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5
TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIuYm90dG9t
TGVmdCgpLndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90
dG9tV2lkdGgoKSA8IGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICYmIChib3R0b21TdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlckJvdHRvbVdp
ZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qo
bGVmdFgsIGxlZnRZLCBib3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0LmhlaWdodCgp
ICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIGJvcmRlci5ib3R0b21MZWZ0KCkud2lk
dGgoKSAqIDIsIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+
Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMzU3LDIxICsx
MzA5LDIxIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgLy8gRHJhdyBsb3dlciBsZWZ0IGFyYwotICAgICAgICAgICAgICAgIGRy
YXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgbGVmdFgsIGxlZnRZLCB0aGlja25lc3Ms
IGJvdHRvbUxlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAg
ICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRo
aWNrbmVzcywgYm9yZGVyLmJvdHRvbUxlZnQoKSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xl
U3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0b21Db2xv
ciwgYm90dG9tU3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5l
ckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYm90dG9tUmlnaHQud2lkdGgoKSkgewot
ICAgICAgICAgICAgICAgIGludCByaWdodFkgPSB0eSArIGggLSBib3R0b21SaWdodC5oZWlnaHQo
KSAqIDI7Ci0gICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9IHR4ICsgdyAtIGJvdHRvbVJpZ2h0
LndpZHRoKCkgKiAyOwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlSaWdodElubmVyQ2xpcCA9
IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm90dG9tUmlnaHQud2lkdGgoKSkKLSAgICAg
ICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm90dG9tUmln
aHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgo
KSkgeworICAgICAgICAgICAgICAgIGludCByaWdodFkgPSB0eSArIGggLSBib3JkZXIuYm90dG9t
UmlnaHQoKS5oZWlnaHQoKSAqIDI7CisgICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9IHR4ICsg
dyAtIGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkgKiAyOworICAgICAgICAgICAgICAgIGJv
b2wgYXBwbHlSaWdodElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9y
ZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpCiAg
ICAgICAgICAgICAgICAgICAgICYmIChib3R0b21TdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlSaWdodElu
bmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0
Q2xpcChJbnRSZWN0KHJpZ2h0WCwgcmlnaHRZLCBib3R0b21SaWdodC53aWR0aCgpICogMiwgYm90
dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHJpZ2h0WCwgcmlnaHRZLCBib3Jk
ZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpICogMiwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0
KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgICAgICAg
ICAgfQogCkBAIC0xMzc5LDcgKzEzMzEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAg
ICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRj
aCA/IDkwIDogNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIHJpZ2h0IGFyYwot
ICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRY
LCByaWdodFksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29u
ZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHJpZ2h0WCwgcmlnaHRZLCB0aGlja25lc3MsIGJvcmRlci5ib3R0b21SaWdodCgpLCBz
ZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlLCBmYWxzZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTM4OCwzNiArMTM0MCwzNiBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5kZXJMZWZ0KSB7Ci0gICAg
ICAgIGJvb2wgaWdub3JlX3RvcCA9IChyZW5kZXJSYWRpaSAmJiB0b3BMZWZ0LmhlaWdodCgpID4g
MCkgfHwKLSAgICAgICAgICAgICh0b3BDb2xvciA9PSBsZWZ0Q29sb3IgJiYgdG9wVHJhbnNwYXJl
bnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGxlZnRTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAg
ICAgICAodG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHls
ZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRTRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVU
b3AgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSA+IDApCisgICAg
ICAgICAgICB8fCAodG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxl
ZnRUcmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYg
KHRvcFN0eWxlID09IERPVFRFRCB8fCB0b3BTdHlsZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0g
U09MSUQgfHwgdG9wU3R5bGUgPT0gT1VUU0VUKSk7CiAKLSAgICAgICAgYm9vbCBpZ25vcmVfYm90
dG9tID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbUxlZnQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAg
ICAgICAgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBs
ZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAgIChi
b3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5bGUgPT0gREFTSEVEIHx8IGJvdHRvbVN0
eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElOU0VUKSk7CisgICAgICAgIGJvb2wgaWdu
b3JlQm90dG9tID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkg
PiAwKQorICAgICAgICAgICAgfHwgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21U
cmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVAorICAg
ICAgICAgICAgICAgICYmIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5bGUgPT0g
REFTSEVEIHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElOU0VUKSk7
CiAKICAgICAgICAgaW50IHkgPSB0eTsKICAgICAgICAgaW50IHkyID0gdHkgKyBoOwogICAgICAg
ICBpZiAocmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAgIHkgKz0gdG9wTGVmdC5oZWlnaHQoKTsK
LSAgICAgICAgICAgIHkyIC09IGJvdHRvbUxlZnQuaGVpZ2h0KCk7CisgICAgICAgICAgICB5ICs9
IGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCk7CisgICAgICAgICAgICB5MiAtPSBib3JkZXIuYm90
dG9tTGVmdCgpLmhlaWdodCgpOwogICAgICAgICB9CiAKICAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHksIHR4ICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
LCB5MiwgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICBp
Z25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8g
MCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgICAgICAgICBpZ25v
cmVUb3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZUJvdHRvbSA/IDAgOiBz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpICYm
ICghdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyTGVmdEJvcmRlclN0eWxlc01h
dGNoKSkgewogICAgICAgICAgICAgaW50IHRvcFggPSB0eDsKICAgICAgICAgICAgIHRoaWNrbmVz
cyA9IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAqIDI7CiAKLSAgICAgICAgICAgIGlmICghdXBw
ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgdG9wTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAg
ICBpZiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoICYmIGJvcmRlci50b3BMZWZ0KCkud2lk
dGgoKSkgewogICAgICAgICAgICAgICAgIGludCB0b3BZID0gdHk7Ci0gICAgICAgICAgICAgICAg
Ym9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCB0b3BM
ZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lk
dGgoKSA8IHRvcExlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgYm9vbCBhcHBseVRvcElu
bmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIudG9wTGVmdCgpLndp
ZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8
IGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIChsZWZ0
U3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA+IDYpOwogICAgICAg
ICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIHRvcFksIHRvcExlZnQu
d2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIHRv
cFksIGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0
KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwogICAgICAgICAgICAgICAg
IH0KIApAQCAtMTQyNSwyMCArMTM3NywyMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAg
ICAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0gNDU7CiAKICAgICAgICAgICAgICAgICAvLyBE
cmF3IHRvcCBsZWZ0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBo
aWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3Rh
cnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCBib3JkZXIudG9wTGVmdCgpLCBm
aXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFsb3dl
ckxlZnRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3R0b21MZWZ0LndpZHRoKCkpIHsKLSAgICAgICAg
ICAgICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyOwot
ICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlCb3R0b21Jbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpIDwgYm90dG9tTGVmdC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAm
JiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3R0b21MZWZ0LmhlaWdodCgpKQorICAg
ICAgICAgICAgaWYgKCFsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIuYm90dG9t
TGVmdCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAt
IGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgKiAyOworICAgICAgICAgICAgICAgIGJvb2wg
YXBwbHlCb3R0b21Jbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgYm9yZGVy
LmJvdHRvbUxlZnQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkgPCBib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpKQogICAgICAg
ICAgICAgICAgICAgICAmJiAobGVmdFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXAp
IHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50
UmVjdCh0b3BYLCBib3R0b21ZLCBib3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0Lmhl
aWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5u
ZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCBib3R0b21ZLCBib3JkZXIuYm90dG9tTGVm
dCgpLndpZHRoKCkgKiAyLCBib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE0NDYs
NyArMTM5OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vj
b25kQW5nbGVTcGFuID0gNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGJvdHRvbSBsZWZ0
IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
dG9wWCwgYm90dG9tWSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBzZWNvbmRBbmdsZVN0YXJ0LCBz
ZWNvbmRBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCB0b3BYLCBib3R0b21ZLCB0aGlja25lc3MsIGJvcmRlci5ib3R0b21MZWZ0KCks
IHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsIGZhbHNlKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTQ1NSwzMCArMTQwNywzMCBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5kZXJSaWdodCkgewotICAgICAg
ICBib29sIGlnbm9yZV90b3AgPSAocmVuZGVyUmFkaWkgJiYgdG9wUmlnaHQuaGVpZ2h0KCkgPiAw
KSB8fAotICAgICAgICAgICAgKCh0b3BDb2xvciA9PSByaWdodENvbG9yKSAmJiAodG9wVHJhbnNw
YXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkgJiYKLSAgICAgICAgICAgIChyaWdodFN0eWxlID49
IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKSAmJgotICAgICAgICAgICAgKHRvcFN0eWxl
ID09IERPVFRFRCB8fCB0b3BTdHlsZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0gU09MSUQgfHwg
dG9wU3R5bGUgPT0gT1VUU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlVG9wID0gKHJlbmRlclJh
ZGlpICYmIGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHx8ICgo
dG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRvcFRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNw
YXJlbnQpCisgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0
U3R5bGUgPT0gSU5TRVQpCisgICAgICAgICAgICAgICAgJiYgKHRvcFN0eWxlID09IERPVFRFRCB8
fCB0b3BTdHlsZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0gU09MSUQgfHwgdG9wU3R5bGUgPT0g
T1VUU0VUKSk7CiAKLSAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9tID0gKHJlbmRlclJhZGlpICYm
IGJvdHRvbVJpZ2h0LmhlaWdodCgpID4gMCkgfHwKLSAgICAgICAgICAgICgoYm90dG9tQ29sb3Ig
PT0gcmlnaHRDb2xvcikgJiYgKGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQp
ICYmCi0gICAgICAgICAgICAocmlnaHRTdHlsZSA+PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBJ
TlNFVCkgJiYKLSAgICAgICAgICAgIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5
bGUgPT0gREFTSEVEIHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElO
U0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlQm90dG9tID0gKHJlbmRlclJhZGlpICYmIGJvcmRl
ci5ib3R0b21SaWdodCgpLmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHx8ICgoYm90dG9tQ29s
b3IgPT0gcmlnaHRDb2xvcikgJiYgKGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJl
bnQpCisgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0U3R5
bGUgPT0gSU5TRVQpCisgICAgICAgICAgICAgICAgJiYgKGJvdHRvbVN0eWxlID09IERPVFRFRCB8
fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQgfHwgYm90dG9t
U3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeSA9IHR5OwogICAgICAgICBpbnQgeTIg
PSB0eSArIGg7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgeSArPSB0
b3BSaWdodC5oZWlnaHQoKTsKLSAgICAgICAgICAgIHkyIC09IGJvdHRvbVJpZ2h0LmhlaWdodCgp
OworICAgICAgICAgICAgeSArPSBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIHkyIC09IGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpOwogICAgICAgICB9CiAKICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gc3R5bGUt
PmJvcmRlclJpZ2h0V2lkdGgoKSwgeSwgdHggKyB3LCB5MiwgQlNSaWdodCwgcmlnaHRDb2xvciwg
cmlnaHRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5i
b3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpKTsKKyAgICAgICAgICAgICAgICAgICBpZ25vcmVUb3AgPyAwIDogc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCksIGlnbm9yZUJvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmICghdXBwZXJSaWdodEJvcmRlclN0eWxl
c01hdGNoIHx8ICFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CiAgICAgICAgICAgICB0
aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpICogMjsKIAotICAgICAgICAgICAg
aWYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgdG9wUmlnaHQud2lkdGgoKSkgewor
ICAgICAgICAgICAgaWYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm9yZGVyLnRv
cFJpZ2h0KCkud2lkdGgoKSkgewogICAgICAgICAgICAgICAgIGludCB0b3BYID0gdHggKyB3IC0g
dG9wUmlnaHQud2lkdGgoKSAqIDI7CiAgICAgICAgICAgICAgICAgaW50IHRvcFkgPSB0eTsKICAg
ICAgICAgICAgICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdo
dFdpZHRoKCkgPCB0b3BSaWdodC53aWR0aCgpKQpAQCAtMTUwMCwxNSArMTQ1MiwxNSBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFsb3dlclJpZ2h0
Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm90dG9tUmlnaHQud2lkdGgoKSkgewotICAgICAgICAgICAg
ICAgIGludCBib3R0b21YID0gdHggKyB3IC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAg
ICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSArIGggLSBib3R0b21SaWdodC5oZWlnaHQoKSAq
IDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm90dG9tUmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAgICAg
ICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm90dG9tUmlnaHQuaGVpZ2h0
KCkpCisgICAgICAgICAgICBpZiAoIWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3Jk
ZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpKSB7CisgICAgICAgICAgICAgICAgaW50IGJvdHRvbVgg
PSB0eCArIHcgLSBib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpICogMjsKKyAgICAgICAgICAg
ICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAtIGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgp
ICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJDbGlwID0gKHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3JkZXIu
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5
bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPiA2KTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChib3R0b21YLCBib3R0b21ZLCBi
b3R0b21SaWdodC53aWR0aCgpICogMiwgYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJ
bnRSZWN0KGJvdHRvbVgsIGJvdHRvbVksIGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkgKiAy
LCBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTUxNiw3ICsxNDY4LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBzZWNvbmRBbmdsZVNwYW4g
PSA0NTsKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgYm90dG9tIHJpZ2h0IGFyYwotICAgICAg
ICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgYm90dG9tWCwgYm90
dG9tWSwgdGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5n
bGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgYm90dG9tWCwgYm90dG9tWSwgdGhpY2tuZXNzLCBib3JkZXIuYm90dG9tUmlnaHQoKSwgc2Vj
b25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwgZmFsc2UpOwogICAgICAgICAg
ICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xNTI5LDcgKzE0ODEsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgaW50IHR4LAogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNs
aXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgSW50UmVjdCYgYm94LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0
b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHQsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24o
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGJveCwgY29u
c3QgSW50UmVjdFJhZGlpJiBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNo
ZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CkBAIC0x
NTUwLDI2ICsxNTAyLDI2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJT
aWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgc3dpdGNoIChz
aWRlKSB7CiAgICAgY2FzZSBCU1RvcDoKICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgs
IHR5KTsKLSAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgodG9wTGVmdC53aWR0
aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwot
ICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgodG9wUmlnaHQud2lkdGgo
KSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRvcFJpZ2h0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwor
ICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIudG9wTGVmdCgpLndp
ZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgbWF4KGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHRv
cFdpZHRoKSk7CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3Jk
ZXIudG9wUmlnaHQoKS53aWR0aCgpLCByaWdodFdpZHRoKSwgdHkgKyBtYXgoYm9yZGVyLnRvcFJp
Z2h0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CiAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50
KHR4ICsgdywgdHkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJTTGVmdDoKICAgICAgICAg
cXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5KTsKLSAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9p
bnQodHggKyBtYXgodG9wTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1heCh0b3BMZWZ0
LmhlaWdodCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCAr
IG1heChib3R0b21MZWZ0LndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21M
ZWZ0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2lu
dCh0eCArIG1heChib3JkZXIudG9wTGVmdCgpLndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgbWF4
KGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CisgICAgICAgIHF1YWRbMl0g
PSBGbG9hdFBvaW50KHR4ICsgbWF4KGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdp
ZHRoKSwgdHkgKyBoIC0gbWF4KGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIGJvdHRvbVdp
ZHRoKSk7CiAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHR4LCB0eSArIGgpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEJTQm90dG9tOgogICAgICAgICBxdWFkWzBdID0gRmxvYXRQb2lu
dCh0eCwgdHkgKyBoKTsKLSAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm90
dG9tTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIGggLSBtYXgoYm90dG9tTGVmdC5oZWln
aHQoKSwgYm90dG9tV2lkdGgpKTsKLSAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3
IC0gbWF4KGJvdHRvbVJpZ2h0LndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIGggLSBtYXgoYm90
dG9tUmlnaHQuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7CisgICAgICAgIHF1YWRbMV0gPSBGbG9h
dFBvaW50KHR4ICsgbWF4KGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwg
dHkgKyBoIC0gbWF4KGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7
CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3JkZXIuYm90dG9t
UmlnaHQoKS53aWR0aCgpLCByaWdodFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvcmRlci5ib3R0b21S
aWdodCgpLmhlaWdodCgpLCBib3R0b21XaWR0aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQ
b2ludCh0eCArIHcsIHR5ICsgaCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQlNSaWdodDoK
ICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSk7Ci0gICAgICAgIHF1YWRb
MV0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heCh0b3BSaWdodC53aWR0aCgpLCByaWdodFdpZHRo
KSwgdHkgKyBtYXgodG9wUmlnaHQuaGVpZ2h0KCksIHRvcFdpZHRoKSk7Ci0gICAgICAgIHF1YWRb
Ml0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3R0b21SaWdodC53aWR0aCgpLCByaWdodFdp
ZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbVJpZ2h0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOwor
ICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm9yZGVyLnRvcFJpZ2h0
KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KGJvcmRlci50b3BSaWdodCgpLmhlaWdo
dCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBt
YXgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1h
eChib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKICAgICAgICAg
cXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgpAQCAtMTYwMCwxOCArMTU1Miw2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNvbmRRdWFkLCAh
c2Vjb25kRWRnZU1hdGNoZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdW5pZm9ybWx5RXhw
YW5kQm9yZGVyUmFkaWkoaW50IGRlbHRhLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BS
aWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAg
dG9wTGVmdC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0b3BMZWZ0LmNsYW1wTmVnYXRpdmVU
b1plcm8oKTsKLSAgICB0b3BSaWdodC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0b3BSaWdo
dC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgYm90dG9tTGVmdC5leHBhbmQoZGVsdGEsIGRl
bHRhKTsKLSAgICBib3R0b21MZWZ0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICBib3R0b21S
aWdodC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICBib3R0b21SaWdodC5jbGFtcE5lZ2F0aXZl
VG9aZXJvKCk7Ci19Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwg
Y29uc3QgUmVuZGVyU3R5bGUqIHMsIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAg
Ly8gRklYTUU6IERlYWwgd2l0aCBib3JkZXItaW1hZ2UuICBXb3VsZCBiZSBncmVhdCB0byB1c2Ug
Ym9yZGVyLWltYWdlIGFzIGEgbWFzay4KQEAgLTE2MjAsNTQgKzE1NjAsMTcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBpbnQgdHgsIGludAogICAgICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IHJlY3QodHgsIHR5
LCB3LCBoKTsKLSAgICBJbnRTaXplIHRvcExlZnQ7Ci0gICAgSW50U2l6ZSB0b3BSaWdodDsKLSAg
ICBJbnRTaXplIGJvdHRvbUxlZnQ7Ci0gICAgSW50U2l6ZSBib3R0b21SaWdodDsKKyAgICBJbnRS
ZWN0UmFkaWkgYm9yZGVyOwogCiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMgPSBzLT5oYXNCb3Jk
ZXJSYWRpdXMoKTsKICAgICBib29sIGlzSG9yaXpvbnRhbCA9IHMtPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cyAmJiAoaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BM
ZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRS
YWRpdXM7Ci0gICAgICAgIHMtPmdldEJvcmRlclJhZGlpRm9yUmVjdChyZWN0LCB0b3BMZWZ0UmFk
aXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMp
OwotCi0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICBp
ZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0UmFkaXVz
LmV4cGFuZCgtYm9yZGVyTGVmdCgpLCAtYm9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgIHRv
cExlZnRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIGlmIChp
c0hvcml6b250YWwpIHsKLSAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5leHBh
bmQoLWJvcmRlckxlZnQoKSwgLWJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
Ym90dG9tTGVmdFJhZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuZXhwYW5kKC1ib3Jk
ZXJSaWdodCgpLCAtYm9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgICAgICB0b3BSaWdodFJh
ZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdG9wTGVmdCA9IHRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0
UmFkaXVzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9w
UmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0
UmFkaXVzLmV4cGFuZCgtYm9yZGVyUmlnaHQoKSwgLWJvcmRlclRvcCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgdG9wUmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuZXhw
YW5kKC1ib3JkZXJMZWZ0KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJvdHRvbUxlZnRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJpZ2h0
KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlz
SG9yaXpvbnRhbCkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0
UmFkaXVzOwotICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAg
ICAgICAgfQorICAgICAgICBJbnRSZWN0UmFkaWkgcmFkaWkgPSBzLT5nZXRCb3JkZXJSYWRpaUZv
clJlY3QocmVjdCk7CisgICAgICAgIGlmIChzaGFkb3dTdHlsZSA9PSBJbnNldCkKKyAgICAgICAg
ICAgIHJhZGlpLnNocmluayhib3JkZXJUb3AoKSwgYm9yZGVyQm90dG9tKCksIGJvcmRlckxlZnQo
KSwgYm9yZGVyUmlnaHQoKSk7CisgICAgICAgIGJvcmRlci5pbmNsdWRlTG9naWNhbEVkZ2VzKHJh
ZGlpLCBpc0hvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICB9CisgICAKIAogICAgIGlmIChzaGFkb3dTdHlsZSA9PSBJbnNldCkg
ewogICAgICAgICByZWN0Lm1vdmUoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9u
dGFsID8gYm9yZGVyTGVmdCgpIDogMCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpc0hvcml6
b250YWwgPyBib3JkZXJUb3AoKSA6IDApOwpAQCAtMTcwNywyOSArMTYxMCwyMyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGludCB0eCwgaW50CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAg
ICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3RU
b0NsaXBPdXQgPSByZWN0OwotICAgICAgICAgICAgICAgIEludFNpemUgdG9wTGVmdFRvQ2xpcE91
dCA9IHRvcExlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BSaWdodFRvQ2xpcE91dCA9
IHRvcFJpZ2h0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9tTGVmdFRvQ2xpcE91dCA9
IGJvdHRvbUxlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21SaWdodFRvQ2xpcE91
dCA9IGJvdHRvbVJpZ2h0OwotCi0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0VG9GaWxs
ID0gdG9wTGVmdDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIHRvcFJpZ2h0VG9GaWxsID0gdG9w
UmlnaHQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21MZWZ0VG9GaWxsICA9IGJvdHRv
bUxlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21SaWdodFRvRmlsbCA9IGJvdHRv
bVJpZ2h0OwotICAgICAgICAgICAgICAgIGlmIChzaGFkb3dTcHJlYWQgPCAwKQotICAgICAgICAg
ICAgICAgICAgICB1bmlmb3JtbHlFeHBhbmRCb3JkZXJSYWRpaShzaGFkb3dTcHJlYWQsIHRvcExl
ZnRUb0ZpbGwsIHRvcFJpZ2h0VG9GaWxsLCBib3R0b21MZWZ0VG9GaWxsLCBib3R0b21SaWdodFRv
RmlsbCk7CisgICAgICAgICAgICAgICAgSW50UmVjdFJhZGlpIHJhZGlpVG9DbGlwT3V0ID0gYm9y
ZGVyOwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0IGlzIHVu
bmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2luZyBzbyBzYXZlcyB0aW1lCiAg
ICAgICAgICAgICAgICAgLy8gd2hlbiBwYWludGluZyB0aGUgc2hhZG93LiBPbiB0aGUgb3RoZXIg
aGFuZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhlbCBnYXBzIGFsb25nIHRoZQogICAgICAgICAgICAg
ICAgIC8vIGNvcm5lcnMuIFRob3NlIGFyZSBhdm9pZGVkIGJ5IGluc2V0dGluZyB0aGUgY2xpcHBp
bmcgcGF0aCBieSBvbmUgcGl4ZWwuCiAgICAgICAgICAgICAgICAgaWYgKGhhc09wYXF1ZUJhY2tn
cm91bmQpIHsKICAgICAgICAgICAgICAgICAgICAgcmVjdFRvQ2xpcE91dC5pbmZsYXRlKC0xKTsK
LSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhwYW5kQm9yZGVyUmFkaWkoLTEsIHRvcExl
ZnRUb0NsaXBPdXQsIHRvcFJpZ2h0VG9DbGlwT3V0LCBib3R0b21MZWZ0VG9DbGlwT3V0LCBib3R0
b21SaWdodFRvQ2xpcE91dCk7CisgICAgICAgICAgICAgICAgICAgIHJhZGlpVG9DbGlwT3V0LmV4
cGFuZCgtMSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFyZWN0
VG9DbGlwT3V0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcE91
dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQsIHRvcExlZnRUb0NsaXBPdXQsIHRvcFJpZ2h0VG9D
bGlwT3V0LCBib3R0b21MZWZ0VG9DbGlwT3V0LCBib3R0b21SaWdodFRvQ2xpcE91dCk7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGZpbGxSZWN0LCB0b3BMZWZ0VG9G
aWxsLCB0b3BSaWdodFRvRmlsbCwgYm90dG9tTGVmdFRvRmlsbCwgYm90dG9tUmlnaHRUb0ZpbGws
IENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQsIHJhZGlpVG9DbGlwT3V0KTsK
KworICAgICAgICAgICAgICAgIEludFJlY3RSYWRpaSByYWRpaVRvRmlsbCA9IGJvcmRlcjsKKyAg
ICAgICAgICAgICAgICBpZiAoc2hhZG93U3ByZWFkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAg
cmFkaWlUb0ZpbGwuZXhwYW5kKHNoYWRvd1NwcmVhZCk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KGZpbGxSZWN0LCByYWRpaVRvRmlsbCwgQ29sb3I6OmJsYWNrLCBz
LT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBJ
bnRSZWN0IHJlY3RUb0NsaXBPdXQgPSByZWN0OwogCkBAIC0xNzU3LDcgKzE2NTQsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGludCB0eCwgaW50CiAKICAgICAgICAgICAgIGlmIChob2xlUmVjdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIGJvcmRlciwg
c2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChyZWN0LCBzaGFkb3dDb2xvciwgcy0+
Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE3ODksNyArMTY4
Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKIAogICAgICAgICAgICAgUGF0aCBwYXRoOwog
ICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewotICAgICAgICAgICAgICAgIHBhdGgu
YWRkUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRv
bVJpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIGJvcmRl
ci50b3BMZWZ0KCksIGJvcmRlci50b3BSaWdodCgpLCBib3JkZXIuYm90dG9tTGVmdCgpLCBib3Jk
ZXIuYm90dG9tUmlnaHQoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwYXRoKTsK
ICAgICAgICAgICAgICAgICBwYXRoLmNsZWFyKCk7CiAgICAgICAgICAgICB9IGVsc2UKQEAgLTE4
MDMsOCArMTcwMCw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKIAogICAgICAgICAgICAgaWYg
KGhhc0JvcmRlclJhZGl1cykgewogICAgICAgICAgICAgICAgIGlmIChzaGFkb3dTcHJlYWQgPiAw
KQotICAgICAgICAgICAgICAgICAgICB1bmlmb3JtbHlFeHBhbmRCb3JkZXJSYWRpaSgtc2hhZG93
U3ByZWFkLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAg
ICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QsIHRvcExlZnQsIHRvcFJp
Z2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGJvcmRl
ci5zaHJpbmsoc2hhZG93U3ByZWFkKTsKKyAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KGhvbGVSZWN0LCBib3JkZXIudG9wTGVmdCgpLCBib3JkZXIudG9wUmlnaHQoKSwgYm9yZGVy
LmJvdHRvbUxlZnQoKSwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGhvbGVSZWN0KTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggYjY5NzIxN2JkMjIzYzI5NGUxNThiNjJm
YjFiMGIxNWQwOTJhYTYyNC4uYWZmOWU3NmYyOTFlZmNhZmJmMjcyNDhmYjkyYWI1NzY1MjE0NzQw
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xMzAsOCAr
MTMwLDggQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgY2FsY3VsYXRlRmlsbFRpbGVTaXplKGNv
bnN0IEZpbGxMYXllciosIEludFNpemUgc2NhbGVkU2l6ZSkgY29uc3Q7CiAKLSAgICB2b2lkIGNs
aXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNp
emUmIGJvdHRvbUxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IEJveFNpZGUgc2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRj
aGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCisg
ICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgYm94LCBjb25zdCBJbnRSZWN0UmFkaWkmIGJvcmRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBCb3hTaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wg
c2Vjb25kRWRnZU1hdGNoZXMsIGNvbnN0IFJlbmRlclN0eWxlKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclZpZXc7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBkMjdhNzgwYTU3ZTc1NzIxNDlhODYwNGQ5YTBlZDg5
MmJhOWQ4ZmUxLi4wMTdkYmU0OTdmYTY4ZjljYjEzY2MyYzQ1YTdkOWNiMDkxYjQ3NGU5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTk4MiwzMSArOTgyLDE5IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBJbnRSZWN0CiAgICAgICAgIEludFJlY3QgaW5uZXJCb3JkZXJJbm5lclJlY3QgPSBi
b3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3Jk
ZXJCb3R0b21XaWR0aCwgCiAgICAgICAgICAgICBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJC
b3JkZXJSaWdodFdpZHRoKTsKIAotICAgICAgICAvLyBHZXQgdGhlIGlubmVyIHJhZGlpIGZvciB0
aGUgb3V0ZXIgYm9yZGVyIGxpbmUKLSAgICAgICAgSW50U2l6ZSBvdXRlckJvcmRlclRvcExlZnRJ
bm5lclJhZGl1cywgb3V0ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJv
dHRvbUxlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRlckJvdHRvbVJpZ2h0
SW5uZXJSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdp
dGhCb3JkZXJXaWR0aHMob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgs
IG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAotICAgICAgICAgICAgb3V0ZXJCb3JkZXJMZWZ0V2lk
dGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwgb3V0ZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMs
IG91dGVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRl
ckJvdHRvbUxlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVz
KTsKLQotICAgICAgICAvLyBHZXQgdGhlIGlubmVyIHJhZGlpIGZvciB0aGUgaW5uZXIgYm9yZGVy
IGxpbmUKLSAgICAgICAgSW50U2l6ZSBpbm5lckJvcmRlclRvcExlZnRJbm5lclJhZGl1cywgaW5u
ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5lclJh
ZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXM7Ci0g
ICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMo
aW5uZXJCb3JkZXJJbm5lclJlY3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlubmVyQm9yZGVyQm90
dG9tV2lkdGgsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVy
UmlnaHRXaWR0aCwgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyVG9w
UmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5l
clJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsKLQogICAgICAgICAv
LyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChpbm5lckJvcmRl
cklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAg
aW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5l
clJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaW5uZXJCb3JkZXJJbm5lclJlY3QsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Z2V0SW5u
ZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGlubmVyQm9yZGVySW5uZXJSZWN0
LCBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJC
b3JkZXJSaWdodFdpZHRoKSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3ND
b250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3Ms
IHMsIHN0eWxlLCBjLCBTT0xJRCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgp
OwogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9yZGVyIGxpbmUKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRS
ZWN0KG91dGVyQm9yZGVySW5uZXJSZWN0LCBvdXRlckJvcmRlclRvcExlZnRJbm5lclJhZGl1cywg
Ci0gICAgICAgICAgICBvdXRlckJvcmRlclRvcFJpZ2h0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVy
Qm90dG9tTGVmdElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXMp
OworICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChvdXRlckJvcmRl
cklubmVyUmVjdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMob3V0ZXJC
b3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lk
dGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyQm9yZGVyTGVm
dFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgpKTsKICAgICAgICAgZHJhd0JveFNpZGVGcm9t
UGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIHRoaWNrbmVzcywg
ZHJhd1RoaWNrbmVzcywgcywgc3R5bGUsIGMsIFNPTElEKTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5yZXN0b3JlKCk7CiAKQEAgLTEwMjgsMTggKzEwMTYsMTcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IEludFJlY3QKICAgICAgICAgSW50UmVjdCBoYWxmQm9yZGVyUmVjdCA9IGJvcmRlcklubmVyUmVj
dChib3JkZXJSZWN0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSAvIDIsIAogICAgICAgICAgICAgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
IC8gMiwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSAvIDIpOwogCi0gICAgICAgIEludFNpemUg
dG9wTGVmdEhhbGZSYWRpdXMsIHRvcFJpZ2h0SGFsZlJhZGl1cywgYm90dG9tTGVmdEhhbGZSYWRp
dXMsIGJvdHRvbVJpZ2h0SGFsZlJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdldElubmVyQm9yZGVy
UmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhoYWxmQm9yZGVyUmVjdCwgc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpIC8gMiwgCi0gICAgICAgICAgICBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSAvIDIsIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkgLyAyLCAKLSAgICAgICAgICAgIHRvcExlZnRIYWxmUmFkaXVzLCB0b3BSaWdodEhhbGZS
YWRpdXMsIGJvdHRvbUxlZnRIYWxmUmFkaXVzLCBib3R0b21SaWdodEhhbGZSYWRpdXMpOwotCiAg
ICAgICAgIC8vIFBhaW50IGZ1bGwgYm9yZGVyCiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgo
Z3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25lc3MsIGRyYXdU
aGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMSk7CiAKICAgICAgICAgLy8gUGFpbnQgaW5uZXIgb25s
eQogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaGFsZkJvcmRlclJlY3QsIHRvcExlZnRIYWxmUmFkaXVz
LCB0b3BSaWdodEhhbGZSYWRpdXMsCi0gICAgICAgICAgICBib3R0b21MZWZ0SGFsZlJhZGl1cywg
Ym90dG9tUmlnaHRIYWxmUmFkaXVzKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoaGFsZkJvcmRlclJlY3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9y
ZGVyV2lkdGhzKGhhbGZCb3JkZXJSZWN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSAvIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkgLyAyKSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhp
Y3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25l
c3MsIHMsIHN0eWxlLCBjLCBzMik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggOTc0YThkMDcyZWRmNjc3
OTBmMDg5MzY3NThmMjg0OGIwN2M2OGRmNy4uZDY3ZjRkOTkyYzc0ZDllMWI1Nzg2MjE3MDY4ZWY4
ZDUyMTFiMzk4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTM1LDEx
ICsxMzUsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgaW50IHR4LCBpbnQgdHkpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gUHVzaCBh
IGNsaXAgaWYgd2UgaGF2ZSBhIGJvcmRlciByYWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQg
dGhlIGZvcmVncm91bmQgY29udGVudCB0aGF0IGdldHMgcGFpbnRlZC4KICAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludFNp
emUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICAg
ICAgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRv
cFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0KLSAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmln
aHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFk
aWlGb3JSZWN0KGJvcmRlclJlY3QpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBiZTY3MGZmODllNjAyNjJi
MDczZjU3ZGMyMDU2NDA4MzA4MjYwMGU0Li5lMjRjMDI3NDczMGYxNjAxZjM2ZTg5NWNjN2ZhZTBj
Yzg3NWQ4ZjY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2lu
LmNwcApAQCAtNjc1LDkgKzY3NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRUZXh0RmllbGRJbnRlcm5hbChSZW5kZXJPYmplY3QqIG8sCiAgICAgICAgIC8vIGJhY2tncm91
bmQgKHRoZW1lZCBvciBmaWxsZWQpIGFwcHJvcHJpYXRlbHkuCiAgICAgICAgIC8vIEZJWE1FOiBt
YWtlIHN1cmUgd2UgZG8gdGhlIHJpZ2h0IHRoaW5nIGlmIGNzcyBiYWNrZ3JvdW5kLWNsaXAgaXMg
c2V0LgogICAgICAgICBpLmNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0
LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAgICAgIG8tPnN0eWxlKCkt
PmdldEJvcmRlclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpOwotICAgICAgICBpLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICBpLmNv
bnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZv
clJlY3QocikpOwogICAgIH0KICAgICB7CiAgICAgICAgIGNvbnN0IFRoZW1lRGF0YSYgdGhlbWVE
YXRhID0gZ2V0VGhlbWVEYXRhKG8pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0gYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCBiNjMyZDlhN2Q1MjM5ZTQ4ZjkwOTJlZmU5ZDc1MmYxYWE4MTYwN2JiLi40MWZjMjA5NGMzNmRh
ZjViYmU4NTc1OWRhYzJhNjdmZGE4NDI4MDIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQpAQCAtMTAzMiwxNCArMTAzMiw4IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVu
dUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAKICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCi0gICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVz
OwotICAgIEludFNpemUgdG9wUmlnaHRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0UmFk
aXVzOwotICAgIEludFNpemUgYm90dG9tUmlnaHRSYWRpdXM7Ci0KLSAgICBvLT5zdHlsZSgpLT5n
ZXRCb3JkZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgIGludCByYWRpdXMgPSB0
b3BMZWZ0UmFkaXVzLndpZHRoKCk7CisgICAgSW50UmVjdFJhZGlpIHJhZGlpID0gby0+c3R5bGUo
KS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIpOworICAgIGludCByYWRpdXMgPSByYWRpaS50b3BM
ZWZ0KCkud2lkdGgoKTsKIAogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNzcGFjZShB
ZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAKQEAgLTEwNjIsMjcgKzEw
NTYsMjcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50
cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5n
UmVmPiByaWdodFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdl
dCgpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIucmlnaHQo
KSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChj
b250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChy
LCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcu
Z2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICBwYWludElu
Zm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgdG9w
R3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5j
bG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgSW50UmVjdFJhZGlpKHJh
ZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsK
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAg
ICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVu
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChi
b3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0UmFkaXVzLCBi
b3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFJlY3RSYWRpaShJ
bnRTaXplKCksIEludFNpemUoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdo
dCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRvbVNoYWRp
bmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIH0K
IAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0
b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xp
cChyLCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRp
bmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGlu
Zy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEzMDMsOSAr
MTI5Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mCiAgICAgICAgIG1haW5TaGFkaW5nLmFk
b3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZShib3Vu
ZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0
b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXpl
IHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAg
ICAgICAgcmFkaXVzLCByYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoYm91bmRzLCBJbnRSZWN0UmFkaWkocmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFk
aXVzKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0
KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggOGQ2NmJhNzIwYmVjZjc2NDFhZDcyN2Zk
NGNjY2M1ZTM5NjYzZThkMC4uNTNlNTVkYjRhMTM2NDQ5ZmQwM2EyZjNhMWRkNGRlY2Q1YzZlYTk1
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAtNzUxLDE0ICs3
NTEsOCBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNhdmUoKTsKIAotICAgIEludFNpemUgdG9wTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIHRvcFJp
Z2h0UmFkaXVzOwotICAgIEludFNpemUgYm90dG9tTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIGJv
dHRvbVJpZ2h0UmFkaXVzOwotCi0gICAgby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0
KHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0
b21SaWdodFJhZGl1cyk7Ci0KLSAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJhZGl1cy53aWR0aCgp
OworICAgIEludFJlY3RSYWRpaSByYWRpaSA9IG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9y
UmVjdChyKTsKKyAgICBpbnQgcmFkaXVzID0gcmFkaWkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAg
ICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjc3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNl
Q3JlYXRlRGV2aWNlUkdCKCkpOwogCkBAIC03ODEsMjcgKzc3NSwyNyBAQCB2b2lkIFJlbmRlclRo
ZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbgogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9w
dENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKHIucmln
aHQoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSksIG1h
aW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdFJhZGl1cywgdG9wUmln
aHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIsIHJhZGlpKTsKICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRp
ZW50KSwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIEludFNpemUoKSwgSW50U2l6ZSgp
KTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGVuY2xvc2luZ0lu
dFJlY3QodG9wR3JhZGllbnQpLCBJbnRSZWN0UmFkaWkocmFkaWkudG9wTGVmdCgpLCByYWRpaS50
b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOwogICAgIENHQ29udGV4dERyYXdTaGFk
aW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5y
ZXN0b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewogICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0
KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFk
ZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6
ZSgpLCBJbnRTaXplKCksIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50UmVjdFJhZGlpKEludFNpemUoKSwgSW50U2l6ZSgpLCBy
YWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250
ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQogCiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdFJhZGl1cywgdG9w
UmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICBw
YWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIsIHJhZGlpKTsKICAgICBDR0Nv
bnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgQ0dDb250
ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsKICAgICBwYWludElu
Zm8uY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtOTgyLDkgKzk3Niw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50CiAgICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhp
YWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENH
UG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQo
KSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJh
Y2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91
bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAgICAgICAgcmFkaXVzLCByYWRpdXMpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzLCBJbnRSZWN0
UmFkaWkocmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CiAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250
ZXh0LT5yZXN0b3JlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbkNFLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3Bw
CmluZGV4IDI3Yjg3ODNiYWViZTA0NTA5NmY1MWMzZGIzYzU2Y2E5ZjljNmQyMWUuLmMzODE2YTEy
ZjM1NWRmZWUwMTIwNTU0OTQ0NGYwNDJlNThhODRiZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luQ0UuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNF
OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnQKICAgICBpbnQgeSA9IHIueSgpICsgKHIuaGVpZ2h0KCkgLSBjYW5jZWxTaXplLmhlaWdodCgp
KSAvIDIgKyAxOwogICAgIEludFJlY3QgY2FuY2VsQm91bmRzKEludFBvaW50KHgsIHkpLCBjYW5j
ZWxTaXplKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoY2FuY2VsQm91bmRzLCBjYW5jZWxSYWRpdXMsIGNh
bmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMpOworICAgIHBhaW50SW5mby5j
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoY2FuY2VsQm91bmRzLCBJbnRSZWN0UmFkaWkoY2Fu
Y2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzKSk7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KGNhbmNlbEJvdW5kcywgYnV0dG9uQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyB0aGUgJ3gnCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAppbmRleCAxNTJiYjJmODAzMWU4ZjdkYjQ1MjZjY2QwMWJhNWVkMjQy
Y2UzMTRiLi44Zjk2NWQ5OTMyZWU0ZGIzNTlhZTBjZTk2ZGMxNDBiYWIxZTIxNTEzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTI3NCwxMSArMjc0LDcgQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIAogICAg
ICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJhZGl1cywgc2luY2Ugd2Ug
d2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQgZ2V0cyBwYWludGVkLgog
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgICAgICAKLSAgICAgICAgSW50
U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAgICAg
IHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3Qo
Ym9yZGVyUmVjdCkpOwogICAgIH0KIAogICAgIGlmIChtX3dpZGdldCkgewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDAzNjM1ZDlmMTlmYmE0OTAxNjU2NzI3ODk2OGY4ZjEz
ZGE3NDhhODMuLmE4YjQyNGFkZWJmMzEwMmE2MGYyOTBkMGFiOWUwNDFjNjRhY2Y3YjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTI2LDYgKzI2LDggQEAKICNkZWZpbmUg
Qm9yZGVyRGF0YV9oCiAKICNpbmNsdWRlICJCb3JkZXJWYWx1ZS5oIgorI2luY2x1ZGUgIkludFJl
Y3QuaCIKKyNpbmNsdWRlICJJbnRSZWN0UmFkaWkuaCIKICNpbmNsdWRlICJMZW5ndGhTaXplLmgi
CiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKIApAQCAtMTA5LDcgKzExMSwxOSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Rv
cFJpZ2h0OyB9CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYm90dG9tTGVmdDsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbVJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQotICAgIAorCisgICAgSW50UmVjdFJhZGlp
IGNhbGNSYWRpaShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gSW50UmVjdFJhZGlpKEludFNpemUobV90b3BMZWZ0LndpZHRoKCkuY2FsY1ZhbHVlKHdp
ZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvcExlZnQuaGVp
Z2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFNpemUobV90b3BSaWdodC53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3RvcFJpZ2h0LmhlaWdodCgpLmNhbGNWYWx1ZShoZWln
aHQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1fYm90dG9tTGVmdC53
aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ib3R0b21MZWZ0LmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1fYm90dG9tUmlnaHQud2lkdGgoKS5jYWxjVmFs
dWUod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm90dG9t
UmlnaHQuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpKTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgQm9yZGVyVmFsdWUgbV9sZWZ0OwogICAgIEJvcmRlclZhbHVlIG1fcmlnaHQ7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzdlZDM5MWRlOWRhMzZlMDgzODMw
ZDI4MWJhZjY4MmI3MDIyN2ZiOS4uMTk3ZjRhOGFkZDBkMmJlMTg1Zjc5ZDExMzUyOTA3YjUxNmJh
ZDcyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNzQxLDg0
ICs3NDEsMjAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93KFNoYWRvd0RhdGEqIHNo
YWRvd0RhdGEsIGJvb2wgYWRkKQogICAgIHJhcmVEYXRhLT5tX2JveFNoYWRvdy5zZXQoc2hhZG93
RGF0YSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnN0cmFpbkNvcm5lclJhZGlpRm9yUmVjdChjb25z
dCBJbnRSZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6
ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpCitJbnRSZWN0UmFkaWkgUmVuZGVy
U3R5bGU6OmdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAog
ewotICAgIC8vIENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NTMyBydWxlczoKLSAgICAv
LyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3JkZXItcmFkaXVz
Ci0gICAgCi0gICAgZmxvYXQgZmFjdG9yID0gMTsKLSAgICB1bnNpZ25lZCByYWRpaVN1bTsKLQot
ICAgIC8vIHRvcAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcExlZnQu
d2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQud2lkdGgoKSk7IC8vIENh
c3RzIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cuCi0gICAgaWYgKHJhZGlpU3VtID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHIud2lkdGgoKSkpCi0gICAgICAgIGZhY3RvciA9IG1pbihzdGF0aWNf
Y2FzdDxmbG9hdD4oci53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwotCi0gICAgLy8gYm90
dG9tCi0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90dG9tTGVmdC53aWR0
aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21SaWdodC53aWR0aCgpKTsKLSAgICBp
ZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci53aWR0aCgpKSkKLSAgICAgICAg
ZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLndpZHRoKCkpIC8gcmFkaWlTdW0sIGZh
Y3Rvcik7Ci0gICAgCi0gICAgLy8gbGVmdAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvcExlZnQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbUxl
ZnQuaGVpZ2h0KCkpOwotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
LmhlaWdodCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLmhl
aWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwotICAgIAotICAgIC8vIHJpZ2h0Ci0gICAgcmFk
aWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLSAgICBpZiAocmFkaWlTdW0g
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci5oZWlnaHQoKSkpCi0gICAgICAgIGZhY3RvciA9IG1p
bihzdGF0aWNfY2FzdDxmbG9hdD4oci5oZWlnaHQoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKLSAg
ICAKLSAgICAvLyBTY2FsZSBhbGwgcmFkaWkgYnkgZiBpZiBuZWNlc3NhcnkuCi0gICAgaWYgKGZh
Y3RvciA8IDEpIHsKLSAgICAgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNvcm5lciBiZWNv
bWVzIHplcm8sIHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIuCi0gICAgICAgIHRvcExl
ZnQuc2NhbGUoZmFjdG9yKTsKLSAgICAgICAgaWYgKCF0b3BMZWZ0LndpZHRoKCkgfHwgIXRvcExl
ZnQuaGVpZ2h0KCkpCi0gICAgICAgICAgICB0b3BMZWZ0ID0gSW50U2l6ZSgpOwotICAgICAgICB0
b3BSaWdodC5zY2FsZShmYWN0b3IpOwotICAgICAgICBpZiAoIXRvcFJpZ2h0LndpZHRoKCkgfHwg
IXRvcFJpZ2h0LmhlaWdodCgpKQotICAgICAgICAgICAgdG9wUmlnaHQgPSBJbnRTaXplKCk7Ci0g
ICAgICAgIGJvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKLSAgICAgICAgaWYgKCFib3R0b21MZWZ0
LndpZHRoKCkgfHwgIWJvdHRvbUxlZnQuaGVpZ2h0KCkpCi0gICAgICAgICAgICBib3R0b21MZWZ0
ID0gSW50U2l6ZSgpOwotICAgICAgICBib3R0b21SaWdodC5zY2FsZShmYWN0b3IpOwotICAgICAg
ICBpZiAoIWJvdHRvbVJpZ2h0LndpZHRoKCkgfHwgIWJvdHRvbVJpZ2h0LmhlaWdodCgpKQotICAg
ICAgICAgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRl
clN0eWxlOjpnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYg
dG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUm
IGJvdHRvbVJpZ2h0KSBjb25zdAotewotICAgIHRvcExlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5i
b3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJvdW5kLT5i
b3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7Ci0gICAgdG9w
UmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLmNhbGNW
YWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkuY2Fs
Y1ZhbHVlKHIuaGVpZ2h0KCkpKTsKLSAgICAKLSAgICBib3R0b21MZWZ0ID0gSW50U2l6ZShzdXJy
b3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBz
dXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQo
KSkpOwotICAgIGJvdHRvbVJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJp
Z2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci5ib3R0
b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7Ci0KLSAgICBjb25zdHJh
aW5Db3JuZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKKyAgICBJbnRSZWN0UmFkaWkgcmFkaWkgPSBzdXJyb3VuZC0+Ym9yZGVyLmNh
bGNSYWRpaShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIHJhZGlpLmNvbnN0cmFp
bkZvcihyZWN0KTsKKyAgICByZXR1cm4gcmFkaWk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6Omdl
dElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRSZWN0JiBp
bm5lclJlY3QsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCB1bnNpZ25lZCBzaG9ydCBib3R0b21X
aWR0aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRo
LCBJbnRTaXplJiBpbm5lclRvcExlZnQsIEludFNpemUmIGlubmVyVG9wUmlnaHQsIEludFNpemUm
IGlubmVyQm90dG9tTGVmdCwgSW50U2l6ZSYgaW5uZXJCb3R0b21SaWdodCkgY29uc3QKK0ludFJl
Y3RSYWRpaSBSZW5kZXJTdHlsZTo6Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVy
V2lkdGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVjdCwgdW5zaWduZWQgc2hvcnQgdG9wV2lkdGgs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0
IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCkgY29uc3QKIHsKLSAgICBpbm5l
clRvcExlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2Fs
Y1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCkuaGVp
Z2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotICAgIGlubmVyVG9wUmlnaHQg
PSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZShp
bm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5j
YWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0ID0gSW50
U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5l
clJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNh
bGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lckJvdHRvbVJpZ2h0ID0gSW50
U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5u
ZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCku
Y2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotCi0KLSAgICBpbm5lclRvcExlZnQuc2V0
V2lkdGgobWF4KDAsIGlubmVyVG9wTGVmdC53aWR0aCgpIC0gbGVmdFdpZHRoKSk7Ci0gICAgaW5u
ZXJUb3BMZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJUb3BMZWZ0LmhlaWdodCgpIC0gdG9wV2lk
dGgpKTsKLQotICAgIGlubmVyVG9wUmlnaHQuc2V0V2lkdGgobWF4KDAsIGlubmVyVG9wUmlnaHQu
d2lkdGgoKSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBpbm5lclRvcFJpZ2h0LnNldEhlaWdodChtYXgo
MCwgaW5uZXJUb3BSaWdodC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7Ci0KLSAgICBpbm5lckJvdHRv
bUxlZnQuc2V0V2lkdGgobWF4KDAsIGlubmVyQm90dG9tTGVmdC53aWR0aCgpIC0gbGVmdFdpZHRo
KSk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0b21MZWZ0
LmhlaWdodCgpIC0gYm90dG9tV2lkdGgpKTsKLQotICAgIGlubmVyQm90dG9tUmlnaHQuc2V0V2lk
dGgobWF4KDAsIGlubmVyQm90dG9tUmlnaHQud2lkdGgoKSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBp
bm5lckJvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0b21SaWdodC5oZWlnaHQo
KSAtIGJvdHRvbVdpZHRoKSk7Ci0KLSAgICBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoaW5u
ZXJSZWN0LCBpbm5lclRvcExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5u
ZXJCb3R0b21SaWdodCk7CisgICAgSW50UmVjdFJhZGlpIHJhZGlpID0gc3Vycm91bmQtPmJvcmRl
ci5jYWxjUmFkaWkoaW5uZXJSZWN0LndpZHRoKCksIGlubmVyUmVjdC5oZWlnaHQoKSk7CisgICAg
cmFkaWkuc2hyaW5rKHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRo
KTsKKyAgICByYWRpaS5jb25zdHJhaW5Gb3IoaW5uZXJSZWN0KTsKKyAgICByZXR1cm4gcmFkaWk7
CiB9CiAKIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIFJlbmRlclN0eWxlOjpjb3VudGVyRGly
ZWN0aXZlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBj
YmM1YzE3YjZhYWIyOTkyZjQ3ZWM2NWQyN2E5NTU1MGI3ZjgxZDgzLi4zOTM5ZGYwYjU5MTJmYjVm
N2NkMDY3NDEyNTU5ZjYwZTY4ZjQ2NmM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTg1MiwxMyArODUyLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHNldEJv
cmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVkKSwgTGVuZ3RoKHMu
aGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KLQogICAgIAotICAgIHZvaWQgZ2V0Qm9yZGVyUmFk
aWlGb3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BS
aWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpIGNvbnN0Owot
ICAgIHZvaWQgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGNvbnN0
IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxlZnRX
aWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0LCBJbnRTaXplJiBpbm5lclRvcFJpZ2h0LCBJbnRT
aXplJiBpbm5lckJvdHRvbUxlZnQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNp
emUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0OworICAgIEludFJlY3RSYWRpaSBnZXRCb3JkZXJS
YWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIEludFJlY3RSYWRpaSBnZXRJ
bm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYsIHVu
c2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJvdHRvbVdpZHRoLCB1
bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJpZ2h0V2lkdGgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0KICAgICB2b2lkIHNldEJv
cmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV9sZWZ0Lm1fc3R5bGUsIHYpIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77534</attachid>
            <date>2010-12-27 20:01:29 -0800</date>
            <delta_ts>2011-01-04 19:30:14 -0800</delta_ts>
            <desc>try to fix chromium buid</desc>
            <filename>bug-51664-20101228130127.patch</filename>
            <type>text/plain</type>
            <size>97696</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxMWZlZGZiZWRhMGY2ZGM4ZjVhMDBjOWQ2ZTZlMzczMmIyZWRjYzlkLi40MGJhOTZlMTk4M2I5
OTMxZGMwNDJhY2YwODdlM2MxY2E3MWM2MzIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC01MjcsNiArNTI3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBcCiAJcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAgXAorCXBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5j
cHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggN2M2ZTNlNTlhNGQ0NWZkZjk5YTIyYWY0MDJmOTlhMjhiZDQzMWE1MC4u
YTlhY2E5NWJjMjJiNjA4MGYxNzcxN2NjODMzODliM2ZhOTYwZjEyNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzQz
LDYgKzEzNDMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0UmFkaWkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMWRkYmI0ZDIxZGFmY2YxYmUwNTdkYjFmODMwY2UzYmYxNGY3YWVmZC4u
NjdjZjhmYTU2Y2I2OTk3MGE2ZDRlODMxNmQyODhlMWM2YzFkODkyMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAor
MjAxMC0xMi0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZzogRXh0
cmFjdCBJbnRSZWN0UmFkaWkgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUxNjY0CisKKyAgICAgICAgSW50UmVjdFJhZGlpIGlzIGEgcXVhZCBv
ZiBJbnRTaXplIGZvciB0aGUgcmVjdGFuZ2xlIHJhZGlpLAorICAgICAgICB3aGljaCBpcyBvZnRl
biBtYW5pcHVsYXRlZCBhdCBvbmNlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RS
YWRpaS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjppc1plcm8p
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpjb25zdHJhaW5Gb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
UmVjdFJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0UmFkaWkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFk
aWk6OkludFJlY3RSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldFRv
cExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRUb3BSaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlp
Ojp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmJvdHRvbUxlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpib3R0b21SaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRS
ZWN0UmFkaWk6OnNocmluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFRleHRGaWVsZEludGVybmFsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
U2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bkNFOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJEYXRhOjpjYWxjUmFkaWkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRJbm5lckJv
cmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dEJvcmRlclJhZGl1cyk6CisKIDIwMTAtMTItMjcgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0u
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRmNGI0NjNm
MDBmMTczMmI0M2YzODIzZThjOGVkYjZjMjRlY2MzYjUuLmE5N2M3YmJjNDNlNjIxNWRjNDU4NzEz
OWMyZWY4MGJkZTRiZjQxZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yOTQ0LDYgKzI5NDQsOCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRS
ZWN0LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemVIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBhYWM3NjBhMmI3MmQ4MTg0OGE3YzgyNDgzYzQyOWFi
ZDhkOTA2OTY5Li5hOTg3ZGFmZDA1YTdkMzliYmJmODMzYzc3NDJhNDk0NzA3Zjk5YWJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTEyMDAsNiArMTIwMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdFJhZGlpLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIFwKQEAgLTIxMjUsNiArMjEyNiw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmgg
XAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5oIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDMyM2U1MjZhNzNmOWY4M2FhYWE4YTY0NjE5MTA0
ZWRkM2QwNDMzZjIuLmEwZTRiMzk0ODdiOGY5MTU0YzQ3OTE2MzI4OTk5NTQwMmVlYzNhNDIgMTAw
NzU1Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjY1NDEsNiArMjY1NDEsMTQg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXEludFJlY3RSYWRpaS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbnRS
ZWN0UmFkaWkuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEludFNpemUuaCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTFkNmY2
N2U3N2M5NWU3M2U4N2Q2MGJmYmRkMTZhNTlkYzVhOWE0Mi4uYjVkYTgxMDdjMzQ3ODY5MGVmYTgz
OGVlOTIyZDJmNTU2NDFmNWI1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTMxMDIsNiArMzEwMiw4IEBACiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVD
RSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxl
ck1hYy5tbSAqLzsgfTsKIAkJQTczNTJDMTkwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi87IH07CiAJCUE3
MzUyQzFBMEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczNTJDMTgwQjFCQjg5RDAwQTk4NkQw
IC8qIFJlbmRlclNWR0Jsb2NrLmggKi87IH07CisJCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAv
KiBJbnRSZWN0UmFkaWkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIEludFJlY3RSYWRpaS5jcHAgKi87
IH07CisJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZEMTJDOTdCRkUw
MDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5
NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NTEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKIAkJQTc1RThCODgwRTFE
RTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3Bw
ICovOyB9OwpAQCAtOTQzNCw2ICs5NDM2LDggQEAKIAkJQTcxQTcwQzkxMUFGQjAyMDAwOTg5RDZE
IC8qIEhUTUxNZXRlckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxNZXRl
ckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM1MkMxNzBCMUJC
ODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTczNTJDMTgwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVj
dFJhZGlpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RS
YWRpaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0Y5NUZEMTJDOTdCRkUw
MDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50UmVjdFJhZGlpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0
MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1
RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRkVCbGVuZC5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZFQmxlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNjUsNiArMTcyNjksOCBAQAogCQkJ
CUU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLywKIAkJCQlCMjc1
MzU0NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5jcHAgKi8sCiAJCQkJQjI3NTM1NDYwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuaCAqLywKKwkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFB
RjkgLyogSW50UmVjdFJhZGlpLmNwcCAqLywKKwkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkg
LyogSW50UmVjdFJhZGlpLmggKi8sCiAJCQkJQjI3NTM1NDcwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemUuaCAqLywKIAkJCQlCMjc1MzU0ODBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2gu
aCAqLywKIAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICov
LApAQCAtMjIyMjIsNiArMjIyMjgsNyBAQAogCQkJCTZFQkYwRTQ5MTJBODkyNjEwMERCMTcwOSAv
KiBPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgw
MERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNzcx
MkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVjdFJhZGlpLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI0ODk0LDYgKzI0OTAxLDcgQEAKIAkJCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkg
LyogT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFQkYwRTU0MTJBODky
OTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUJG
MEU3NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIEludFJlY3RSYWRpaS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA5NmE5MmZiNjA0ZGI2YTgwMjM3NTAxZGNiNzYzY2FmOTlmNjg1Mzg2Li5iZjVj
N2Y4NThiY2UxZjllNmRiMTY2MWYwZGFjMDdlOTU2OWI5ZTUzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiSW50UmVjdFJhZGlpLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTUyOSwyNSArNTMwLDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTCiAgICAgICAg
IGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0
Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodCwKLSAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVj
dENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdFJhZGlpJiByYWRpaSkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQYXRo
IHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
cmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJh
ZGlpLmJvdHRvbVJpZ2h0KCkpOwogICAgIGNsaXAocGF0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0
IEludFNpemUmIGJvdHRvbVJpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3Vu
ZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0UmFkaWkmIHJhZGlpKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
dGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0
LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwg
cmFkaWkuYm90dG9tUmlnaHQoKSk7CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIApAQCAtNTc4LDYg
KzU3NywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBHZW5lcmF0b3ImIGdlbmVyYXRvcikKICAgICBnZW5lcmF0b3IuZmlsbCh0aGlzLCBy
ZWN0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0UmFkaWkmIHJhZGlpLCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBmaWxsUm91bmRlZFJlY3QocmVjdCwg
cmFkaWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJh
ZGlpLmJvdHRvbVJpZ2h0KCksIGNvbG9yLCBjb2xvclNwYWNlKTsKK30KKwogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24pCiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0
ZU9wZXJhdGlvbjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGE0YTI2OTVhNTI5ZmEzYWQ4MzM1NTViOGQyNTMyNGE3Y2JiODRiMjkuLmM1NjRjOGZk
Yjk3MjhiOWE1YWEzOTJkMzMwZjAxYmM5MDU4ODVlOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTIxLDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBHZW5lcmF0b3I7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlOwogICAgIGNsYXNzIEltYWdlQnVmZmVyOworICAgIGNsYXNzIEludFJl
Y3RSYWRpaTsKICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOwogICAgIGNsYXNzIFRleHRSdW47CkBAIC0yODMsNiArMjg0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiwgR2VuZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29u
c3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0UmFkaWkmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OwogCiAgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMTEs
MTAgKzMxMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKIAogICAgICAgICB2b2lk
IGNsaXAoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3RDbGlw
KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0
b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHQpOworICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdFJhZGlpJik7CiAgICAgICAgIHZvaWQgYWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoY29uc3QgSW50UmVjdCYsIGludCB0aGlja25lc3MpOwogICAgICAgICB2b2lkIGNsaXBPdXQo
Y29uc3QgSW50UmVjdCYpOwotICAgICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsK
KyAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFJlY3RSYWRpaSYpOwogICAgICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29u
c3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7CiAgICAgICAgIHZvaWQgY2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWJiOGFhMDEy
YzdjZTBlOTE2ZTMxZGMxOTlhMzFiYWZlMjlmNzU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRSZWN0UmFk
aWkuaCIKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBJbnRSZWN0UmFkaWk6OmlzWmVybygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdG9wTGVmdC5pc1plcm8oKSAmJiBtX3RvcFJpZ2h0LmlzWmVybygpICYm
IG1fYm90dG9tTGVmdC5pc1plcm8oKSAmJiBtX2JvdHRvbVJpZ2h0LmlzWmVybygpOworfQorCit2
b2lkIEludFJlY3RSYWRpaTo6Y29uc3RyYWluRm9yKGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgLy8gQ29uc3RyYWluIGNvcm5lciByYWRpaSB1c2luZyBDU1MzIHJ1bGVzOgorICAgIC8vIGh0
dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJvcmRlci1yYWRpdXMKKyAg
ICAKKyAgICBmbG9hdCBmYWN0b3IgPSAxOworICAgIHVuc2lnbmVkIHJhZGlpU3VtOworCisgICAg
Ly8gdG9wCisgICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90b3BMZWZ0Lndp
ZHRoKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdG9wUmlnaHQud2lkdGgoKSk7IC8vIENh
c3RzIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cuCisgICAgaWYgKHJhZGlpU3VtID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWlu
KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LndpZHRoKCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CisK
KyAgICAvLyBib3R0b20KKyAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2Jv
dHRvbUxlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ib3R0b21SaWdodC53
aWR0aCgpKTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC53
aWR0aCgpKSkKKyAgICAgICAgZmFjdG9yID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJl
Y3Qud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKKyAgICAKKyAgICAvLyBsZWZ0CisgICAg
cmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90b3BMZWZ0LmhlaWdodCgpKSArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpOworICAgIGlmIChyYWRp
aVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSkKKyAgICAgICAgZmFj
dG9yID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KCkpIC8gcmFkaWlT
dW0sIGZhY3Rvcik7CisgICAgCisgICAgLy8gcmlnaHQKKyAgICByYWRpaVN1bSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3RvcFJpZ2h0LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2JvdHRvbVJpZ2h0LmhlaWdodCgpKTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0
YXRpY19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAg
IAorICAgIC8vIFNjYWxlIGFsbCByYWRpaSBieSBmIGlmIG5lY2Vzc2FyeS4KKyAgICBpZiAoZmFj
dG9yIDwgMSkgeworICAgICAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29t
ZXMgemVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KKyAgICAgICAgbV90b3BM
ZWZ0LnNjYWxlKGZhY3Rvcik7CisgICAgICAgIGlmICghbV90b3BMZWZ0LndpZHRoKCkgfHwgIW1f
dG9wTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKKyAg
ICAgICAgbV90b3BSaWdodC5zY2FsZShmYWN0b3IpOworICAgICAgICBpZiAoIW1fdG9wUmlnaHQu
d2lkdGgoKSB8fCAhbV90b3BSaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIG1fdG9wUmlnaHQg
PSBJbnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tTGVmdC5zY2FsZShmYWN0b3IpOworICAgICAg
ICBpZiAoIW1fYm90dG9tTGVmdC53aWR0aCgpIHx8ICFtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpCisg
ICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tUmln
aHQuc2NhbGUoZmFjdG9yKTsKKyAgICAgICAgaWYgKCFtX2JvdHRvbVJpZ2h0LndpZHRoKCkgfHwg
IW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gSW50
U2l6ZSgpOworICAgIH0KKworfQorCit2b2lkIEludFJlY3RSYWRpaTo6ZXhwYW5kKGludCB0b3BX
aWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkKK3sK
KyAgICBtX3RvcExlZnQuc2V0V2lkdGgoc3RkOjptYXgoMCwgbV90b3BMZWZ0LndpZHRoKCkgKyBs
ZWZ0V2lkdGgpKTsKKyAgICBtX3RvcExlZnQuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fdG9wTGVm
dC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7CisKKyAgICBtX3RvcFJpZ2h0LnNldFdpZHRoKHN0ZDo6
bWF4KDAsIG1fdG9wUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX3RvcFJpZ2h0
LnNldEhlaWdodChzdGQ6Om1heCgwLCBtX3RvcFJpZ2h0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsK
KworICAgIG1fYm90dG9tTGVmdC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX2JvdHRvbUxlZnQud2lk
dGgoKSArIGxlZnRXaWR0aCkpOworICAgIG1fYm90dG9tTGVmdC5zZXRIZWlnaHQoc3RkOjptYXgo
MCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKKworICAgIG1fYm90dG9t
UmlnaHQuc2V0V2lkdGgoc3RkOjptYXgoMCwgbV9ib3R0b21SaWdodC53aWR0aCgpICsgcmlnaHRX
aWR0aCkpOworICAgIG1fYm90dG9tUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fYm90dG9t
UmlnaHQuaGVpZ2h0KCkgKyBib3R0b21XaWR0aCkpOworfQorCit2b2lkIEludFJlY3RSYWRpaTo6
aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBJbnRSZWN0UmFkaWkmIGVkZ2VzLCBib29sIGlzSG9y
aXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKQoreworICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7CisgICAgICAg
IGlmIChpc0hvcml6b250YWwpCisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0
b21MZWZ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBlZGdlcy50
b3BSaWdodCgpOworICAgICAgICBtX3RvcExlZnQgPSBlZGdlcy50b3BMZWZ0KCk7CisgICAgfQor
CisgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6
b250YWwpCisgICAgICAgICAgICBtX3RvcFJpZ2h0ID0gZWRnZXMudG9wUmlnaHQoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gZWRnZXMuYm90dG9tTGVmdCgpOwor
ICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gZWRnZXMuYm90dG9tUmlnaHQoKTsKKyAgICB9CisKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0UmFkaWkuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dFJhZGlpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRlOGMzZDYzNGFlZDI1NzIyZjhjYTJmNzVhMjcxMzk2YmU4
YzE0NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dFJhZGlpLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludFJl
Y3RSYWRpaV9oCisjZGVmaW5lIEludFJlY3RSYWRpaV9oCisKKyNpbmNsdWRlICJJbnRTaXplLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW50UmVjdDsKKworY2xhc3MgSW50UmVj
dFJhZGlpIHsKK3B1YmxpYzoKKyAgICBJbnRSZWN0UmFkaWkoKSB7fQorICAgIEludFJlY3RSYWRp
aShjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3Qg
SW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpCisgICAgICAg
IDogbV90b3BMZWZ0KHRvcExlZnQpCisgICAgICAgICwgbV90b3BSaWdodCh0b3BSaWdodCkKKyAg
ICAgICAgLCBtX2JvdHRvbUxlZnQoYm90dG9tTGVmdCkKKyAgICAgICAgLCBtX2JvdHRvbVJpZ2h0
KGJvdHRvbVJpZ2h0KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldFRvcExlZnQoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9CisgICAgdm9pZCBzZXRUb3BSaWdo
dChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9CisgICAgdm9pZCBz
ZXRCb3R0b21MZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9ib3R0b21MZWZ0ID0gc2l6ZTsg
fQorICAgIHZvaWQgc2V0Qm90dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRv
bVJpZ2h0ID0gc2l6ZTsgfQorICAgIGNvbnN0IEludFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJl
dHVybiBtX3RvcExlZnQ7IH0KKyAgICBjb25zdCBJbnRTaXplJiB0b3BSaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fdG9wUmlnaHQ7IH0KKyAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmln
aHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CisKKyAgICBib29sIGlzWmVybygp
IGNvbnN0OworCisgICAgdm9pZCBjb25zdHJhaW5Gb3IoY29uc3QgSW50UmVjdCYpOworICAgIHZv
aWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBJbnRSZWN0UmFkaWkmIGVkZ2VzLCBib29sIGlz
SG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKKyAgICB2b2lkIGV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21X
aWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpOworICAgIHZvaWQgZXhwYW5kKGlu
dCBzaXplKSB7IGV4cGFuZChzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQorICAgIHZvaWQgc2hy
aW5rKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmln
aHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1y
aWdodFdpZHRoKTsgfQorICAgIHZvaWQgc2hyaW5rKGludCBzaXplKSB7IHNocmluayhzaXplLCBz
aXplLCBzaXplLCBzaXplKTsgfQorCitwcml2YXRlOgorICAgIEludFNpemUgbV90b3BMZWZ0Owor
ICAgIEludFNpemUgbV90b3BSaWdodDsKKyAgICBJbnRTaXplIG1fYm90dG9tTGVmdDsKKyAgICBJ
bnRTaXplIG1fYm90dG9tUmlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBJbnRSZWN0UmFkaWlfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWRlOThl
NzExODA4ODE3NjhiMmVkNmZiOTIwMzdjNjU3ZmEyOWRhNy4uNDQ5MjMzNjgxNjVmNzYxOTBlZDY1
N2E4OGJlYTVmZWY5NzQ3YjkxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMDYyLDE0
ICsxMDYyLDggQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBw
YWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgIH0KICAgICBJbnRSZWN0IGNsaXBSZWN0KGlz
Q29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QodHgsIHR5KSA6IG92ZXJmbG93Q2xpcFJlY3Qo
dHgsIHR5KSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBpZiAoc3R5bGUo
KS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAgICAgIEludFJlY3QgYm9yZGVyUmVjdCA9
IEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci0gICAgICAgIHN0eWxlKCktPmdl
dEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKLSAgICB9Ci0gICAgCisgICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1
cygpKQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKEludFJl
Y3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSksIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9y
UmVjdChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpKSk7CiAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGQ1ZmIxM2U0MTI1NzM5Y2Yz
M2FjMGFiYzE0Y2I0ZDNiMTc5YWZmOGQuLjBmM2EwYWZkZjhhNTA4YzdlNmUyYmMyZDdkNzY3Mjgz
ZmI0NzNhMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
QEAgLTUzNCwyNiArNTM0LDI1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAKICAgICAgICAg
Y29udGV4dC0+c2F2ZSgpOwogCi0gICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZv
clJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJp
Z2h0KTsKKyAgICAgICAgSW50UmVjdFJhZGlpIHJhZGlpID0gc3R5bGUoKS0+Z2V0Qm9yZGVyUmFk
aWlGb3JSZWN0KGJvcmRlclJlY3QpOwogCiAgICAgICAgIGlmICghaW5jbHVkZUxlZnRFZGdlKSB7
Ci0gICAgICAgICAgICB0b3BMZWZ0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgcmFkaWkuc2V0
VG9wTGVmdChJbnRTaXplKCkpOwogICAgICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9udGFsKCkp
Ci0gICAgICAgICAgICAgICAgYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgICAgICAg
ICByYWRpaS5zZXRCb3R0b21MZWZ0KEludFNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgICAgICAgICAgcmFkaWku
c2V0VG9wUmlnaHQoSW50U2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KCFpbmNsdWRlUmlnaHRFZGdlKSB7CiAgICAgICAgICAgICBpZiAoYm94LT5pc0hvcml6b250YWwo
KSkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgICAgICAg
ICByYWRpaS5zZXRUb3BSaWdodChJbnRTaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGJvdHRvbUxlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgICAgICBib3R0b21SaWdo
dCA9IEludFNpemUoKTsKKyAgICAgICAgICAgICAgICByYWRpaS5zZXRCb3R0b21MZWZ0KEludFNp
emUoKSk7CisgICAgICAgICAgICByYWRpaS5zZXRCb3R0b21SaWdodChJbnRTaXplKCkpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBjb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9y
ZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAg
ICAgICAgY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHJhZGlpKTsKICAg
ICAgICAgY2xpcHBlZFRvQm9yZGVyUmFkaXVzID0gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMTEsMTQg
KzEwMTAsMTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICBib29sIHJlbmRlclJpZ2h0
ID0gcmlnaHRTdHlsZSA+IEJISURERU4gJiYgIXJpZ2h0VHJhbnNwYXJlbnQgJiYgKCFob3Jpem9u
dGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICBib29sIHJlbmRlckJvdHRvbSA9
IGJvdHRvbVN0eWxlID4gQkhJRERFTiAmJiAhYm90dG9tVHJhbnNwYXJlbnQgJiYgKGhvcml6b250
YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgYm9vbCByZW5kZXJSYWRpaSA9
IGZhbHNlOwogICAgIFBhdGggcm91bmRlZFBhdGg7Ci0gICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7CisgICAgSW50UmVjdFJhZGlpIGJvcmRlcjsK
ICAgICBJbnRSZWN0IGJvcmRlclJlY3QodHgsIHR5LCB3LCBoKTsKIAogICAgIGlmIChzdHlsZS0+
aGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0b3BS
aWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAg
IHN0eWxlLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICAgICAgYm9yZGVyLmluY2x1ZGVMb2dpY2FsRWRnZXMoc3R5bGUtPmdldEJvcmRlclJhZGlpRm9y
UmVjdChib3JkZXJSZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9y
aXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogCiAgICAgICAgIGludCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwogICAgICAgICBpbnQg
cmlnaHRXaWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBz
dHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogMDsKQEAgLTEwMjYsNDcgKzEwMjQsMjAgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgaW50IGJvdHRvbVdpZHRoID0gKGhvcml6b250
YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRo
KCkgOiAwOwogCiAgICAgICAgIEludFJlY3QgaW5uZXJCb3JkZXJSZWN0ID0gYm9yZGVySW5uZXJS
ZWN0KGJvcmRlclJlY3QsIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdp
ZHRoKTsKLSAgICAgICAgSW50U2l6ZSBpbm5lclRvcExlZnRSYWRpdXMsIGlubmVyVG9wUmlnaHRS
YWRpdXMsIGlubmVyQm90dG9tTGVmdFJhZGl1cywgaW5uZXJCb3R0b21SaWdodFJhZGl1czsKKyAg
ICAgICAgSW50UmVjdFJhZGlpIGlubmVyOworICAgICAgICBpbm5lci5pbmNsdWRlTG9naWNhbEVk
Z2VzKHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoaW5u
ZXJCb3JkZXJSZWN0LCB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0
aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbCwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAKLSAg
ICAgICAgc3R5bGUtPmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhp
bm5lckJvcmRlclJlY3QsIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdp
ZHRoLCBpbm5lclRvcExlZnRSYWRpdXMsIGlubmVyVG9wUmlnaHRSYWRpdXMsIGlubmVyQm90dG9t
TGVmdFJhZGl1cywgaW5uZXJCb3R0b21SaWdodFJhZGl1cyk7Ci0KLSAgICAgICAgSW50U2l6ZSBp
bm5lclRvcExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5uZXJCb3R0b21S
aWdodDsKLQotICAgICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewotICAgICAgICAg
ICAgdG9wTGVmdCA9IHRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAgICBpbm5lclRvcExlZnQgPSBp
bm5lclRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAgICBpZiAoaG9yaXpvbnRhbCkgewotICAgICAg
ICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgICAg
IGlubmVyQm90dG9tTGVmdCA9IGlubmVyQm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAg
ICAgICAgICAgICBpbm5lclRvcFJpZ2h0ID0gaW5uZXJUb3BSaWdodFJhZGl1czsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkg
ewotICAgICAgICAgICAgaWYgKGhvcml6b250YWwpIHsKLSAgICAgICAgICAgICAgICB0b3BSaWdo
dCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlubmVyVG9wUmlnaHQgPSBpbm5l
clRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBi
b3R0b21MZWZ0ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgICAgICBpbm5lckJvdHRv
bUxlZnQgPSBpbm5lckJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBib3R0b21SaWdodCA9IGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgaW5uZXJCb3R0
b21SaWdodCA9IGlubmVyQm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZW5kZXJSYWRpaSA9ICF0b3BMZWZ0LmlzWmVybygpIHx8ICF0b3BSaWdodC5pc1plcm8oKSB8fCAh
Ym90dG9tTGVmdC5pc1plcm8oKSB8fCAhYm90dG9tUmlnaHQuaXNaZXJvKCk7Ci0gICAgICAgIAot
ICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgaWYgKCFib3JkZXIuaXNaZXJvKCkp
IHsKICAgICAgICAgICAgIC8vIENsaXAgdG8gdGhlIGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0
cy4KICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyUmVjdCwgaW5uZXJUb3BMZWZ0LCBp
bm5lclRvcFJpZ2h0LCBpbm5lckJvdHRvbUxlZnQsIGlubmVyQm90dG9tUmlnaHQpOwotICAgICAg
ICAgICAgcm91bmRlZFBhdGguYWRkUm91bmRlZFJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIGJvcmRlcik7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlclJlY3QsIGlu
bmVyKTsKKyAgICAgICAgICAgIHJvdW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlclJlY3Qs
IGJvcmRlci50b3BMZWZ0KCksIGJvcmRlci50b3BSaWdodCgpLCBib3JkZXIuYm90dG9tTGVmdCgp
LCBib3JkZXIuYm90dG9tUmlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIHJl
bmRlclJhZGlpID0gIWJvcmRlci5pc1plcm8oKTsKICAgICBib29sIHVwcGVyTGVmdEJvcmRlclN0
eWxlc01hdGNoID0gcmVuZGVyTGVmdCAmJiAodG9wU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAodG9w
Q29sb3IgPT0gbGVmdENvbG9yKTsKICAgICBib29sIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRj
aCA9IHJlbmRlclJpZ2h0ICYmICh0b3BTdHlsZSA9PSByaWdodFN0eWxlKSAmJiAodG9wQ29sb3Ig
PT0gcmlnaHRDb2xvcikgJiYgKHRvcFN0eWxlICE9IE9VVFNFVCkgJiYgKHRvcFN0eWxlICE9IFJJ
REdFKSAmJiAodG9wU3R5bGUgIT0gSU5TRVQpICYmICh0b3BTdHlsZSAhPSBHUk9PVkUpOwogICAg
IGJvb2wgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJMZWZ0ICYmIChib3R0b21T
dHlsZSA9PSBsZWZ0U3R5bGUpICYmIChib3R0b21Db2xvciA9PSBsZWZ0Q29sb3IpICYmIChib3R0
b21TdHlsZSAhPSBPVVRTRVQpICYmIChib3R0b21TdHlsZSAhPSBSSURHRSkgJiYgKGJvdHRvbVN0
eWxlICE9IElOU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gR1JPT1ZFKTsKQEAgLTEwNzYsOSArMTA0
Nyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAg
ICAgIGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVy
V2lsbEFyY0lubmVyRWRnZSh0b3BMZWZ0LCB0b3BSaWdodCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0
aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSkp
IHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9y
ZGVyLnRvcExlZnQoKSwgYm9yZGVyLnRvcFJpZ2h0KCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpKSB7
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGNsaXBC
b3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHRvcExlZnQsIHRv
cFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNUb3AsIHVwcGVyTGVmdEJvcmRlclN0
eWxlc01hdGNoLCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgICAgICBjbGlw
Qm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXIsIEJT
VG9wLCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgdXBwZXJSaWdodEJvcmRlclN0eWxlc01h
dGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwogICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKSwgc3R5bGUtPmJvcmRlclJpZ2h0
V2lkdGgoKSk7CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4
dCwgYm9yZGVyUmVjdCwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0aGlj
a25lc3MsIEJTVG9wLCBzdHlsZSwgdG9wQ29sb3IsIHRvcFN0eWxlKTsKICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTA5Nyw5ICsxMDY4LDkgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGludCB0eCwKICAgICAgICAgaW50IHggPSB0eDsKICAgICAgICAgaW50IHgyID0gdHgg
KyB3OwogCi0gICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdl
KGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSkgeworICAg
ICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIuYm90
dG9tTGVmdCgpLCBib3JkZXIuYm90dG9tUmlnaHQoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
LCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkp
IHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY2xp
cEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgdG9wTGVmdCwg
dG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBCU0JvdHRvbSwgbG93ZXJMZWZ0Qm9y
ZGVyU3R5bGVzTWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgICAg
IGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRl
ciwgQlNCb3R0b20sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVy
U3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CiAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3MgPSBtYXgobWF4KHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpLCBzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3Jh
cGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckJvdHRv
bVdpZHRoKCksIHRoaWNrbmVzcywgQlNCb3R0b20sIHN0eWxlLCBib3R0b21Db2xvciwgYm90dG9t
U3R5bGUpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMTIw
LDkgKzEwOTEsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICBpbnQgeSA9IHR5
OwogICAgICAgICBpbnQgeTIgPSB0eSArIGg7CiAKLSAgICAgICAgaWYgKHJlbmRlclJhZGlpICYm
IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm90dG9tTGVmdCwgdG9wTGVmdCwgc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkpKSB7CisgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5u
ZXJFZGdlKGJvcmRlci5ib3R0b21MZWZ0KCksIGJvcmRlci50b3BMZWZ0KCksIHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAg
ICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0
LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTTGVmdCwgdXBw
ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBzdHls
ZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAg
ICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVj
dCwgYm9yZGVyLCBCU0xlZnQsIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlckxlZnRC
b3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgo
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgo
Z3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpLCB0aGlja25lc3MsIEJTTGVmdCwgc3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0eWxl
KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTEzOSw5ICsx
MTEwLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICB9CiAKICAgICBpZiAocmVuZGVy
UmlnaHQpIHsKLSAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVk
Z2UoYm90dG9tUmlnaHQsIHRvcFJpZ2h0LCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5
bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpKSB7CisgICAg
ICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvcmRlci5ib3R0
b21SaWdodCgpLCBib3JkZXIudG9wUmlnaHQoKSwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCks
IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKSkgewog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9y
ZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTUmlnaHQsIHVwcGVyUmlnaHRCb3JkZXJT
dHlsZXNNYXRjaCwgbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xp
cEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyLCBC
U1JpZ2h0LCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHls
ZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpLCBzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSk7CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNz
Q29udGV4dCwgYm9yZGVyUmVjdCwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCksIHRoaWNrbmVzcywgQlNSaWdodCwgc3R5bGUsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMTk2LDY1ICsxMTY3
LDQ2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgYm9vbCByZW5kZXJSaWdodCA9IHJp
Z2h0U3R5bGUgPiBCSElEREVOICYmICFyaWdodFRyYW5zcGFyZW50ICYmICghaG9yaXpvbnRhbCB8
fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgYm9vbCByZW5kZXJCb3R0b20gPSBib3R0
b21TdHlsZSA+IEJISURERU4gJiYgIWJvdHRvbVRyYW5zcGFyZW50ICYmIChob3Jpem9udGFsIHx8
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBmYWxz
ZTsKLSAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdo
dDsKKworICAgIEludFJlY3RSYWRpaSBib3JkZXI7CiAKICAgICBpZiAoc3R5bGUtPmhhc0JvcmRl
clJhZGl1cygpKSB7CiAgICAgICAgIEludFJlY3QgYm9yZGVyUmVjdCA9IEludFJlY3QodHgsIHR5
LCB3LCBoKTsKLQotICAgICAgICBJbnRTaXplIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdl
dEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJh
ZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0gICAgICAgIGlm
IChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0b3BMZWZ0ID0gdG9wTGVm
dFJhZGl1czsKLSAgICAgICAgICAgIGlmIChob3Jpem9udGFsKQotICAgICAgICAgICAgICAgIGJv
dHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHRvcFJpZ2h0ID0gdG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICAgICAgaWYgKGhv
cml6b250YWwpCi0gICAgICAgICAgICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVmdFJh
ZGl1czsKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZW5kZXJSYWRpaSA9ICF0b3BMZWZ0LmlzWmVybygpIHx8ICF0b3BS
aWdodC5pc1plcm8oKSB8fCAhYm90dG9tTGVmdC5pc1plcm8oKSB8fCAhYm90dG9tUmlnaHQuaXNa
ZXJvKCk7CisgICAgICAgIGJvcmRlci5pbmNsdWRlTG9naWNhbEVkZ2VzKHN0eWxlLT5nZXRCb3Jk
ZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAg
ICAgICAgLy8gQ2xpcCB0byB0aGUgcm91bmRlZCByZWN0YW5nbGUuCisgICAgICAgIGlmICghYm9y
ZGVyLmlzWmVybygpKSB7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3Qs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCBib3JkZXIp
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaW50IGZpcnN0QW5nbGVTdGFydCwgc2Vjb25kQW5n
bGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sIHNlY29uZEFuZ2xlU3BhbjsKICAgICBmbG9hdCB0aGlj
a25lc3M7CisgICAgYm9vbCByZW5kZXJSYWRpaSA9ICFib3JkZXIuaXNaZXJvKCk7CiAgICAgYm9v
bCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRvcFN0eWxlID09
IGxlZnRTdHlsZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9vbCB1cHBlclJp
Z2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUgPT0gcmlnaHRT
dHlsZSkgJiYgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAhPSBPVVRTRVQp
ICYmICh0b3BTdHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAmJiAodG9wU3R5
bGUgIT0gR1JPT1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVu
ZGVyTGVmdCAmJiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0g
bGVmdENvbG9yKSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0g
UklER0UpICYmIChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IEdST09W
RSk7CiAgICAgYm9vbCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAm
JiAoYm90dG9tU3R5bGUgPT0gcmlnaHRTdHlsZSkgJiYgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29s
b3IpOwogCiAgICAgaWYgKHJlbmRlclRvcCkgewotICAgICAgICBib29sIGlnbm9yZV9sZWZ0ID0g
KHJlbmRlclJhZGlpICYmIHRvcExlZnQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9w
Q29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAm
JiB0b3BTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAobGVmdFN0eWxlID09IERPVFRF
RCB8fCBsZWZ0U3R5bGUgPT0gREFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5
bGUgPT0gT1VUU0VUKSk7Ci0KLSAgICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFk
aWkgJiYgdG9wUmlnaHQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9wQ29sb3IgPT0g
cmlnaHRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYmIHRvcFN0
eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAgIChyaWdodFN0eWxlID09IERPVFRFRCB8fCBy
aWdodFN0eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJpZ2h0U3R5bGUg
PT0gSU5TRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKHJlbmRlclJhZGlpICYmIGJv
cmRlci50b3BMZWZ0KCkud2lkdGgoKSA+IDApCisgICAgICAgICAgICB8fCAodG9wQ29sb3IgPT0g
bGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiB0b3BTdHls
ZSA+PSBPVVRTRVQKKyAgICAgICAgICAgICAgICAmJiAobGVmdFN0eWxlID09IERPVFRFRCB8fCBs
ZWZ0U3R5bGUgPT0gREFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0g
T1VUU0VUKSk7CisgICAgICAgIAorICAgICAgICBib29sIGlnbm9yZVJpZ2h0ID0gKHJlbmRlclJh
ZGlpICYmIGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkgPiAwKQorICAgICAgICAgICAgfHwgKHRv
cENvbG9yID09IHJpZ2h0Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVu
dCAmJiB0b3BTdHlsZSA+PSBPVVRTRVQKKyAgICAgICAgICAgICAgICAmJiAocmlnaHRTdHlsZSA9
PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBEQVNIRUQgfHwgcmlnaHRTdHlsZSA9PSBTT0xJRCB8
fCByaWdodFN0eWxlID09IElOU0VUKSk7CiAKICAgICAgICAgaW50IHggPSB0eDsKICAgICAgICAg
aW50IHgyID0gdHggKyB3OwogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAg
IHggKz0gdG9wTGVmdC53aWR0aCgpOwotICAgICAgICAgICAgeDIgLT0gdG9wUmlnaHQud2lkdGgo
KTsKKyAgICAgICAgICAgIHggKz0gYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpOworICAgICAgICAg
ICAgeDIgLT0gYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKTsKICAgICAgICAgfQogCiAgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHls
ZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGln
bm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKKyAgICAgICAgICAg
ICAgICAgICBpZ25vcmVMZWZ0ID8gMCA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3Jl
UmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJl
bmRlclJhZGlpKSB7CiAgICAgICAgICAgICBpbnQgbGVmdFkgPSB0eTsKQEAgLTEyNjQsMTUgKzEy
MTYsMTUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgIC8vIHdpdGggdGhl
IGFyYy1kcmF3aW5nIGZ1bmN0aW9uLgogICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAodG9wTGVmdC53aWR0aCgpKSB7
CisgICAgICAgICAgICBpZiAoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpKSB7CiAgICAgICAgICAg
ICAgICAgaW50IGxlZnRYID0gdHg7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGlubmVyIGNsaXAg
Y2xpcHMgaW5zaWRlIHRoZSBhcmMuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIDFw
eCBib3JkZXJzLgotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0gKHN0
eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IHRvcExlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAg
ICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgdG9wTGVmdC5oZWlnaHQoKSkKKyAg
ICAgICAgICAgICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkgPCBib3JkZXIudG9wTGVmdCgpLndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAg
ICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkp
CiAgICAgICAgICAgICAgICAgICAgICYmICh0b3BTdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJD
bGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAg
ICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlw
KEludFJlY3QobGVmdFgsIGxlZnRZLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0LmhlaWdo
dCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJS
b3VuZGVkUmVjdENsaXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIGJvcmRlci50b3BMZWZ0KCkud2lk
dGgoKSAqIDIsIGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMjgwLDIwICsxMjMyLDIw
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVNw
YW4gPSB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA/IDkwIDogNDU7CiAKICAgICAgICAgICAg
ICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wTGVmdCwg
Zmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJj
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3Jk
ZXIudG9wTGVmdCgpLCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmICh0b3BSaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9
IHR4ICsgdyAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyOwotICAgICAgICAgICAgICAgIGJvb2wgYXBw
bHlSaWdodElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgdG9wUmlnaHQu
d2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgp
IDwgdG9wUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoYm9yZGVyLnRvcFJpZ2h0KCku
d2lkdGgoKSkgeworICAgICAgICAgICAgICAgIGludCByaWdodFggPSB0eCArIHcgLSBib3JkZXIu
dG9wUmlnaHQoKS53aWR0aCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJ
bm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IGJvcmRlci50b3BSaWdodCgp
LndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgo
KSA8IGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAo
dG9wU3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpID4gNik7CiAgICAg
ICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChyaWdodFgsIGxlZnRZLCB0
b3BSaWdodC53aWR0aCgpICogMiwgdG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0
KHJpZ2h0WCwgbGVmdFksIGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIudG9w
UmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKTsKICAg
ICAgICAgICAgICAgICB9CiAKQEAgLTEzMDYsNyArMTI1OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB1cHBl
ciByaWdodCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIHNlY29uZEFuZ2xlU3Rh
cnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgYm9yZGVyLnRvcFJpZ2h0
KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsIGZhbHNlKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMzE1LDM2ICsxMjY3LDM2IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYgKHJlbmRlckJvdHRvbSkgewotICAgICAg
ICBib29sIGlnbm9yZV9sZWZ0ID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbUxlZnQud2lkdGgoKSA+
IDApIHx8Ci0gICAgICAgICAgICAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9yICYmIGJvdHRvbVRy
YW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQgJiYK
LSAgICAgICAgICAgICAobGVmdFN0eWxlID09IERPVFRFRCB8fCBsZWZ0U3R5bGUgPT0gREFTSEVE
IHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0gT1VUU0VUKSk7CisgICAgICAg
IGJvb2wgaWdub3JlTGVmdCA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIuYm90dG9tTGVmdCgpLndp
ZHRoKCkgPiAwKQorICAgICAgICAgICAgfHwgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBi
b3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5bGUgPj0gT1VU
U0VUCisgICAgICAgICAgICAgICAgJiYgKGxlZnRTdHlsZSA9PSBET1RURUQgfHwgbGVmdFN0eWxl
ID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQgfHwgbGVmdFN0eWxlID09IE9VVFNFVCkp
OwogCi0gICAgICAgIGJvb2wgaWdub3JlX3JpZ2h0ID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbVJp
Z2h0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29s
b3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCAmJiBib3R0b21TdHls
ZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAocmlnaHRTdHlsZSA9PSBET1RURUQgfHwgcmln
aHRTdHlsZSA9PSBEQVNIRUQgfHwgcmlnaHRTdHlsZSA9PSBTT0xJRCB8fCByaWdodFN0eWxlID09
IElOU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlUmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgYm9y
ZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSA+IDApCisgICAgICAgICAgICB8fCAoYm90dG9tQ29s
b3IgPT0gcmlnaHRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50
ICYmIGJvdHRvbVN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxl
ID09IERPVFRFRCB8fCByaWdodFN0eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElE
IHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeCA9IHR4OwogICAgICAg
ICBpbnQgeDIgPSB0eCArIHc7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAg
ICAgeCArPSBib3R0b21MZWZ0LndpZHRoKCk7Ci0gICAgICAgICAgICB4MiAtPSBib3R0b21SaWdo
dC53aWR0aCgpOworICAgICAgICAgICAgeCArPSBib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCk7
CisgICAgICAgICAgICB4MiAtPSBib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpOwogICAgICAg
ICB9CiAKICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkg
KyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBi
b3R0b21Db2xvciwgYm90dG9tU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQg
PyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUt
PmJvcmRlclJpZ2h0V2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlTGVmdCA/IDAg
OiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZVJpZ2h0ID8gMCA6IHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAgICAgICAg
ICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgKiAyOwogCi0gICAgICAg
ICAgICBpZiAoYm90dG9tTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyLmJv
dHRvbUxlZnQoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICAgaW50IGxlZnRYID0gdHg7Ci0g
ICAgICAgICAgICAgICAgaW50IGxlZnRZID0gdHkgKyBoIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAq
IDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpIDwgYm90dG9tTGVmdC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAg
ICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3R0b21MZWZ0LmhlaWdodCgpKQor
ICAgICAgICAgICAgICAgIGludCBsZWZ0WSA9IHR5ICsgaCAtIGJvcmRlci5ib3R0b21MZWZ0KCku
aGVpZ2h0KCkgKiAyOworICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0g
KHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSkK
KyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9y
ZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGJvdHRv
bVN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA+IDYpOwogICAg
ICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIGJv
dHRvbUxlZnQud2lkdGgoKSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRS
ZWN0KGxlZnRYLCBsZWZ0WSwgYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpICogMiwgYm9yZGVy
LmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzNTcsMjEgKzEzMDksMjEgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAv
LyBEcmF3IGxvd2VyIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUo
Z3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgZmly
c3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIu
Ym90dG9tTGVmdCgpLCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSwg
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChib3R0b21SaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAg
aW50IHJpZ2h0WSA9IHR5ICsgaCAtIGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMjsKLSAgICAgICAg
ICAgICAgICBpbnQgcmlnaHRYID0gdHggKyB3IC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDI7Ci0g
ICAgICAgICAgICAgICAgYm9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCkgPCBib3R0b21SaWdodC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAm
JiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3R0b21SaWdodC5oZWlnaHQoKSkKKyAg
ICAgICAgICAgIGlmIChib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpKSB7CisgICAgICAgICAg
ICAgICAgaW50IHJpZ2h0WSA9IHR5ICsgaCAtIGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgp
ICogMjsKKyAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0gdHggKyB3IC0gYm9yZGVyLmJvdHRv
bVJpZ2h0KCkud2lkdGgoKSAqIDI7CisgICAgICAgICAgICAgICAgYm9vbCBhcHBseVJpZ2h0SW5u
ZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3JkZXIuYm90dG9tUmlnaHQo
KS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdp
ZHRoKCkgPCBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAg
ICAgJiYgKGJvdHRvbVN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qocmln
aHRYLCByaWdodFksIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyLCBib3R0b21SaWdodC5oZWlnaHQo
KSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91
bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCByaWdodFksIGJvcmRlci5ib3R0b21SaWdodCgp
LndpZHRoKCkgKiAyLCBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzNzks
NyArMTMzMSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vj
b25kQW5nbGVTcGFuID0gbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoID8gOTAgOiA0NTsKIAog
ICAgICAgICAgICAgICAgIC8vIERyYXcgbG93ZXIgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAg
ZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCByaWdodFgsIHJpZ2h0WSwgdGhpY2tu
ZXNzLCBib3R0b21SaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAg
ICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCBy
aWdodFksIHRoaWNrbmVzcywgYm9yZGVyLmJvdHRvbVJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQs
IHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9t
LCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAo
YXBwbHlSaWdodElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5yZXN0b3JlKCk7CkBAIC0xMzg4LDM2ICsxMzQwLDM2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQg
dHgsCiAgICAgfQogCiAgICAgaWYgKHJlbmRlckxlZnQpIHsKLSAgICAgICAgYm9vbCBpZ25vcmVf
dG9wID0gKHJlbmRlclJhZGlpICYmIHRvcExlZnQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAgICAg
ICAgKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNw
YXJlbnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAgICh0b3BTdHlsZSA9
PSBET1RURUQgfHwgdG9wU3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRv
cFN0eWxlID09IE9VVFNFVCkpOworICAgICAgICBib29sIGlnbm9yZVRvcCA9IChyZW5kZXJSYWRp
aSAmJiBib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHx8ICh0b3BD
b2xvciA9PSBsZWZ0Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYm
IGxlZnRTdHlsZSA+PSBPVVRTRVQKKyAgICAgICAgICAgICAgICAmJiAodG9wU3R5bGUgPT0gRE9U
VEVEIHx8IHRvcFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHlsZSA9PSBTT0xJRCB8fCB0b3BTdHls
ZSA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9yZV9ib3R0b20gPSAocmVuZGVyUmFk
aWkgJiYgYm90dG9tTGVmdC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAgICAgICAoYm90dG9tQ29s
b3IgPT0gbGVmdENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAm
JiBsZWZ0U3R5bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKGJvdHRvbVN0eWxlID09IERP
VFRFRCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQgfHwg
Ym90dG9tU3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVCb3R0b20gPSAocmVu
ZGVyUmFkaWkgJiYgYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSA+IDApCisgICAgICAgICAg
ICB8fCAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IGxl
ZnRUcmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYg
KGJvdHRvbVN0eWxlID09IERPVFRFRCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9t
U3R5bGUgPT0gU09MSUQgfHwgYm90dG9tU3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQg
eSA9IHR5OwogICAgICAgICBpbnQgeTIgPSB0eSArIGg7CiAgICAgICAgIGlmIChyZW5kZXJSYWRp
aSkgewotICAgICAgICAgICAgeSArPSB0b3BMZWZ0LmhlaWdodCgpOwotICAgICAgICAgICAgeTIg
LT0gYm90dG9tTGVmdC5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkgKz0gYm9yZGVyLnRvcExlZnQo
KS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkyIC09IGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB0eCwgeSwgdHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxl
ZnRDb2xvciwgbGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDog
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCkpOworICAgICAgICAgICAgICAgICAgIGlnbm9yZVRvcCA/IDAgOiBzdHls
ZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdub3JlQm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgKCF1cHBlckxlZnRCb3Jk
ZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CiAgICAgICAg
ICAgICBpbnQgdG9wWCA9IHR4OwogICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpICogMjsKIAotICAgICAgICAgICAgaWYgKCF1cHBlckxlZnRCb3JkZXJTdHls
ZXNNYXRjaCAmJiB0b3BMZWZ0LndpZHRoKCkpIHsKKyAgICAgICAgICAgIGlmICghdXBwZXJMZWZ0
Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpKSB7CiAgICAgICAg
ICAgICAgICAgaW50IHRvcFkgPSB0eTsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5VG9wSW5u
ZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IHRvcExlZnQud2lkdGgoKSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgdG9wTGVmdC5o
ZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0gKHN0eWxl
LT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnRvcExlZnQo
KS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGxlZnRTdHlsZSAhPSBET1VCTEUg
fHwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFw
cGx5VG9wSW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91
bmRlZFJlY3RDbGlwKEludFJlY3QodG9wWCwgdG9wWSwgdG9wTGVmdC53aWR0aCgpICogMiwgdG9w
TGVmdC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QodG9wWCwgdG9wWSwgYm9yZGVyLnRvcExl
ZnQoKS53aWR0aCgpICogMiwgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xNDI1LDIw
ICsxMzc3LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgZmly
c3RBbmdsZVNwYW4gPSA0NTsKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJj
Ci0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BY
LCB0b3BZLCB0aGlja25lc3MsIHRvcExlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNw
YW4sCisgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0
b3BYLCB0b3BZLCB0aGlja25lc3MsIGJvcmRlci50b3BMZWZ0KCksIGZpcnN0QW5nbGVTdGFydCwg
Zmlyc3RBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxl
ZnRDb2xvciwgbGVmdFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJ
bm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIWxvd2VyTGVmdEJvcmRlclN0eWxl
c01hdGNoICYmIGJvdHRvbUxlZnQud2lkdGgoKSkgewotICAgICAgICAgICAgICAgIGludCBib3R0
b21ZID0gdHkgKyBoIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAgICAgICAg
Ym9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBi
b3R0b21MZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSA8IGJvdHRvbUxlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoIWxv
d2VyTGVmdEJvcmRlclN0eWxlc01hdGNoICYmIGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSkg
eworICAgICAgICAgICAgICAgIGludCBib3R0b21ZID0gdHkgKyBoIC0gYm9yZGVyLmJvdHRvbUxl
ZnQoKS5oZWlnaHQoKSAqIDI7CisgICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVy
Q2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIuYm90dG9tTGVmdCgpLndp
ZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSA8IGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYm
IChsZWZ0U3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA+IDYpOwog
ICAgICAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkgewogICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIGJvdHRv
bVksIGJvdHRvbUxlZnQud2lkdGgoKSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwKKyAg
ICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xp
cChJbnRSZWN0KHRvcFgsIGJvdHRvbVksIGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSAqIDIs
IGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTQ0Niw3ICsxMzk4LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBzZWNvbmRBbmdsZVNwYW4gPSA0
NTsKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgYm90dG9tIGxlZnQgYXJjCi0gICAgICAgICAg
ICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCBib3R0b21ZLCB0
aGlja25lc3MsIGJvdHRvbUxlZnQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgs
IGJvdHRvbVksIHRoaWNrbmVzcywgYm9yZGVyLmJvdHRvbUxlZnQoKSwgc2Vjb25kQW5nbGVTdGFy
dCwgc2Vjb25kQW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0
LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBs
eUJvdHRvbUlubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5y
ZXN0b3JlKCk7CkBAIC0xNDU1LDM4ICsxNDA3LDM4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgs
CiAgICAgfQogCiAgICAgaWYgKHJlbmRlclJpZ2h0KSB7Ci0gICAgICAgIGJvb2wgaWdub3JlX3Rv
cCA9IChyZW5kZXJSYWRpaSAmJiB0b3BSaWdodC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAgICAg
ICAoKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BUcmFuc3BhcmVudCA9PSByaWdodFRy
YW5zcGFyZW50KSAmJgotICAgICAgICAgICAgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0
U3R5bGUgPT0gSU5TRVQpICYmCi0gICAgICAgICAgICAodG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRv
cFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHlsZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRT
RVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVUb3AgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnRv
cFJpZ2h0KCkuaGVpZ2h0KCkgPiAwKQorICAgICAgICAgICAgfHwgKCh0b3BDb2xvciA9PSByaWdo
dENvbG9yKSAmJiAodG9wVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkKKyAgICAgICAg
ICAgICAgICAmJiAocmlnaHRTdHlsZSA+PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkK
KyAgICAgICAgICAgICAgICAmJiAodG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERB
U0hFRCB8fCB0b3BTdHlsZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRTRVQpKTsKIAotICAg
ICAgICBib29sIGlnbm9yZV9ib3R0b20gPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQuaGVp
Z2h0KCkgPiAwKSB8fAotICAgICAgICAgICAgKChib3R0b21Db2xvciA9PSByaWdodENvbG9yKSAm
JiAoYm90dG9tVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkgJiYKLSAgICAgICAgICAg
IChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKSAmJgotICAgICAg
ICAgICAgKGJvdHRvbVN0eWxlID09IERPVFRFRCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwg
Ym90dG9tU3R5bGUgPT0gU09MSUQgfHwgYm90dG9tU3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAg
Ym9vbCBpZ25vcmVCb3R0b20gPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCkgPiAwKQorICAgICAgICAgICAgfHwgKChib3R0b21Db2xvciA9PSByaWdodENvbG9y
KSAmJiAoYm90dG9tVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkKKyAgICAgICAgICAg
ICAgICAmJiAocmlnaHRTdHlsZSA+PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkKKyAg
ICAgICAgICAgICAgICAmJiAoYm90dG9tU3R5bGUgPT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09
IERBU0hFRCB8fCBib3R0b21TdHlsZSA9PSBTT0xJRCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkp
OwogCiAgICAgICAgIGludCB5ID0gdHk7CiAgICAgICAgIGludCB5MiA9IHR5ICsgaDsKICAgICAg
ICAgaWYgKHJlbmRlclJhZGlpKSB7Ci0gICAgICAgICAgICB5ICs9IHRvcFJpZ2h0LmhlaWdodCgp
OwotICAgICAgICAgICAgeTIgLT0gYm90dG9tUmlnaHQuaGVpZ2h0KCk7CisgICAgICAgICAgICB5
ICs9IGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpOworICAgICAgICAgICAgeTIgLT0gYm9yZGVy
LmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpLCB5LCB0eCArIHcsIHkyLCBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLAotICAg
ICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
IGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgICAg
ICAgICAgICAgICAgIGlnbm9yZVRvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdu
b3JlQm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBp
ZiAocmVuZGVyUmFkaWkgJiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2Vy
UmlnaHRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKICAgICAgICAgICAgIHRoaWNrbmVzcyA9IHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAoIXVwcGVyUmlnaHRC
b3JkZXJTdHlsZXNNYXRjaCAmJiB0b3BSaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAg
aW50IHRvcFggPSB0eCArIHcgLSB0b3BSaWdodC53aWR0aCgpICogMjsKKyAgICAgICAgICAgIGlm
ICghdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoICYmIGJvcmRlci50b3BSaWdodCgpLndpZHRo
KCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG9wWCA9IHR4ICsgdyAtIGJvcmRlci50b3BSaWdo
dCgpLndpZHRoKCkgKiAyOwogICAgICAgICAgICAgICAgIGludCB0b3BZID0gdHk7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpIDwgdG9wUmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5i
b3JkZXJUb3BXaWR0aCgpIDwgdG9wUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgYm9v
bCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9yZGVy
LnRvcFJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICYmIChyaWdodFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QodG9w
WCwgdG9wWSwgdG9wUmlnaHQud2lkdGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMiksCisg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoSW50UmVjdCh0b3BYLCB0b3BZLCBib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpICogMiwgYm9y
ZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE0OTQsMjEgKzE0NDYsMjEgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IDQ1Owog
CiAgICAgICAgICAgICAgICAgLy8gRHJhdyB0b3AgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAg
ZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3Ms
IHRvcFJpZ2h0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAg
ICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tu
ZXNzLCBib3JkZXIudG9wUmlnaHQoKSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0
U3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkKICAg
ICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmICghbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoICYmIGJv
dHRvbVJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgYm90dG9tWCA9IHR4ICsg
dyAtIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyOwotICAgICAgICAgICAgICAgIGludCBib3R0b21Z
ID0gdHkgKyBoIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAgICAgIGJv
b2wgYXBwbHlCb3R0b21Jbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IGJv
dHRvbVJpZ2h0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSA8IGJvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgaWYgKCFs
b3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgo
KSkgeworICAgICAgICAgICAgICAgIGludCBib3R0b21YID0gdHggKyB3IC0gYm9yZGVyLmJvdHRv
bVJpZ2h0KCkud2lkdGgoKSAqIDI7CisgICAgICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSAr
IGggLSBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSAqIDI7CisgICAgICAgICAgICAgICAg
Ym9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwg
Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0
eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkp
CiAgICAgICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9t
SW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgp
OwotICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJl
Y3RDbGlwKEludFJlY3QoYm90dG9tWCwgYm90dG9tWSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIs
IGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChib3R0b21YLCBib3R0b21Z
LCBib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpICogMiwgYm9yZGVyLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTE1MTYsNyArMTQ2OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgs
CiAgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gNDU7CiAKICAgICAgICAgICAgICAg
ICAvLyBEcmF3IGJvdHRvbSByaWdodCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94
U2lkZShncmFwaGljc0NvbnRleHQsIGJvdHRvbVgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9t
UmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAg
ICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGJvdHRvbVgsIGJvdHRvbVksIHRo
aWNrbmVzcywgYm9yZGVyLmJvdHRvbVJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFu
Z2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29s
b3IsIHJpZ2h0U3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21J
bm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgp
OwpAQCAtMTUyOSw3ICsxNDgxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKIH0KICNlbmRp
ZgogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGJveCwgY29uc3Qg
SW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LAordm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBib3gsIGNvbnN0IEludFJlY3RSYWRpaSYgYm9yZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJveFNpZGUgc2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRj
aGVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewpAQCAtMTU1MCwyNiArMTUwMiwyNiBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleAogICAgIHN3aXRjaCAoc2lkZSkgewogICAgIGNhc2UgQlNUb3A6
CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4LCB0eSk7Ci0gICAgICAgIHF1YWRbMV0g
PSBGbG9hdFBvaW50KHR4ICsgbWF4KHRvcExlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBt
YXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKLSAgICAgICAgcXVhZFsyXSA9IEZsb2F0
UG9pbnQodHggKyB3IC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIG1h
eCh0b3BSaWdodC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0
UG9pbnQodHggKyBtYXgoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSAr
IG1heChib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFk
WzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSwg
cmlnaHRXaWR0aCksIHR5ICsgbWF4KGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCB0b3BXaWR0
aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh0eCArIHcsIHR5KTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBCU0xlZnQ6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4
LCB0eSk7Ci0gICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KHRvcExlZnQud2lk
dGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsK
LSAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm90dG9tTGVmdC53aWR0aCgp
LCBsZWZ0V2lkdGgpLCB0eSArIGggLSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tV2lk
dGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm9yZGVyLnRvcExl
ZnQoKS53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1heChib3JkZXIudG9wTGVmdCgpLmhlaWdo
dCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIG1heChi
b3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3Jk
ZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLCBib3R0b21XaWR0aCkpOwogICAgICAgICBxdWFkWzNd
ID0gRmxvYXRQb2ludCh0eCwgdHkgKyBoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCU0Jv
dHRvbToKICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5ICsgaCk7Ci0gICAgICAg
IHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KGJvdHRvbUxlZnQud2lkdGgoKSwgbGVmdFdp
ZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7Ci0g
ICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3R0b21SaWdodC53aWR0
aCgpLCByaWdodFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbVJpZ2h0LmhlaWdodCgpLCBib3R0
b21XaWR0aCkpOworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIu
Ym90dG9tTGVmdCgpLndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIuYm90
dG9tTGVmdCgpLmhlaWdodCgpLCBib3R0b21XaWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxv
YXRQb2ludCh0eCArIHcgLSBtYXgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgcmlnaHRX
aWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9t
V2lkdGgpKTsKICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEJTUmlnaHQ6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9h
dFBvaW50KHR4ICsgdywgdHkpOwotICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIHcg
LSBtYXgodG9wUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRvcFJpZ2h0Lmhl
aWdodCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcg
LSBtYXgoYm90dG9tUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0
b21SaWdodC5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0
UG9pbnQodHggKyB3IC0gbWF4KGJvcmRlci50b3BSaWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgp
LCB0eSArIG1heChib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKKyAgICAg
ICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KGJvcmRlci5ib3R0b21SaWdodCgp
LndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIGggLSBtYXgoYm9yZGVyLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7CiAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHR4
ICsgdywgdHkgKyBoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE2MDAsMTgg
KzE1NTIsNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHln
b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleAogICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIHVuaWZvcm1seUV4cGFuZEJvcmRlclJhZGlpKGludCBkZWx0
YSwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxl
ZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KQotewotICAgIHRvcExlZnQuZXhwYW5kKGRlbHRhLCBk
ZWx0YSk7Ci0gICAgdG9wTGVmdC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgdG9wUmlnaHQu
ZXhwYW5kKGRlbHRhLCBkZWx0YSk7Ci0gICAgdG9wUmlnaHQuY2xhbXBOZWdhdGl2ZVRvWmVybygp
OwotICAgIGJvdHRvbUxlZnQuZXhwYW5kKGRlbHRhLCBkZWx0YSk7Ci0gICAgYm90dG9tTGVmdC5j
bGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgYm90dG9tUmlnaHQuZXhwYW5kKGRlbHRhLCBkZWx0
YSk7Ci0gICAgYm90dG9tUmlnaHQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotfQotCiB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzLCBT
aGFkb3dTdHlsZSBzaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggYm9y
ZGVyLWltYWdlLiAgV291bGQgYmUgZ3JlYXQgdG8gdXNlIGJvcmRlci1pbWFnZSBhcyBhIG1hc2su
CkBAIC0xNjIwLDU0ICsxNTYwLDE3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50UmVjdCByZWN0KHR4LCB0eSwgdywgaCk7Ci0gICAgSW50U2l6ZSB0
b3BMZWZ0OwotICAgIEludFNpemUgdG9wUmlnaHQ7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0Owot
ICAgIEludFNpemUgYm90dG9tUmlnaHQ7CisgICAgSW50UmVjdFJhZGlpIGJvcmRlcjsKIAogICAg
IGJvb2wgaGFzQm9yZGVyUmFkaXVzID0gcy0+aGFzQm9yZGVyUmFkaXVzKCk7CiAgICAgYm9vbCBp
c0hvcml6b250YWwgPSBzLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGlmIChoYXNC
b3JkZXJSYWRpdXMgJiYgKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpKSB7Ci0gICAgICAgIEludFNpemUgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRp
dXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICBzLT5nZXRC
b3JkZXJSYWRpaUZvclJlY3QocmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgICAgICBpZiAoaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSkgewotICAgICAgICAgICAgaWYgKHNoYWRvd1N0eWxlID09IEluc2V0
KSB7Ci0gICAgICAgICAgICAgICAgdG9wTGVmdFJhZGl1cy5leHBhbmQoLWJvcmRlckxlZnQoKSwg
LWJvcmRlclRvcCgpKTsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0UmFkaXVzLmNsYW1wTmVnYXRp
dmVUb1plcm8oKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuZXhwYW5kKC1ib3JkZXJMZWZ0KCksIC1ib3Jk
ZXJCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuY2xhbXBO
ZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHRvcFJpZ2h0UmFkaXVzLmV4cGFuZCgtYm9yZGVyUmlnaHQoKSwgLWJvcmRlclRvcCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVy
bygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvcExl
ZnQgPSB0b3BMZWZ0UmFkaXVzOwotICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKLSAgICAg
ICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICAgICAgaWYg
KHNoYWRvd1N0eWxlID09IEluc2V0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRh
bCkgewotICAgICAgICAgICAgICAgICAgICB0b3BSaWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJp
Z2h0KCksIC1ib3JkZXJUb3AoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVz
LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzLmV4cGFuZCgtYm9yZGVyTGVmdCgpLCAtYm9y
ZGVyQm90dG9tKCkpOwotICAgICAgICAgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzLmNsYW1w
TmVnYXRpdmVUb1plcm8oKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm90
dG9tUmlnaHRSYWRpdXMuZXhwYW5kKC1ib3JkZXJSaWdodCgpLCAtYm9yZGVyQm90dG9tKCkpOwot
ICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAg
ICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGJv
dHRvbVJpZ2h0ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KKyAgICAgICAgSW50UmVj
dFJhZGlpIHJhZGlpID0gcy0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHJlY3QpOworICAgICAgICBp
ZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpCisgICAgICAgICAgICByYWRpaS5zaHJpbmsoYm9yZGVy
VG9wKCksIGJvcmRlckJvdHRvbSgpLCBib3JkZXJMZWZ0KCksIGJvcmRlclJpZ2h0KCkpOworICAg
ICAgICBib3JkZXIuaW5jbHVkZUxvZ2ljYWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsLCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQorICAg
CiAKICAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsKICAgICAgICAgcmVjdC5tb3ZlKGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgIWlzSG9yaXpvbnRhbCA/IGJvcmRlckxlZnQoKSA6IDAs
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgaXNIb3Jpem9udGFsID8gYm9yZGVyVG9wKCkgOiAw
KTsKQEAgLTE3MDcsMjkgKzE2MTAsMjMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogICAgICAg
ICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVz
KSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gcmVjdDsKLSAgICAg
ICAgICAgICAgICBJbnRTaXplIHRvcExlZnRUb0NsaXBPdXQgPSB0b3BMZWZ0OwotICAgICAgICAg
ICAgICAgIEludFNpemUgdG9wUmlnaHRUb0NsaXBPdXQgPSB0b3BSaWdodDsKLSAgICAgICAgICAg
ICAgICBJbnRTaXplIGJvdHRvbUxlZnRUb0NsaXBPdXQgPSBib3R0b21MZWZ0OwotICAgICAgICAg
ICAgICAgIEludFNpemUgYm90dG9tUmlnaHRUb0NsaXBPdXQgPSBib3R0b21SaWdodDsKLQotICAg
ICAgICAgICAgICAgIEludFNpemUgdG9wTGVmdFRvRmlsbCA9IHRvcExlZnQ7Ci0gICAgICAgICAg
ICAgICAgSW50U2l6ZSB0b3BSaWdodFRvRmlsbCA9IHRvcFJpZ2h0OwotICAgICAgICAgICAgICAg
IEludFNpemUgYm90dG9tTGVmdFRvRmlsbCAgPSBib3R0b21MZWZ0OwotICAgICAgICAgICAgICAg
IEludFNpemUgYm90dG9tUmlnaHRUb0ZpbGwgPSBib3R0b21SaWdodDsKLSAgICAgICAgICAgICAg
ICBpZiAoc2hhZG93U3ByZWFkIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhw
YW5kQm9yZGVyUmFkaWkoc2hhZG93U3ByZWFkLCB0b3BMZWZ0VG9GaWxsLCB0b3BSaWdodFRvRmls
bCwgYm90dG9tTGVmdFRvRmlsbCwgYm90dG9tUmlnaHRUb0ZpbGwpOworICAgICAgICAgICAgICAg
IEludFJlY3RSYWRpaSByYWRpaVRvQ2xpcE91dCA9IGJvcmRlcjsKIAogICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91
dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQogICAgICAgICAgICAgICAgIC8vIHdoZW4g
cGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhlIG90aGVyIGhhbmQsIGl0IGludHJvZHVjZXMgc3Vi
cGl4ZWwgZ2FwcyBhbG9uZyB0aGUKICAgICAgICAgICAgICAgICAvLyBjb3JuZXJzLiBUaG9zZSBh
cmUgYXZvaWRlZCBieSBpbnNldHRpbmcgdGhlIGNsaXBwaW5nIHBhdGggYnkgb25lIHBpeGVsLgog
ICAgICAgICAgICAgICAgIGlmIChoYXNPcGFxdWVCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlY3RUb0NsaXBPdXQuaW5mbGF0ZSgtMSk7Ci0gICAgICAgICAgICAgICAgICAgIHVu
aWZvcm1seUV4cGFuZEJvcmRlclJhZGlpKC0xLCB0b3BMZWZ0VG9DbGlwT3V0LCB0b3BSaWdodFRv
Q2xpcE91dCwgYm90dG9tTGVmdFRvQ2xpcE91dCwgYm90dG9tUmlnaHRUb0NsaXBPdXQpOworICAg
ICAgICAgICAgICAgICAgICByYWRpaVRvQ2xpcE91dC5leHBhbmQoLTEpOwogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlw
T3V0LCB0b3BMZWZ0VG9DbGlwT3V0LCB0b3BSaWdodFRvQ2xpcE91dCwgYm90dG9tTGVmdFRvQ2xp
cE91dCwgYm90dG9tUmlnaHRUb0NsaXBPdXQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSb3VuZGVkUmVjdChmaWxsUmVjdCwgdG9wTGVmdFRvRmlsbCwgdG9wUmlnaHRUb0ZpbGwsIGJv
dHRvbUxlZnRUb0ZpbGwsIGJvdHRvbVJpZ2h0VG9GaWxsLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVj
dChyZWN0VG9DbGlwT3V0LCByYWRpaVRvQ2xpcE91dCk7CisKKyAgICAgICAgICAgICAgICBJbnRS
ZWN0UmFkaWkgcmFkaWlUb0ZpbGwgPSBib3JkZXI7CisgICAgICAgICAgICAgICAgaWYgKHNoYWRv
d1NwcmVhZCA8IDApCisgICAgICAgICAgICAgICAgICAgIHJhZGlpVG9GaWxsLmV4cGFuZChzaGFk
b3dTcHJlYWQpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxs
UmVjdCwgcmFkaWlUb0ZpbGwsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0g
cmVjdDsKIApAQCAtMTc1Nyw3ICsxNjU0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogCiAg
ICAgICAgICAgICBpZiAoaG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGhhc0JvcmRlclJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5k
ZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwg
c2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChyZWN0LCBib3JkZXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNw
YWNlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZmlsbFJlY3QocmVjdCwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CkBAIC0xNzg5LDcgKzE2ODYsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0
eCwgaW50CiAKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIGlmIChoYXNCb3Jk
ZXJSYWRpdXMpIHsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRv
cExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgICAgICAg
ICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCBib3JkZXIudG9wTGVmdCgpLCBib3JkZXIudG9w
UmlnaHQoKSwgYm9yZGVyLmJvdHRvbUxlZnQoKSwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGF0aCk7CiAgICAgICAgICAgICAgICAgcGF0aC5j
bGVhcigpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0xODAzLDggKzE3MDAsOCBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGludCB0eCwgaW50CiAKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAg
ICAgICAgICAgICAgICBpZiAoc2hhZG93U3ByZWFkID4gMCkKLSAgICAgICAgICAgICAgICAgICAg
dW5pZm9ybWx5RXhwYW5kQm9yZGVyUmFkaWkoLXNoYWRvd1NwcmVhZCwgdG9wTGVmdCwgdG9wUmln
aHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KGhvbGVSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpOworICAgICAgICAgICAgICAgICAgICBib3JkZXIuc2hyaW5rKHNoYWRvd1NwcmVhZCk7
CisgICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgYm9yZGVyLnRv
cExlZnQoKSwgYm9yZGVyLnRvcFJpZ2h0KCksIGJvcmRlci5ib3R0b21MZWZ0KCksIGJvcmRlci5i
b3R0b21SaWdodCgpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHBhdGgu
YWRkUmVjdChob2xlUmVjdCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCmluZGV4IGI2OTcyMTdiZDIyM2MyOTRlMTU4YjYyZmIxYjBiMTVkMDkyYWE2MjQuLmFmZjll
NzZmMjkxZWZjYWZiZjI3MjQ4ZmI5MmFiNTc2NTIxNDc0MDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMTMwLDggKzEzMCw4IEBAIHByaXZhdGU6CiAKICAg
ICBJbnRTaXplIGNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqLCBJbnRTaXpl
IHNjYWxlZFNpemUpIGNvbnN0OwogCi0gICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNv
bnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25z
dCBCb3hTaWRlIHNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0
Y2hlcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLAorICAgIHZvaWQgY2xpcEJvcmRlclNpZGVQ
b2x5Z29uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGJveCwgY29uc3QgSW50UmVj
dFJhZGlpJiBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94
U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzLCBjb25z
dCBSZW5kZXJTdHlsZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJWaWV3OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggZDI3YTc4MGE1N2U3NTcyMTQ5YTg2MDRkOWEwZWQ4OTJiYTlkOGZlMS4uMDE3ZGJlNDk3ZmE2
OGY5Y2IxM2NjMmM0NWE3ZDljYjA5MWI0NzRlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC05ODIsMzEgKzk4MiwxOSBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0JveFNpZGVG
cm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgSW50UmVjdAogICAgICAg
ICBJbnRSZWN0IGlubmVyQm9yZGVySW5uZXJSZWN0ID0gYm9yZGVySW5uZXJSZWN0KGJvcmRlclJl
Y3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlubmVyQm9yZGVyQm90dG9tV2lkdGgsIAogICAgICAg
ICAgICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCk7CiAKLSAg
ICAgICAgLy8gR2V0IHRoZSBpbm5lciByYWRpaSBmb3IgdGhlIG91dGVyIGJvcmRlciBsaW5lCi0g
ICAgICAgIEludFNpemUgb3V0ZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVy
VG9wUmlnaHRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIAot
ICAgICAgICAgICAgb3V0ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzOwotICAgICAgICBz
dHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKG91dGVyQm9y
ZGVySW5uZXJSZWN0LCBvdXRlckJvcmRlclRvcFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRo
LCAKLSAgICAgICAgICAgIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lk
dGgsIG91dGVyQm9yZGVyVG9wTGVmdElubmVyUmFkaXVzLCBvdXRlckJvcmRlclRvcFJpZ2h0SW5u
ZXJSYWRpdXMsIAotICAgICAgICAgICAgb3V0ZXJCb3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMs
IG91dGVyQm9yZGVyQm90dG9tUmlnaHRJbm5lclJhZGl1cyk7Ci0KLSAgICAgICAgLy8gR2V0IHRo
ZSBpbm5lciByYWRpaSBmb3IgdGhlIGlubmVyIGJvcmRlciBsaW5lCi0gICAgICAgIEludFNpemUg
aW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyVG9wUmlnaHRJbm5lclJh
ZGl1cywgaW5uZXJCb3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAgaW5u
ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzOwotICAgICAgICBzdHlsZS0+Z2V0SW5uZXJC
b3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGlubmVyQm9yZGVySW5uZXJSZWN0LCBp
bm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCAKLSAgICAgICAgICAg
IGlubmVyQm9yZGVyTGVmdFdpZHRoLCBpbm5lckJvcmRlclJpZ2h0V2lkdGgsIGlubmVyQm9yZGVy
VG9wTGVmdElubmVyUmFkaXVzLCBpbm5lckJvcmRlclRvcFJpZ2h0SW5uZXJSYWRpdXMsIAotICAg
ICAgICAgICAgaW5uZXJCb3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyQm90
dG9tUmlnaHRJbm5lclJhZGl1cyk7Ci0KICAgICAgICAgLy8gRHJhdyBpbm5lciBib3JkZXIgbGlu
ZQogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaW5uZXJCb3JkZXJJbm5lclJlY3QsIGlubmVyQm9yZGVy
VG9wTGVmdElubmVyUmFkaXVzLCAKLSAgICAgICAgICAgIGlubmVyQm9yZGVyVG9wUmlnaHRJbm5l
clJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyQm90
dG9tUmlnaHRJbm5lclJhZGl1cyk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRl
ZFJlY3RDbGlwKGlubmVyQm9yZGVySW5uZXJSZWN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0
aEJvcmRlcldpZHRocyhpbm5lckJvcmRlcklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BXaWR0aCwg
aW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCkpOwogICAg
ICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9y
ZGVyUGF0aCwgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzLCBzdHlsZSwgYywgU09MSUQpOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgICAgICAvLyBEcmF3IG91
dGVyIGJvcmRlciBsaW5lCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChvdXRlckJvcmRlcklubmVyUmVj
dCwgb3V0ZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAgb3V0ZXJCb3Jk
ZXJUb3BSaWdodElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywg
b3V0ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qob3V0ZXJCb3JkZXJJbm5lclJlY3QsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJS
YWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKG91dGVyQm9yZGVySW5uZXJSZWN0LCBvdXRlckJv
cmRlclRvcFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRoLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRlckJvcmRlckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdo
dFdpZHRoKSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxl
LCBjLCBTT0xJRCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogCkBAIC0x
MDI4LDE4ICsxMDE2LDE3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRo
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBJbnRSZWN0CiAgICAgICAgIEludFJl
Y3QgaGFsZkJvcmRlclJlY3QgPSBib3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwgc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgLyAyLCAKICAg
ICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJSaWdo
dFdpZHRoKCkgLyAyKTsKIAotICAgICAgICBJbnRTaXplIHRvcExlZnRIYWxmUmFkaXVzLCB0b3BS
aWdodEhhbGZSYWRpdXMsIGJvdHRvbUxlZnRIYWxmUmFkaXVzLCBib3R0b21SaWdodEhhbGZSYWRp
dXM7Ci0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJX
aWR0aHMoaGFsZkJvcmRlclJlY3QsIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIAotICAg
ICAgICAgICAgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIC8gMiwgCi0gICAgICAgICAg
ICB0b3BMZWZ0SGFsZlJhZGl1cywgdG9wUmlnaHRIYWxmUmFkaXVzLCBib3R0b21MZWZ0SGFsZlJh
ZGl1cywgYm90dG9tUmlnaHRIYWxmUmFkaXVzKTsKLQogICAgICAgICAvLyBQYWludCBmdWxsIGJv
cmRlcgogICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
UmVjdCwgYm9yZGVyUGF0aCwgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzLCBzdHlsZSwgYywg
czEpOwogCiAgICAgICAgIC8vIFBhaW50IGlubmVyIG9ubHkKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KGhhbGZCb3JkZXJSZWN0LCB0b3BMZWZ0SGFsZlJhZGl1cywgdG9wUmlnaHRIYWxmUmFkaXVzLAot
ICAgICAgICAgICAgYm90dG9tTGVmdEhhbGZSYWRpdXMsIGJvdHRvbVJpZ2h0SGFsZlJhZGl1cyk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGhhbGZCb3JkZXJS
ZWN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUt
PmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhoYWxmQm9yZGVyUmVj
dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpIC8gMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5
bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgLyAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIC8gMikpOwog
ICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwg
Ym9yZGVyUGF0aCwgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzLCBzdHlsZSwgYywgczIpOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCmluZGV4IDk3NGE4ZDA3MmVkZjY3NzkwZjA4OTM2NzU4ZjI4NDhiMDdjNjhk
ZjcuLmQ2N2Y0ZDk5MmM3NGQ5ZTFiNTc4NjIxNzA2OGVmOGQ1MjExYjM5ODQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTEzNSwxMSArMTM1LDcgQEAgdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhhdmUgYSBib3Jk
ZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5kIGNvbnRlbnQg
dGhhdCBnZXRzIHBhaW50ZWQuCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJh
ZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQpOwotCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21S
aWdodCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KGJvcmRlclJlY3QsIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0KSk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bVdpbi5jcHAKaW5kZXggYmU2NzBmZjg5ZTYwMjYyYjA3M2Y1N2RjMjA1NjQwODMwODI2MDBl
NC4uZTI0YzAyNzQ3MzBmMTYwMWYzNmU4OTVjYzdmYWUwY2M4NzVkOGY2NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTY3NSw5ICs2NzUsNyBA
QCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGV4dEZpZWxkSW50ZXJuYWwoUmVu
ZGVyT2JqZWN0KiBvLAogICAgICAgICAvLyBiYWNrZ3JvdW5kICh0aGVtZWQgb3IgZmlsbGVkKSBh
cHByb3ByaWF0ZWx5LgogICAgICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIHdlIGRvIHRoZSByaWdo
dCB0aGluZyBpZiBjc3MgYmFja2dyb3VuZC1jbGlwIGlzIHNldC4KICAgICAgICAgaS5jb250ZXh0
LT5zYXZlKCk7Ci0gICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQs
IGJvdHRvbVJpZ2h0OwotICAgICAgICBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3Qo
ciwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICAgICAg
aS5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgaS5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENs
aXAociwgby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIpKTsKICAgICB9CiAgICAg
ewogICAgICAgICBjb25zdCBUaGVtZURhdGEmIHRoZW1lRGF0YSA9IGdldFRoZW1lRGF0YShvKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYjYzMmQ5YTdkNTIzOWU0OGY5MDky
ZWZlOWQ3NTJmMWFhODE2MDdiYi4uNDFmYzIwOTRjMzZkYWY1YmJlODU3NTlkYWMyYTY3ZmRhODQy
ODAyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMzIsMTQgKzEwMzIs
OCBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKIAotICAgIEludFNpemUgdG9wTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIHRvcFJpZ2h0
UmFkaXVzOwotICAgIEludFNpemUgYm90dG9tTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIGJvdHRv
bVJpZ2h0UmFkaXVzOwotCi0gICAgby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7Ci0KLSAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJhZGl1cy53aWR0aCgpOwor
ICAgIEludFJlY3RSYWRpaSByYWRpaSA9IG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVj
dChyKTsKKyAgICBpbnQgcmFkaXVzID0gcmFkaWkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjc3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCkpOwogCkBAIC0xMDYyLDI3ICsxMDU2LDI3IEBAIHZvaWQgUmVuZGVyVGhl
bWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nKEFkb3B0
Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5nZXQoKSwgQ0dQb2ludE1ha2Uoci5yaWdo
dCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCkgLSByYWRpdXMsIHIueSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdo
dFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgIHBhaW50
SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgcmFkaWkpOwogICAgIENHQ29udGV4
dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGll
bnQpLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgSW50U2l6ZSgpLCBJbnRTaXplKCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50
UmVjdCh0b3BHcmFkaWVudCksIEludFJlY3RSYWRpaShyYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRv
cFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJl
c3RvcmUoKTsKIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dCwgYm90dG9tR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRk
Um91bmRlZFJlY3RDbGlwKGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXpl
KCksIEludFNpemUoKSwgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGVuY2xvc2luZ0ludFJl
Y3QoYm90dG9tR3JhZGllbnQpLCBJbnRSZWN0UmFkaWkoSW50U2l6ZSgpLCBJbnRTaXplKCksIHJh
ZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICB9CiAKICAgICBwYWludEluZm8uY29udGV4
dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BS
aWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgcmFkaWkpOwogICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGxlZnRTaGFkaW5nLmdldCgpKTsKICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCByaWdodFNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5m
by5jb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMzAzLDkgKzEyOTcsNyBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZgogICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4
aWFsKGNzcGFjZS5nZXQoKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBD
R1BvaW50TWFrZShib3VuZHMueCgpLCBib3VuZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0
KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRy
YWNrUmFkaXVzKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJv
dW5kcywKLSAgICAgICAgcmFkaXVzLCByYWRpdXMsCi0gICAgICAgIHJhZGl1cywgcmFkaXVzKTsK
KyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kcywgSW50UmVj
dFJhZGlpKHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIENHQ29udGV4dERy
YXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29u
dGV4dC0+cmVzdG9yZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
Y3BwCmluZGV4IDhkNjZiYTcyMGJlY2Y3NjQxYWQ3MjdmZDRjY2NjNWUzOTY2M2U4ZDAuLjUzZTU1
ZGI0YTEzNjQ0OWZkMDNhMmYzYTFkZDRkZWNkNWM2ZWE5NWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTc1MSwxNCArNzUxLDggQEAgdm9pZCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW4KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAKLSAgICBJbnRTaXpl
IHRvcExlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSB0b3BSaWdodFJhZGl1czsKLSAgICBJbnRTaXpl
IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21SaWdodFJhZGl1czsKLQotICAg
IG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BS
aWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0gICAg
aW50IHJhZGl1cyA9IHRvcExlZnRSYWRpdXMud2lkdGgoKTsKKyAgICBJbnRSZWN0UmFkaWkgcmFk
aWkgPSBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3Qocik7CisgICAgaW50IHJhZGl1
cyA9IHJhZGlpLnRvcExlZnQoKS53aWR0aCgpOwogCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gY3NwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKIApA
QCAtNzgxLDI3ICs3NzUsMjcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlz
dEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW4KICAgICBSZXRhaW5Q
dHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhp
YWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCksICByLnkoKSksIENHUG9pbnRN
YWtlKHIucmlnaHQoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNl
LCBmYWxzZSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRl
ZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFk
aXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChyLCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwg
bWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAK
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRvcExlZnRSYWRpdXMsIHRv
cFJpZ2h0UmFkaXVzLCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgSW50
UmVjdFJhZGlpKHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJ
bnRTaXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5n
LmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFi
b3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVu
dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9z
aW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3R0b21M
ZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIElu
dFJlY3RSYWRpaShJbnRTaXplKCksIEludFNpemUoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRp
aS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IGJvdHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9y
ZSgpOwogICAgIH0KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChyLCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IHJpZ2h0U2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsK
QEAgLTk4Miw5ICs5NzYsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRy
YWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICBtYWlu
U2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5nZXQoKSwgQ0dQb2lu
dE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCBi
b3VuZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAg
ICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kcywKLSAgICAgICAgcmFkaXVzLCBy
YWRpdXMsCi0gICAgICAgIHJhZGl1cywgcmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+
YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kcywgSW50UmVjdFJhZGlpKHJhZGl1cywgcmFkaXVzLCBy
YWRpdXMsIHJhZGl1cykpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5T
aGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcAppbmRleCAyN2I4NzgzYmFlYmUwNDUw
OTZmNTFjM2RiM2M1NmNhOWY5YzZkMjFlLi5jMzgxNmExMmYzNTVkZmVlMDEyMDU1NDk0NDRmMDQy
ZTU4YTg0YmQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNF
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcApAQCAtMzc3
LDcgKzM3Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50CiAgICAgaW50IHkgPSByLnkoKSAr
IChyLmhlaWdodCgpIC0gY2FuY2VsU2l6ZS5oZWlnaHQoKSkgLyAyICsgMTsKICAgICBJbnRSZWN0
IGNhbmNlbEJvdW5kcyhJbnRQb2ludCh4LCB5KSwgY2FuY2VsU2l6ZSk7CiAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RD
bGlwKGNhbmNlbEJvdW5kcywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1
cywgY2FuY2VsUmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RD
bGlwKGNhbmNlbEJvdW5kcywgSW50UmVjdFJhZGlpKGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVz
LCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cykpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5m
aWxsUmVjdChjYW5jZWxCb3VuZHMsIGJ1dHRvbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAogICAgIC8vIERyYXcgdGhlICd4JwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXgg
MTUyYmIyZjgwMzFlOGY3ZGI0NTI2Y2NkMDFiYTVlZDI0MmNlMzE0Yi4uOGY5NjVkOTkzMmVlNGRi
MzU5YWUwY2U5NmRjMTQwYmFiMWUyMTUxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CkBAIC0yNzQsMTEgKzI3NCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICAgICAgLy8gUHVzaCBhIGNsaXAgaWYg
d2UgaGF2ZSBhIGJvcmRlciByYWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhlIGZvcmVn
cm91bmQgY29udGVudCB0aGF0IGdldHMgcGFpbnRlZC4KICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNhdmUoKTsKLSAgICAgICAgCi0gICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICBzdHlsZSgpLT5nZXRCb3JkZXJSYWRp
aUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRv
bVJpZ2h0KTsKLQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVj
dCwgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QpKTsKICAgICB9CiAK
ICAgICBpZiAobV93aWRnZXQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAppbmRl
eCAwMzYzNWQ5ZjE5ZmJhNDkwMTY1NjcyNzg5NjhmOGYxM2RhNzQ4YTgzLi5hOGI0MjRhZGViZjMx
MDJhNjBmMjkwZDBhYjllMDQxYzY0YWNmN2I0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJEYXRhLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVy
RGF0YS5oCkBAIC0yNiw2ICsyNiw4IEBACiAjZGVmaW5lIEJvcmRlckRhdGFfaAogCiAjaW5jbHVk
ZSAiQm9yZGVyVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVj
dFJhZGlpLmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUlt
YWdlLmgiCiAKQEAgLTEwOSw3ICsxMTEsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aFNp
emUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQogICAgIGNvbnN0IExl
bmd0aFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KICAg
ICBjb25zdCBMZW5ndGhTaXplJiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9t
UmlnaHQ7IH0KLSAgICAKKworICAgIEludFJlY3RSYWRpaSBjYWxjUmFkaWkoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3RSYWRpaShJbnRT
aXplKG1fdG9wTGVmdC53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV90b3BMZWZ0LmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1fdG9wUmlnaHQud2lkdGgo
KS5jYWxjVmFsdWUod2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV90b3BSaWdodC5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50U2l6ZShtX2JvdHRvbUxlZnQud2lkdGgoKS5jYWxjVmFsdWUod2lkdGgp
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm90dG9tTGVmdC5oZWln
aHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50
U2l6ZShtX2JvdHRvbVJpZ2h0LndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpLmNhbGNWYWx1
ZShoZWlnaHQpKSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIEJvcmRlclZhbHVlIG1fbGVmdDsK
ICAgICBCb3JkZXJWYWx1ZSBtX3JpZ2h0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCmluZGV4IDM3ZWQzOTFkZTlkYTM2ZTA4MzgzMGQyODFiYWY2ODJiNzAyMjdmYjkuLjE5
N2Y0YThhZGQwZDJiZTE4NWY3OWQxMTM1MjkwN2I1MTZiYWQ3MjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTc0MSw4NCArNzQxLDIwIEBAIHZvaWQgUmVuZGVy
U3R5bGU6OnNldEJveFNoYWRvdyhTaGFkb3dEYXRhKiBzaGFkb3dEYXRhLCBib29sIGFkZCkKICAg
ICByYXJlRGF0YS0+bV9ib3hTaGFkb3cuc2V0KHNoYWRvd0RhdGEpOwogfQogCi1zdGF0aWMgdm9p
ZCBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYg
dG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUm
IGJvdHRvbVJpZ2h0KQorSW50UmVjdFJhZGlpIFJlbmRlclN0eWxlOjpnZXRCb3JkZXJSYWRpaUZv
clJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICAvLyBDb25zdHJhaW4gY29y
bmVyIHJhZGlpIHVzaW5nIENTUzMgcnVsZXM6Ci0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJhZGl1cwotICAgIAotICAgIGZsb2F0IGZhY3Rv
ciA9IDE7Ci0gICAgdW5zaWduZWQgcmFkaWlTdW07Ci0KLSAgICAvLyB0b3AKLSAgICByYWRpaVN1
bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BMZWZ0LndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRvcFJpZ2h0LndpZHRoKCkpOyAvLyBDYXN0cyB0byBhdm9pZCBpbnRlZ2VyIG92
ZXJmbG93LgotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyLndpZHRo
KCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIud2lkdGgoKSkg
LyByYWRpaVN1bSwgZmFjdG9yKTsKLQotICAgIC8vIGJvdHRvbQotICAgIHJhZGlpU3VtID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbUxlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYm90dG9tUmlnaHQud2lkdGgoKSk7Ci0gICAgaWYgKHJhZGlpU3VtID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHIud2lkdGgoKSkpCi0gICAgICAgIGZhY3RvciA9IG1pbihzdGF0aWNfY2Fz
dDxmbG9hdD4oci53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwotICAgIAotICAgIC8vIGxl
ZnQKLSAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BMZWZ0LmhlaWdodCgp
KSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LmhlaWdodCgpKTsKLSAgICBpZiAo
cmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci5oZWlnaHQoKSkpCi0gICAgICAgIGZh
Y3RvciA9IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4oci5oZWlnaHQoKSkgLyByYWRpaVN1bSwgZmFj
dG9yKTsKLSAgICAKLSAgICAvLyByaWdodAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvcFJpZ2h0LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21S
aWdodC5oZWlnaHQoKSk7Ci0gICAgaWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHIuaGVpZ2h0KCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIu
aGVpZ2h0KCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7Ci0gICAgCi0gICAgLy8gU2NhbGUgYWxsIHJh
ZGlpIGJ5IGYgaWYgbmVjZXNzYXJ5LgotICAgIGlmIChmYWN0b3IgPCAxKSB7Ci0gICAgICAgIC8v
IElmIGVpdGhlciByYWRpdXMgb24gYSBjb3JuZXIgYmVjb21lcyB6ZXJvLCByZXNldCBib3RoIHJh
ZGlpIG9uIHRoYXQgY29ybmVyLgotICAgICAgICB0b3BMZWZ0LnNjYWxlKGZhY3Rvcik7Ci0gICAg
ICAgIGlmICghdG9wTGVmdC53aWR0aCgpIHx8ICF0b3BMZWZ0LmhlaWdodCgpKQotICAgICAgICAg
ICAgdG9wTGVmdCA9IEludFNpemUoKTsKLSAgICAgICAgdG9wUmlnaHQuc2NhbGUoZmFjdG9yKTsK
LSAgICAgICAgaWYgKCF0b3BSaWdodC53aWR0aCgpIHx8ICF0b3BSaWdodC5oZWlnaHQoKSkKLSAg
ICAgICAgICAgIHRvcFJpZ2h0ID0gSW50U2l6ZSgpOwotICAgICAgICBib3R0b21MZWZ0LnNjYWxl
KGZhY3Rvcik7Ci0gICAgICAgIGlmICghYm90dG9tTGVmdC53aWR0aCgpIHx8ICFib3R0b21MZWZ0
LmhlaWdodCgpKQotICAgICAgICAgICAgYm90dG9tTGVmdCA9IEludFNpemUoKTsKLSAgICAgICAg
Ym90dG9tUmlnaHQuc2NhbGUoZmFjdG9yKTsKLSAgICAgICAgaWYgKCFib3R0b21SaWdodC53aWR0
aCgpIHx8ICFib3R0b21SaWdodC5oZWlnaHQoKSkKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0ID0g
SW50U2l6ZSgpOwotICAgIH0KLX0KLQotdm9pZCBSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVyUmFkaWlG
b3JSZWN0KGNvbnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFNpemUmIHRvcFJp
Z2h0LCBJbnRTaXplJiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdodCkgY29uc3QKLXsK
LSAgICB0b3BMZWZ0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgp
LmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQo
KS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwotICAgIHRvcFJpZ2h0ID0gSW50U2l6ZShzdXJyb3Vu
ZC0+Ym9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91
bmQtPmJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7Ci0g
ICAgCi0gICAgYm90dG9tTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0
KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci5ib3R0b21M
ZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKLSAgICBib3R0b21SaWdodCA9
IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVl
KHIud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxj
VmFsdWUoci5oZWlnaHQoKSkpOwotCi0gICAgY29uc3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KHIs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgSW50UmVj
dFJhZGlpIHJhZGlpID0gc3Vycm91bmQtPmJvcmRlci5jYWxjUmFkaWkocmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKTsKKyAgICByYWRpaS5jb25zdHJhaW5Gb3IocmVjdCk7CisgICAgcmV0dXJu
IHJhZGlpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVj
dFdpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYgaW5uZXJSZWN0LCB1bnNpZ25lZCBzaG9y
dCB0b3BXaWR0aCwgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxl
ZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0
LCBJbnRTaXplJiBpbm5lclRvcFJpZ2h0LCBJbnRTaXplJiBpbm5lckJvdHRvbUxlZnQsIEludFNp
emUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0CitJbnRSZWN0UmFkaWkgUmVuZGVyU3R5bGU6Omdl
dElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRSZWN0JiBp
bm5lclJlY3QsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHNob3J0IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNo
b3J0IHJpZ2h0V2lkdGgpIGNvbnN0CiB7Ci0gICAgaW5uZXJUb3BMZWZ0ID0gSW50U2l6ZShzdXJy
b3VuZC0+Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgo
KSksIHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJl
Y3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lclRvcFJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9y
ZGVyLnRvcFJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJy
b3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWln
aHQoKSkpOwotICAgIGlubmVyQm90dG9tTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5i
b3R0b21MZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdo
dCgpKSk7Ci0gICAgaW5uZXJCb3R0b21SaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5i
b3R0b21SaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91
bmQtPmJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVp
Z2h0KCkpKTsKLQotCi0gICAgaW5uZXJUb3BMZWZ0LnNldFdpZHRoKG1heCgwLCBpbm5lclRvcExl
ZnQud2lkdGgoKSAtIGxlZnRXaWR0aCkpOwotICAgIGlubmVyVG9wTGVmdC5zZXRIZWlnaHQobWF4
KDAsIGlubmVyVG9wTGVmdC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7Ci0KLSAgICBpbm5lclRvcFJp
Z2h0LnNldFdpZHRoKG1heCgwLCBpbm5lclRvcFJpZ2h0LndpZHRoKCkgLSByaWdodFdpZHRoKSk7
Ci0gICAgaW5uZXJUb3BSaWdodC5zZXRIZWlnaHQobWF4KDAsIGlubmVyVG9wUmlnaHQuaGVpZ2h0
KCkgLSB0b3BXaWR0aCkpOwotCi0gICAgaW5uZXJCb3R0b21MZWZ0LnNldFdpZHRoKG1heCgwLCBp
bm5lckJvdHRvbUxlZnQud2lkdGgoKSAtIGxlZnRXaWR0aCkpOwotICAgIGlubmVyQm90dG9tTGVm
dC5zZXRIZWlnaHQobWF4KDAsIGlubmVyQm90dG9tTGVmdC5oZWlnaHQoKSAtIGJvdHRvbVdpZHRo
KSk7Ci0KLSAgICBpbm5lckJvdHRvbVJpZ2h0LnNldFdpZHRoKG1heCgwLCBpbm5lckJvdHRvbVJp
Z2h0LndpZHRoKCkgLSByaWdodFdpZHRoKSk7Ci0gICAgaW5uZXJCb3R0b21SaWdodC5zZXRIZWln
aHQobWF4KDAsIGlubmVyQm90dG9tUmlnaHQuaGVpZ2h0KCkgLSBib3R0b21XaWR0aCkpOwotCi0g
ICAgY29uc3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KGlubmVyUmVjdCwgaW5uZXJUb3BMZWZ0LCBp
bm5lclRvcFJpZ2h0LCBpbm5lckJvdHRvbUxlZnQsIGlubmVyQm90dG9tUmlnaHQpOworICAgIElu
dFJlY3RSYWRpaSByYWRpaSA9IHN1cnJvdW5kLT5ib3JkZXIuY2FsY1JhZGlpKGlubmVyUmVjdC53
aWR0aCgpLCBpbm5lclJlY3QuaGVpZ2h0KCkpOworICAgIHJhZGlpLnNocmluayh0b3BXaWR0aCwg
Ym90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7CisgICAgcmFkaWkuY29uc3RyYWlu
Rm9yKGlubmVyUmVjdCk7CisgICAgcmV0dXJuIHJhZGlpOwogfQogCiBjb25zdCBDb3VudGVyRGly
ZWN0aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291bnRlckRpcmVjdGl2ZXMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggY2JjNWMxN2I2YWFiMjk5MmY0N2VjNjVk
MjdhOTU1NTBiN2Y4MWQ4My4uMzkzOWRmMGI1OTEyZmI1ZjdjZDA2NzQxMjU1OWY2MGU2OGY0NjZj
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC04NTIsMTMgKzg1Miwx
MCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShM
ZW5ndGgocy53aWR0aCgpLCBGaXhlZCksIExlbmd0aChzLmhlaWdodCgpLCBGaXhlZCkpKTsKICAg
ICB9Ci0KICAgICAKLSAgICB2b2lkIGdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0
JiwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxl
ZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBjb25zdDsKLSAgICB2b2lkIGdldElubmVyQm9yZGVy
UmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgc2hv
cnQgdG9wV2lkdGgsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0
IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJp
Z2h0V2lkdGgsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUmIGlubmVyVG9w
TGVmdCwgSW50U2l6ZSYgaW5uZXJUb3BSaWdodCwgSW50U2l6ZSYgaW5uZXJCb3R0b21MZWZ0LCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplJiBpbm5lckJvdHRvbVJpZ2h0KSBj
b25zdDsKKyAgICBJbnRSZWN0UmFkaWkgZ2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKKyAgICBJbnRSZWN0UmFkaWkgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RX
aXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBib3R0b21XaWR0aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdpZHRo
LCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Qm9yZGVy
TGVmdFdpZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1f
bGVmdC5tX3dpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5bGUoRUJvcmRlclN0
eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3N0eWxlLCB2KSB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77962</attachid>
            <date>2011-01-04 19:30:21 -0800</date>
            <delta_ts>2011-01-11 03:31:55 -0800</delta_ts>
            <desc>updates to ToT</desc>
            <filename>bug-51664-20110105123018.patch</filename>
            <type>text/plain</type>
            <size>97848</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyMGRiNjY3MzE0MjI3ZDYzMjMzZjliZWRkODY0YmVlNjVkNGExYjE4Li5kYTcyNjVkYmEzNjIz
YzA5ZDZlZjYxYjEzYzJjZmNjNmU1YjIzZTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC01MjYsNiArNTI2LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBcCiAJcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAgXAorCXBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5j
cHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYjk1MGU4ZmEwMjdmZWVkMTkxNzk1ZDU5OWRiMTg0N2IzNmU1MGUzZS4u
MDRhMTY5ZTI4ZWZlYjQ2NDljYzFiODFiMzA4NzkzODU0MTg2NTA0MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzQw
LDYgKzEzNDAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0UmFkaWkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMTZhOTY0YjU1NzJiNDBhMDBhZjlkMmZlM2UyMDNlMGUzNmFlNmU5Zi4u
MDQ0ODZhMjU2NDljYTkxNDM0MTJjODUwZDFkNDZiYzc0YTAyMjExYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAor
MjAxMC0xMi0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZzogRXh0
cmFjdCBJbnRSZWN0UmFkaWkgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUxNjY0CisKKyAgICAgICAgSW50UmVjdFJhZGlpIGlzIGEgcXVhZCBv
ZiBJbnRTaXplIGZvciB0aGUgcmVjdGFuZ2xlIHJhZGlpLAorICAgICAgICB3aGljaCBpcyBvZnRl
biBtYW5pcHVsYXRlZCBhdCBvbmNlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RS
YWRpaS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjppc1plcm8p
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpjb25zdHJhaW5Gb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
UmVjdFJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0UmFkaWkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFk
aWk6OkludFJlY3RSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldFRv
cExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRUb3BSaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlp
Ojp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmJvdHRvbUxlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpib3R0b21SaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRS
ZWN0UmFkaWk6OnNocmluayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFRleHRGaWVsZEludGVybmFsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
U2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bkNFOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJEYXRhOjpjYWxjUmFkaWkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRJbm5lckJv
cmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dEJvcmRlclJhZGl1cyk6CisKIDIwMTEtMDEtMDQgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkZmJmODZlNjhm
MmFjZGEwNjhkYmFhYjFjMDE1OGE3NWE0YjIyZWYwLi4zZTk0ZWU4MzMyNTkyZjZmYzNhOGFmYWJh
ZjAzNjQ3MGViZDIzYjQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjk0MCw2ICsyOTQwLDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9JbnRTaXplSGFzaC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOGExNWZlYzA3ZWQxNzkzOWQyMGQ5MjU3NzJiODkzODE1
OTE3YzEyYS4uNzY2NjczZWIyZGI4OWExNGRkZjRkZWQyYzdiZmFhMjkwMTEzMTRiZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0x
MTk5LDYgKzExOTksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFJlY3RSYWRpaS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCkBAIC0yMTI0LDYgKzIxMjUsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRQb2ludEhhc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBmNzU2NjgzZjkzMGZhOGM0NDllODhmZDI3ZDEyNzZh
NjRjZWU3MzNlLi45NzgyYjdjZjMwNmMzMjc5ZGI0ZDNlMGE4NWE3MjRmODMzY2Q0MjU4IDEwMDc1
NQotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2NTkzLDYgKzI2NTkzLDE0IEBA
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xJbnRSZWN0UmFkaWkuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW50UmVj
dFJhZGlpLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbnRTaXplLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU1MTkwNDMx
ZjNlMDM3MjI0MGNiZmM4NjJlMDY5MTRjNTViNmFjODQuLjFjOGMyY2VmN2UwOGIzNDJhYTBlNDA2
MTE5MGU1YjY1MzQ5N2VkNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zMTE5LDYgKzMxMTksOCBAQAogCQlBNzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0Ug
LyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi87IH07CiAJCUE3MzUyQzE5MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1
MkMxNzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovOyB9OwogCQlBNzM1
MkMxQTBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzUyQzE4MEIxQkI4OUQwMEE5ODZEMCAv
KiBSZW5kZXJTVkdCbG9jay5oICovOyB9OworCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkgLyog
SW50UmVjdFJhZGlpLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuY3BwICovOyB9
OworCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVjdFJhZGlpLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGRDEyQzk3QkZFMDAz
MUFBRjkgLyogSW50UmVjdFJhZGlpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3
MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlC
ODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi87IH07CiAJCUE3NUU4Qjg4MEUxREUy
RDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAq
LzsgfTsKQEAgLTk0NjgsNiArOTQ3MCw4IEBACiAJCUE3MUE3MEM5MTFBRkIwMjAwMDk4OUQ2RCAv
KiBIVE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWV0ZXJF
bGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTczNTJDMTcwQjFCQjg5
RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MzUyQzE4MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIEludFJlY3RS
YWRpaS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRSZWN0UmFk
aWkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzNGOTVGRDEyQzk3QkZFMDAz
MUFBRjkgLyogSW50UmVjdFJhZGlpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludFJlY3RSYWRpaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzVFNDk3NDEw
NzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU4
QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEZFQmxlbmQuY3BwOyBwYXRoID0gZmlsdGVycy9GRUJsZW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzAxLDYgKzE3MzA1LDggQEAKIAkJCQlF
NDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyogSW50UG9pbnRIYXNoLmggKi8sCiAJCQkJQjI3NTM1
NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuY3BwICovLAogCQkJCUIyNzUzNTQ2MEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmggKi8sCisJCQkJQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5
IC8qIEludFJlY3RSYWRpaS5jcHAgKi8sCisJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8q
IEludFJlY3RSYWRpaS5oICovLAogCQkJCUIyNzUzNTQ3MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRT
aXplLmggKi8sCiAJCQkJQjI3NTM1NDgwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmgg
Ki8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywK
QEAgLTIwNzg4LDYgKzIwNzk0LDcgQEAKIAkJCQlCMjc1MzU3MjBCMDUzODE0MDAyQ0U2NEYgLyog
SW50UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NjJBNEExMTEzRTcxQkUwMDRBNDIyMCAv
KiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTc0MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzNGOTVGRjEyQzk3QkZFMDAz
MUFBRjkgLyogSW50UmVjdFJhZGlpLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3NTBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzYwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RD
NDEyNTFGMTJEMDAzRUYyNjkgLyogSXNJbmRleElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMzUxMyw2ICsyMzUyMCw3IEBACiAJCQkJQjI3NTM1NzMwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjEwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU3RDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE3M0Y5NUZFMTJDOTdCRkUw
MDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjIw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1
MzU3RTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUY1NUIzREMzMTI1MUYxMkQwMDNFRjI2OSAvKiBJc0luZGV4SW5wdXRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CmluZGV4IDk2YTkyZmI2MDRkYjZhODAyMzc1MDFkY2I3NjNjYWY5OWY2ODUzODYuLmJmNWM3Zjg1
OGJjZTFmOWU2ZGIxNjYxZjBkYWMwN2U5NTY5YjllNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJGb250LmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKKyNpbmNsdWRlICJJbnRSZWN0UmFkaWkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApA
QCAtNTI5LDI1ICs1MzAsMjMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclMKICAgICAgICAgaW1h
Z2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlw
KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNp
emUmIHRvcFJpZ2h0LAotICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNp
emUmIGJvdHRvbVJpZ2h0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xp
cChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0UmFkaWkmIHJhZGlpKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhdGggcGF0
aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0
b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCByYWRp
aS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWku
Ym90dG9tUmlnaHQoKSk7CiAgICAgY2xpcChwYXRoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXpl
JiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3RSYWRpaSYgcmFkaWkpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGF0aCBw
YXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHJh
ZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRp
aS5ib3R0b21SaWdodCgpKTsKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCkBAIC01NzgsNiArNTc3
LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIEdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIGdlbmVyYXRvci5maWxsKHRoaXMsIHJlY3Qp
OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFJlY3RSYWRpaSYgcmFkaWksIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LCByYWRp
aS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWku
Ym90dG9tUmlnaHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworfQorCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdGlvbikKIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3Bl
cmF0aW9uOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggYTRhMjY5NWE1MjlmYTNhZDgzMzU1NWI4ZDI1MzI0YTdjYmI4NGIyOS4uYzU2NGM4ZmRiOTcy
OGI5YTVhYTM5MmQzMzBmMDFiYzkwNTg4NWU5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xMjEsNiArMTIxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEdlbmVyYXRvcjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU7CiAgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CisgICAgY2xhc3MgSW50UmVjdFJh
ZGlpOwogICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q7
CiAgICAgY2xhc3MgVGV4dFJ1bjsKQEAgLTI4Myw2ICsyODQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBH
ZW5lcmF0b3ImKTsKICAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlY3RSYWRpaSYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAK
ICAgICAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKQEAgLTMxMSwxMCAr
MzEzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgY2xp
cChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAoY29u
c3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJp
Z2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdo
dCk7CisgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0UmFkaWkmKTsKICAgICAgICAgdm9pZCBhZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChj
b25zdCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CiAgICAgICAgIHZvaWQgY2xpcE91dChjb25z
dCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29u
c3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpOworICAg
ICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVj
dFJhZGlpJik7CiAgICAgICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKTsK
ICAgICAgICAgdm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBG
bG9hdFBvaW50KiwgYm9vbCBhbnRpYWxpYXMgPSB0cnVlKTsKICAgICAgICAgdm9pZCBjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YmI4YWEwMTJjN2Nl
MGU5MTZlMzFkYzE5OWEzMWJhZmUyOWY3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludFJlY3RSYWRpaS5o
IgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitib29sIEludFJlY3RSYWRpaTo6aXNaZXJvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV90b3BMZWZ0LmlzWmVybygpICYmIG1fdG9wUmlnaHQuaXNaZXJvKCkgJiYgbV9i
b3R0b21MZWZ0LmlzWmVybygpICYmIG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7Cit9CisKK3ZvaWQg
SW50UmVjdFJhZGlpOjpjb25zdHJhaW5Gb3IoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICAv
LyBDb25zdHJhaW4gY29ybmVyIHJhZGlpIHVzaW5nIENTUzMgcnVsZXM6CisgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJhZGl1cworICAgIAor
ICAgIGZsb2F0IGZhY3RvciA9IDE7CisgICAgdW5zaWduZWQgcmFkaWlTdW07CisKKyAgICAvLyB0
b3AKKyAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RvcExlZnQud2lkdGgo
KSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90b3BSaWdodC53aWR0aCgpKTsgLy8gQ2FzdHMg
dG8gYXZvaWQgaW50ZWdlciBvdmVyZmxvdy4KKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocmVjdC53aWR0aCgpKSkKKyAgICAgICAgZmFjdG9yID0gc3RkOjptaW4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKKworICAg
IC8vIGJvdHRvbQorICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fYm90dG9t
TGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2JvdHRvbVJpZ2h0LndpZHRo
KCkpOworICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LndpZHRo
KCkpKQorICAgICAgICBmYWN0b3IgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53
aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAgIAorICAgIC8vIGxlZnQKKyAgICByYWRp
aVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RvcExlZnQuaGVpZ2h0KCkpICsgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fYm90dG9tTGVmdC5oZWlnaHQoKSk7CisgICAgaWYgKHJhZGlpU3Vt
ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QuaGVpZ2h0KCkpKQorICAgICAgICBmYWN0b3Ig
PSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC5oZWlnaHQoKSkgLyByYWRpaVN1bSwg
ZmFjdG9yKTsKKyAgICAKKyAgICAvLyByaWdodAorICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fdG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Ym90dG9tUmlnaHQuaGVpZ2h0KCkpOworICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZWN0LmhlaWdodCgpKSkKKyAgICAgICAgZmFjdG9yID0gc3RkOjptaW4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CisgICAgCisg
ICAgLy8gU2NhbGUgYWxsIHJhZGlpIGJ5IGYgaWYgbmVjZXNzYXJ5LgorICAgIGlmIChmYWN0b3Ig
PCAxKSB7CisgICAgICAgIC8vIElmIGVpdGhlciByYWRpdXMgb24gYSBjb3JuZXIgYmVjb21lcyB6
ZXJvLCByZXNldCBib3RoIHJhZGlpIG9uIHRoYXQgY29ybmVyLgorICAgICAgICBtX3RvcExlZnQu
c2NhbGUoZmFjdG9yKTsKKyAgICAgICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKSB8fCAhbV90b3BM
ZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgpOworICAgICAg
ICBtX3RvcFJpZ2h0LnNjYWxlKGZhY3Rvcik7CisgICAgICAgIGlmICghbV90b3BSaWdodC53aWR0
aCgpIHx8ICFtX3RvcFJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgbV90b3BSaWdodCA9IElu
dFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7CisgICAgICAgIGlm
ICghbV9ib3R0b21MZWZ0LndpZHRoKCkgfHwgIW1fYm90dG9tTGVmdC5oZWlnaHQoKSkKKyAgICAg
ICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21SaWdodC5z
Y2FsZShmYWN0b3IpOworICAgICAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhbV9i
b3R0b21SaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXpl
KCk7CisgICAgfQorCit9CisKK3ZvaWQgSW50UmVjdFJhZGlpOjpleHBhbmQoaW50IHRvcFdpZHRo
LCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoKQoreworICAg
IG1fdG9wTGVmdC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX3RvcExlZnQud2lkdGgoKSArIGxlZnRX
aWR0aCkpOworICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3RkOjptYXgoMCwgbV90b3BMZWZ0Lmhl
aWdodCgpICsgdG9wV2lkdGgpKTsKKworICAgIG1fdG9wUmlnaHQuc2V0V2lkdGgoc3RkOjptYXgo
MCwgbV90b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgIG1fdG9wUmlnaHQuc2V0
SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworCisg
ICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4KDAsIG1fYm90dG9tTGVmdC53aWR0aCgp
ICsgbGVmdFdpZHRoKSk7CisgICAgbV9ib3R0b21MZWZ0LnNldEhlaWdodChzdGQ6Om1heCgwLCBt
X2JvdHRvbUxlZnQuaGVpZ2h0KCkgKyBib3R0b21XaWR0aCkpOworCisgICAgbV9ib3R0b21SaWdo
dC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX2JvdHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRo
KSk7CisgICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQoc3RkOjptYXgoMCwgbV9ib3R0b21SaWdo
dC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Cit9CisKK3ZvaWQgSW50UmVjdFJhZGlpOjppbmNs
dWRlTG9naWNhbEVkZ2VzKGNvbnN0IEludFJlY3RSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9u
dGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpCit7CisgICAgaWYgKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKKyAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxl
ZnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJp
Z2h0KCk7CisgICAgICAgIG1fdG9wTGVmdCA9IGVkZ2VzLnRvcExlZnQoKTsKKyAgICB9CisKKyAg
ICBpZiAoaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRh
bCkKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBlZGdlcy50b3BSaWdodCgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7CisgICAg
ICAgIG1fYm90dG9tUmlnaHQgPSBlZGdlcy5ib3R0b21SaWdodCgpOworICAgIH0KKworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFJlY3RSYWRpaS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFk
aWkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NGU4YzNkNjM0YWVkMjU3MjJmOGNhMmY3NWEyNzEzOTZiZThjMTQ1
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFk
aWkuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50UmVjdFJh
ZGlpX2gKKyNkZWZpbmUgSW50UmVjdFJhZGlpX2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRSZWN0OworCitjbGFzcyBJbnRSZWN0UmFk
aWkgeworcHVibGljOgorICAgIEludFJlY3RSYWRpaSgpIHt9CisgICAgSW50UmVjdFJhZGlpKGNv
bnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKKyAgICAgICAgOiBt
X3RvcExlZnQodG9wTGVmdCkKKyAgICAgICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQorICAgICAg
ICAsIG1fYm90dG9tTGVmdChib3R0b21MZWZ0KQorICAgICAgICAsIG1fYm90dG9tUmlnaHQoYm90
dG9tUmlnaHQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBJbnRT
aXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KKyAgICB2b2lkIHNldFRvcFJpZ2h0KGNv
bnN0IEludFNpemUmIHNpemUpIHsgbV90b3BSaWdodCA9IHNpemU7IH0KKyAgICB2b2lkIHNldEJv
dHRvbUxlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9Cisg
ICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tUmln
aHQgPSBzaXplOyB9CisgICAgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdG9wTGVmdDsgfQorICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV90b3BSaWdodDsgfQorICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7
IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KKyAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmlnaHQ7IH0KKworICAgIGJvb2wgaXNaZXJvKCkgY29u
c3Q7CisKKyAgICB2b2lkIGNvbnN0cmFpbkZvcihjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBp
bmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IEludFJlY3RSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jp
em9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOworICAgIHZvaWQgZXhwYW5kKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRo
LCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCk7CisgICAgdm9pZCBleHBhbmQoaW50IHNp
emUpIHsgZXhwYW5kKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CisgICAgdm9pZCBzaHJpbmso
aW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdp
ZHRoKSB7IGV4cGFuZCgtdG9wV2lkdGgsIC1ib3R0b21XaWR0aCwgLWxlZnRXaWR0aCwgLXJpZ2h0
V2lkdGgpOyB9CisgICAgdm9pZCBzaHJpbmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUs
IHNpemUsIHNpemUpOyB9CisKK3ByaXZhdGU6CisgICAgSW50U2l6ZSBtX3RvcExlZnQ7CisgICAg
SW50U2l6ZSBtX3RvcFJpZ2h0OworICAgIEludFNpemUgbV9ib3R0b21MZWZ0OworICAgIEludFNp
emUgbV9ib3R0b21SaWdodDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEludFJlY3RSYWRpaV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1ZGU5OGU3MTE4
MDg4MTc2OGIyZWQ2ZmI5MjAzN2M2NTdmYTI5ZGE3Li40NDkyMzM2ODE2NWY3NjE5MGVkNjU3YTg4
YmVhNWZlZjk3NDdiOTE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEwNjIsMTQgKzEw
NjIsOCBAQCBib29sIFJlbmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcChQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgfQogICAgIEludFJlY3QgY2xpcFJlY3QoaXNDb250
cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdCh0eCwgdHkpIDogb3ZlcmZsb3dDbGlwUmVjdCh0eCwg
dHkpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIGlmIChzdHlsZSgpLT5o
YXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gSW50
UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKLSAgICAgICAgc3R5bGUoKS0+Z2V0Qm9y
ZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0
LCBib3R0b21SaWdodCk7Ci0KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpOwotICAgIH0KLSAgICAKKyAgICBpZiAoc3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkp
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0
eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSwgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0
KEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSkpKTsKICAgICBwYWludEluZm8uY29u
dGV4dC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNTA5ODMwNmFlMWZjY2U0NzhjMDAz
ZDkyY2MyMGUxMzIxZTgyNzUyNS4uZWU2MmYxMWQzNmFiMjhjOWM3OTlkMjJiYmY2NWEzOGRkYmI0
NGZmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
NTQ3LDI2ICs1NDcsMjUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICBjb250
ZXh0LT5zYXZlKCk7CiAKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVj
dChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQp
OworICAgICAgICBJbnRSZWN0UmFkaWkgcmFkaWkgPSBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZv
clJlY3QoYm9yZGVyUmVjdCk7CiAKICAgICAgICAgaWYgKCFpbmNsdWRlTGVmdEVkZ2UpIHsKLSAg
ICAgICAgICAgIHRvcExlZnQgPSBJbnRTaXplKCk7CisgICAgICAgICAgICByYWRpaS5zZXRUb3BM
ZWZ0KEludFNpemUoKSk7CiAgICAgICAgICAgICBpZiAoYm94LT5pc0hvcml6b250YWwoKSkKLSAg
ICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgICAgIHJh
ZGlpLnNldEJvdHRvbUxlZnQoSW50U2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgICAgICAgICByYWRpaS5zZXRU
b3BSaWdodChJbnRTaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIWlu
Y2x1ZGVSaWdodEVkZ2UpIHsKICAgICAgICAgICAgIGlmIChib3gtPmlzSG9yaXpvbnRhbCgpKQot
ICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgICAgIHJh
ZGlpLnNldFRvcFJpZ2h0KEludFNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYm90dG9tTGVmdCA9IEludFNpemUoKTsKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0ID0g
SW50U2l6ZSgpOworICAgICAgICAgICAgICAgIHJhZGlpLnNldEJvdHRvbUxlZnQoSW50U2l6ZSgp
KTsKKyAgICAgICAgICAgIHJhZGlpLnNldEJvdHRvbVJpZ2h0KEludFNpemUoKSk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJS
ZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAg
ICBjb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgcmFkaWkpOwogICAgICAg
ICBjbGlwcGVkVG9Cb3JkZXJSYWRpdXMgPSB0cnVlOwogICAgIH0KIApAQCAtMTAyNCwxNCArMTAy
MywxMyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIGJvb2wgcmVuZGVyUmlnaHQgPSBy
aWdodFN0eWxlID4gQkhJRERFTiAmJiAhcmlnaHRUcmFuc3BhcmVudCAmJiAoIWhvcml6b250YWwg
fHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIGJvb2wgcmVuZGVyQm90dG9tID0gYm90
dG9tU3R5bGUgPiBCSElEREVOICYmICFib3R0b21UcmFuc3BhcmVudCAmJiAoaG9yaXpvbnRhbCB8
fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKLSAgICBib29sIHJlbmRlclJhZGlpID0gZmFs
c2U7CiAgICAgUGF0aCByb3VuZGVkUGF0aDsKLSAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKKyAgICBJbnRSZWN0UmFkaWkgYm9yZGVyOwogICAg
IEludFJlY3QgYm9yZGVyUmVjdCh0eCwgdHksIHcsIGgpOwogCiAgICAgaWYgKHN0eWxlLT5oYXNC
b3JkZXJSYWRpdXMoKSkgewotICAgICAgICBJbnRTaXplIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0
UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgc3R5
bGUtPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BS
aWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgICAg
ICBib3JkZXIuaW5jbHVkZUxvZ2ljYWxFZGdlcyhzdHlsZS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0
KGJvcmRlclJlY3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9u
dGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAK
ICAgICAgICAgaW50IGxlZnRXaWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlKSA/IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA6IDA7CiAgICAgICAgIGludCByaWdo
dFdpZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkgOiAwOwpAQCAtMTAzOSw0NyArMTAzNywyMCBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgaW50IHR4LAogICAgICAgICBpbnQgYm90dG9tV2lkdGggPSAoaG9yaXpvbnRhbCB8
fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA6
IDA7CiAKICAgICAgICAgSW50UmVjdCBpbm5lckJvcmRlclJlY3QgPSBib3JkZXJJbm5lclJlY3Qo
Ym9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgp
OwotICAgICAgICBJbnRTaXplIGlubmVyVG9wTGVmdFJhZGl1cywgaW5uZXJUb3BSaWdodFJhZGl1
cywgaW5uZXJCb3R0b21MZWZ0UmFkaXVzLCBpbm5lckJvdHRvbVJpZ2h0UmFkaXVzOworICAgICAg
ICBJbnRSZWN0UmFkaWkgaW5uZXI7CisgICAgICAgIGlubmVyLmluY2x1ZGVMb2dpY2FsRWRnZXMo
c3R5bGUtPmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhpbm5lckJv
cmRlclJlY3QsIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsLCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgIAotICAgICAg
ICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGlubmVy
Qm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgs
IGlubmVyVG9wTGVmdFJhZGl1cywgaW5uZXJUb3BSaWdodFJhZGl1cywgaW5uZXJCb3R0b21MZWZ0
UmFkaXVzLCBpbm5lckJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgICAgICBJbnRTaXplIGlubmVy
VG9wTGVmdCwgaW5uZXJUb3BSaWdodCwgaW5uZXJCb3R0b21MZWZ0LCBpbm5lckJvdHRvbVJpZ2h0
OwotCi0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0
b3BMZWZ0ID0gdG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlubmVyVG9wTGVmdCA9IGlubmVy
VG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlmIChob3Jpem9udGFsKSB7Ci0gICAgICAgICAg
ICAgICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5u
ZXJCb3R0b21MZWZ0ID0gaW5uZXJCb3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAg
ICAgICAgIGlubmVyVG9wUmlnaHQgPSBpbm5lclRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0g
ICAgICAgICAgICBpZiAoaG9yaXpvbnRhbCkgewotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0g
dG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJUb3BSaWdodCA9IGlubmVyVG9w
UmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJvdHRv
bUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlubmVyQm90dG9tTGVm
dCA9IGlubmVyQm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJv
dHRvbVJpZ2h0ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICBpbm5lckJvdHRvbVJp
Z2h0ID0gaW5uZXJCb3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQotCi0gICAgICAgIHJlbmRl
clJhZGlpID0gIXRvcExlZnQuaXNaZXJvKCkgfHwgIXRvcFJpZ2h0LmlzWmVybygpIHx8ICFib3R0
b21MZWZ0LmlzWmVybygpIHx8ICFib3R0b21SaWdodC5pc1plcm8oKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChyZW5kZXJSYWRpaSkgeworICAgICAgICBpZiAoIWJvcmRlci5pc1plcm8oKSkgewog
ICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5uZXIgYW5kIG91dGVyIHJhZGlpIHJlY3RzLgog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXJSZWN0LCBpbm5lclRvcExlZnQsIGlubmVy
VG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5uZXJCb3R0b21SaWdodCk7Ci0gICAgICAgICAg
ICByb3VuZGVkUGF0aC5hZGRSb3VuZGVkUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgYm9yZGVyKTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyUmVjdCwgaW5uZXIp
OworICAgICAgICAgICAgcm91bmRlZFBhdGguYWRkUm91bmRlZFJlY3QoYm9yZGVyUmVjdCwgYm9y
ZGVyLnRvcExlZnQoKSwgYm9yZGVyLnRvcFJpZ2h0KCksIGJvcmRlci5ib3R0b21MZWZ0KCksIGJv
cmRlci5ib3R0b21SaWdodCgpKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgcmVuZGVy
UmFkaWkgPSAhYm9yZGVyLmlzWmVybygpOwogICAgIGJvb2wgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVz
TWF0Y2ggPSByZW5kZXJMZWZ0ICYmICh0b3BTdHlsZSA9PSBsZWZ0U3R5bGUpICYmICh0b3BDb2xv
ciA9PSBsZWZ0Q29sb3IpOwogICAgIGJvb2wgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoID0g
cmVuZGVyUmlnaHQgJiYgKHRvcFN0eWxlID09IHJpZ2h0U3R5bGUpICYmICh0b3BDb2xvciA9PSBy
aWdodENvbG9yKSAmJiAodG9wU3R5bGUgIT0gT1VUU0VUKSAmJiAodG9wU3R5bGUgIT0gUklER0Up
ICYmICh0b3BTdHlsZSAhPSBJTlNFVCkgJiYgKHRvcFN0eWxlICE9IEdST09WRSk7CiAgICAgYm9v
bCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKGJvdHRvbVN0eWxl
ID09IGxlZnRTdHlsZSkgJiYgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvcikgJiYgKGJvdHRvbVN0
eWxlICE9IE9VVFNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IFJJREdFKSAmJiAoYm90dG9tU3R5bGUg
IT0gSU5TRVQpICYmIChib3R0b21TdHlsZSAhPSBHUk9PVkUpOwpAQCAtMTA4OSw5ICsxMDYwLDkg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgaW50IHggPSB0eDsKICAgICAgICAg
aW50IHgyID0gdHggKyB3OwogCi0gICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxs
QXJjSW5uZXJFZGdlKHRvcExlZnQsIHRvcFJpZ2h0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCks
IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSkgewor
ICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIu
dG9wTGVmdCgpLCBib3JkZXIudG9wUmlnaHQoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBz
dHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSkpIHsKICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY2xpcEJvcmRl
clNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmln
aHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBCU1RvcCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVz
TWF0Y2gsIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgICAgIGNsaXBCb3Jk
ZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlciwgQlNUb3As
IHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gs
IHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3MgPSBtYXgobWF4KHN0eWxlLT5ib3JkZXJUb3BX
aWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHRoaWNrbmVz
cywgQlNUb3AsIHN0eWxlLCB0b3BDb2xvciwgdG9wU3R5bGUpOwogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMTEwLDkgKzEwODEsOSBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgaW50IHR4LAogICAgICAgICBpbnQgeCA9IHR4OwogICAgICAgICBpbnQgeDIgPSB0eCArIHc7
CiAKLSAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm90
dG9tTGVmdCwgYm90dG9tUmlnaHQsIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpKSB7CisgICAgICAg
IGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvcmRlci5ib3R0b21M
ZWZ0KCksIGJvcmRlci5ib3R0b21SaWdodCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0
eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSkgewog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9y
ZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTQm90dG9tLCBsb3dlckxlZnRCb3JkZXJT
dHlsZXNNYXRjaCwgbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xp
cEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyLCBC
U0JvdHRvbSwgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHls
ZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSksIHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGlj
c0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lk
dGgoKSwgdGhpY2tuZXNzLCBCU0JvdHRvbSwgc3R5bGUsIGJvdHRvbUNvbG9yLCBib3R0b21TdHls
ZSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTExMzMsOSAr
MTEwNCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB5ID0gdHk7CiAg
ICAgICAgIGludCB5MiA9IHR5ICsgaDsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9y
ZGVyV2lsbEFyY0lubmVyRWRnZShib3R0b21MZWZ0LCB0b3BMZWZ0LCBzdHlsZS0+Ym9yZGVyQm90
dG9tV2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lk
dGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVk
Z2UoYm9yZGVyLmJvdHRvbUxlZnQoKSwgYm9yZGVyLnRvcExlZnQoKSwgc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdp
ZHRoKCkpKSB7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAg
ICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHRv
cExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNMZWZ0LCB1cHBlckxl
ZnRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAg
ICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBi
b3JkZXIsIEJTTGVmdCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyTGVmdEJvcmRl
clN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpOwogICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChzdHls
ZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSwgc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFw
aGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+Ym9yZGVyTGVmdFdp
ZHRoKCksIHRoaWNrbmVzcywgQlNMZWZ0LCBzdHlsZSwgbGVmdENvbG9yLCBsZWZ0U3R5bGUpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMTUyLDkgKzExMjMs
OSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5kZXJSaWdo
dCkgewotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShi
b3R0b21SaWdodCwgdG9wUmlnaHQsIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSkpIHsKKyAgICAgICAg
aWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9yZGVyLmJvdHRvbVJp
Z2h0KCksIGJvcmRlci50b3BSaWdodCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5
bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpKSB7CiAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGNsaXBCb3JkZXJT
aWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNSaWdodCwgdXBwZXJSaWdodEJvcmRlclN0eWxl
c01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgICAgICBjbGlwQm9y
ZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXIsIEJTUmln
aHQsIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJSaWdodEJvcmRlclN0eWxlc01h
dGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwogICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChzdHlsZS0+Ym9yZGVy
UmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwg
dGhpY2tuZXNzLCBCU1JpZ2h0LCBzdHlsZSwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSk7CiAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEyMDksNjUgKzExODAsNDYg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICBib29sIHJlbmRlclJpZ2h0ID0gcmlnaHRT
dHlsZSA+IEJISURERU4gJiYgIXJpZ2h0VHJhbnNwYXJlbnQgJiYgKCFob3Jpem9udGFsIHx8IGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICBib29sIHJlbmRlckJvdHRvbSA9IGJvdHRvbVN0
eWxlID4gQkhJRERFTiAmJiAhYm90dG9tVHJhbnNwYXJlbnQgJiYgKGhvcml6b250YWwgfHwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgYm9vbCByZW5kZXJSYWRpaSA9IGZhbHNlOwot
ICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0Owor
CisgICAgSW50UmVjdFJhZGlpIGJvcmRlcjsKIAogICAgIGlmIChzdHlsZS0+aGFzQm9yZGVyUmFk
aXVzKCkpIHsKICAgICAgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gSW50UmVjdCh0eCwgdHksIHcs
IGgpOwotCi0gICAgICAgIEludFNpemUgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICBzdHlsZS0+Z2V0Qm9y
ZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0KLSAgICAgICAgaWYgKGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKLSAgICAgICAgICAgIHRvcExlZnQgPSB0b3BMZWZ0UmFk
aXVzOwotICAgICAgICAgICAgaWYgKGhvcml6b250YWwpCi0gICAgICAgICAgICAgICAgYm90dG9t
TGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoaG9yaXpv
bnRhbCkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVz
OwotICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAg
fQotCi0gICAgICAgIHJlbmRlclJhZGlpID0gIXRvcExlZnQuaXNaZXJvKCkgfHwgIXRvcFJpZ2h0
LmlzWmVybygpIHx8ICFib3R0b21MZWZ0LmlzWmVybygpIHx8ICFib3R0b21SaWdodC5pc1plcm8o
KTsKKyAgICAgICAgYm9yZGVyLmluY2x1ZGVMb2dpY2FsRWRnZXMoc3R5bGUtPmdldEJvcmRlclJh
ZGlpRm9yUmVjdChib3JkZXJSZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7Ci0gICAgICAgICAg
ICAvLyBDbGlwIHRvIHRoZSByb3VuZGVkIHJlY3RhbmdsZS4KKyAgICAgICAgaWYgKCFib3JkZXIu
aXNaZXJvKCkpIHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIGJvcmRlcik7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpbnQgZmlyc3RBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVN0
YXJ0LCBmaXJzdEFuZ2xlU3Bhbiwgc2Vjb25kQW5nbGVTcGFuOwogICAgIGZsb2F0IHRoaWNrbmVz
czsKKyAgICBib29sIHJlbmRlclJhZGlpID0gIWJvcmRlci5pc1plcm8oKTsKICAgICBib29sIHVw
cGVyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyTGVmdCAmJiAodG9wU3R5bGUgPT0gbGVm
dFN0eWxlKSAmJiAodG9wQ29sb3IgPT0gbGVmdENvbG9yKTsKICAgICBib29sIHVwcGVyUmlnaHRC
b3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlclJpZ2h0ICYmICh0b3BTdHlsZSA9PSByaWdodFN0eWxl
KSAmJiAodG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRvcFN0eWxlICE9IE9VVFNFVCkgJiYg
KHRvcFN0eWxlICE9IFJJREdFKSAmJiAodG9wU3R5bGUgIT0gSU5TRVQpICYmICh0b3BTdHlsZSAh
PSBHUk9PVkUpOwogICAgIGJvb2wgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJM
ZWZ0ICYmIChib3R0b21TdHlsZSA9PSBsZWZ0U3R5bGUpICYmIChib3R0b21Db2xvciA9PSBsZWZ0
Q29sb3IpICYmIChib3R0b21TdHlsZSAhPSBPVVRTRVQpICYmIChib3R0b21TdHlsZSAhPSBSSURH
RSkgJiYgKGJvdHRvbVN0eWxlICE9IElOU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gR1JPT1ZFKTsK
ICAgICBib29sIGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlclJpZ2h0ICYmIChi
b3R0b21TdHlsZSA9PSByaWdodFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0gcmlnaHRDb2xvcik7
CiAKICAgICBpZiAocmVuZGVyVG9wKSB7Ci0gICAgICAgIGJvb2wgaWdub3JlX2xlZnQgPSAocmVu
ZGVyUmFkaWkgJiYgdG9wTGVmdC53aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAgICh0b3BDb2xv
ciA9PSBsZWZ0Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIHRv
cFN0eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAgIChsZWZ0U3R5bGUgPT0gRE9UVEVEIHx8
IGxlZnRTdHlsZSA9PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRTdHlsZSA9
PSBPVVRTRVQpKTsKLQotICAgICAgICBib29sIGlnbm9yZV9yaWdodCA9IChyZW5kZXJSYWRpaSAm
JiB0b3BSaWdodC53aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAgICh0b3BDb2xvciA9PSByaWdo
dENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUg
Pj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKHJpZ2h0U3R5bGUgPT0gRE9UVEVEIHx8IHJpZ2h0
U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQgfHwgcmlnaHRTdHlsZSA9PSBJ
TlNFVCkpOworICAgICAgICBib29sIGlnbm9yZUxlZnQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVy
LnRvcExlZnQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHx8ICh0b3BDb2xvciA9PSBsZWZ0
Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIHRvcFN0eWxlID49
IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgPT0gRE9UVEVEIHx8IGxlZnRT
dHlsZSA9PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRTdHlsZSA9PSBPVVRT
RVQpKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaWdub3JlUmlnaHQgPSAocmVuZGVyUmFkaWkg
JiYgYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSA+IDApCisgICAgICAgICAgICB8fCAodG9wQ29s
b3IgPT0gcmlnaHRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYm
IHRvcFN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxlID09IERP
VFRFRCB8fCByaWdodFN0eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJp
Z2h0U3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeCA9IHR4OwogICAgICAgICBpbnQg
eDIgPSB0eCArIHc7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgeCAr
PSB0b3BMZWZ0LndpZHRoKCk7Ci0gICAgICAgICAgICB4MiAtPSB0b3BSaWdodC53aWR0aCgpOwor
ICAgICAgICAgICAgeCArPSBib3JkZXIudG9wTGVmdCgpLndpZHRoKCk7CisgICAgICAgICAgICB4
MiAtPSBib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpOwogICAgICAgICB9CiAKICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHksIHgyLCB0eSArIHN0eWxlLT5i
b3JkZXJUb3BXaWR0aCgpLCBCU1RvcCwgdG9wQ29sb3IsIHRvcFN0eWxlLAotICAgICAgICAgICAg
ICAgICAgIGlnbm9yZV9sZWZ0ID8gMCA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3Jl
X3JpZ2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOworICAgICAgICAgICAgICAg
ICAgIGlnbm9yZUxlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVSaWdo
dCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVy
UmFkaWkpIHsKICAgICAgICAgICAgIGludCBsZWZ0WSA9IHR5OwpAQCAtMTI3NywxNSArMTIyOSwx
NSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgLy8gd2l0aCB0aGUgYXJj
LWRyYXdpbmcgZnVuY3Rpb24uCiAgICAgICAgICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSAqIDI7CiAKLSAgICAgICAgICAgIGlmICh0b3BMZWZ0LndpZHRoKCkpIHsKKyAg
ICAgICAgICAgIGlmIChib3JkZXIudG9wTGVmdCgpLndpZHRoKCkpIHsKICAgICAgICAgICAgICAg
ICBpbnQgbGVmdFggPSB0eDsKICAgICAgICAgICAgICAgICAvLyBUaGUgaW5uZXIgY2xpcCBjbGlw
cyBpbnNpZGUgdGhlIGFyYy4gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgMXB4IGJv
cmRlcnMuCi0gICAgICAgICAgICAgICAgYm9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5bGUt
PmJvcmRlckxlZnRXaWR0aCgpIDwgdG9wTGVmdC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAg
ICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCB0b3BMZWZ0LmhlaWdodCgpKQorICAgICAg
ICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lk
dGgoKSA8IGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYg
KHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSkKICAg
ICAgICAgICAgICAgICAgICAgJiYgKHRvcFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXAp
IHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50
UmVjdChsZWZ0WCwgbGVmdFksIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkg
KiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5k
ZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm9yZGVyLnRvcExlZnQoKS53aWR0aCgp
ICogMiwgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEyOTMsMjAgKzEyNDUsMjAgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9
IHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoID8gOTAgOiA0NTsKIAogICAgICAgICAgICAgICAg
IC8vIERyYXcgdXBwZXIgbGVmdCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJz
dEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgbGVmdFgsIGxlZnRZLCB0aGlja25lc3MsIGJvcmRlci50
b3BMZWZ0KCksIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3IsIHRvcFN0eWxlLCB0cnVlKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKHRvcFJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0gdHgg
KyB3IC0gdG9wUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseVJp
Z2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCB0b3BSaWdodC53aWR0
aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCB0
b3BSaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIGlmIChib3JkZXIudG9wUmlnaHQoKS53aWR0
aCgpKSB7CisgICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9IHR4ICsgdyAtIGJvcmRlci50b3BS
aWdodCgpLndpZHRoKCkgKiAyOworICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlSaWdodElubmVy
Q2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9yZGVyLnRvcFJpZ2h0KCkud2lk
dGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwg
Ym9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmICh0b3BT
dHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPiA2KTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHJpZ2h0WCwgbGVmdFksIHRvcFJp
Z2h0LndpZHRoKCkgKiAyLCB0b3BSaWdodC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qocmln
aHRYLCBsZWZ0WSwgYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSAqIDIsIGJvcmRlci50b3BSaWdo
dCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpOwogICAgICAg
ICAgICAgICAgIH0KIApAQCAtMTMxOSw3ICsxMjcxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0
eCwKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIHJp
Z2h0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgc2Vjb25kQW5nbGVTdGFydCwg
c2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBo
aWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIudG9wUmlnaHQoKSwg
c2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAg
ICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEzMjgsMzYgKzEyODAsMzYgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGludCB0eCwKICAgICB9CiAKICAgICBpZiAocmVuZGVyQm90dG9tKSB7Ci0gICAgICAgIGJv
b2wgaWdub3JlX2xlZnQgPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tTGVmdC53aWR0aCgpID4gMCkg
fHwKLSAgICAgICAgICAgIChib3R0b21Db2xvciA9PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNw
YXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGJvdHRvbVN0eWxlID49IE9VVFNFVCAmJgotICAg
ICAgICAgICAgIChsZWZ0U3R5bGUgPT0gRE9UVEVEIHx8IGxlZnRTdHlsZSA9PSBEQVNIRUQgfHwg
bGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRTdHlsZSA9PSBPVVRTRVQpKTsKKyAgICAgICAgYm9v
bCBpZ25vcmVMZWZ0ID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgo
KSA+IDApCisgICAgICAgICAgICB8fCAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9yICYmIGJvdHRv
bVRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQK
KyAgICAgICAgICAgICAgICAmJiAobGVmdFN0eWxlID09IERPVFRFRCB8fCBsZWZ0U3R5bGUgPT0g
REFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0gT1VUU0VUKSk7CiAK
LSAgICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQu
d2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAoYm90dG9tQ29sb3IgPT0gcmlnaHRDb2xvciAm
JiBib3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYmIGJvdHRvbVN0eWxlID49
IE9VVFNFVCAmJgotICAgICAgICAgICAgIChyaWdodFN0eWxlID09IERPVFRFRCB8fCByaWdodFN0
eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJpZ2h0U3R5bGUgPT0gSU5T
RVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVSaWdodCA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIu
Ym90dG9tUmlnaHQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHx8IChib3R0b21Db2xvciA9
PSByaWdodENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQgJiYg
Ym90dG9tU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPT0g
RE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQgfHwg
cmlnaHRTdHlsZSA9PSBJTlNFVCkpOwogCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAgICAgIGlu
dCB4MiA9IHR4ICsgdzsKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7Ci0gICAgICAgICAgICB4
ICs9IGJvdHRvbUxlZnQud2lkdGgoKTsKLSAgICAgICAgICAgIHgyIC09IGJvdHRvbVJpZ2h0Lndp
ZHRoKCk7CisgICAgICAgICAgICB4ICs9IGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKTsKKyAg
ICAgICAgICAgIHgyIC09IGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCk7CiAgICAgICAgIH0K
IAogICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSArIGgg
LSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgeDIsIHR5ICsgaCwgQlNCb3R0b20sIGJvdHRv
bUNvbG9yLCBib3R0b21TdHlsZSwKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAg
OiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+Ym9y
ZGVyUmlnaHRXaWR0aCgpKTsKKyAgICAgICAgICAgICAgICAgICBpZ25vcmVMZWZ0ID8gMCA6IHN0
eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3JlUmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJp
Z2h0V2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CiAgICAgICAgICAgICB0
aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAqIDI7CiAKLSAgICAgICAgICAg
IGlmIChib3R0b21MZWZ0LndpZHRoKCkpIHsKKyAgICAgICAgICAgIGlmIChib3JkZXIuYm90dG9t
TGVmdCgpLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICBpbnQgbGVmdFggPSB0eDsKLSAgICAg
ICAgICAgICAgICBpbnQgbGVmdFkgPSB0eSArIGggLSBib3R0b21MZWZ0LmhlaWdodCgpICogMjsK
LSAgICAgICAgICAgICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCkgPCBib3R0b21MZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYm
IChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbUxlZnQuaGVpZ2h0KCkpCisgICAg
ICAgICAgICAgICAgaW50IGxlZnRZID0gdHkgKyBoIC0gYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWln
aHQoKSAqIDI7CisgICAgICAgICAgICAgICAgYm9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5
bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3JkZXIu
Ym90dG9tTGVmdCgpLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAoYm90dG9tU3R5
bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpID4gNik7CiAgICAgICAg
ICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm90dG9t
TGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qo
bGVmdFgsIGxlZnRZLCBib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkgKiAyLCBib3JkZXIuYm90
dG9tTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkp
OwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTM3MCwyMSArMTMyMiwyMSBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIERy
YXcgbG93ZXIgbGVmdCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBmaXJzdEFu
Z2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgbGVmdFgsIGxlZnRZLCB0aGlja25lc3MsIGJvcmRlci5ib3R0
b21MZWZ0KCksIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlLCB0cnVl
KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKQogICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgaWYgKGJvdHRvbVJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQg
cmlnaHRZID0gdHkgKyBoIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAg
ICAgIGludCByaWdodFggPSB0eCArIHcgLSBib3R0b21SaWdodC53aWR0aCgpICogMjsKLSAgICAg
ICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0
V2lkdGgoKSA8IGJvdHRvbVJpZ2h0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAg
ICAgICAgaWYgKGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAg
ICBpbnQgcmlnaHRZID0gdHkgKyBoIC0gYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAy
OworICAgICAgICAgICAgICAgIGludCByaWdodFggPSB0eCArIHcgLSBib3JkZXIuYm90dG9tUmln
aHQoKS53aWR0aCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNs
aXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IGJvcmRlci5ib3R0b21SaWdodCgpLndp
ZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSA8IGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAm
JiAoYm90dG9tU3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpID4g
Nik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApIHsKICAgICAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChyaWdodFgs
IHJpZ2h0WSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJpZ2h0LmhlaWdodCgpICog
MiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoSW50UmVjdChyaWdodFgsIHJpZ2h0WSwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSAqIDIsIGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTM5Miw3ICsx
MzQ0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBzZWNvbmRB
bmdsZVNwYW4gPSBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPyA5MCA6IDQ1OwogCiAgICAg
ICAgICAgICAgICAgLy8gRHJhdyBsb3dlciByaWdodCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3
QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgcmlnaHRZLCB0aGlja25lc3Ms
IGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCisgICAgICAg
ICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCByaWdodFgsIHJpZ2h0
WSwgdGhpY2tuZXNzLCBib3JkZXIuYm90dG9tUmlnaHQoKSwgc2Vjb25kQW5nbGVTdGFydCwgc2Vj
b25kQW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJv
dHRvbUNvbG9yLCBib3R0b21TdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBs
eVJpZ2h0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJl
c3RvcmUoKTsKQEAgLTE0MDEsMzYgKzEzNTMsMzYgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwK
ICAgICB9CiAKICAgICBpZiAocmVuZGVyTGVmdCkgewotICAgICAgICBib29sIGlnbm9yZV90b3Ag
PSAocmVuZGVyUmFkaWkgJiYgdG9wTGVmdC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAgICAgICAo
dG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVu
dCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKHRvcFN0eWxlID09IERP
VFRFRCB8fCB0b3BTdHlsZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0gU09MSUQgfHwgdG9wU3R5
bGUgPT0gT1VUU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlVG9wID0gKHJlbmRlclJhZGlpICYm
IGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkgPiAwKQorICAgICAgICAgICAgfHwgKHRvcENvbG9y
ID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVm
dFN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmICh0b3BTdHlsZSA9PSBET1RURUQg
fHwgdG9wU3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRvcFN0eWxlID09
IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdub3JlX2JvdHRvbSA9IChyZW5kZXJSYWRpaSAm
JiBib3R0b21MZWZ0LmhlaWdodCgpID4gMCkgfHwKLSAgICAgICAgICAgIChib3R0b21Db2xvciA9
PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGxl
ZnRTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAoYm90dG9tU3R5bGUgPT0gRE9UVEVE
IHx8IGJvdHRvbVN0eWxlID09IERBU0hFRCB8fCBib3R0b21TdHlsZSA9PSBTT0xJRCB8fCBib3R0
b21TdHlsZSA9PSBJTlNFVCkpOworICAgICAgICBib29sIGlnbm9yZUJvdHRvbSA9IChyZW5kZXJS
YWRpaSAmJiBib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHx8
IChib3R0b21Db2xvciA9PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gbGVmdFRy
YW5zcGFyZW50ICYmIGxlZnRTdHlsZSA+PSBPVVRTRVQKKyAgICAgICAgICAgICAgICAmJiAoYm90
dG9tU3R5bGUgPT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09IERBU0hFRCB8fCBib3R0b21TdHls
ZSA9PSBTT0xJRCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkpOwogCiAgICAgICAgIGludCB5ID0g
dHk7CiAgICAgICAgIGludCB5MiA9IHR5ICsgaDsKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7
Ci0gICAgICAgICAgICB5ICs9IHRvcExlZnQuaGVpZ2h0KCk7Ci0gICAgICAgICAgICB5MiAtPSBi
b3R0b21MZWZ0LmhlaWdodCgpOworICAgICAgICAgICAgeSArPSBib3JkZXIudG9wTGVmdCgpLmhl
aWdodCgpOworICAgICAgICAgICAgeTIgLT0gYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHR4LCB5LCB0eCArIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGVmdENv
bG9yLCBsZWZ0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3JlX3RvcCA/IDAgOiBzdHls
ZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdub3JlX2JvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90
dG9tV2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlVG9wID8gMCA6IHN0eWxlLT5i
b3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVCb3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdp
ZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiAoIXVwcGVyTGVmdEJvcmRlclN0
eWxlc01hdGNoIHx8ICFsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKICAgICAgICAgICAg
IGludCB0b3BYID0gdHg7CiAgICAgICAgICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01h
dGNoICYmIHRvcExlZnQud2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKCF1cHBlckxlZnRCb3Jk
ZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIudG9wTGVmdCgpLndpZHRoKCkpIHsKICAgICAgICAgICAg
ICAgICBpbnQgdG9wWSA9IHR5OwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlUb3BJbm5lckNs
aXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgdG9wTGVmdC53aWR0aCgpKQotICAgICAg
ICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCB0b3BMZWZ0LmhlaWdo
dCgpKQorICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlUb3BJbm5lckNsaXAgPSAoc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpIDwgYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpKQorICAgICAgICAgICAg
ICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCBib3JkZXIudG9wTGVmdCgpLmhl
aWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAobGVmdFN0eWxlICE9IERPVUJMRSB8fCBz
dHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlU
b3BJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0
LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRk
SW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCBib3JkZXIudG9wTGVmdCgp
LndpZHRoKCkgKiAyLCBib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUt
PmJvcmRlckxlZnRXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE0MzgsMjAgKzEz
OTAsMjAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBmaXJzdEFu
Z2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB0b3AgbGVmdCBhcmMKLSAg
ICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIHRv
cFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgs
IHRvcFksIHRoaWNrbmVzcywgYm9yZGVyLnRvcExlZnQoKSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJz
dEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENv
bG9yLCBsZWZ0U3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVy
Q2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0
Y2ggJiYgYm90dG9tTGVmdC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJvdHRvbVkg
PSB0eSArIGggLSBib3R0b21MZWZ0LmhlaWdodCgpICogMjsKLSAgICAgICAgICAgICAgICBib29s
IGFwcGx5Qm90dG9tSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvdHRv
bUxlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpIDwgYm90dG9tTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgIGlmICghbG93ZXJM
ZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpKSB7Cisg
ICAgICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSArIGggLSBib3JkZXIuYm90dG9tTGVmdCgp
LmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJDbGlw
ID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgo
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwg
Ym9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGxl
ZnRTdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpID4gNik7CiAgICAg
ICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QodG9wWCwgYm90dG9tWSwg
Ym90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIpLAorICAgICAg
ICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKElu
dFJlY3QodG9wWCwgYm90dG9tWSwgYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpICogMiwgYm9y
ZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lk
dGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xNDU5LDcgKzE0MTEsNyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDQ1Owog
CiAgICAgICAgICAgICAgICAgLy8gRHJhdyBib3R0b20gbGVmdCBhcmMKLSAgICAgICAgICAgICAg
ICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIGJvdHRvbVksIHRoaWNr
bmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAg
ICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgYm90
dG9tWSwgdGhpY2tuZXNzLCBib3JkZXIuYm90dG9tTGVmdCgpLCBzZWNvbmRBbmdsZVN0YXJ0LCBz
ZWNvbmRBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxl
ZnRDb2xvciwgbGVmdFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90
dG9tSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3Rv
cmUoKTsKQEAgLTE0NjgsMzggKzE0MjAsMzggQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAg
ICB9CiAKICAgICBpZiAocmVuZGVyUmlnaHQpIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfdG9wID0g
KHJlbmRlclJhZGlpICYmIHRvcFJpZ2h0LmhlaWdodCgpID4gMCkgfHwKLSAgICAgICAgICAgICgo
dG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRvcFRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNw
YXJlbnQpICYmCi0gICAgICAgICAgICAocmlnaHRTdHlsZSA+PSBET1RURUQgfHwgcmlnaHRTdHls
ZSA9PSBJTlNFVCkgJiYKLSAgICAgICAgICAgICh0b3BTdHlsZSA9PSBET1RURUQgfHwgdG9wU3R5
bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRvcFN0eWxlID09IE9VVFNFVCkp
OworICAgICAgICBib29sIGlnbm9yZVRvcCA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIudG9wUmln
aHQoKS5oZWlnaHQoKSA+IDApCisgICAgICAgICAgICB8fCAoKHRvcENvbG9yID09IHJpZ2h0Q29s
b3IpICYmICh0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50KQorICAgICAgICAgICAg
ICAgICYmIChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKQorICAg
ICAgICAgICAgICAgICYmICh0b3BTdHlsZSA9PSBET1RURUQgfHwgdG9wU3R5bGUgPT0gREFTSEVE
IHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRvcFN0eWxlID09IE9VVFNFVCkpOwogCi0gICAgICAg
IGJvb2wgaWdub3JlX2JvdHRvbSA9IChyZW5kZXJSYWRpaSAmJiBib3R0b21SaWdodC5oZWlnaHQo
KSA+IDApIHx8Ci0gICAgICAgICAgICAoKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IpICYmIChi
b3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50KSAmJgotICAgICAgICAgICAgKHJp
Z2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQpICYmCi0gICAgICAgICAg
ICAoYm90dG9tU3R5bGUgPT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09IERBU0hFRCB8fCBib3R0
b21TdHlsZSA9PSBTT0xJRCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkpOworICAgICAgICBib29s
IGlnbm9yZUJvdHRvbSA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWln
aHQoKSA+IDApCisgICAgICAgICAgICB8fCAoKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IpICYm
IChib3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50KQorICAgICAgICAgICAgICAg
ICYmIChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKQorICAgICAg
ICAgICAgICAgICYmIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5bGUgPT0gREFT
SEVEIHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElOU0VUKSk7CiAK
ICAgICAgICAgaW50IHkgPSB0eTsKICAgICAgICAgaW50IHkyID0gdHkgKyBoOwogICAgICAgICBp
ZiAocmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAgIHkgKz0gdG9wUmlnaHQuaGVpZ2h0KCk7Ci0g
ICAgICAgICAgICB5MiAtPSBib3R0b21SaWdodC5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkgKz0g
Ym9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCk7CisgICAgICAgICAgICB5MiAtPSBib3JkZXIuYm90
dG9tUmlnaHQoKS5oZWlnaHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94
U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdyAtIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCks
IHksIHR4ICsgdywgeTIsIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsCi0gICAgICAg
ICAgICAgICAgICAgaWdub3JlX3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdu
b3JlX2JvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAg
ICAgICAgICAgaWdub3JlVG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVC
b3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogCiAgICAgICAgIGlmIChy
ZW5kZXJSYWRpaSAmJiAoIXVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJSaWdo
dEJvcmRlclN0eWxlc01hdGNoKSkgewogICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSAqIDI7CiAKLSAgICAgICAgICAgIGlmICghdXBwZXJSaWdodEJvcmRl
clN0eWxlc01hdGNoICYmIHRvcFJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQg
dG9wWCA9IHR4ICsgdyAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyOworICAgICAgICAgICAgaWYgKCF1
cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSkg
eworICAgICAgICAgICAgICAgIGludCB0b3BYID0gdHggKyB3IC0gYm9yZGVyLnRvcFJpZ2h0KCku
d2lkdGgoKSAqIDI7CiAgICAgICAgICAgICAgICAgaW50IHRvcFkgPSB0eTsKLSAgICAgICAgICAg
ICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkg
PCB0b3BSaWdodC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCkgPCB0b3BSaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBib29sIGFw
cGx5VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3JkZXIudG9w
UmlnaHQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRv
cFdpZHRoKCkgPCBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAg
ICAgJiYgKHJpZ2h0U3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkg
PiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApIHsKICAgICAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0
b3BZLCB0b3BSaWdodC53aWR0aCgpICogMiwgdG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJ
bnRSZWN0KHRvcFgsIHRvcFksIGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIu
dG9wUmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkp
OwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTUwNywyMSArMTQ1OSwyMSBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0gNDU7CiAKICAg
ICAgICAgICAgICAgICAvLyBEcmF3IHRvcCByaWdodCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3
QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIHRvcFksIHRoaWNrbmVzcywgdG9w
UmlnaHQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAg
ZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3Ms
IGJvcmRlci50b3BSaWdodCgpLCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHls
ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKQogICAgICAg
ICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKCFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm90dG9t
UmlnaHQud2lkdGgoKSkgewotICAgICAgICAgICAgICAgIGludCBib3R0b21YID0gdHggKyB3IC0g
Ym90dG9tUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0
eSArIGggLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBh
cHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm90dG9t
UmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpIDwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoIWxvd2Vy
UmlnaHRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpKSB7
CisgICAgICAgICAgICAgICAgaW50IGJvdHRvbVggPSB0eCArIHcgLSBib3JkZXIuYm90dG9tUmln
aHQoKS53aWR0aCgpICogMjsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAt
IGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBib29s
IGFwcGx5Qm90dG9tSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3Jk
ZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSkKICAg
ICAgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5l
ckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoSW50UmVjdChib3R0b21YLCBib3R0b21ZLCBib3R0b21SaWdodC53aWR0aCgpICogMiwgYm90
dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGJvdHRvbVgsIGJvdHRvbVksIGJv
cmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWln
aHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwogICAgICAgICAgICAg
ICAgIH0KIApAQCAtMTUyOSw3ICsxNDgxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAg
ICAgICAgICAgICAgICBzZWNvbmRBbmdsZVNwYW4gPSA0NTsKIAogICAgICAgICAgICAgICAgIC8v
IERyYXcgYm90dG9tIHJpZ2h0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgYm90dG9tWCwgYm90dG9tWSwgdGhpY2tuZXNzLCBib3R0b21SaWdo
dCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRy
YXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgYm90dG9tWCwgYm90dG9tWSwgdGhpY2tu
ZXNzLCBib3JkZXIuYm90dG9tUmlnaHQoKSwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVT
cGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwg
cmlnaHRTdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVy
Q2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBA
IC0xNTQyLDcgKzE0OTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRl
cihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogfQogI2VuZGlmCiAK
LXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgYm94LCBjb25zdCBJbnRT
aXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90
dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsCit2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEludFJlY3QmIGJveCwgY29uc3QgSW50UmVjdFJhZGlpJiBib3JkZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94
U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMs
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CkBAIC0xNTYzLDI2ICsxNTE1LDI2IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4CiAgICAgc3dpdGNoIChzaWRlKSB7CiAgICAgY2FzZSBCU1RvcDoKICAg
ICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5KTsKLSAgICAgICAgcXVhZFsxXSA9IEZs
b2F0UG9pbnQodHggKyBtYXgodG9wTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1heCh0
b3BMZWZ0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2lu
dCh0eCArIHcgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRv
cFJpZ2h0LmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2lu
dCh0eCArIG1heChib3JkZXIudG9wTGVmdCgpLndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgbWF4
KGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CisgICAgICAgIHF1YWRbMl0g
PSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLCByaWdo
dFdpZHRoKSwgdHkgKyBtYXgoYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7
CiAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHR4ICsgdywgdHkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEJTTGVmdDoKICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5
KTsKLSAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgodG9wTGVmdC53aWR0aCgp
LCBsZWZ0V2lkdGgpLCB0eSArIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwotICAg
ICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIG1heChib3R0b21MZWZ0LndpZHRoKCksIGxl
ZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21XaWR0aCkp
OworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIudG9wTGVmdCgp
LndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgbWF4KGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCks
IHRvcFdpZHRoKSk7CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KGJvcmRl
ci5ib3R0b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvcmRlci5i
b3R0b21MZWZ0KCkuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7CiAgICAgICAgIHF1YWRbM10gPSBG
bG9hdFBvaW50KHR4LCB0eSArIGgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJTQm90dG9t
OgogICAgICAgICBxdWFkWzBdID0gRmxvYXRQb2ludCh0eCwgdHkgKyBoKTsKLSAgICAgICAgcXVh
ZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm90dG9tTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgp
LCB0eSArIGggLSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKLSAgICAg
ICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KGJvdHRvbVJpZ2h0LndpZHRoKCks
IHJpZ2h0V2lkdGgpLCB0eSArIGggLSBtYXgoYm90dG9tUmlnaHQuaGVpZ2h0KCksIGJvdHRvbVdp
ZHRoKSk7CisgICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KGJvcmRlci5ib3R0
b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvcmRlci5ib3R0b21M
ZWZ0KCkuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBv
aW50KHR4ICsgdyAtIG1heChib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLCByaWdodFdpZHRo
KSwgdHkgKyBoIC0gbWF4KGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLCBib3R0b21XaWR0
aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh0eCArIHcsIHR5ICsgaCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQlNSaWdodDoKICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9p
bnQodHggKyB3LCB0eSk7Ci0gICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1h
eCh0b3BSaWdodC53aWR0aCgpLCByaWdodFdpZHRoKSwgdHkgKyBtYXgodG9wUmlnaHQuaGVpZ2h0
KCksIHRvcFdpZHRoKSk7Ci0gICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1h
eChib3R0b21SaWdodC53aWR0aCgpLCByaWdodFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbVJp
Z2h0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2lu
dCh0eCArIHcgLSBtYXgoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5
ICsgbWF4KGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAgICAgICBx
dWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIuYm90dG9tUmlnaHQoKS5oZWln
aHQoKSwgYm90dG9tV2lkdGgpKTsKICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3
LCB0eSArIGgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTYxMywxOCArMTU2
NSw2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlw
Q29udmV4UG9seWdvbig0LCBzZWNvbmRRdWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOwogfQogCi1z
dGF0aWMgaW5saW5lIHZvaWQgdW5pZm9ybWx5RXhwYW5kQm9yZGVyUmFkaWkoaW50IGRlbHRhLCBJ
bnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwg
SW50U2l6ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAgdG9wTGVmdC5leHBhbmQoZGVsdGEsIGRlbHRh
KTsKLSAgICB0b3BMZWZ0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICB0b3BSaWdodC5leHBh
bmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0b3BSaWdodC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0g
ICAgYm90dG9tTGVmdC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICBib3R0b21MZWZ0LmNsYW1w
TmVnYXRpdmVUb1plcm8oKTsKLSAgICBib3R0b21SaWdodC5leHBhbmQoZGVsdGEsIGRlbHRhKTsK
LSAgICBib3R0b21SaWdodC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci19Ci0KIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgY29uc3QgUmVuZGVyU3R5bGUqIHMsIFNoYWRv
d1N0eWxlIHNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBib3JkZXIt
aW1hZ2UuICBXb3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWltYWdlIGFzIGEgbWFzay4KQEAg
LTE2MzMsNTQgKzE1NzMsMTcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogICAgICAgICByZXR1
cm47CiAKICAgICBJbnRSZWN0IHJlY3QodHgsIHR5LCB3LCBoKTsKLSAgICBJbnRTaXplIHRvcExl
ZnQ7Ci0gICAgSW50U2l6ZSB0b3BSaWdodDsKLSAgICBJbnRTaXplIGJvdHRvbUxlZnQ7Ci0gICAg
SW50U2l6ZSBib3R0b21SaWdodDsKKyAgICBJbnRSZWN0UmFkaWkgYm9yZGVyOwogCiAgICAgYm9v
bCBoYXNCb3JkZXJSYWRpdXMgPSBzLT5oYXNCb3JkZXJSYWRpdXMoKTsKICAgICBib29sIGlzSG9y
aXpvbnRhbCA9IHMtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgaWYgKGhhc0JvcmRl
clJhZGl1cyAmJiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywg
Ym90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIHMtPmdldEJvcmRl
clJhZGlpRm9yUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9t
TGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0gICAgICAgIGlmIChpbmNsdWRlTG9n
aWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsK
LSAgICAgICAgICAgICAgICB0b3BMZWZ0UmFkaXVzLmV4cGFuZCgtYm9yZGVyTGVmdCgpLCAtYm9y
ZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgIHRvcExlZnRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRv
WmVybygpOwotICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5leHBhbmQoLWJvcmRlckxlZnQoKSwgLWJvcmRlckJv
dHRvbSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5jbGFtcE5lZ2F0
aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgdG9wUmlnaHRSYWRpdXMuZXhwYW5kKC1ib3JkZXJSaWdodCgpLCAtYm9yZGVyVG9wKCkpOwot
ICAgICAgICAgICAgICAgICAgICB0b3BSaWdodFJhZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9wTGVmdCA9
IHRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAg
ICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoc2hh
ZG93U3R5bGUgPT0gSW5zZXQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzLmV4cGFuZCgtYm9yZGVyUmlnaHQo
KSwgLWJvcmRlclRvcCgpKTsKLSAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuY2xh
bXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuZXhwYW5kKC1ib3JkZXJMZWZ0KCksIC1ib3JkZXJC
b3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuY2xhbXBOZWdh
dGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBib3R0b21S
aWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJpZ2h0KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAg
ICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKLSAgICAgICAgICAgICAg
ICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgYm90dG9t
UmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQorICAgICAgICBJbnRSZWN0UmFk
aWkgcmFkaWkgPSBzLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QocmVjdCk7CisgICAgICAgIGlmIChz
aGFkb3dTdHlsZSA9PSBJbnNldCkKKyAgICAgICAgICAgIHJhZGlpLnNocmluayhib3JkZXJUb3Ao
KSwgYm9yZGVyQm90dG9tKCksIGJvcmRlckxlZnQoKSwgYm9yZGVyUmlnaHQoKSk7CisgICAgICAg
IGJvcmRlci5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWwsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICB9CisgICAKIAog
ICAgIGlmIChzaGFkb3dTdHlsZSA9PSBJbnNldCkgewogICAgICAgICByZWN0Lm1vdmUoaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsID8gYm9yZGVyTGVmdCgpIDogMCwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpc0hvcml6b250YWwgPyBib3JkZXJUb3AoKSA6IDApOwpA
QCAtMTcyMCwyOSArMTYyMywyMyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
eFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAgICAgICAgICAg
ICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsK
ICAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSByZWN0OwotICAgICAgICAg
ICAgICAgIEludFNpemUgdG9wTGVmdFRvQ2xpcE91dCA9IHRvcExlZnQ7Ci0gICAgICAgICAgICAg
ICAgSW50U2l6ZSB0b3BSaWdodFRvQ2xpcE91dCA9IHRvcFJpZ2h0OwotICAgICAgICAgICAgICAg
IEludFNpemUgYm90dG9tTGVmdFRvQ2xpcE91dCA9IGJvdHRvbUxlZnQ7Ci0gICAgICAgICAgICAg
ICAgSW50U2l6ZSBib3R0b21SaWdodFRvQ2xpcE91dCA9IGJvdHRvbVJpZ2h0OwotCi0gICAgICAg
ICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0VG9GaWxsID0gdG9wTGVmdDsKLSAgICAgICAgICAgICAg
ICBJbnRTaXplIHRvcFJpZ2h0VG9GaWxsID0gdG9wUmlnaHQ7Ci0gICAgICAgICAgICAgICAgSW50
U2l6ZSBib3R0b21MZWZ0VG9GaWxsICA9IGJvdHRvbUxlZnQ7Ci0gICAgICAgICAgICAgICAgSW50
U2l6ZSBib3R0b21SaWdodFRvRmlsbCA9IGJvdHRvbVJpZ2h0OwotICAgICAgICAgICAgICAgIGlm
IChzaGFkb3dTcHJlYWQgPCAwKQotICAgICAgICAgICAgICAgICAgICB1bmlmb3JtbHlFeHBhbmRC
b3JkZXJSYWRpaShzaGFkb3dTcHJlYWQsIHRvcExlZnRUb0ZpbGwsIHRvcFJpZ2h0VG9GaWxsLCBi
b3R0b21MZWZ0VG9GaWxsLCBib3R0b21SaWdodFRvRmlsbCk7CisgICAgICAgICAgICAgICAgSW50
UmVjdFJhZGlpIHJhZGlpVG9DbGlwT3V0ID0gYm9yZGVyOwogCiAgICAgICAgICAgICAgICAgLy8g
SWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBI
b3dldmVyLCBkb2luZyBzbyBzYXZlcyB0aW1lCiAgICAgICAgICAgICAgICAgLy8gd2hlbiBwYWlu
dGluZyB0aGUgc2hhZG93LiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhl
bCBnYXBzIGFsb25nIHRoZQogICAgICAgICAgICAgICAgIC8vIGNvcm5lcnMuIFRob3NlIGFyZSBh
dm9pZGVkIGJ5IGluc2V0dGluZyB0aGUgY2xpcHBpbmcgcGF0aCBieSBvbmUgcGl4ZWwuCiAgICAg
ICAgICAgICAgICAgaWYgKGhhc09wYXF1ZUJhY2tncm91bmQpIHsKICAgICAgICAgICAgICAgICAg
ICAgcmVjdFRvQ2xpcE91dC5pbmZsYXRlKC0xKTsKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9y
bWx5RXhwYW5kQm9yZGVyUmFkaWkoLTEsIHRvcExlZnRUb0NsaXBPdXQsIHRvcFJpZ2h0VG9DbGlw
T3V0LCBib3R0b21MZWZ0VG9DbGlwT3V0LCBib3R0b21SaWdodFRvQ2xpcE91dCk7CisgICAgICAg
ICAgICAgICAgICAgIHJhZGlpVG9DbGlwT3V0LmV4cGFuZCgtMSk7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQs
IHRvcExlZnRUb0NsaXBPdXQsIHRvcFJpZ2h0VG9DbGlwT3V0LCBib3R0b21MZWZ0VG9DbGlwT3V0
LCBib3R0b21SaWdodFRvQ2xpcE91dCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJv
dW5kZWRSZWN0KGZpbGxSZWN0LCB0b3BMZWZ0VG9GaWxsLCB0b3BSaWdodFRvRmlsbCwgYm90dG9t
TGVmdFRvRmlsbCwgYm90dG9tUmlnaHRUb0ZpbGwsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KHJl
Y3RUb0NsaXBPdXQsIHJhZGlpVG9DbGlwT3V0KTsKKworICAgICAgICAgICAgICAgIEludFJlY3RS
YWRpaSByYWRpaVRvRmlsbCA9IGJvcmRlcjsKKyAgICAgICAgICAgICAgICBpZiAoc2hhZG93U3By
ZWFkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgcmFkaWlUb0ZpbGwuZXhwYW5kKHNoYWRvd1Nw
cmVhZCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGZpbGxSZWN0
LCByYWRpaVRvRmlsbCwgQ29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSByZWN0
OwogCkBAIC0xNzcwLDcgKzE2NjcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAKICAgICAg
ICAgICAgIGlmIChob2xlUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFz
Qm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJl
Y3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBzaGFk
b3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIGJvcmRlciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdChyZWN0LCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTE4MDIsNyArMTY5OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBp
bnQKIAogICAgICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJh
ZGl1cykgewotICAgICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9wTGVm
dCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgICAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIGJvcmRlci50b3BMZWZ0KCksIGJvcmRlci50b3BSaWdo
dCgpLCBib3JkZXIuYm90dG9tTGVmdCgpLCBib3JkZXIuYm90dG9tUmlnaHQoKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+Y2xpcChwYXRoKTsKICAgICAgICAgICAgICAgICBwYXRoLmNsZWFy
KCk7CiAgICAgICAgICAgICB9IGVsc2UKQEAgLTE4MTYsOCArMTcxMyw4IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQKIAogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewogICAgICAg
ICAgICAgICAgIGlmIChzaGFkb3dTcHJlYWQgPiAwKQotICAgICAgICAgICAgICAgICAgICB1bmlm
b3JtbHlFeHBhbmRCb3JkZXJSYWRpaSgtc2hhZG93U3ByZWFkLCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICAgICAgICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QoaG9sZVJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdo
dCk7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlci5zaHJpbmsoc2hhZG93U3ByZWFkKTsKKyAg
ICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0LCBib3JkZXIudG9wTGVm
dCgpLCBib3JkZXIudG9wUmlnaHQoKSwgYm9yZGVyLmJvdHRvbUxlZnQoKSwgYm9yZGVyLmJvdHRv
bVJpZ2h0KCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcGF0aC5hZGRS
ZWN0KGhvbGVSZWN0KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
aW5kZXggOThlMzg2YjY4MzY5ODgxYzhiMGRmZGViYzYxN2IwN2I1MGM2Yjk2Ni4uZGU2OWU1MGEy
YWE0M2I2NmRjMTM0YTA4ZDRjNjY4ZmJkNmVjOTQwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xMzMsOCArMTMzLDggQEAgcHJpdmF0ZToKIAogICAgIElu
dFNpemUgY2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciosIEludFNpemUgc2Nh
bGVkU2l6ZSkgY29uc3Q7CiAKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
SW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IEJv
eFNpZGUgc2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVz
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHln
b24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgYm94LCBjb25zdCBJbnRSZWN0UmFk
aWkmIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3hTaWRl
LCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMsIGNvbnN0IFJl
bmRlclN0eWxlKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgZnJp
ZW5kIGNsYXNzIFJlbmRlclZpZXc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBj
N2M4MWY5ZWQzOGZhMTBlYzk3MTM5Mjg5NzA2OTcwZTA4M2NkNGRmLi41ODI0NmMwNDk1M2VhZjZl
ZTNlMGZlYmYwYmNiOGJhMDA4MzdkOGY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTk4MywzMSArOTgzLDE5IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21Q
YXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBJbnRSZWN0CiAgICAgICAgIElu
dFJlY3QgaW5uZXJCb3JkZXJJbm5lclJlY3QgPSBib3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwg
aW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgCiAgICAgICAgICAg
ICBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoKTsKIAotICAgICAg
ICAvLyBHZXQgdGhlIGlubmVyIHJhZGlpIGZvciB0aGUgb3V0ZXIgYm9yZGVyIGxpbmUKLSAgICAg
ICAgSW50U2l6ZSBvdXRlckJvcmRlclRvcExlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJUb3BS
aWdodElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgCi0gICAg
ICAgICAgICBvdXRlckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXM7Ci0gICAgICAgIHN0eWxl
LT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMob3V0ZXJCb3JkZXJJ
bm5lclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAot
ICAgICAgICAgICAgb3V0ZXJCb3JkZXJMZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwg
b3V0ZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyVG9wUmlnaHRJbm5lclJh
ZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgb3V0
ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsKLQotICAgICAgICAvLyBHZXQgdGhlIGlu
bmVyIHJhZGlpIGZvciB0aGUgaW5uZXIgYm9yZGVyIGxpbmUKLSAgICAgICAgSW50U2l6ZSBpbm5l
ckJvcmRlclRvcExlZnRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVz
LCBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBpbm5lckJv
cmRlckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRl
clJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoaW5uZXJCb3JkZXJJbm5lclJlY3QsIGlubmVy
Qm9yZGVyVG9wV2lkdGgsIGlubmVyQm9yZGVyQm90dG9tV2lkdGgsIAotICAgICAgICAgICAgaW5u
ZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwgaW5uZXJCb3JkZXJUb3BM
ZWZ0SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAg
ICAgICBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21S
aWdodElubmVyUmFkaXVzKTsKLQogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFkZFJvdW5kZWRSZWN0Q2xpcChpbm5lckJvcmRlcklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BM
ZWZ0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFk
aXVzLCBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21S
aWdodElubmVyUmFkaXVzKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVj
dENsaXAoaW5uZXJCb3JkZXJJbm5lclJlY3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9y
ZGVyV2lkdGhzKGlubmVyQm9yZGVySW5uZXJSZWN0LCBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5l
ckJvcmRlckJvdHRvbVdpZHRoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoKSk7CiAgICAgICAg
IGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQ
YXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBTT0xJRCk7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIg
Ym9yZGVyIGxpbmUKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KG91dGVyQm9yZGVySW5uZXJSZWN0LCBv
dXRlckJvcmRlclRvcExlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRlclRv
cFJpZ2h0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCBvdXRl
ckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXMpOworICAgICAgICBncmFwaGljc0NvbnRleHQt
PmNsaXBPdXRSb3VuZGVkUmVjdChvdXRlckJvcmRlcklubmVyUmVjdCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlp
Rm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVy
VG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lk
dGgpKTsKICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRl
clJlY3QsIGJvcmRlclBhdGgsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgcywgc3R5bGUsIGMs
IFNPTElEKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAKQEAgLTEwMjks
MTggKzEwMTcsMTcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIEludFJlY3QKICAgICAgICAgSW50UmVjdCBo
YWxmQm9yZGVyUmVjdCA9IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCBzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIAogICAgICAg
ICAgICAgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRlclJpZ2h0V2lk
dGgoKSAvIDIpOwogCi0gICAgICAgIEludFNpemUgdG9wTGVmdEhhbGZSYWRpdXMsIHRvcFJpZ2h0
SGFsZlJhZGl1cywgYm90dG9tTGVmdEhhbGZSYWRpdXMsIGJvdHRvbVJpZ2h0SGFsZlJhZGl1czsK
LSAgICAgICAgc3R5bGUtPmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRo
cyhoYWxmQm9yZGVyUmVjdCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIC8gMiwgCi0gICAgICAg
ICAgICBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJMZWZ0V2lk
dGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgLyAyLCAKLSAgICAgICAgICAgIHRv
cExlZnRIYWxmUmFkaXVzLCB0b3BSaWdodEhhbGZSYWRpdXMsIGJvdHRvbUxlZnRIYWxmUmFkaXVz
LCBib3R0b21SaWdodEhhbGZSYWRpdXMpOwotCiAgICAgICAgIC8vIFBhaW50IGZ1bGwgYm9yZGVy
CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0
LCBib3JkZXJQYXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMSk7
CiAKICAgICAgICAgLy8gUGFpbnQgaW5uZXIgb25seQogICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaGFs
ZkJvcmRlclJlY3QsIHRvcExlZnRIYWxmUmFkaXVzLCB0b3BSaWdodEhhbGZSYWRpdXMsCi0gICAg
ICAgICAgICBib3R0b21MZWZ0SGFsZlJhZGl1cywgYm90dG9tUmlnaHRIYWxmUmFkaXVzKTsKKyAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaGFsZkJvcmRlclJlY3Qs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Z2V0
SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGhhbGZCb3JkZXJSZWN0LCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdp
ZHRoKCkgLyAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+
Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgLyAyKSk7CiAgICAg
ICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3Jk
ZXJQYXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMik7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKaW5kZXggOTc0YThkMDcyZWRmNjc3OTBmMDg5MzY3NThmMjg0OGIwN2M2OGRmNy4u
ZDY3ZjRkOTkyYzc0ZDllMWI1Nzg2MjE3MDY4ZWY4ZDUyMTFiMzk4NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTM1LDExICsxMzUsNyBAQCB2b2lkIFJlbmRlclJlcGxh
Y2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgLy8gUHVzaCBhIGNsaXAgaWYgd2UgaGF2ZSBhIGJvcmRlciBy
YWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhlIGZvcmVncm91bmQgY29udGVudCB0aGF0
IGdldHMgcGFpbnRlZC4KICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICAgICAgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlG
b3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21S
aWdodCk7Ci0KLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENs
aXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9y
ZGVyUmVjdCwgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QpKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
V2luLmNwcAppbmRleCBiZTY3MGZmODllNjAyNjJiMDczZjU3ZGMyMDU2NDA4MzA4MjYwMGU0Li5l
MjRjMDI3NDczMGYxNjAxZjM2ZTg5NWNjN2ZhZTBjYzg3NWQ4ZjY3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNjc1LDkgKzY3NSw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGRJbnRlcm5hbChSZW5kZXJP
YmplY3QqIG8sCiAgICAgICAgIC8vIGJhY2tncm91bmQgKHRoZW1lZCBvciBmaWxsZWQpIGFwcHJv
cHJpYXRlbHkuCiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgd2UgZG8gdGhlIHJpZ2h0IHRo
aW5nIGlmIGNzcyBiYWNrZ3JvdW5kLWNsaXAgaXMgc2V0LgogICAgICAgICBpLmNvbnRleHQtPnNh
dmUoKTsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQ7Ci0gICAgICAgIG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChyLCB0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICBpLmNv
bnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpOworICAgICAgICBpLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChy
LCBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QocikpOwogICAgIH0KICAgICB7CiAg
ICAgICAgIGNvbnN0IFRoZW1lRGF0YSYgdGhlbWVEYXRhID0gZ2V0VGhlbWVEYXRhKG8pOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBhMTNiNGFhNDkzNjAwYTg4MGMxYjY4ZDAw
OTIwODhhMWJkMGJmNzVmLi5mZWFmODdiOTJlNWUwMzU0ZDk5YTM0NzUzOTVjODcyODE5NmRjNWI4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTAzMiwxNCArMTAzMiw4IEBA
IHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OwogCi0gICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzOwotICAgIEludFNpemUgdG9wUmlnaHRSYWRp
dXM7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0UmFkaXVzOwotICAgIEludFNpemUgYm90dG9tUmln
aHRSYWRpdXM7Ci0KLSAgICBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QociwgdG9w
TGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0
UmFkaXVzKTsKLQotICAgIGludCByYWRpdXMgPSB0b3BMZWZ0UmFkaXVzLndpZHRoKCk7CisgICAg
SW50UmVjdFJhZGlpIHJhZGlpID0gby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIp
OworICAgIGludCByYWRpdXMgPSByYWRpaS50b3BMZWZ0KCkud2lkdGgoKTsKIAogICAgIENHQ29s
b3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAKQEAgLTEwNjIs
MjcgKzEwNTYsMjcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdy
YWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KICAgICBSZXRhaW5QdHI8Q0dT
aGFkaW5nUmVmPiByaWdodFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLCBDR1BvaW50TWFrZShyLnJpZ2h0KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIucmlnaHQo
KSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChj
b250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChy
LCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcu
Z2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICBwYWludElu
Zm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgdG9w
R3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5j
bG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgSW50UmVjdFJhZGlpKHJh
ZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsK
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAg
ICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVu
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChi
b3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0UmFkaXVzLCBi
b3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFJlY3RSYWRpaShJ
bnRTaXplKCksIEludFNpemUoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdo
dCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRvbVNoYWRp
bmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIH0K
IAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0
b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xp
cChyLCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRp
bmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGlu
Zy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEzMDMsOSAr
MTI5Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mCiAgICAgICAgIG1haW5TaGFkaW5nLmFk
b3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgp
LCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSks
IG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1
cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRS
b3VuZGVkUmVjdENsaXAoYm91bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAgICAgICAg
cmFkaXVzLCByYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENs
aXAoYm91bmRzLCBJbnRSZWN0UmFkaWkocmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7
CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggNmQ1ZDMyMjg4OTA4NjgzZjRmOWEyNjE0MjlhY2Iz
NzVhMWViZDI3MC4uM2UwNmJkZDViYTM3ZGU2ZWM3YTAzZGViZGM5ZDliMmFmMjA3YThkNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAtNzUxLDE0ICs3NTEsOCBA
QCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKIAotICAgIEludFNpemUgdG9wTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIHRvcFJpZ2h0UmFk
aXVzOwotICAgIEludFNpemUgYm90dG9tTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIGJvdHRvbVJp
Z2h0UmFkaXVzOwotCi0gICAgby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIsIHRv
cExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdo
dFJhZGl1cyk7Ci0KLSAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJhZGl1cy53aWR0aCgpOworICAg
IEludFJlY3RSYWRpaSByYWRpaSA9IG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChy
KTsKKyAgICBpbnQgcmFkaXVzID0gcmFkaWkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAgICBDR0Nv
bG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCkBAIC03ODEs
MjcgKzc3NSwyNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9u
R3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogICAgIFJldGFpblB0cjxDR1No
YWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3Bh
Y2UsIENHUG9pbnRNYWtlKHIucmlnaHQoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgp
IC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwg
dG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJp
Z2h0UmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIs
IHJhZGlpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5n
ZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIHBhaW50SW5m
by5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BH
cmFkaWVudCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNs
b3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMs
IEludFNpemUoKSwgSW50U2l6ZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRl
ZFJlY3RDbGlwKGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBJbnRSZWN0UmFkaWkocmFk
aWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOwog
ICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50
LmlzRW1wdHkoKSkgewogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KGJv
dHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvdHRvbUxlZnRSYWRpdXMsIGJv
dHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50UmVjdFJhZGlpKElu
dFNpemUoKSwgSW50U2l6ZSgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlpLmJvdHRvbVJpZ2h0
KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGlu
Zy5nZXQoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQog
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0
KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
ciwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRv
bVJpZ2h0UmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KHIsIHJhZGlpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGlu
Zy5nZXQoKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5n
LmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtOTgyLDkgKzk3
Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIG1haW5TaGFkaW5nLmFkb3B0
Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAg
Ym91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1h
aW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0
cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoYm91bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAgICAgICAgcmFk
aXVzLCByYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
Ym91bmRzLCBJbnRSZWN0UmFkaWkocmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CiAg
ICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luQ0UuY3BwCmluZGV4IDI3Yjg3ODNiYWViZTA0NTA5NmY1MWMzZGIzYzU2Y2E5Zjlj
NmQyMWUuLmMzODE2YTEyZjM1NWRmZWUwMTIwNTU0OTQ0NGYwNDJlNThhODRiZDMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnQKICAgICBpbnQgeSA9IHIueSgpICsgKHIuaGVpZ2h0KCkgLSBjYW5j
ZWxTaXplLmhlaWdodCgpKSAvIDIgKyAxOwogICAgIEludFJlY3QgY2FuY2VsQm91bmRzKEludFBv
aW50KHgsIHkpLCBjYW5jZWxTaXplKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoY2FuY2VsQm91bmRzLCBj
YW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoY2FuY2VsQm91bmRzLCBJ
bnRSZWN0UmFkaWkoY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2Fu
Y2VsUmFkaXVzKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KGNhbmNlbEJvdW5k
cywgYnV0dG9uQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyB0aGUg
J3gnCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAxNTJiYjJmODAzMWU4ZjdkYjQ1
MjZjY2QwMWJhNWVkMjQyY2UzMTRiLi44Zjk2NWQ5OTMyZWU0ZGIzNTlhZTBjZTk2ZGMxNDBiYWIx
ZTIxNTEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTI3NCwxMSArMjc0LDcg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSkKIAogICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJh
ZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQg
Z2V0cyBwYWludGVkLgogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICAKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQ7Ci0gICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0
LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVm
dCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCBzdHlsZSgpLT5nZXRCb3Jk
ZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCkpOwogICAgIH0KIAogICAgIGlmIChtX3dpZGdldCkg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDAzNjM1ZDlmMTlmYmE0OTAx
NjU2NzI3ODk2OGY4ZjEzZGE3NDhhODMuLmE4YjQyNGFkZWJmMzEwMmE2MGYyOTBkMGFiOWUwNDFj
NjRhY2Y3YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTI2LDYgKzI2
LDggQEAKICNkZWZpbmUgQm9yZGVyRGF0YV9oCiAKICNpbmNsdWRlICJCb3JkZXJWYWx1ZS5oIgor
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRSZWN0UmFkaWkuaCIKICNpbmNsdWRl
ICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKIApAQCAtMTA5LDcg
KzExMSwxOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYgdG9wUmlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm90dG9tTGVm
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsgfQogICAgIGNvbnN0IExlbmd0aFNpemUm
IGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQotICAgIAorCisg
ICAgSW50UmVjdFJhZGlpIGNhbGNSYWRpaShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gSW50UmVjdFJhZGlpKEludFNpemUobV90b3BMZWZ0LndpZHRo
KCkuY2FsY1ZhbHVlKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3RvcExlZnQuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFNpemUobV90b3BSaWdodC53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvcFJpZ2h0LmhlaWdodCgp
LmNhbGNWYWx1ZShoZWlnaHQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXpl
KG1fYm90dG9tTGVmdC53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ib3R0b21MZWZ0LmhlaWdodCgpLmNhbGNWYWx1ZShoZWln
aHQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1fYm90dG9tUmlnaHQu
d2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgQm9yZGVyVmFsdWUgbV9sZWZ0OwogICAgIEJvcmRlclZhbHVlIG1f
cmlnaHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzdlZDM5
MWRlOWRhMzZlMDgzODMwZDI4MWJhZjY4MmI3MDIyN2ZiOS4uMTk3ZjRhOGFkZDBkMmJlMTg1Zjc5
ZDExMzUyOTA3YjUxNmJhZDcyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcApAQCAtNzQxLDg0ICs3NDEsMjAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93
KFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEsIGJvb2wgYWRkKQogICAgIHJhcmVEYXRhLT5tX2JveFNo
YWRvdy5zZXQoc2hhZG93RGF0YSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnN0cmFpbkNvcm5lclJh
ZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0
b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpCitJbnRS
ZWN0UmFkaWkgUmVuZGVyU3R5bGU6OmdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAogewotICAgIC8vIENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NT
MyBydWxlczoKLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3Ro
ZS1ib3JkZXItcmFkaXVzCi0gICAgCi0gICAgZmxvYXQgZmFjdG9yID0gMTsKLSAgICB1bnNpZ25l
ZCByYWRpaVN1bTsKLQotICAgIC8vIHRvcAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvcExlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQu
d2lkdGgoKSk7IC8vIENhc3RzIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cuCi0gICAgaWYgKHJh
ZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHIud2lkdGgoKSkpCi0gICAgICAgIGZhY3Rv
ciA9IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4oci53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3Ip
OwotCi0gICAgLy8gYm90dG9tCi0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Ym90dG9tTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21SaWdodC53
aWR0aCgpKTsKLSAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci53aWR0
aCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLndpZHRoKCkp
IC8gcmFkaWlTdW0sIGZhY3Rvcik7Ci0gICAgCi0gICAgLy8gbGVmdAotICAgIHJhZGlpU3VtID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcExlZnQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJvdHRvbUxlZnQuaGVpZ2h0KCkpOwotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyLmhlaWdodCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19j
YXN0PGZsb2F0PihyLmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwotICAgIAotICAgIC8v
IHJpZ2h0Ci0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQuaGVp
Z2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLSAg
ICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci5oZWlnaHQoKSkpCi0gICAg
ICAgIGZhY3RvciA9IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4oci5oZWlnaHQoKSkgLyByYWRpaVN1
bSwgZmFjdG9yKTsKLSAgICAKLSAgICAvLyBTY2FsZSBhbGwgcmFkaWkgYnkgZiBpZiBuZWNlc3Nh
cnkuCi0gICAgaWYgKGZhY3RvciA8IDEpIHsKLSAgICAgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBv
biBhIGNvcm5lciBiZWNvbWVzIHplcm8sIHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIu
Ci0gICAgICAgIHRvcExlZnQuc2NhbGUoZmFjdG9yKTsKLSAgICAgICAgaWYgKCF0b3BMZWZ0Lndp
ZHRoKCkgfHwgIXRvcExlZnQuaGVpZ2h0KCkpCi0gICAgICAgICAgICB0b3BMZWZ0ID0gSW50U2l6
ZSgpOwotICAgICAgICB0b3BSaWdodC5zY2FsZShmYWN0b3IpOwotICAgICAgICBpZiAoIXRvcFJp
Z2h0LndpZHRoKCkgfHwgIXRvcFJpZ2h0LmhlaWdodCgpKQotICAgICAgICAgICAgdG9wUmlnaHQg
PSBJbnRTaXplKCk7Ci0gICAgICAgIGJvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKLSAgICAgICAg
aWYgKCFib3R0b21MZWZ0LndpZHRoKCkgfHwgIWJvdHRvbUxlZnQuaGVpZ2h0KCkpCi0gICAgICAg
ICAgICBib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgICAgICBib3R0b21SaWdodC5zY2FsZShm
YWN0b3IpOwotICAgICAgICBpZiAoIWJvdHRvbVJpZ2h0LndpZHRoKCkgfHwgIWJvdHRvbVJpZ2h0
LmhlaWdodCgpKQotICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0gICAgfQot
fQotCi12b2lkIFJlbmRlclN0eWxlOjpnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVj
dCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRv
bUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBjb25zdAotewotICAgIHRvcExlZnQgPSBJbnRT
aXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgo
KSksIHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdo
dCgpKSk7Ci0gICAgdG9wUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQo
KS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0
KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKLSAgICAKLSAgICBib3R0b21MZWZ0
ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1
ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxj
VmFsdWUoci5oZWlnaHQoKSkpOwotICAgIGJvdHRvbVJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+
Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91
bmQtPmJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7
Ci0KLSAgICBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBJbnRSZWN0UmFkaWkgcmFkaWkgPSBzdXJy
b3VuZC0+Ym9yZGVyLmNhbGNSYWRpaShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAg
IHJhZGlpLmNvbnN0cmFpbkZvcihyZWN0KTsKKyAgICByZXR1cm4gcmFkaWk7CiB9CiAKLXZvaWQg
UmVuZGVyU3R5bGU6OmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhj
b25zdCBJbnRSZWN0JiBpbm5lclJlY3QsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCB1bnNpZ25l
ZCBzaG9ydCBib3R0b21XaWR0aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBz
aG9ydCByaWdodFdpZHRoLCBJbnRTaXplJiBpbm5lclRvcExlZnQsIEludFNpemUmIGlubmVyVG9w
UmlnaHQsIEludFNpemUmIGlubmVyQm90dG9tTGVmdCwgSW50U2l6ZSYgaW5uZXJCb3R0b21SaWdo
dCkgY29uc3QKK0ludFJlY3RSYWRpaSBSZW5kZXJTdHlsZTo6Z2V0SW5uZXJCb3JkZXJSYWRpaUZv
clJlY3RXaXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVjdCwgdW5zaWduZWQg
c2hvcnQgdG9wV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgs
IHVuc2lnbmVkIHNob3J0IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCkgY29u
c3QKIHsKLSAgICBpbm5lclRvcExlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVm
dCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRl
ci50b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotICAg
IGlubmVyVG9wUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS53aWR0
aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wUmln
aHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0gICAgaW5uZXJC
b3R0b21MZWZ0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgp
LmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVm
dCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lckJv
dHRvbVJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgo
KS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJp
Z2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotCi0KLSAgICBp
bm5lclRvcExlZnQuc2V0V2lkdGgobWF4KDAsIGlubmVyVG9wTGVmdC53aWR0aCgpIC0gbGVmdFdp
ZHRoKSk7Ci0gICAgaW5uZXJUb3BMZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJUb3BMZWZ0Lmhl
aWdodCgpIC0gdG9wV2lkdGgpKTsKLQotICAgIGlubmVyVG9wUmlnaHQuc2V0V2lkdGgobWF4KDAs
IGlubmVyVG9wUmlnaHQud2lkdGgoKSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBpbm5lclRvcFJpZ2h0
LnNldEhlaWdodChtYXgoMCwgaW5uZXJUb3BSaWdodC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7Ci0K
LSAgICBpbm5lckJvdHRvbUxlZnQuc2V0V2lkdGgobWF4KDAsIGlubmVyQm90dG9tTGVmdC53aWR0
aCgpIC0gbGVmdFdpZHRoKSk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0LnNldEhlaWdodChtYXgoMCwg
aW5uZXJCb3R0b21MZWZ0LmhlaWdodCgpIC0gYm90dG9tV2lkdGgpKTsKLQotICAgIGlubmVyQm90
dG9tUmlnaHQuc2V0V2lkdGgobWF4KDAsIGlubmVyQm90dG9tUmlnaHQud2lkdGgoKSAtIHJpZ2h0
V2lkdGgpKTsKLSAgICBpbm5lckJvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0
b21SaWdodC5oZWlnaHQoKSAtIGJvdHRvbVdpZHRoKSk7Ci0KLSAgICBjb25zdHJhaW5Db3JuZXJS
YWRpaUZvclJlY3QoaW5uZXJSZWN0LCBpbm5lclRvcExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVy
Qm90dG9tTGVmdCwgaW5uZXJCb3R0b21SaWdodCk7CisgICAgSW50UmVjdFJhZGlpIHJhZGlpID0g
c3Vycm91bmQtPmJvcmRlci5jYWxjUmFkaWkoaW5uZXJSZWN0LndpZHRoKCksIGlubmVyUmVjdC5o
ZWlnaHQoKSk7CisgICAgcmFkaWkuc2hyaW5rKHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdp
ZHRoLCByaWdodFdpZHRoKTsKKyAgICByYWRpaS5jb25zdHJhaW5Gb3IoaW5uZXJSZWN0KTsKKyAg
ICByZXR1cm4gcmFkaWk7CiB9CiAKIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIFJlbmRlclN0
eWxlOjpjb3VudGVyRGlyZWN0aXZlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAppbmRleCBjYmM1YzE3YjZhYWIyOTkyZjQ3ZWM2NWQyN2E5NTU1MGI3ZjgxZDgzLi4z
OTM5ZGYwYjU5MTJmYjVmN2NkMDY3NDEyNTU5ZjYwZTY4ZjQ2NmM5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTg1MiwxMyArODUyLDEwIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZp
eGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KLQogICAgIAotICAgIHZv
aWQgZ2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0b3BMZWZ0
LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9t
UmlnaHQpIGNvbnN0OwotICAgIHZvaWQgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9y
ZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2ln
bmVkIHNob3J0IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0LCBJbnRTaXplJiBpbm5l
clRvcFJpZ2h0LCBJbnRTaXplJiBpbm5lckJvdHRvbUxlZnQsIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEludFNpemUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0OworICAgIEludFJlY3RS
YWRpaSBnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIElu
dFJlY3RSYWRpaSBnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoY29u
c3QgSW50UmVjdCYsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0
IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJp
Z2h0V2lkdGgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQg
c2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0K
ICAgICB2b2lkIHNldEJvcmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fc3R5bGUsIHYpIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78511</attachid>
            <date>2011-01-11 03:32:01 -0800</date>
            <delta_ts>2011-01-14 02:27:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51664-20110111203158.patch</filename>
            <type>text/plain</type>
            <size>98538</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IGY4ZWY0MTQzZmNmNDdmYTMzYjJkMDFhY2UzYTVmNWY3ZjQ2Y2U2M2Qu
LmE4NGU3YmJlODY4OTE1MTgzODYzNDBiNDFlZmNkNzJiNTliZjhkNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNTI2LDYgKzUyNiw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIFwKIAlwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwIFwKKwlwbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKIAlwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZjIxMmZiODYxMzc5YWY0NzZkMzRlOTY4MTdmY2YzYWM2NjRjZjNjMy4uYjIzMTA2MDZlNmJmYzg1
Y2Q1ZWE0NGMzZDliMGEyYzAzZGUzZThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNDIs
NiArMTM0Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3RSYWRpaS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXR0ZXJuLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFlNTM1MDVkZDhhNjNjYTllMDkyMWJhMGZkMzQ4
NzIyNzkwMmIyZWUuLjI5M2EyZGZjMWU2ZjgwYjZhYTNmMjViMzY5ZWUzYTMxY2JiNzdhNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxMS0wMS0xMSAgTU9SSVRBIEhhamltZSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWZhY3RvcmluZzogRXh0cmFjdCBJbnRSZWN0UmFkaWkgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNjY0CisKKyAgICAg
ICAgSW50UmVjdFJhZGlpIGlzIGEgcXVhZCBvZiBJbnRTaXplIGZvciB0aGUgcmVjdGFuZ2xlIHJh
ZGlpLAorICAgICAgICB3aGljaCBpcyBvZnRlbiBtYW5pcHVsYXRlZCBhdCBvbmNlLgorICAgICAg
ICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAg
ICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXAp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW50UmVjdFJhZGlpOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJh
ZGlpOjpjb25zdHJhaW5Gb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpleHBh
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OkludFJlY3RSYWRpaSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNldFRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
UmVjdFJhZGlpOjpzZXRUb3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6
OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjpzZXRCb3R0
b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnRvcExlZnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50UmVjdFJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdFJh
ZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OmV4cGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0UmFkaWk6OnNocmluayk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1
c2hDb250ZW50c0NsaXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNs
aXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dFRleHRGaWVsZEludGVybmFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkdyYWRpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlk
ZXJUcmFjayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3Jh
ZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRl
clRyYWNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9C
b3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpjYWxjUmFkaWkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0
aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJvcmRlclJhZGl1cyk6CisKIDIwMTAtMTAtMTAg
IERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4M2U1NWQ0NmQ3Yzk2OTM3M2E2MWFiODc1
ZTkxOGUwNDgxNzVmNjkwLi5kODdkZjJjNzE0MGM2YTE5ZDdkMDY5MWY5NDA5YjVmMmFiMThkNTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yOTIzLDYgKzI5MjMsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL0ludFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemVIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDI3Y2Q1ODIyNzEyMTUwNzQ1OWQ0
NDZmZGVmNzFjODZhOTZkNTQwNDkuLjVhODE4NTg1NThjNTc3ZmY1YjUwODE1YjZhMWJlMTk3MmE4
YjczNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMjAzLDYgKzEyMDMsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5j
cHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCkBAIC0y
MTE3LDYgKzIxMTgsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
UmFkaWkuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IGJmZmM2ZDZkYzdkMzVmOWUzM2NkNjQ1NzAyOThkZWQ0NTM0ZTBlOTYuLjM1YjM0
M2Q1ZDljN2U2MGMwOTdiZGRiYWUyODgyN2I2ZjQ2MWMyN2EgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjU5Myw2ICsyNjU5MywxNCBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcSW50UmVjdFJhZGlpLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEludFJlY3RS
YWRpaS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW50U2l6ZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGMzOGY4MmRlNWRjMTNhMzFjZDQ0ODdlMDk3ODk3NTJmODE1MjhjOWEuLjY2Y2RhMWRmOTM1
YTVkYTljOWQyMTQ0NjYzNjY3NDllNzZhNGY2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxNTAsNiArMzE1MCw4IEBACiAJ
CUE2MjJBOEZGMTIyQzQ0QTYwMEE3ODVCMyAvKiBHZW5lcmljQmluZGluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYyMkE4RjkxMjJDNDRBNjAwQTc4
NUIzIC8qIEdlbmVyaWNCaW5kaW5nLmggKi87IH07CiAJCUE3MTg3NjBFMEIyQTEyMDEwMEExNkVD
RSAvKiBEcmFnQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcxODc2MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcxODc4OTAwQjJE
MDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERy
YWdDb250cm9sbGVyTWFjLm1tICovOyB9OworCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkgLyog
SW50UmVjdFJhZGlpLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBJbnRSZWN0UmFkaWkuY3BwICovOyB9
OworCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVjdFJhZGlpLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGRDEyQzk3QkZFMDAz
MUFBRjkgLyogSW50UmVjdFJhZGlpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3
MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlC
ODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi87IH07CiAJCUE3NUU4Qjg4MEUxREUy
RDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAq
LzsgfTsKQEAgLTk1MDEsNiArOTUwMyw4IEBACiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAv
KiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4Nzg4RjBCMkQwNEFDMDBB
MTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEcmFnQ29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTcxQTcwQzkxMUFGQjAyMDAwOTg5RDZEIC8qIEhUTUxNZXRlckVsZW1lbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxNZXRlckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogSW50UmVjdFJh
ZGlpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3RSYWRp
aS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0Y5NUZEMTJDOTdCRkUwMDMx
QUFGOSAvKiBJbnRSZWN0UmFkaWkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50UmVjdFJhZGlpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0MTA3
NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RThC
ODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRkVCbGVuZC5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZFQmxlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTczOTYsNiArMTc0MDAsOCBAQAogCQkJCUU0
NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLywKIAkJCQlCMjc1MzU0
NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5jcHAgKi8sCiAJCQkJQjI3NTM1NDYwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3QuaCAqLywKKwkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkg
LyogSW50UmVjdFJhZGlpLmNwcCAqLywKKwkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyog
SW50UmVjdFJhZGlpLmggKi8sCiAJCQkJQjI3NTM1NDcwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNp
emUuaCAqLywKIAkJCQlCMjc1MzU0ODBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2guaCAq
LywKIAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICovLApA
QCAtMjA4MDUsNiArMjA4MTEsNyBAQAogCQkJCUIyNzUzNTcyMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2MkE0QTExMTNFNzFCRTAwNEE0MjIwIC8q
IEludFBvaW50SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzQwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3M0Y5NUZGMTJDOTdCRkUwMDMx
QUFGOSAvKiBJbnRSZWN0UmFkaWkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTc1MEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3NjBCMDUz
ODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREM0
MTI1MUYxMkQwMDNFRjI2OSAvKiBJc0luZGV4SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAg
LTIzNTMxLDYgKzIzNTM4LDcgQEAKIAkJCQlCMjc1MzU3MzBCMDUzODE0MDAyQ0U2NEYgLyogSW50
UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MTBCMDUzODE0MDAyQ0U2NEYgLyog
SW50UmVjdENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTdEMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbnRSZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTczRjk1RkUxMkM5N0JGRTAw
MzFBQUY5IC8qIEludFJlY3RSYWRpaS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUz
NTdFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjU1QjNEQzMxMjUxRjEyRDAwM0VGMjY5IC8qIElzSW5kZXhJbnB1dFR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAppbmRleCA2MWI3NzhjNzJiMmFiODc3MGUwNDNhYjRiNzg2ZWIwMWU2MDAx
MDBiLi44ZDE5MzMyYWZlMWJhMDg2MzY4YzZkNWYyMmY2NzE1Yzk1YmNkMjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRSZWN0UmFkaWku
aCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTM2LDI1ICs1MzcsMjMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclMKICAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNw
YWNlLCBkZXN0LCBzcmMsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LAotICAgIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbnRSZWN0UmFkaWkmIHJhZGlpKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0
KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAg
cGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0
KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSk7CiAgICAgY2xpcChw
YXRoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0
b3BSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFJlY3RSYWRpaSYgcmFkaWkpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJl
Y3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmln
aHQoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKTsKICAgICBjbGlw
T3V0KHBhdGgpOwogfQogCkBAIC01ODUsNiArNTg0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdlbmVyYXRvciYgZ2VuZXJhdG9yKQog
ICAgIGdlbmVyYXRvci5maWxsKHRoaXMsIHJlY3QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3RSYWRp
aSYgcmFkaWksIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorewor
ICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LCByYWRpaS50b3BMZWZ0KCksIHJhZGlpLnRvcFJpZ2h0
KCksIHJhZGlpLmJvdHRvbUxlZnQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKSwgY29sb3IsIGNvbG9y
U3BhY2UpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbikKIHsKICAgICBtX3N0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4NTg4NTIzYWI3
MWYxZWU5MmNlOTNjZDVkOTNkODRjMzhjYjJlMzQwLi4wNTYwZDBhMWY5M2JiMGRmZmIxMGNhNDk3
NDgwNGQ5Y2Y3OWIxMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTIwLDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiAgICAgY2xh
c3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBJbnRSZWN0UmFk
aWk7CiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDsK
ICAgICBjbGFzcyBUZXh0UnVuOwpAQCAtMjgyLDYgKzI4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdl
bmVyYXRvciYpOwogICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xv
ciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50UmVjdFJhZGlpJiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAog
ICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzEwLDEwICsz
MTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGlw
KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
KTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFJlY3RSYWRpaSYpOwogICAgICAgICB2b2lkIGFkZElubmVyUm91bmRlZFJlY3RDbGlwKGNv
bnN0IEludFJlY3QmLCBpbnQgdGhpY2tuZXNzKTsKICAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0
IEludFJlY3QmKTsKLSAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCk7CisgICAg
ICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
UmFkaWkmKTsKICAgICAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwog
ICAgICAgICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZs
b2F0UG9pbnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwogICAgICAgICB2b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRSZWN0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0UmFkaWkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NWJiOGFhMDEyYzdjZTBlOTE2ZTMxZGMxOTlhMzFiYWZlMjlmNzU2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmNwcApAQCAt
MCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW50UmVjdFJhZGlpLmgiCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSW50UmVjdFJhZGlpOjpp
c1plcm8oKSBjb25zdAoreworICAgIHJldHVybiBtX3RvcExlZnQuaXNaZXJvKCkgJiYgbV90b3BS
aWdodC5pc1plcm8oKSAmJiBtX2JvdHRvbUxlZnQuaXNaZXJvKCkgJiYgbV9ib3R0b21SaWdodC5p
c1plcm8oKTsKK30KKwordm9pZCBJbnRSZWN0UmFkaWk6OmNvbnN0cmFpbkZvcihjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIC8vIENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NTMyBy
dWxlczoKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1i
b3JkZXItcmFkaXVzCisgICAgCisgICAgZmxvYXQgZmFjdG9yID0gMTsKKyAgICB1bnNpZ25lZCBy
YWRpaVN1bTsKKworICAgIC8vIHRvcAorICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fdG9wTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RvcFJpZ2h0
LndpZHRoKCkpOyAvLyBDYXN0cyB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChy
YWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LndpZHRoKCkpKQorICAgICAgICBm
YWN0b3IgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53aWR0aCgpKSAvIHJhZGlp
U3VtLCBmYWN0b3IpOworCisgICAgLy8gYm90dG9tCisgICAgcmFkaWlTdW0gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9ib3R0b21MZWZ0LndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fYm90dG9tUmlnaHQud2lkdGgoKSk7CisgICAgaWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRp
Y19jYXN0PGZsb2F0PihyZWN0LndpZHRoKCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CisgICAgCisg
ICAgLy8gbGVmdAorICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdG9wTGVm
dC5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ib3R0b21MZWZ0LmhlaWdodCgp
KTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQo
KSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0Lmhl
aWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAgIAorICAgIC8vIHJpZ2h0CisgICAgcmFk
aWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90b3BSaWdodC5oZWlnaHQoKSkgKyBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9ib3R0b21SaWdodC5oZWlnaHQoKSk7CisgICAgaWYgKHJhZGlp
U3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QuaGVpZ2h0KCkpKQorICAgICAgICBmYWN0
b3IgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC5oZWlnaHQoKSkgLyByYWRpaVN1
bSwgZmFjdG9yKTsKKyAgICAKKyAgICAvLyBTY2FsZSBhbGwgcmFkaWkgYnkgZiBpZiBuZWNlc3Nh
cnkuCisgICAgaWYgKGZhY3RvciA8IDEpIHsKKyAgICAgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBv
biBhIGNvcm5lciBiZWNvbWVzIHplcm8sIHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIu
CisgICAgICAgIG1fdG9wTGVmdC5zY2FsZShmYWN0b3IpOworICAgICAgICBpZiAoIW1fdG9wTGVm
dC53aWR0aCgpIHx8ICFtX3RvcExlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICBtX3RvcExlZnQg
PSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wUmlnaHQuc2NhbGUoZmFjdG9yKTsKKyAgICAgICAg
aWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkgfHwgIW1fdG9wUmlnaHQuaGVpZ2h0KCkpCisgICAgICAg
ICAgICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICBtX2JvdHRvbUxlZnQuc2NhbGUo
ZmFjdG9yKTsKKyAgICAgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgoKSB8fCAhbV9ib3R0b21M
ZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAg
ICAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7CisgICAgICAgIGlmICghbV9ib3R0b21S
aWdodC53aWR0aCgpIHx8ICFtX2JvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgbV9i
b3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICB9CisKK30KKwordm9pZCBJbnRSZWN0UmFkaWk6
OmV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50
IHJpZ2h0V2lkdGgpCit7CisgICAgbV90b3BMZWZ0LnNldFdpZHRoKHN0ZDo6bWF4KDAsIG1fdG9w
TGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV90b3BMZWZ0LnNldEhlaWdodChzdGQ6
Om1heCgwLCBtX3RvcExlZnQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworCisgICAgbV90b3BSaWdo
dC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX3RvcFJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7
CisgICAgbV90b3BSaWdodC5zZXRIZWlnaHQoc3RkOjptYXgoMCwgbV90b3BSaWdodC5oZWlnaHQo
KSArIHRvcFdpZHRoKSk7CisKKyAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgoc3RkOjptYXgoMCwg
bV9ib3R0b21MZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsKKyAgICBtX2JvdHRvbUxlZnQuc2V0
SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fYm90dG9tTGVmdC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7
CisKKyAgICBtX2JvdHRvbVJpZ2h0LnNldFdpZHRoKHN0ZDo6bWF4KDAsIG1fYm90dG9tUmlnaHQu
d2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodChzdGQ6
Om1heCgwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKK30KKwordm9p
ZCBJbnRSZWN0UmFkaWk6OmluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgSW50UmVjdFJhZGlpJiBl
ZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sKKyAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAgICAgICAgbV9ib3R0b21M
ZWZ0ID0gZWRnZXMuYm90dG9tTGVmdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Rv
cFJpZ2h0ID0gZWRnZXMudG9wUmlnaHQoKTsKKyAgICAgICAgbV90b3BMZWZ0ID0gZWRnZXMudG9w
TGVmdCgpOworICAgIH0KKworICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgeworICAg
ICAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRv
cFJpZ2h0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2Vz
LmJvdHRvbUxlZnQoKTsKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IGVkZ2VzLmJvdHRvbVJpZ2h0
KCk7CisgICAgfQorCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdFJhZGlpLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRlOGMz
ZDYzNGFlZDI1NzIyZjhjYTJmNzVhMjcxMzk2YmU4YzE0NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RSYWRpaS5oCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRSZWN0UmFkaWlfaAorI2RlZmluZSBJ
bnRSZWN0UmFkaWlfaAorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEludFJlY3Q7CisKK2NsYXNzIEludFJlY3RSYWRpaSB7CitwdWJsaWM6Cisg
ICAgSW50UmVjdFJhZGlpKCkge30KKyAgICBJbnRSZWN0UmFkaWkoY29uc3QgSW50U2l6ZSYgdG9w
TGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQs
IGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgICAgICA6IG1fdG9wTGVmdCh0b3BMZWZ0
KQorICAgICAgICAsIG1fdG9wUmlnaHQodG9wUmlnaHQpCisgICAgICAgICwgbV9ib3R0b21MZWZ0
KGJvdHRvbUxlZnQpCisgICAgICAgICwgbV9ib3R0b21SaWdodChib3R0b21SaWdodCkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBzZXRUb3BMZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90
b3BMZWZ0ID0gc2l6ZTsgfQorICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQorICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJ
bnRTaXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KKyAgICB2b2lkIHNldEJvdHRv
bVJpZ2h0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9ib3R0b21SaWdodCA9IHNpemU7IH0KKyAg
ICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9Cisg
ICAgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9
CisgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9t
TGVmdDsgfQorICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9ib3R0b21SaWdodDsgfQorCisgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKworICAgIHZvaWQg
Y29uc3RyYWluRm9yKGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGluY2x1ZGVMb2dpY2FsRWRn
ZXMoY29uc3QgSW50UmVjdFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAg
dm9pZCBleHBhbmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgs
IGludCByaWdodFdpZHRoKTsKKyAgICB2b2lkIGV4cGFuZChpbnQgc2l6ZSkgeyBleHBhbmQoc2l6
ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGlu
dCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10
b3BXaWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KKyAgICB2
b2lkIHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0K
KworcHJpdmF0ZToKKyAgICBJbnRTaXplIG1fdG9wTGVmdDsKKyAgICBJbnRTaXplIG1fdG9wUmln
aHQ7CisgICAgSW50U2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgSW50U2l6ZSBtX2JvdHRvbVJpZ2h0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW50UmVjdFJhZGlp
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWRlOThlNzExODA4
ODE3NjhiMmVkNmZiOTIwMzdjNjU3ZmEyOWRhNy4uNDQ5MjMzNjgxNjVmNzYxOTBlZDY1N2E4OGJl
YTVmZWY5NzQ3YjkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTEwNjIsMTQgKzEwNjIsOCBAQCBib29sIFJlbmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcChQYWlu
dEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgfQogICAgIEludFJlY3QgY2xp
cFJlY3QoaXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdCh0eCwgdHkpIDogb3ZlcmZsb3dD
bGlwUmVjdCh0eCwgdHkpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIGlm
IChzdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBJbnRTaXplIHRvcExlZnQs
IHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgSW50UmVjdCBib3Jk
ZXJSZWN0ID0gSW50UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKLSAgICAgICAgc3R5
bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpOwotICAgIH0KLSAgICAKKyAgICBpZiAoc3R5bGUoKS0+aGFzQm9y
ZGVyUmFkaXVzKCkpCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENs
aXAoSW50UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSwgc3R5bGUoKS0+Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSkpKTsKICAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApp
bmRleCA1MDk4MzA2YWUxZmNjZTQ3OGMwMDNkOTJjYzIwZTEzMjFlODI3NTI1Li5lZTYyZjExZDM2
YWIyOGM5Yzc5OWQyMmJiZjY1YTM4ZGRiYjQ0ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTU0NywyNiArNTQ3LDI1IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogCi0g
ICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0
OwotICAgICAgICBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgSW50UmVj
dFJhZGlpIHJhZGlpID0gc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3Qp
OwogCiAgICAgICAgIGlmICghaW5jbHVkZUxlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0b3BMZWZ0
ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgcmFkaWkuc2V0VG9wTGVmdChJbnRTaXplKCkpOwog
ICAgICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9udGFsKCkpCi0gICAgICAgICAgICAgICAgYm90
dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgICAgICAgICByYWRpaS5zZXRCb3R0b21MZWZ0
KEludFNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdG9wUmlnaHQg
PSBJbnRTaXplKCk7CisgICAgICAgICAgICAgICAgcmFkaWkuc2V0VG9wUmlnaHQoSW50U2l6ZSgp
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFpbmNsdWRlUmlnaHRFZGdlKSB7
CiAgICAgICAgICAgICBpZiAoYm94LT5pc0hvcml6b250YWwoKSkKLSAgICAgICAgICAgICAgICB0
b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgICAgICAgICByYWRpaS5zZXRUb3BSaWdodChJ
bnRTaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQg
PSBJbnRTaXplKCk7Ci0gICAgICAgICAgICBib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICAg
ICAgICAgICAgICByYWRpaS5zZXRCb3R0b21MZWZ0KEludFNpemUoKSk7CisgICAgICAgICAgICBy
YWRpaS5zZXRCb3R0b21SaWdodChJbnRTaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBjb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHJhZGlpKTsKICAgICAgICAgY2xpcHBlZFRvQm9yZGVy
UmFkaXVzID0gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMjQsMTQgKzEwMjMsMTMgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGludCB0eCwKICAgICBib29sIHJlbmRlclJpZ2h0ID0gcmlnaHRTdHlsZSA+IEJISURE
RU4gJiYgIXJpZ2h0VHJhbnNwYXJlbnQgJiYgKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICBib29sIHJlbmRlckJvdHRvbSA9IGJvdHRvbVN0eWxlID4gQkhJRERF
TiAmJiAhYm90dG9tVHJhbnNwYXJlbnQgJiYgKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwogCi0gICAgYm9vbCByZW5kZXJSYWRpaSA9IGZhbHNlOwogICAgIFBhdGggcm91
bmRlZFBhdGg7Ci0gICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQ7CisgICAgSW50UmVjdFJhZGlpIGJvcmRlcjsKICAgICBJbnRSZWN0IGJvcmRlclJl
Y3QodHgsIHR5LCB3LCBoKTsKIAogICAgIGlmIChzdHlsZS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsK
LSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVm
dFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRCb3JkZXJSYWRp
aUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRv
bUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgYm9yZGVyLmluY2x1ZGVM
b2dpY2FsRWRnZXMoc3R5bGUtPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIGludCBsZWZ0
V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBzdHlsZS0+
Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwogICAgICAgICBpbnQgcmlnaHRXaWR0aCA9ICghaG9yaXpv
bnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpIDogMDsKQEAgLTEwMzksNDcgKzEwMzcsMjAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwK
ICAgICAgICAgaW50IGJvdHRvbVdpZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpID8gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgOiAwOwogCiAgICAgICAgIElu
dFJlY3QgaW5uZXJCb3JkZXJSZWN0ID0gYm9yZGVySW5uZXJSZWN0KGJvcmRlclJlY3QsIHRvcFdp
ZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRoKTsKLSAgICAgICAgSW50U2l6
ZSBpbm5lclRvcExlZnRSYWRpdXMsIGlubmVyVG9wUmlnaHRSYWRpdXMsIGlubmVyQm90dG9tTGVm
dFJhZGl1cywgaW5uZXJCb3R0b21SaWdodFJhZGl1czsKKyAgICAgICAgSW50UmVjdFJhZGlpIGlu
bmVyOworICAgICAgICBpbm5lci5pbmNsdWRlTG9naWNhbEVkZ2VzKHN0eWxlLT5nZXRJbm5lckJv
cmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoaW5uZXJCb3JkZXJSZWN0LCB0b3BXaWR0
aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAKLSAgICAgICAgc3R5bGUtPmdldElubmVy
Qm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhpbm5lckJvcmRlclJlY3QsIHRvcFdp
ZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRoLCBpbm5lclRvcExlZnRSYWRp
dXMsIGlubmVyVG9wUmlnaHRSYWRpdXMsIGlubmVyQm90dG9tTGVmdFJhZGl1cywgaW5uZXJCb3R0
b21SaWdodFJhZGl1cyk7Ci0KLSAgICAgICAgSW50U2l6ZSBpbm5lclRvcExlZnQsIGlubmVyVG9w
UmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5uZXJCb3R0b21SaWdodDsKLQotICAgICAgICBpZiAo
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewotICAgICAgICAgICAgdG9wTGVmdCA9IHRvcExlZnRS
YWRpdXM7Ci0gICAgICAgICAgICBpbm5lclRvcExlZnQgPSBpbm5lclRvcExlZnRSYWRpdXM7Ci0g
ICAgICAgICAgICBpZiAoaG9yaXpvbnRhbCkgewotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQg
PSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlubmVyQm90dG9tTGVmdCA9IGlu
bmVyQm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgICAgICAgICBpbm5lclRvcFJp
Z2h0ID0gaW5uZXJUb3BSaWdodFJhZGl1czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICAgICAgaWYgKGhv
cml6b250YWwpIHsKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwot
ICAgICAgICAgICAgICAgIGlubmVyVG9wUmlnaHQgPSBpbm5lclRvcFJpZ2h0UmFkaXVzOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVm
dFJhZGl1czsKLSAgICAgICAgICAgICAgICBpbm5lckJvdHRvbUxlZnQgPSBpbm5lckJvdHRvbUxl
ZnRSYWRpdXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBib3R0b21SaWdodCA9IGJvdHRv
bVJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgaW5uZXJCb3R0b21SaWdodCA9IGlubmVyQm90dG9t
UmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLQotICAgICAgICByZW5kZXJSYWRpaSA9ICF0b3BMZWZ0
LmlzWmVybygpIHx8ICF0b3BSaWdodC5pc1plcm8oKSB8fCAhYm90dG9tTGVmdC5pc1plcm8oKSB8
fCAhYm90dG9tUmlnaHQuaXNaZXJvKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVuZGVyUmFk
aWkpIHsKKyAgICAgICAgaWYgKCFib3JkZXIuaXNaZXJvKCkpIHsKICAgICAgICAgICAgIC8vIENs
aXAgdG8gdGhlIGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRS
ZWN0KGlubmVyQm9yZGVyUmVjdCwgaW5uZXJUb3BMZWZ0LCBpbm5lclRvcFJpZ2h0LCBpbm5lckJv
dHRvbUxlZnQsIGlubmVyQm90dG9tUmlnaHQpOwotICAgICAgICAgICAgcm91bmRlZFBhdGguYWRk
Um91bmRlZFJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RD
bGlwKGJvcmRlclJlY3QsIGJvcmRlcik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmNs
aXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlclJlY3QsIGlubmVyKTsKKyAgICAgICAgICAgIHJv
dW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlclJlY3QsIGJvcmRlci50b3BMZWZ0KCksIGJv
cmRlci50b3BSaWdodCgpLCBib3JkZXIuYm90dG9tTGVmdCgpLCBib3JkZXIuYm90dG9tUmlnaHQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIHJlbmRlclJhZGlpID0gIWJvcmRlci5p
c1plcm8oKTsKICAgICBib29sIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyTGVm
dCAmJiAodG9wU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAodG9wQ29sb3IgPT0gbGVmdENvbG9yKTsK
ICAgICBib29sIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlclJpZ2h0ICYmICh0
b3BTdHlsZSA9PSByaWdodFN0eWxlKSAmJiAodG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRv
cFN0eWxlICE9IE9VVFNFVCkgJiYgKHRvcFN0eWxlICE9IFJJREdFKSAmJiAodG9wU3R5bGUgIT0g
SU5TRVQpICYmICh0b3BTdHlsZSAhPSBHUk9PVkUpOwogICAgIGJvb2wgbG93ZXJMZWZ0Qm9yZGVy
U3R5bGVzTWF0Y2ggPSByZW5kZXJMZWZ0ICYmIChib3R0b21TdHlsZSA9PSBsZWZ0U3R5bGUpICYm
IChib3R0b21Db2xvciA9PSBsZWZ0Q29sb3IpICYmIChib3R0b21TdHlsZSAhPSBPVVRTRVQpICYm
IChib3R0b21TdHlsZSAhPSBSSURHRSkgJiYgKGJvdHRvbVN0eWxlICE9IElOU0VUKSAmJiAoYm90
dG9tU3R5bGUgIT0gR1JPT1ZFKTsKQEAgLTEwODksOSArMTA2MCw5IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBpbnQgdHgsCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsK
IAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZSh0b3BM
ZWZ0LCB0b3BSaWdodCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmln
aHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRl
clJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9yZGVyLnRvcExlZnQoKSwgYm9yZGVy
LnRvcFJpZ2h0KCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUtPmJvcmRlclJpZ2h0
V2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpKSB7CiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFw
aGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBi
b3R0b21SaWdodCwgQlNUb3AsIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCB1cHBlclJpZ2h0
Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3Jh
cGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXIsIEJTVG9wLCB1cHBlckxlZnRCb3JkZXJT
dHlsZXNNYXRjaCwgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAgICAgZmxv
YXQgdGhpY2tuZXNzID0gbWF4KG1heChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpKSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAgICAgICAgICAg
ICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgcm91bmRl
ZFBhdGgsIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0aGlja25lc3MsIEJTVG9wLCBzdHlsZSwg
dG9wQ29sb3IsIHRvcFN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9y
ZSgpOwpAQCAtMTExMCw5ICsxMDgxLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAg
ICAgaW50IHggPSB0eDsKICAgICAgICAgaW50IHgyID0gdHggKyB3OwogCi0gICAgICAgIGlmIChy
ZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvdHRvbUxlZnQsIGJvdHRvbVJp
Z2h0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCks
IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSkgeworICAgICAgICBpZiAocmVuZGVyUmFkaWkg
JiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIuYm90dG9tTGVmdCgpLCBib3JkZXIuYm90
dG9tUmlnaHQoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkpIHsKICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdy
YXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQs
IGJvdHRvbVJpZ2h0LCBCU0JvdHRvbSwgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2Vy
UmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdv
bihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlciwgQlNCb3R0b20sIGxvd2VyTGVm
dEJvcmRlclN0eWxlc01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAg
ICAgICBmbG9hdCB0aGlja25lc3MgPSBtYXgobWF4KHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsK
ICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJS
ZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHRoaWNrbmVzcywg
QlNCb3R0b20sIHN0eWxlLCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUpOwogICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMTMzLDkgKzExMDQsOSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgaW50IHR4LAogICAgICAgICBpbnQgeSA9IHR5OwogICAgICAgICBpbnQgeTIgPSB0
eSArIGg7CiAKLSAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVk
Z2UoYm90dG9tTGVmdCwgdG9wTGVmdCwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxl
LT5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpKSB7CisgICAgICAg
IGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvcmRlci5ib3R0b21M
ZWZ0KCksIGJvcmRlci50b3BMZWZ0KCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHls
ZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKSkgewogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lk
ZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTTGVmdCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0
Y2gsIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNp
ZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyLCBCU0xlZnQsIHVw
cGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5
bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAg
ICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRlckxlZnRXaWR0
aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
KTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3Jk
ZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB0aGlja25lc3Ms
IEJTTGVmdCwgc3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0eWxlKTsKICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTE1Miw5ICsxMTIzLDkgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGludCB0eCwKICAgICB9CiAKICAgICBpZiAocmVuZGVyUmlnaHQpIHsKLSAgICAgICAgaWYg
KHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm90dG9tUmlnaHQsIHRvcFJp
Z2h0LCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpKSB7CisgICAgICAgIGlmIChyZW5kZXJSYWRpaSAm
JiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvcmRlci5ib3R0b21SaWdodCgpLCBib3JkZXIudG9w
UmlnaHQoKSwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhp
Y3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQsIEJTUmlnaHQsIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJSaWdo
dEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdy
YXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyLCBCU1JpZ2h0LCB1cHBlclJpZ2h0Qm9y
ZGVyU3R5bGVzTWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAg
IGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5
bGUtPmJvcmRlclRvcFdpZHRoKCkpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAg
ICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwg
cm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHRoaWNrbmVzcywgQlNSaWdo
dCwgc3R5bGUsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUpOwogICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xMjA5LDY1ICsxMTgwLDQ2IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBpbnQgdHgsCiAgICAgYm9vbCByZW5kZXJSaWdodCA9IHJpZ2h0U3R5bGUgPiBCSElEREVOICYm
ICFyaWdodFRyYW5zcGFyZW50ICYmICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSk7CiAgICAgYm9vbCByZW5kZXJCb3R0b20gPSBib3R0b21TdHlsZSA+IEJISURERU4gJiYg
IWJvdHRvbVRyYW5zcGFyZW50ICYmIChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKIAotICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBmYWxzZTsKLSAgICBJbnRTaXplIHRvcExl
ZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKKworICAgIEludFJlY3RSYWRp
aSBib3JkZXI7CiAKICAgICBpZiAoc3R5bGUtPmhhc0JvcmRlclJhZGl1cygpKSB7CiAgICAgICAg
IEludFJlY3QgYm9yZGVyUmVjdCA9IEludFJlY3QodHgsIHR5LCB3LCBoKTsKLQotICAgICAgICBJ
bnRTaXplIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBi
b3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdldEJvcmRlclJhZGlpRm9yUmVjdChi
b3JkZXJSZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1
cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRF
ZGdlKSB7Ci0gICAgICAgICAgICB0b3BMZWZ0ID0gdG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAg
IGlmIChob3Jpem9udGFsKQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0
UmFkaXVzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9w
UmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSkgewotICAgICAgICAgICAgaWYgKGhvcml6b250YWwpCi0gICAgICAgICAg
ICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBib3R0b21MZWZ0ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGJv
dHRvbVJpZ2h0ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLQotICAgICAgICByZW5k
ZXJSYWRpaSA9ICF0b3BMZWZ0LmlzWmVybygpIHx8ICF0b3BSaWdodC5pc1plcm8oKSB8fCAhYm90
dG9tTGVmdC5pc1plcm8oKSB8fCAhYm90dG9tUmlnaHQuaXNaZXJvKCk7CisgICAgICAgIGJvcmRl
ci5pbmNsdWRlTG9naWNhbEVkZ2VzKHN0eWxlLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVy
UmVjdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUg
cm91bmRlZCByZWN0YW5nbGUuCisgICAgICAgIGlmICghYm9yZGVyLmlzWmVybygpKSB7CiAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFk
ZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCBib3JkZXIpOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaW50IGZpcnN0QW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTdGFydCwgZmlyc3RBbmdsZVNw
YW4sIHNlY29uZEFuZ2xlU3BhbjsKICAgICBmbG9hdCB0aGlja25lc3M7CisgICAgYm9vbCByZW5k
ZXJSYWRpaSA9ICFib3JkZXIuaXNaZXJvKCk7CiAgICAgYm9vbCB1cHBlckxlZnRCb3JkZXJTdHls
ZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRvcFN0eWxlID09IGxlZnRTdHlsZSkgJiYgKHRvcENv
bG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9vbCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gg
PSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUgPT0gcmlnaHRTdHlsZSkgJiYgKHRvcENvbG9yID09
IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAhPSBPVVRTRVQpICYmICh0b3BTdHlsZSAhPSBSSURH
RSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAmJiAodG9wU3R5bGUgIT0gR1JPT1ZFKTsKICAgICBi
b29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyTGVmdCAmJiAoYm90dG9tU3R5
bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9yKSAmJiAoYm90dG9t
U3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gUklER0UpICYmIChib3R0b21TdHls
ZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IEdST09WRSk7CiAgICAgYm9vbCBsb3dlclJp
Z2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAoYm90dG9tU3R5bGUgPT0gcmln
aHRTdHlsZSkgJiYgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IpOwogCiAgICAgaWYgKHJlbmRl
clRvcCkgewotICAgICAgICBib29sIGlnbm9yZV9sZWZ0ID0gKHJlbmRlclJhZGlpICYmIHRvcExl
ZnQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9wQ29sb3IgPT0gbGVmdENvbG9yICYm
IHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiB0b3BTdHlsZSA+PSBPVVRTRVQg
JiYKLSAgICAgICAgICAgICAobGVmdFN0eWxlID09IERPVFRFRCB8fCBsZWZ0U3R5bGUgPT0gREFT
SEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0gT1VUU0VUKSk7Ci0KLSAg
ICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgdG9wUmlnaHQud2lkdGgo
KSA+IDApIHx8Ci0gICAgICAgICAgICAodG9wQ29sb3IgPT0gcmlnaHRDb2xvciAmJiB0b3BUcmFu
c3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYmIHRvcFN0eWxlID49IE9VVFNFVCAmJgotICAg
ICAgICAgICAgIChyaWdodFN0eWxlID09IERPVFRFRCB8fCByaWdodFN0eWxlID09IERBU0hFRCB8
fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAg
Ym9vbCBpZ25vcmVMZWZ0ID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci50b3BMZWZ0KCkud2lkdGgo
KSA+IDApCisgICAgICAgICAgICB8fCAodG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5z
cGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiB0b3BTdHlsZSA+PSBPVVRTRVQKKyAgICAgICAg
ICAgICAgICAmJiAobGVmdFN0eWxlID09IERPVFRFRCB8fCBsZWZ0U3R5bGUgPT0gREFTSEVEIHx8
IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0gT1VUU0VUKSk7CisgICAgICAgIAor
ICAgICAgICBib29sIGlnbm9yZVJpZ2h0ID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci50b3BSaWdo
dCgpLndpZHRoKCkgPiAwKQorICAgICAgICAgICAgfHwgKHRvcENvbG9yID09IHJpZ2h0Q29sb3Ig
JiYgdG9wVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCAmJiB0b3BTdHlsZSA+PSBPVVRT
RVQKKyAgICAgICAgICAgICAgICAmJiAocmlnaHRTdHlsZSA9PSBET1RURUQgfHwgcmlnaHRTdHls
ZSA9PSBEQVNIRUQgfHwgcmlnaHRTdHlsZSA9PSBTT0xJRCB8fCByaWdodFN0eWxlID09IElOU0VU
KSk7CiAKICAgICAgICAgaW50IHggPSB0eDsKICAgICAgICAgaW50IHgyID0gdHggKyB3OwogICAg
ICAgICBpZiAocmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAgIHggKz0gdG9wTGVmdC53aWR0aCgp
OwotICAgICAgICAgICAgeDIgLT0gdG9wUmlnaHQud2lkdGgoKTsKKyAgICAgICAgICAgIHggKz0g
Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpOworICAgICAgICAgICAgeDIgLT0gYm9yZGVyLnRvcFJp
Z2h0KCkud2lkdGgoKTsKICAgICAgICAgfQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
QlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfbGVm
dCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZV9yaWdodCA/IDAgOiBzdHls
ZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKKyAgICAgICAgICAgICAgICAgICBpZ25vcmVMZWZ0ID8g
MCA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3JlUmlnaHQgPyAwIDogc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CiAgICAgICAg
ICAgICBpbnQgbGVmdFkgPSB0eTsKQEAgLTEyNzcsMTUgKzEyMjksMTUgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGludCB0eCwKICAgICAgICAgICAgIC8vIHdpdGggdGhlIGFyYy1kcmF3aW5nIGZ1bmN0aW9u
LgogICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgKiAyOwog
Ci0gICAgICAgICAgICBpZiAodG9wTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9y
ZGVyLnRvcExlZnQoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICAgaW50IGxlZnRYID0gdHg7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIGlubmVyIGNsaXAgY2xpcHMgaW5zaWRlIHRoZSBhcmMu
IFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIDFweCBib3JkZXJzLgotICAgICAgICAg
ICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSA8IHRvcExlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpIDwgdG9wTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBib29sIGFw
cGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIudG9w
TGVmdCgpLndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSA8IGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICYmICh0b3BTdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPiA2KTsK
ICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobGVmdFgsIGxlZnRZ
LCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0LmhlaWdodCgpICogMiksCisgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVj
dChsZWZ0WCwgbGVmdFksIGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci50b3BM
ZWZ0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSk7CiAgICAg
ICAgICAgICAgICAgfQogCkBAIC0xMjkzLDIwICsxMjQ1LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsCiAgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSB1cHBlckxlZnRCb3JkZXJT
dHlsZXNNYXRjaCA/IDkwIDogNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxl
ZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJz
dEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIudG9wTGVmdCgpLCBmaXJzdEFu
Z2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFw
cGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5y
ZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0b3BSaWdodC53aWR0
aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9IHR4ICsgdyAtIHRvcFJpZ2h0Lndp
ZHRoKCkgKiAyOwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlSaWdodElubmVyQ2xpcCA9IChz
dHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgdG9wUmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgdG9wUmlnaHQuaGVpZ2h0KCkp
CisgICAgICAgICAgICBpZiAoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSkgeworICAgICAgICAg
ICAgICAgIGludCByaWdodFggPSB0eCArIHcgLSBib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpICog
MjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSA8IGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkpCisgICAgICAgICAg
ICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IGJvcmRlci50b3BSaWdodCgp
LmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAodG9wU3R5bGUgIT0gRE9VQkxFIHx8
IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5
UmlnaHRJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoSW50UmVjdChyaWdodFgsIGxlZnRZLCB0b3BSaWdodC53aWR0aCgpICogMiwg
dG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHJpZ2h0WCwgbGVmdFksIGJvcmRl
ci50b3BSaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSAqIDIp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAg
LTEzMTksNyArMTI3MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVy
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB1cHBlciByaWdodCBhcmMKLSAgICAgICAg
ICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgbGVmdFks
IHRoaWNrbmVzcywgdG9wUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0
WCwgbGVmdFksIHRoaWNrbmVzcywgYm9yZGVyLnRvcFJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQs
IHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0
b3BDb2xvciwgdG9wU3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlSaWdo
dElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3Jl
KCk7CkBAIC0xMzI4LDM2ICsxMjgwLDM2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAg
fQogCiAgICAgaWYgKHJlbmRlckJvdHRvbSkgewotICAgICAgICBib29sIGlnbm9yZV9sZWZ0ID0g
KHJlbmRlclJhZGlpICYmIGJvdHRvbUxlZnQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAo
Ym90dG9tQ29sb3IgPT0gbGVmdENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IGxlZnRUcmFu
c3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAobGVmdFN0
eWxlID09IERPVFRFRCB8fCBsZWZ0U3R5bGUgPT0gREFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJ
RCB8fCBsZWZ0U3R5bGUgPT0gT1VUU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlTGVmdCA9IChy
ZW5kZXJSYWRpaSAmJiBib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkgPiAwKQorICAgICAgICAg
ICAgfHwgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBs
ZWZ0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAg
JiYgKGxlZnRTdHlsZSA9PSBET1RURUQgfHwgbGVmdFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5
bGUgPT0gU09MSUQgfHwgbGVmdFN0eWxlID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdu
b3JlX3JpZ2h0ID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbVJpZ2h0LndpZHRoKCkgPiAwKSB8fAot
ICAgICAgICAgICAgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJl
bnQgPT0gcmlnaHRUcmFuc3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAg
ICAgICAgICAocmlnaHRTdHlsZSA9PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBEQVNIRUQgfHwg
cmlnaHRTdHlsZSA9PSBTT0xJRCB8fCByaWdodFN0eWxlID09IElOU0VUKSk7CisgICAgICAgIGJv
b2wgaWdub3JlUmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSA+IDApCisgICAgICAgICAgICB8fCAoYm90dG9tQ29sb3IgPT0gcmlnaHRDb2xvciAmJiBi
b3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYmIGJvdHRvbVN0eWxlID49IE9V
VFNFVAorICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxlID09IERPVFRFRCB8fCByaWdodFN0
eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJpZ2h0U3R5bGUgPT0gSU5T
RVQpKTsKIAogICAgICAgICBpbnQgeCA9IHR4OwogICAgICAgICBpbnQgeDIgPSB0eCArIHc7CiAg
ICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgeCArPSBib3R0b21MZWZ0Lndp
ZHRoKCk7Ci0gICAgICAgICAgICB4MiAtPSBib3R0b21SaWdodC53aWR0aCgpOworICAgICAgICAg
ICAgeCArPSBib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCk7CisgICAgICAgICAgICB4MiAtPSBi
b3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpOwogICAgICAgICB9CiAKICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90dG9tU3R5
bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7
CisgICAgICAgICAgICAgICAgICAgaWdub3JlTGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdp
ZHRoKCksIGlnbm9yZVJpZ2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwogCiAg
ICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAoYm90dG9tTGVmdC53
aWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpKSB7
CiAgICAgICAgICAgICAgICAgaW50IGxlZnRYID0gdHg7Ci0gICAgICAgICAgICAgICAgaW50IGxl
ZnRZID0gdHkgKyBoIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAgICAgICAg
Ym9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgYm90
dG9tTGVmdC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCkgPCBib3R0b21MZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGludCBs
ZWZ0WSA9IHR5ICsgaCAtIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgKiAyOworICAgICAg
ICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lk
dGgoKSA8IGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAg
JiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWln
aHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGJvdHRvbVN0eWxlICE9IERPVUJMRSB8fCBz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBs
eUxlZnRJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIGJvdHRvbUxlZnQud2lkdGgoKSAqIDIs
IGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm9y
ZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpICogMiwgYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQo
KSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgICAgICAg
ICB9CiAKQEAgLTEzNzAsMjEgKzEzMjIsMjEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIGxlZnQgYXJj
Ci0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0
WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFu
Z2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIuYm90dG9tTGVmdCgpLCBmaXJzdEFu
Z2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChib3R0
b21SaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJpZ2h0WSA9IHR5ICsgaCAt
IGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMjsKLSAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0g
dHggKyB3IC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBh
cHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3R0b21S
aWdodC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRv
bVdpZHRoKCkgPCBib3R0b21SaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIGlmIChib3JkZXIu
Ym90dG9tUmlnaHQoKS53aWR0aCgpKSB7CisgICAgICAgICAgICAgICAgaW50IHJpZ2h0WSA9IHR5
ICsgaCAtIGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAg
ICBpbnQgcmlnaHRYID0gdHggKyB3IC0gYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSAqIDI7
CisgICAgICAgICAgICAgICAgYm9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkgPCBib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpKQorICAgICAgICAg
ICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3JkZXIuYm90dG9t
UmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGJvdHRvbVN0eWxlICE9
IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA+IDYpOwogICAgICAgICAgICAg
ICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCByaWdodFksIGJvdHRvbVJp
Z2h0LndpZHRoKCkgKiAyLCBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qo
cmlnaHRYLCByaWdodFksIGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIu
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzOTIsNyArMTM0NCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gbG93ZXJS
aWdodEJvcmRlclN0eWxlc01hdGNoID8gOTAgOiA0NTsKIAogICAgICAgICAgICAgICAgIC8vIERy
YXcgbG93ZXIgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCByaWdodFgsIHJpZ2h0WSwgdGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vj
b25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCByaWdodFksIHRoaWNrbmVzcywgYm9y
ZGVyLmJvdHRvbVJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90dG9t
U3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkK
ICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xNDAx
LDM2ICsxMzUzLDM2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYg
KHJlbmRlckxlZnQpIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfdG9wID0gKHJlbmRlclJhZGlpICYm
IHRvcExlZnQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAgICAgICAgKHRvcENvbG9yID09IGxlZnRD
b2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49
IE9VVFNFVCAmJgotICAgICAgICAgICAgICh0b3BTdHlsZSA9PSBET1RURUQgfHwgdG9wU3R5bGUg
PT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRvcFN0eWxlID09IE9VVFNFVCkpOwor
ICAgICAgICBib29sIGlnbm9yZVRvcCA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIudG9wTGVmdCgp
LmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHx8ICh0b3BDb2xvciA9PSBsZWZ0Q29sb3IgJiYg
dG9wVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGxlZnRTdHlsZSA+PSBPVVRTRVQK
KyAgICAgICAgICAgICAgICAmJiAodG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERB
U0hFRCB8fCB0b3BTdHlsZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRTRVQpKTsKIAotICAg
ICAgICBib29sIGlnbm9yZV9ib3R0b20gPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tTGVmdC5oZWln
aHQoKSA+IDApIHx8Ci0gICAgICAgICAgICAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9yICYmIGJv
dHRvbVRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VU
ICYmCi0gICAgICAgICAgICAgKGJvdHRvbVN0eWxlID09IERPVFRFRCB8fCBib3R0b21TdHlsZSA9
PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQgfHwgYm90dG9tU3R5bGUgPT0gSU5TRVQp
KTsKKyAgICAgICAgYm9vbCBpZ25vcmVCb3R0b20gPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLmJv
dHRvbUxlZnQoKS5oZWlnaHQoKSA+IDApCisgICAgICAgICAgICB8fCAoYm90dG9tQ29sb3IgPT0g
bGVmdENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBsZWZ0
U3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKGJvdHRvbVN0eWxlID09IERPVFRF
RCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQgfHwgYm90
dG9tU3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeSA9IHR5OwogICAgICAgICBpbnQg
eTIgPSB0eSArIGg7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgeSAr
PSB0b3BMZWZ0LmhlaWdodCgpOwotICAgICAgICAgICAgeTIgLT0gYm90dG9tTGVmdC5oZWlnaHQo
KTsKKyAgICAgICAgICAgIHkgKz0gYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIHkyIC09IGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwgeSwgdHggKyBzdHls
ZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxlZnRDb2xvciwgbGVmdFN0eWxlLAot
ICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRo
KCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAg
ICAgICAgICAgICAgICAgIGlnbm9yZVRvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
aWdub3JlQm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAg
ICBpZiAocmVuZGVyUmFkaWkgJiYgKCF1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93
ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CiAgICAgICAgICAgICBpbnQgdG9wWCA9IHR4Owog
ICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpICogMjsKIAot
ICAgICAgICAgICAgaWYgKCF1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCAmJiB0b3BMZWZ0Lndp
ZHRoKCkpIHsKKyAgICAgICAgICAgIGlmICghdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYg
Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICAgaW50IHRvcFkgPSB0
eTsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSA8IHRvcExlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYg
KHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgdG9wTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAg
ICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8
IGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxl
LT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSkKICAgICAgICAg
ICAgICAgICAgICAgJiYgKGxlZnRTdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlckxlZnRX
aWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3Qo
dG9wWCwgdG9wWSwgdG9wTGVmdC53aWR0aCgpICogMiwgdG9wTGVmdC5oZWlnaHQoKSAqIDIpLAor
ICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RD
bGlwKEludFJlY3QodG9wWCwgdG9wWSwgYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpICogMiwgYm9y
ZGVyLnRvcExlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xNDM4LDIwICsxMzkwLDIwIEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSA0NTsKIAog
ICAgICAgICAgICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJh
d0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRv
cExlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAg
ZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3Ms
IGJvcmRlci50b3BMZWZ0KCksIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwgbGVmdFN0eWxlLCB0
cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApCiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAoIWxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoICYmIGJvdHRvbUxlZnQu
d2lkdGgoKSkgewotICAgICAgICAgICAgICAgIGludCBib3R0b21ZID0gdHkgKyBoIC0gYm90dG9t
TGVmdC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVy
Q2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3R0b21MZWZ0LndpZHRoKCkpCi0g
ICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRv
bUxlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoIWxvd2VyTGVmdEJvcmRlclN0eWxlc01h
dGNoICYmIGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSkgeworICAgICAgICAgICAgICAgIGlu
dCBib3R0b21ZID0gdHkgKyBoIC0gYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAqIDI7Cisg
ICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCkgPCBib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkpCisgICAgICAgICAgICAg
ICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvcmRlci5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgIT0gRE9VQkxF
IHx8IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChh
cHBseUJvdHRvbUlubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIGJvdHRvbVksIGJvdHRvbUxlZnQud2lkdGgo
KSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIGJvdHRv
bVksIGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5ib3R0b21MZWZ0KCku
aGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwogICAgICAgICAg
ICAgICAgIH0KIApAQCAtMTQ1OSw3ICsxNDExLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwK
ICAgICAgICAgICAgICAgICBzZWNvbmRBbmdsZVNwYW4gPSA0NTsKIAogICAgICAgICAgICAgICAg
IC8vIERyYXcgYm90dG9tIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCBib3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbUxlZnQs
IHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3
QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIGJvdHRvbVksIHRoaWNrbmVzcywg
Ym9yZGVyLmJvdHRvbUxlZnQoKSwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHls
ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkKICAg
ICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xNDY4LDM4
ICsxNDIwLDM4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYgKHJl
bmRlclJpZ2h0KSB7Ci0gICAgICAgIGJvb2wgaWdub3JlX3RvcCA9IChyZW5kZXJSYWRpaSAmJiB0
b3BSaWdodC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAgICAgICAoKHRvcENvbG9yID09IHJpZ2h0
Q29sb3IpICYmICh0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50KSAmJgotICAgICAg
ICAgICAgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQpICYmCi0g
ICAgICAgICAgICAodG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERBU0hFRCB8fCB0
b3BTdHlsZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRTRVQpKTsKKyAgICAgICAgYm9vbCBp
Z25vcmVUb3AgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPiAw
KQorICAgICAgICAgICAgfHwgKCh0b3BDb2xvciA9PSByaWdodENvbG9yKSAmJiAodG9wVHJhbnNw
YXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkKKyAgICAgICAgICAgICAgICAmJiAocmlnaHRTdHls
ZSA+PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkKKyAgICAgICAgICAgICAgICAmJiAo
dG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHlsZSA9PSBT
T0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9yZV9ib3R0
b20gPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAg
ICAgICAgKChib3R0b21Db2xvciA9PSByaWdodENvbG9yKSAmJiAoYm90dG9tVHJhbnNwYXJlbnQg
PT0gcmlnaHRUcmFuc3BhcmVudCkgJiYKLSAgICAgICAgICAgIChyaWdodFN0eWxlID49IERPVFRF
RCB8fCByaWdodFN0eWxlID09IElOU0VUKSAmJgotICAgICAgICAgICAgKGJvdHRvbVN0eWxlID09
IERPVFRFRCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQg
fHwgYm90dG9tU3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVCb3R0b20gPSAo
cmVuZGVyUmFkaWkgJiYgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgPiAwKQorICAgICAg
ICAgICAgfHwgKChib3R0b21Db2xvciA9PSByaWdodENvbG9yKSAmJiAoYm90dG9tVHJhbnNwYXJl
bnQgPT0gcmlnaHRUcmFuc3BhcmVudCkKKyAgICAgICAgICAgICAgICAmJiAocmlnaHRTdHlsZSA+
PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkKKyAgICAgICAgICAgICAgICAmJiAoYm90
dG9tU3R5bGUgPT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09IERBU0hFRCB8fCBib3R0b21TdHls
ZSA9PSBTT0xJRCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkpOwogCiAgICAgICAgIGludCB5ID0g
dHk7CiAgICAgICAgIGludCB5MiA9IHR5ICsgaDsKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7
Ci0gICAgICAgICAgICB5ICs9IHRvcFJpZ2h0LmhlaWdodCgpOwotICAgICAgICAgICAgeTIgLT0g
Ym90dG9tUmlnaHQuaGVpZ2h0KCk7CisgICAgICAgICAgICB5ICs9IGJvcmRlci50b3BSaWdodCgp
LmhlaWdodCgpOworICAgICAgICAgICAgeTIgLT0gYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB0eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCB5LCB0eCArIHcsIHkyLCBC
U1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLAotICAgICAgICAgICAgICAgICAgIGlnbm9y
ZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDog
c3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgICAgICAgICAgICAgICAgIGlnbm9yZVRv
cCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdub3JlQm90dG9tID8gMCA6IHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgKCF1
cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRj
aCkpIHsKICAgICAgICAgICAgIHRoaWNrbmVzcyA9IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkg
KiAyOwogCi0gICAgICAgICAgICBpZiAoIXVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCAmJiB0
b3BSaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHRvcFggPSB0eCArIHcgLSB0
b3BSaWdodC53aWR0aCgpICogMjsKKyAgICAgICAgICAgIGlmICghdXBwZXJSaWdodEJvcmRlclN0
eWxlc01hdGNoICYmIGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAg
ICBpbnQgdG9wWCA9IHR4ICsgdyAtIGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkgKiAyOwogICAg
ICAgICAgICAgICAgIGludCB0b3BZID0gdHk7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseVRv
cElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgdG9wUmlnaHQud2lkdGgo
KSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgdG9w
UmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9
IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSkK
KyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVy
LnRvcFJpZ2h0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxl
ICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpID4gNik7CiAgICAgICAgICAg
ICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QodG9wWCwgdG9wWSwgdG9wUmlnaHQud2lk
dGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZ
LCBib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpICogMiwgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0
KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKICAgICAgICAgICAgICAg
ICB9CiAKQEAgLTE1MDcsMjEgKzE0NTksMjEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAg
ICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAgICAgLy8g
RHJhdyB0b3AgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRvcFJpZ2h0LCBmaXJzdEFuZ2xl
U3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCBib3JkZXIudG9wUmlnaHQo
KSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsIHRydWUpOwogICAgICAg
ICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
ICghbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoICYmIGJvdHRvbVJpZ2h0LndpZHRoKCkpIHsK
LSAgICAgICAgICAgICAgICBpbnQgYm90dG9tWCA9IHR4ICsgdyAtIGJvdHRvbVJpZ2h0LndpZHRo
KCkgKiAyOwotICAgICAgICAgICAgICAgIGludCBib3R0b21ZID0gdHkgKyBoIC0gYm90dG9tUmln
aHQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlCb3R0b21Jbm5lckNs
aXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IGJvdHRvbVJpZ2h0LndpZHRoKCkpCi0g
ICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRv
bVJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgaWYgKCFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVz
TWF0Y2ggJiYgYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkgeworICAgICAgICAgICAgICAg
IGludCBib3R0b21YID0gdHggKyB3IC0gYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSAqIDI7
CisgICAgICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSArIGggLSBib3JkZXIuYm90dG9tUmln
aHQoKS5oZWlnaHQoKSAqIDI7CisgICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVy
Q2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9yZGVyLmJvdHRvbVJpZ2h0KCku
d2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpIDwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICYmIChyaWdodFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpID4g
Nik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlwKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QoYm90dG9t
WCwgYm90dG9tWSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJpZ2h0LmhlaWdodCgp
ICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoSW50UmVjdChib3R0b21YLCBib3R0b21ZLCBib3JkZXIuYm90dG9tUmlnaHQo
KS53aWR0aCgpICogMiwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE1Mjks
NyArMTQ4MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vj
b25kQW5nbGVTcGFuID0gNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGJvdHRvbSByaWdo
dCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IGJvdHRvbVgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3Rh
cnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIGJvdHRvbVgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm9yZGVyLmJvdHRv
bVJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsIGZhbHNl
KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTU0Miw3ICsxNDk0LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGJveCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29u
c3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IElu
dFNpemUmIGJvdHRvbVJpZ2h0LAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBib3gsIGNvbnN0IEludFJlY3RSYWRpaSYgYm9yZGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJveFNpZGUgc2lkZSwgYm9vbCBm
aXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKQogewpAQCAtMTU2MywyNiArMTUxNSwyNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleAog
ICAgIHN3aXRjaCAoc2lkZSkgewogICAgIGNhc2UgQlNUb3A6CiAgICAgICAgIHF1YWRbMF0gPSBG
bG9hdFBvaW50KHR4LCB0eSk7Ci0gICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsgbWF4
KHRvcExlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBtYXgodG9wTGVmdC5oZWlnaHQoKSwg
dG9wV2lkdGgpKTsKLSAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KHRv
cFJpZ2h0LndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIG1heCh0b3BSaWdodC5oZWlnaHQoKSwg
dG9wV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm9yZGVy
LnRvcExlZnQoKS53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1heChib3JkZXIudG9wTGVmdCgp
LmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCAr
IHcgLSBtYXgoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4
KGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCB0b3BXaWR0aCkpOwogICAgICAgICBxdWFkWzNd
ID0gRmxvYXRQb2ludCh0eCArIHcsIHR5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCU0xl
ZnQ6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4LCB0eSk7Ci0gICAgICAgIHF1YWRb
MV0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KHRvcExlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkg
KyBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKLSAgICAgICAgcXVhZFsyXSA9IEZs
b2F0UG9pbnQodHggKyBtYXgoYm90dG9tTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIGgg
LSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsx
XSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpLCBsZWZ0V2lk
dGgpLCB0eSArIG1heChib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAg
ICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIuYm90dG9tTGVmdCgpLndp
ZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdo
dCgpLCBib3R0b21XaWR0aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh0eCwgdHkg
KyBoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCU0JvdHRvbToKICAgICAgICAgcXVhZFsw
XSA9IEZsb2F0UG9pbnQodHgsIHR5ICsgaCk7Ci0gICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50
KHR4ICsgbWF4KGJvdHRvbUxlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJv
dHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7Ci0gICAgICAgIHF1YWRbMl0gPSBGbG9h
dFBvaW50KHR4ICsgdyAtIG1heChib3R0b21SaWdodC53aWR0aCgpLCByaWdodFdpZHRoKSwgdHkg
KyBoIC0gbWF4KGJvdHRvbVJpZ2h0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOworICAgICAgICBx
dWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCks
IGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLCBi
b3R0b21XaWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgo
Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChi
b3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKICAgICAgICAgcXVh
ZFszXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEJTUmlnaHQ6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4ICsgdywgdHkpOwot
ICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgodG9wUmlnaHQud2lkdGgo
KSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRvcFJpZ2h0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwot
ICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm90dG9tUmlnaHQud2lk
dGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21SaWdodC5oZWlnaHQoKSwgYm90
dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KGJv
cmRlci50b3BSaWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIG1heChib3JkZXIudG9w
UmlnaHQoKS5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKKyAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9p
bnQodHggKyB3IC0gbWF4KGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgp
LCB0eSArIGggLSBtYXgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCksIGJvdHRvbVdpZHRo
KSk7CiAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHR4ICsgdywgdHkgKyBoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE2MTMsMTggKzE1NjUsNiBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleAogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwg
c2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk
IHVuaWZvcm1seUV4cGFuZEJvcmRlclJhZGlpKGludCBkZWx0YSwgSW50U2l6ZSYgdG9wTGVmdCwg
SW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJp
Z2h0KQotewotICAgIHRvcExlZnQuZXhwYW5kKGRlbHRhLCBkZWx0YSk7Ci0gICAgdG9wTGVmdC5j
bGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgdG9wUmlnaHQuZXhwYW5kKGRlbHRhLCBkZWx0YSk7
Ci0gICAgdG9wUmlnaHQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgIGJvdHRvbUxlZnQuZXhw
YW5kKGRlbHRhLCBkZWx0YSk7Ci0gICAgYm90dG9tTGVmdC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
Ci0gICAgYm90dG9tUmlnaHQuZXhwYW5kKGRlbHRhLCBkZWx0YSk7Ci0gICAgYm90dG9tUmlnaHQu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOwotfQotCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBp
bnQgdywgaW50IGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzLCBTaGFkb3dTdHlsZSBzaGFkb3dTdHls
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggYm9yZGVyLWltYWdlLiAgV291bGQgYmUg
Z3JlYXQgdG8gdXNlIGJvcmRlci1pbWFnZSBhcyBhIG1hc2suCkBAIC0xNjMzLDU0ICsxNTczLDE3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVj
dCByZWN0KHR4LCB0eSwgdywgaCk7Ci0gICAgSW50U2l6ZSB0b3BMZWZ0OwotICAgIEludFNpemUg
dG9wUmlnaHQ7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0OwotICAgIEludFNpemUgYm90dG9tUmln
aHQ7CisgICAgSW50UmVjdFJhZGlpIGJvcmRlcjsKIAogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVz
ID0gcy0+aGFzQm9yZGVyUmFkaXVzKCk7CiAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGlmIChoYXNCb3JkZXJSYWRpdXMgJiYgKGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpKSB7Ci0gICAgICAg
IEludFNpemUgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMs
IGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICBzLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QocmVj
dCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRv
bVJpZ2h0UmFkaXVzKTsKLQotICAgICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewot
ICAgICAgICAgICAgaWYgKHNoYWRvd1N0eWxlID09IEluc2V0KSB7Ci0gICAgICAgICAgICAgICAg
dG9wTGVmdFJhZGl1cy5leHBhbmQoLWJvcmRlckxlZnQoKSwgLWJvcmRlclRvcCgpKTsKLSAgICAg
ICAgICAgICAgICB0b3BMZWZ0UmFkaXVzLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxl
ZnRSYWRpdXMuZXhwYW5kKC1ib3JkZXJMZWZ0KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVz
LmV4cGFuZCgtYm9yZGVyUmlnaHQoKSwgLWJvcmRlclRvcCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgdG9wUmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvcExlZnQgPSB0b3BMZWZ0UmFkaXVzOwot
ICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0
ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0
b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICAgICAgaWYgKHNoYWRvd1N0eWxlID09IEluc2V0
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkgewotICAgICAgICAgICAgICAg
ICAgICB0b3BSaWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJpZ2h0KCksIC1ib3JkZXJUb3AoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzLmNsYW1wTmVnYXRpdmVUb1plcm8o
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBib3R0b21M
ZWZ0UmFkaXVzLmV4cGFuZCgtYm9yZGVyTGVmdCgpLCAtYm9yZGVyQm90dG9tKCkpOwotICAgICAg
ICAgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMuZXhwYW5k
KC1ib3JkZXJSaWdodCgpLCAtYm9yZGVyQm90dG9tKCkpOwotICAgICAgICAgICAgICAgIGJvdHRv
bVJpZ2h0UmFkaXVzLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICAgICAgdG9wUmlnaHQgPSB0b3BS
aWdodFJhZGl1czsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0
ID0gYm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0ID0gYm90dG9tUmln
aHRSYWRpdXM7Ci0gICAgICAgIH0KKyAgICAgICAgSW50UmVjdFJhZGlpIHJhZGlpID0gcy0+Z2V0
Qm9yZGVyUmFkaWlGb3JSZWN0KHJlY3QpOworICAgICAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5z
ZXQpCisgICAgICAgICAgICByYWRpaS5zaHJpbmsoYm9yZGVyVG9wKCksIGJvcmRlckJvdHRvbSgp
LCBib3JkZXJMZWZ0KCksIGJvcmRlclJpZ2h0KCkpOworICAgICAgICBib3JkZXIuaW5jbHVkZUxv
Z2ljYWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQorICAgCiAKICAgICBpZiAoc2hhZG93U3R5
bGUgPT0gSW5zZXQpIHsKICAgICAgICAgcmVjdC5tb3ZlKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Ug
fHwgIWlzSG9yaXpvbnRhbCA/IGJvcmRlckxlZnQoKSA6IDAsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UgfHwgaXNIb3Jpem9udGFsID8gYm9yZGVyVG9wKCkgOiAwKTsKQEAgLTE3MjAsMjkgKzE2MjMs
MjMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogICAgICAgICAgICAgY29udGV4dC0+c2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKSB7CiAgICAgICAgICAgICAgICAg
SW50UmVjdCByZWN0VG9DbGlwT3V0ID0gcmVjdDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIHRv
cExlZnRUb0NsaXBPdXQgPSB0b3BMZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgdG9wUmln
aHRUb0NsaXBPdXQgPSB0b3BSaWdodDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGJvdHRvbUxl
ZnRUb0NsaXBPdXQgPSBib3R0b21MZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9t
UmlnaHRUb0NsaXBPdXQgPSBib3R0b21SaWdodDsKLQotICAgICAgICAgICAgICAgIEludFNpemUg
dG9wTGVmdFRvRmlsbCA9IHRvcExlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BSaWdo
dFRvRmlsbCA9IHRvcFJpZ2h0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9tTGVmdFRv
RmlsbCAgPSBib3R0b21MZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9tUmlnaHRU
b0ZpbGwgPSBib3R0b21SaWdodDsKLSAgICAgICAgICAgICAgICBpZiAoc2hhZG93U3ByZWFkIDwg
MCkKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhwYW5kQm9yZGVyUmFkaWkoc2hhZG93
U3ByZWFkLCB0b3BMZWZ0VG9GaWxsLCB0b3BSaWdodFRvRmlsbCwgYm90dG9tTGVmdFRvRmlsbCwg
Ym90dG9tUmlnaHRUb0ZpbGwpOworICAgICAgICAgICAgICAgIEludFJlY3RSYWRpaSByYWRpaVRv
Q2xpcE91dCA9IGJvcmRlcjsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3Bh
cXVlLCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28g
c2F2ZXMgdGltZQogICAgICAgICAgICAgICAgIC8vIHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4g
T24gdGhlIG90aGVyIGhhbmQsIGl0IGludHJvZHVjZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUK
ICAgICAgICAgICAgICAgICAvLyBjb3JuZXJzLiBUaG9zZSBhcmUgYXZvaWRlZCBieSBpbnNldHRp
bmcgdGhlIGNsaXBwaW5nIHBhdGggYnkgb25lIHBpeGVsLgogICAgICAgICAgICAgICAgIGlmICho
YXNPcGFxdWVCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQu
aW5mbGF0ZSgtMSk7Ci0gICAgICAgICAgICAgICAgICAgIHVuaWZvcm1seUV4cGFuZEJvcmRlclJh
ZGlpKC0xLCB0b3BMZWZ0VG9DbGlwT3V0LCB0b3BSaWdodFRvQ2xpcE91dCwgYm90dG9tTGVmdFRv
Q2xpcE91dCwgYm90dG9tUmlnaHRUb0NsaXBPdXQpOworICAgICAgICAgICAgICAgICAgICByYWRp
aVRvQ2xpcE91dC5leHBhbmQoLTEpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0LCB0b3BMZWZ0VG9DbGlwT3V0
LCB0b3BSaWdodFRvQ2xpcE91dCwgYm90dG9tTGVmdFRvQ2xpcE91dCwgYm90dG9tUmlnaHRUb0Ns
aXBPdXQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVj
dCwgdG9wTGVmdFRvRmlsbCwgdG9wUmlnaHRUb0ZpbGwsIGJvdHRvbUxlZnRUb0ZpbGwsIGJvdHRv
bVJpZ2h0VG9GaWxsLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0LCByYWRp
aVRvQ2xpcE91dCk7CisKKyAgICAgICAgICAgICAgICBJbnRSZWN0UmFkaWkgcmFkaWlUb0ZpbGwg
PSBib3JkZXI7CisgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1NwcmVhZCA8IDApCisgICAgICAg
ICAgICAgICAgICAgIHJhZGlpVG9GaWxsLmV4cGFuZChzaGFkb3dTcHJlYWQpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVjdCwgcmFkaWlUb0ZpbGwsIENv
bG9yOjpibGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gcmVjdDsKIApAQCAtMTc3MCw3ICsx
NjY3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogCiAgICAgICAgICAgICBpZiAoaG9sZVJl
Y3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQs
IHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgc2hhZG93Q29sb3IsIHMtPmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChy
ZWN0LCBib3JkZXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocmVjdCwgc2hh
ZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBA
IC0xODAyLDcgKzE2OTksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNo
YWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAKICAgICAgICAgICAg
IFBhdGggcGF0aDsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKLSAgICAgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0
b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChyZWN0LCBib3JkZXIudG9wTGVmdCgpLCBib3JkZXIudG9wUmlnaHQoKSwgYm9yZGVyLmJvdHRv
bUxlZnQoKSwgYm9yZGVyLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PmNsaXAocGF0aCk7CiAgICAgICAgICAgICAgICAgcGF0aC5jbGVhcigpOwogICAgICAgICAgICAg
fSBlbHNlCkBAIC0xODE2LDggKzE3MTMsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAKICAg
ICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAgICBpZiAoc2hh
ZG93U3ByZWFkID4gMCkKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhwYW5kQm9yZGVy
UmFkaWkoLXNoYWRvd1NwcmVhZCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRv
bVJpZ2h0KTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0LCB0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICAgICAg
ICAgICAgICBib3JkZXIuc2hyaW5rKHNoYWRvd1NwcmVhZCk7CisgICAgICAgICAgICAgICAgcGF0
aC5hZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgYm9yZGVyLnRvcExlZnQoKSwgYm9yZGVyLnRvcFJp
Z2h0KCksIGJvcmRlci5ib3R0b21MZWZ0KCksIGJvcmRlci5ib3R0b21SaWdodCgpKTsKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChob2xlUmVjdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5k
ZXggOThlMzg2YjY4MzY5ODgxYzhiMGRmZGViYzYxN2IwN2I1MGM2Yjk2Ni4uZGU2OWU1MGEyYWE0
M2I2NmRjMTM0YTA4ZDRjNjY4ZmJkNmVjOTQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTEzMyw4ICsxMzMsOCBAQCBwcml2YXRl
OgogCiAgICAgSW50U2l6ZSBjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiwg
SW50U2l6ZSBzY2FsZWRTaXplKSBjb25zdDsKIAotICAgIHZvaWQgY2xpcEJvcmRlclNpZGVQb2x5
Z29uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdo
dCwgY29uc3QgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25k
RWRnZU1hdGNoZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKKyAgICB2b2lkIGNsaXBCb3Jk
ZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBib3gsIGNvbnN0
IEludFJlY3RSYWRpaSYgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEJveFNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hl
cywgY29uc3QgUmVuZGVyU3R5bGUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggYzdjODFmOWVkMzhmYTEwZWM5NzEzOTI4OTcwNjk3MGUw
ODNjZDRkZi4uNTgyNDZjMDQ5NTNlYWY2ZWUzZTBmZWJmMGJjYjhiYTAwODM3ZDhmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTk4MywzMSArOTgzLDE5
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBJbnRSZWN0CiAgICAgICAgIEludFJlY3QgaW5uZXJCb3JkZXJJ
bm5lclJlY3QgPSBib3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwgaW5uZXJCb3JkZXJUb3BXaWR0
aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgCiAgICAgICAgICAgICBpbm5lckJvcmRlckxlZnRX
aWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoKTsKIAotICAgICAgICAvLyBHZXQgdGhlIGlubmVy
IHJhZGlpIGZvciB0aGUgb3V0ZXIgYm9yZGVyIGxpbmUKLSAgICAgICAgSW50U2l6ZSBvdXRlckJv
cmRlclRvcExlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBv
dXRlckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRl
ckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJh
ZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9y
ZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAotICAgICAgICAgICAgb3V0ZXJC
b3JkZXJMZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwgb3V0ZXJCb3JkZXJUb3BMZWZ0
SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAgICAg
ICBvdXRlckJvcmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJCb3R0b21SaWdo
dElubmVyUmFkaXVzKTsKLQotICAgICAgICAvLyBHZXQgdGhlIGlubmVyIHJhZGlpIGZvciB0aGUg
aW5uZXIgYm9yZGVyIGxpbmUKLSAgICAgICAgSW50U2l6ZSBpbm5lckJvcmRlclRvcExlZnRJbm5l
clJhZGl1cywgaW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRv
bUxlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlckJvdHRvbVJpZ2h0SW5u
ZXJSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhC
b3JkZXJXaWR0aHMoaW5uZXJCb3JkZXJJbm5lclJlY3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlu
bmVyQm9yZGVyQm90dG9tV2lkdGgsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGgs
IGlubmVyQm9yZGVyUmlnaHRXaWR0aCwgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIGlu
bmVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlckJv
dHRvbUxlZnRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsK
LQogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xp
cChpbm5lckJvcmRlcklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIAot
ICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJv
dHRvbUxlZnRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaW5uZXJCb3JkZXJJ
bm5lclJlY3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGlubmVyQm9y
ZGVySW5uZXJSZWN0LCBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRo
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckJvcmRlckxlZnRX
aWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoKSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBh
dGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25lc3MsIGRy
YXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBTT0xJRCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9yZGVyIGxpbmUKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xp
cE91dFJvdW5kZWRSZWN0KG91dGVyQm9yZGVySW5uZXJSZWN0LCBvdXRlckJvcmRlclRvcExlZnRJ
bm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRlclRvcFJpZ2h0SW5uZXJSYWRpdXMs
IG91dGVyQm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJvdHRvbVJpZ2h0
SW5uZXJSYWRpdXMpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVj
dChvdXRlckJvcmRlcklubmVyUmVjdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJX
aWR0aHMob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9y
ZGVyQm90dG9tV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgpKTsKICAgICAgICAgZHJh
d0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgs
IHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgcywgc3R5bGUsIGMsIFNPTElEKTsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAKQEAgLTEwMjksMTggKzEwMTcsMTcgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIEludFJlY3QKICAgICAgICAgSW50UmVjdCBoYWxmQm9yZGVyUmVjdCA9IGJv
cmRlcklubmVyUmVjdChib3JkZXJSZWN0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCBz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIAogICAgICAgICAgICAgc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSAvIDIpOwogCi0gICAg
ICAgIEludFNpemUgdG9wTGVmdEhhbGZSYWRpdXMsIHRvcFJpZ2h0SGFsZlJhZGl1cywgYm90dG9t
TGVmdEhhbGZSYWRpdXMsIGJvdHRvbVJpZ2h0SGFsZlJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdl
dElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhoYWxmQm9yZGVyUmVjdCwg
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIC8gMiwgCi0gICAgICAgICAgICBzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5i
b3JkZXJSaWdodFdpZHRoKCkgLyAyLCAKLSAgICAgICAgICAgIHRvcExlZnRIYWxmUmFkaXVzLCB0
b3BSaWdodEhhbGZSYWRpdXMsIGJvdHRvbUxlZnRIYWxmUmFkaXVzLCBib3R0b21SaWdodEhhbGZS
YWRpdXMpOwotCiAgICAgICAgIC8vIFBhaW50IGZ1bGwgYm9yZGVyCiAgICAgICAgIGRyYXdCb3hT
aWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlj
a25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMSk7CiAKICAgICAgICAgLy8gUGFp
bnQgaW5uZXIgb25seQogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaGFsZkJvcmRlclJlY3QsIHRvcExl
ZnRIYWxmUmFkaXVzLCB0b3BSaWdodEhhbGZSYWRpdXMsCi0gICAgICAgICAgICBib3R0b21MZWZ0
SGFsZlJhZGl1cywgYm90dG9tUmlnaHRIYWxmUmFkaXVzKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaGFsZkJvcmRlclJlY3QsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZv
clJlY3RXaXRoQm9yZGVyV2lkdGhzKGhhbGZCb3JkZXJSZWN0LCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSAvIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSAvIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgLyAyKSk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJv
bVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25lc3Ms
IGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAppbmRleCA5NzRhOGQwNzJlZGY2Nzc5MGYwODkzNjc1OGYyODQ4YjA3YzY4ZGY3Li5kNjdm
NGQ5OTJjNzRkOWUxYjU3ODYyMTcwNjhlZjhkNTIxMWIzOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTEzNSwxMSArMTM1LDcgQEAgdm9pZCBS
ZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5
KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhhdmUg
YSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5kIGNv
bnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJp
Z2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgICAgIHN0eWxlKCktPmdldEJv
cmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBi
b3R0b21SaWdodCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKGJvcmRlclJlY3QsIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJS
ZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBiZTY3MGZmODllNjAyNjJiMDcz
ZjU3ZGMyMDU2NDA4MzA4MjYwMGU0Li5lMjRjMDI3NDczMGYxNjAxZjM2ZTg5NWNjN2ZhZTBjYzg3
NWQ4ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1XaW4uY3BwCkBAIC02NzUsOSArNjc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtV2luOjpwYWludFRleHRGaWVsZEludGVybmFsKFJlbmRlck9iamVjdCogbywKICAgICAgICAg
Ly8gYmFja2dyb3VuZCAodGhlbWVkIG9yIGZpbGxlZCkgYXBwcm9wcmlhdGVseS4KICAgICAgICAg
Ly8gRklYTUU6IG1ha2Ugc3VyZSB3ZSBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgY3NzIGJhY2tncm91
bmQtY2xpcCBpcyBzZXQuCiAgICAgICAgIGkuY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBJbnRT
aXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAg
by0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0gICAgICAgIGkuY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Cisg
ICAgICAgIGkuY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIsIG8tPnN0eWxlKCktPmdldEJv
cmRlclJhZGlpRm9yUmVjdChyKSk7CiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3QgVGhlbWVE
YXRhJiB0aGVtZURhdGEgPSBnZXRUaGVtZURhdGEobyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYTEzYjRhYTQ5MzYwMGE4ODBjMWI2OGQwMDkyMDg4
YTFiZDBiZjc1Zi4uZmVhZjg3YjkyZTVlMDM1NGQ5OWEzNDc1Mzk1Yzg3MjgxOTZkYzViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTAzMiwxNCAr
MTAzMiw4IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVu
dHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAKICAgICBwYWludEluZm8uY29udGV4
dC0+c2F2ZSgpOwogCi0gICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzOwotICAgIEludFNpemUgdG9w
UmlnaHRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0UmFkaXVzOwotICAgIEludFNpemUg
Ym90dG9tUmlnaHRSYWRpdXM7Ci0KLSAgICBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJl
Y3QociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJv
dHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgIGludCByYWRpdXMgPSB0b3BMZWZ0UmFkaXVzLndpZHRo
KCk7CisgICAgSW50UmVjdFJhZGlpIHJhZGlpID0gby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlG
b3JSZWN0KHIpOworICAgIGludCByYWRpdXMgPSByYWRpaS50b3BMZWZ0KCkud2lkdGgoKTsKIAog
ICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAK
QEAgLTEwNjIsMjcgKzEwNTYsMjcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KICAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLnJpZ2h0KCksICByLnkoKSksIENHUG9pbnRNYWtl
KHIucmlnaHQoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBm
YWxzZSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVz
LCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChyLCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFp
blNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVj
dENsaXAoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRvcExlZnRSYWRpdXMsIHRvcFJp
Z2h0UmFkaXVzLCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgSW50UmVj
dFJhZGlpKHJhZGlpLnRvcExlZnQoKSwgcmFkaWkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRT
aXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdl
dCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0
b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5n
SW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5h
ZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFJl
Y3RSYWRpaShJbnRTaXplKCksIEludFNpemUoKSwgcmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5i
b3R0b21SaWdodCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJv
dHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OwogICAgIH0KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRl
ZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFk
aXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChyLCByYWRpaSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwg
bGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJp
Z2h0U2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAg
LTEzMDMsOSArMTI5Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mCiAgICAgICAgIG1haW5T
aGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShi
b3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5i
b3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRT
aXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywK
LSAgICAgICAgcmFkaXVzLCByYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoYm91bmRzLCBJbnRSZWN0UmFkaWkocmFkaXVzLCByYWRpdXMsIHJhZGl1cywg
cmFkaXVzKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcu
Z2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCA2ZDVkMzIy
ODg5MDg2ODNmNGY5YTI2MTQyOWFjYjM3NWExZWJkMjcwLi4zZTA2YmRkNWJhMzdkZTZlYzdhMDNk
ZWJkYzlkOWIyYWYyMDdhOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTc1MSwxNCArNzUxLDggQEAgdm9pZCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW4KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAKLSAgICBJbnRTaXplIHRv
cExlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSB0b3BSaWdodFJhZGl1czsKLSAgICBJbnRTaXplIGJv
dHRvbUxlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21SaWdodFJhZGl1czsKLQotICAgIG8t
PnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdo
dFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0gICAgaW50
IHJhZGl1cyA9IHRvcExlZnRSYWRpdXMud2lkdGgoKTsKKyAgICBJbnRSZWN0UmFkaWkgcmFkaWkg
PSBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3Qocik7CisgICAgaW50IHJhZGl1cyA9
IHJhZGlpLnRvcExlZnQoKS53aWR0aCgpOwogCiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIApAQCAtNzgxLDI3ICs3NzUsMjcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW4KICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRp
bmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLnJp
Z2h0KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIucmlnaHQoKSAtIHJhZGl1cywgci55KCkpLCBt
YWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0
LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJp
Z2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCByYWRpaSk7CiAgICAgQ0dDb250
ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5m
by5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwog
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFk
aWVudCksIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBJbnRTaXplKCksIEludFNpemUo
KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJ
bnRSZWN0KHRvcEdyYWRpZW50KSwgSW50UmVjdFJhZGlpKHJhZGlpLnRvcExlZnQoKSwgcmFkaWku
dG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5h
ZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNp
emUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50
UmVjdChib3R0b21HcmFkaWVudCksIEludFJlY3RSYWRpaShJbnRTaXplKCksIEludFNpemUoKSwg
cmFkaWkuYm90dG9tTGVmdCgpLCByYWRpaS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgICAgICBw
YWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIH0KIAogICAgIHBhaW50SW5mby5jb250
ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBw
YWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRv
cFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCByYWRpaSk7CiAgICAgQ0dD
b250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTk4Miw5ICs5NzYsNyBAQCBib29sIFJlbmRlclRo
ZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBwYWludAogICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4
aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50
TWFrZShib3VuZHMueCgpLCBib3VuZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZh
bHNlLCBmYWxzZSkpOwogCiAgICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFk
aXVzKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kcywK
LSAgICAgICAgcmFkaXVzLCByYWRpdXMsCi0gICAgICAgIHJhZGl1cywgcmFkaXVzKTsKKyAgICBw
YWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kcywgSW50UmVjdFJhZGlp
KHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIENHQ29udGV4dERyYXdTaGFk
aW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luQ0UuY3BwCmluZGV4IDI3Yjg3ODNiYWViZTA0NTA5NmY1MWMzZGIzYzU2Y2E5ZjljNmQyMWUu
LmMzODE2YTEyZjM1NWRmZWUwMTIwNTU0OTQ0NGYwNDJlNThhODRiZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAKQEAgLTM3Nyw3ICszNzcsNyBA
QCBib29sIFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludAogICAgIGludCB5ID0gci55KCkgKyAoci5oZWlnaHQo
KSAtIGNhbmNlbFNpemUuaGVpZ2h0KCkpIC8gMiArIDE7CiAgICAgSW50UmVjdCBjYW5jZWxCb3Vu
ZHMoSW50UG9pbnQoeCwgeSksIGNhbmNlbFNpemUpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChjYW5jZWxC
b3VuZHMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJh
ZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChjYW5jZWxC
b3VuZHMsIEludFJlY3RSYWRpaShjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFk
aXVzLCBjYW5jZWxSYWRpdXMpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QoY2Fu
Y2VsQm91bmRzLCBidXR0b25Db2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBE
cmF3IHRoZSAneCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5k
ZXggMTUyYmIyZjgwMzFlOGY3ZGI0NTI2Y2NkMDFiYTVlZDI0MmNlMzE0Yi4uOGY5NjVkOTkzMmVl
NGRiMzU5YWUwY2U5NmRjMTQwYmFiMWUyMTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKQEAgLTI3NCwxMSArMjc0LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIAogICAgICAgICAv
LyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJhZGl1cywgc2luY2Ugd2Ugd2FudCB0
byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQgZ2V0cyBwYWludGVkLgogICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgICAgICAKLSAgICAgICAgSW50U2l6ZSB0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAgICAgIHN0eWxl
KCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5h
ZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxl
ZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChib3JkZXJSZWN0LCBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVy
UmVjdCkpOwogICAgIH0KIAogICAgIGlmIChtX3dpZGdldCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggMDM2MzVkOWYxOWZiYTQ5MDE2NTY3Mjc4
OTY4ZjhmMTNkYTc0OGE4My4uYThiNDI0YWRlYmYzMTAyYTYwZjI5MGQwYWI5ZTA0MWM2NGFjZjdi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCkBAIC0y
Niw2ICsyNiw4IEBACiAjZGVmaW5lIEJvcmRlckRhdGFfaAogCiAjaW5jbHVkZSAiQm9yZGVyVmFs
dWUuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVjdFJhZGlpLmgiCiAj
aW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCiAKQEAg
LTEwOSw3ICsxMTEsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aFNpemUmIHRvcFJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIGJv
dHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KICAgICBjb25zdCBMZW5n
dGhTaXplJiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmlnaHQ7IH0KLSAg
ICAKKworICAgIEludFJlY3RSYWRpaSBjYWxjUmFkaWkoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3RSYWRpaShJbnRTaXplKG1fdG9wTGVm
dC53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV90b3BMZWZ0LmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1fdG9wUmlnaHQud2lkdGgoKS5jYWxjVmFsdWUo
d2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90b3BSaWdodC5o
ZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50U2l6ZShtX2JvdHRvbUxlZnQud2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm90dG9tTGVmdC5oZWlnaHQoKS5jYWxjVmFs
dWUoaGVpZ2h0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShtX2JvdHRv
bVJpZ2h0LndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSk7
CisgICAgfQorCiBwcml2YXRlOgogICAgIEJvcmRlclZhbHVlIG1fbGVmdDsKICAgICBCb3JkZXJW
YWx1ZSBtX3JpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKaW5kZXggODgxODE4YzhkMDZjN2M4NDQ1NjU3ZjJkNjE2NDM1YTZiNGViNjIzZS4u
MDQ5ZGRjMDU3Y2M3NDIzMzQ3ZGZmODVmODc5YWZjMGRjZDI5MTUxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC03NDEsODQgKzc0MSwy
MCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3hTaGFkb3coU2hhZG93RGF0YSogc2hhZG93RGF0
YSwgYm9vbCBhZGQpCiAgICAgcmFyZURhdGEtPm1fYm94U2hhZG93LnNldChzaGFkb3dEYXRhKTsK
IH0KIAotc3RhdGljIHZvaWQgY29uc3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJl
Y3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0
b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdodCkKK0ludFJlY3RSYWRpaSBSZW5kZXJTdHlsZTo6
Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAg
Ly8gQ29uc3RyYWluIGNvcm5lciByYWRpaSB1c2luZyBDU1MzIHJ1bGVzOgotICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJvcmRlci1yYWRpdXMKLSAgICAK
LSAgICBmbG9hdCBmYWN0b3IgPSAxOwotICAgIHVuc2lnbmVkIHJhZGlpU3VtOwotCi0gICAgLy8g
dG9wCi0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wTGVmdC53aWR0aCgp
KSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BSaWdodC53aWR0aCgpKTsgLy8gQ2FzdHMgdG8g
YXZvaWQgaW50ZWdlciBvdmVyZmxvdy4KLSAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oci53aWR0aCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZs
b2F0PihyLndpZHRoKCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7Ci0KLSAgICAvLyBib3R0b20KLSAg
ICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LndpZHRoKCkpICsg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotICAgIGlmIChyYWRp
aVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyLndpZHRoKCkpKQotICAgICAgICBmYWN0b3Ig
PSBtaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsK
LSAgICAKLSAgICAvLyBsZWZ0Ci0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dG9wTGVmdC5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90dG9tTGVmdC5oZWln
aHQoKSk7Ci0gICAgaWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHIuaGVpZ2h0
KCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIuaGVpZ2h0KCkp
IC8gcmFkaWlTdW0sIGZhY3Rvcik7Ci0gICAgCi0gICAgLy8gcmlnaHQKLSAgICByYWRpaVN1bSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BSaWdodC5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYm90dG9tUmlnaHQuaGVpZ2h0KCkpOwotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyLmhlaWdodCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRp
Y19jYXN0PGZsb2F0PihyLmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwotICAgIAotICAg
IC8vIFNjYWxlIGFsbCByYWRpaSBieSBmIGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAoZmFjdG9yIDwg
MSkgewotICAgICAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29tZXMgemVy
bywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KLSAgICAgICAgdG9wTGVmdC5zY2Fs
ZShmYWN0b3IpOwotICAgICAgICBpZiAoIXRvcExlZnQud2lkdGgoKSB8fCAhdG9wTGVmdC5oZWln
aHQoKSkKLSAgICAgICAgICAgIHRvcExlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgIHRvcFJpZ2h0
LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICghdG9wUmlnaHQud2lkdGgoKSB8fCAhdG9wUmln
aHQuaGVpZ2h0KCkpCi0gICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAg
Ym90dG9tTGVmdC5zY2FsZShmYWN0b3IpOwotICAgICAgICBpZiAoIWJvdHRvbUxlZnQud2lkdGgo
KSB8fCAhYm90dG9tTGVmdC5oZWlnaHQoKSkKLSAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBJbnRT
aXplKCk7Ci0gICAgICAgIGJvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICgh
Ym90dG9tUmlnaHQud2lkdGgoKSB8fCAhYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgICAg
ICBib3R0b21SaWdodCA9IEludFNpemUoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVuZGVyU3R5bGU6
OmdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0
LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9t
UmlnaHQpIGNvbnN0Ci17Ci0gICAgdG9wTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50
b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50
b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKLSAgICB0b3BSaWdodCA9
IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIu
d2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUo
ci5oZWlnaHQoKSkpOwotICAgIAotICAgIGJvdHRvbUxlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5i
b3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJvdW5k
LT5ib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7Ci0g
ICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKS53
aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKLQotICAgIGNvbnN0cmFpbkNvcm5l
clJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpOworICAgIEludFJlY3RSYWRpaSByYWRpaSA9IHN1cnJvdW5kLT5ib3JkZXIuY2FsY1JhZGlp
KHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgcmFkaWkuY29uc3RyYWluRm9yKHJl
Y3QpOworICAgIHJldHVybiByYWRpaTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6Z2V0SW5uZXJC
b3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVj
dCwgdW5zaWduZWQgc2hvcnQgdG9wV2lkdGgsIHVuc2lnbmVkIHNob3J0IGJvdHRvbVdpZHRoLCB1
bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJpZ2h0V2lkdGgsIEludFNp
emUmIGlubmVyVG9wTGVmdCwgSW50U2l6ZSYgaW5uZXJUb3BSaWdodCwgSW50U2l6ZSYgaW5uZXJC
b3R0b21MZWZ0LCBJbnRTaXplJiBpbm5lckJvdHRvbVJpZ2h0KSBjb25zdAorSW50UmVjdFJhZGlp
IFJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMo
Y29uc3QgSW50UmVjdCYgaW5uZXJSZWN0LCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBib3R0b21XaWR0aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdp
ZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRoKSBjb25zdAogewotICAgIGlubmVyVG9wTGVm
dCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUo
aW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5j
YWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0gICAgaW5uZXJUb3BSaWdodCA9IEludFNp
emUoc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVj
dC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1
ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lckJvdHRvbUxlZnQgPSBJbnRTaXplKHN1
cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53
aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVl
KGlubmVyUmVjdC5oZWlnaHQoKSkpOwotICAgIGlubmVyQm90dG9tUmlnaHQgPSBJbnRTaXplKHN1
cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qu
d2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFs
dWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0KLQotICAgIGlubmVyVG9wTGVmdC5zZXRXaWR0aCht
YXgoMCwgaW5uZXJUb3BMZWZ0LndpZHRoKCkgLSBsZWZ0V2lkdGgpKTsKLSAgICBpbm5lclRvcExl
ZnQuc2V0SGVpZ2h0KG1heCgwLCBpbm5lclRvcExlZnQuaGVpZ2h0KCkgLSB0b3BXaWR0aCkpOwot
Ci0gICAgaW5uZXJUb3BSaWdodC5zZXRXaWR0aChtYXgoMCwgaW5uZXJUb3BSaWdodC53aWR0aCgp
IC0gcmlnaHRXaWR0aCkpOwotICAgIGlubmVyVG9wUmlnaHQuc2V0SGVpZ2h0KG1heCgwLCBpbm5l
clRvcFJpZ2h0LmhlaWdodCgpIC0gdG9wV2lkdGgpKTsKLQotICAgIGlubmVyQm90dG9tTGVmdC5z
ZXRXaWR0aChtYXgoMCwgaW5uZXJCb3R0b21MZWZ0LndpZHRoKCkgLSBsZWZ0V2lkdGgpKTsKLSAg
ICBpbm5lckJvdHRvbUxlZnQuc2V0SGVpZ2h0KG1heCgwLCBpbm5lckJvdHRvbUxlZnQuaGVpZ2h0
KCkgLSBib3R0b21XaWR0aCkpOwotCi0gICAgaW5uZXJCb3R0b21SaWdodC5zZXRXaWR0aChtYXgo
MCwgaW5uZXJCb3R0b21SaWdodC53aWR0aCgpIC0gcmlnaHRXaWR0aCkpOwotICAgIGlubmVyQm90
dG9tUmlnaHQuc2V0SGVpZ2h0KG1heCgwLCBpbm5lckJvdHRvbVJpZ2h0LmhlaWdodCgpIC0gYm90
dG9tV2lkdGgpKTsKLQotICAgIGNvbnN0cmFpbkNvcm5lclJhZGlpRm9yUmVjdChpbm5lclJlY3Qs
IGlubmVyVG9wTGVmdCwgaW5uZXJUb3BSaWdodCwgaW5uZXJCb3R0b21MZWZ0LCBpbm5lckJvdHRv
bVJpZ2h0KTsKKyAgICBJbnRSZWN0UmFkaWkgcmFkaWkgPSBzdXJyb3VuZC0+Ym9yZGVyLmNhbGNS
YWRpaShpbm5lclJlY3Qud2lkdGgoKSwgaW5uZXJSZWN0LmhlaWdodCgpKTsKKyAgICByYWRpaS5z
aHJpbmsodG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpOworICAg
IHJhZGlpLmNvbnN0cmFpbkZvcihpbm5lclJlY3QpOworICAgIHJldHVybiByYWRpaTsKIH0KIAog
Y29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogUmVuZGVyU3R5bGU6OmNvdW50ZXJEaXJlY3RpdmVz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggY2JjNWMxN2I2YWFiMjk5MmY0N2VjNjVkMjdhOTU1NTBiN2Y4MWQ4My4uMzkzOWRmMGI1
OTEyZmI1ZjdjZDA2NzQxMjU1OWY2MGU2OGY0NjZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTg1MiwxMyArODUyLDEwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRo
KCksIEZpeGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KLQogICAgIAot
ICAgIHZvaWQgZ2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0
b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpIGNvbnN0OwotICAgIHZvaWQgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RX
aXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgs
IHVuc2lnbmVkIHNob3J0IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0LCBJbnRTaXpl
JiBpbm5lclRvcFJpZ2h0LCBJbnRTaXplJiBpbm5lckJvdHRvbUxlZnQsIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEludFNpemUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0OworICAgIElu
dFJlY3RSYWRpaSBnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0Owor
ICAgIEludFJlY3RSYWRpaSBnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0
aHMoY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHNob3J0IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNo
b3J0IHJpZ2h0V2lkdGgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5z
aWduZWQgc2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgs
IHYpIH0KICAgICB2b2lkIHNldEJvcmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fc3R5bGUsIHYpIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78918</attachid>
            <date>2011-01-14 02:27:18 -0800</date>
            <delta_ts>2011-01-16 22:46:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51664-20110114192715.patch</filename>
            <type>text/plain</type>
            <size>110901</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IGY4ZWY0MTQzZmNmNDdmYTMzYjJkMDFhY2UzYTVmNWY3ZjQ2Y2U2M2Qu
LjRmMWIxMzYzYWY4YjlhM2JlOTZiYWRjNDZhZDFiYjJjZTBiNThhYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNTMwLDYgKzUzMCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VHJhdmVyc2FsU3RhdGUuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCisJ
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcCBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGYyMTJmYjg2MTM3OWFmNDc2ZDM0ZTk2ODE3ZmNmM2FjNjY0Y2Yz
YzMuLjJjOTZjYzczNDU4OTQyMmIzY2Y2ODgzYzdjMzNkOGUzZGRjZGFiY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xMzQ1LDYgKzEzNDUsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWU1MzUwNWRkOGE2M2NhOWUwOTIxYmEwZmQzNDg3MjI3OTAyYjJlZS4uMDk3MzU3
NWViNjc0ZWFlNDJhYWY4NDJiMjRiY2NiMWI0ZWQ5NGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDkzIEBACisyMDExLTAxLTE0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9y
aW5nOiBFeHRyYWN0IFJvdW5kZWRJbnRSZWN0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTY2NAorCisgICAgICAgIFJvdW5kZWRJbnRSZWN0
IGlzIGEgcGFpciBvZiByZWN0IGFuZCBmb3VyIEludFNpemUgb2JqZWN0cyB3aGljaCByZXByZXNl
bnQKKyAgICAgICAgY29ybmVyIHJhZGlpIG9mIHRoZSByZWN0YW5nbGUuIEludFNpemUgaXMgZ3Jv
dXBlZCBpbnRvIFJvdW5kZWRJbnRSZWN0OjpSYWRpaS4KKyAgICAgICAgTm93IFJlbmRlclN0eWxl
OjpnZXRSb3VuZGVkQm9yZGVyRm9yKCkgYW5kIFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJC
b3JkZXJXaXRoQm9yZGVyV2lkdGhzKCkKKyAgICAgICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0IGFu
ZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcCgpLCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdCgpCisgICAgICAgIGFuZCBvdGhlciBmdW5jdGlvbnMgYWNjZXB0IFJv
dW5kZWRJbnRSZWN0IGFzIGFuIGFyZ3VtZW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8g
YmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Sb3VuZGVkSW50UmVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRl
ZEludFJlY3Q6OlJhZGlpOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJl
Y3Q6OlJhZGlpOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFk
aWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6Omlu
Y2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OlJh
ZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRS
ZWN0OjpSb3VuZGVkSW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6
aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6
ZXhjbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZEludFJlY3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFk
aWk6OlJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2V0
VG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnNldFRv
cFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2V0Qm90
dG9tTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnNldEJv
dHRvbVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6dG9w
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnRvcFJpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6Ym90dG9tTGVmdCk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmJvdHRvbVJpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2hyaW5rKToKKyAgICAgICAgKFdl
YkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJ
bnRSZWN0OjpyYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6aXNSb3Vu
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0Ojppc0VtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpzZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJvdW5kZWRJbnRSZWN0OjpzZXRSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50
UmVjdDo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6aW5mbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaENvbnRl
bnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVQb2x5Z29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGV4dEZp
ZWxkSW50ZXJuYWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNr
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2sp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRh
dGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY1JhZGlpRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNDb25zdHJh
aW50U2NhbGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRC
b3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5l
ckJvcmRlcldpdGhCb3JkZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJvcmRlclJh
ZGl1cyk6CisKIDIwMTAtMTAtMTAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4M2U1
NWQ0NmQ3Yzk2OTM3M2E2MWFiODc1ZTkxOGUwNDgxNzVmNjkwLi42NmE3YzU2Y2YxOWYxNDBmMjBk
MWZkM2Y0YWJjOGQ5YjAxNGY3ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yOTM0LDYgKzI5MzQs
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL1JvdW5kZWRJbnRSZWN0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L1NlZ21lbnRlZEZvbnREYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
U2VnbWVudGVkRm9udERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvU2lt
cGxlRm9udERhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjdjZDU4MjI3MTIxNTA3NDU5ZDQ0
NmZkZWY3MWM4NmE5NmQ1NDA0OS4uMjU1Y2QzOGQ1ZjRlYTBlMDJhODQ0ZjM4Mjg5MmYyNGRkYjU5
NDZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEyMDYsNiArMTIwNiw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNw
cCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuY3BwIFwKQEAgLTIxMjEsNiArMjEyMiw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZl
cnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYzM4ZjgyZGU1ZGMxM2EzMWNkNDQ4N2UwOTc4OTc1MmY4MTUyOGM5YS4uNmQ5MjVk
MmFkY2FlMDk1NTVkYTM2NzdhZmNiMzVjZmU5ZjI1YjNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE1MCw2ICszMTUwLDgg
QEAKIAkJQTYyMkE4RkYxMjJDNDRBNjAwQTc4NUIzIC8qIEdlbmVyaWNCaW5kaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNjIyQThGOTEyMkM0NEE2
MDBBNzg1QjMgLyogR2VuZXJpY0JpbmRpbmcuaCAqLzsgfTsKIAkJQTcxODc2MEUwQjJBMTIwMTAw
QTE2RUNFIC8qIERyYWdBY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzE4Nzg5
MDBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0Ug
LyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi87IH07CisJCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFG
OSAvKiBSb3VuZGVkSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3Qu
Y3BwICovOyB9OworCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZE
MTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAv
KiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNzVFNDk3NzEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU0OTc1
MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovOyB9OwogCQlB
NzVFOEI4ODBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4MDBFMURFMkQ2MDA3RjI0ODEgLyog
RkVCbGVuZC5jcHAgKi87IH07CkBAIC05NTAxLDYgKzk1MDMsOCBAQAogCQlBNzE4NzYwRDBCMkEx
MjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc4
OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUE3MEM5MTFBRkIwMjAwMDk4OUQ2RCAvKiBIVE1MTWV0
ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWV0ZXJFbGVtZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5
IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJvdW5kZWRJbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcz
Rjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5
Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc1RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRkVCbGVuZC5jcHA7IHBhdGggPSBm
aWx0ZXJzL0ZFQmxlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0MDcs
NiArMTc0MTEsOCBAQAogCQkJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRoVHJhdmVy
c2FsU3RhdGUuaCAqLywKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5j
cHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKKwkJ
CQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICovLAorCQkJ
CUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovLAogCQkJCTM3
MUY0RkZCMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi8sCiAJCQkJ
MzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8sCiAJCQkJ
QjJDM0RBNTMwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLywKQEAgLTIx
NjY2LDYgKzIxNjcyLDcgQEAKIAkJCQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
SW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzREQTM3MTAxM0YzRjcwMDc5ODdB
RCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTEwQTE1NUEwNTAwMEE0
MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAorCQkJCUE3M0Y5NUZGMTJDOTdC
RkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEx
QzkwRUY4NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUM2M0EyNDgwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMUYwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJy
YXkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ0NTIsNiArMjQ0NTksNyBAQAogCQkJCUZEMzE2MEFD
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzc0REEzODEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThDRkY1RTcwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRS
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUM4MEVGODZENDcwMDlEMENBRiAvKiBS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2M0EyNDkw
RjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKaW5kZXggNjFiNzc4YzcyYjJhYjg3NzBlMDQzYWI0Yjc4NmViMDFlNjAwMTAw
Yi4uZTdlYTg4MTMwNTYxOGFmOTQxNWNiZmVlYzliODZmZTBhZmY5YWUxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUm91bmRlZEludFJlY3Qu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTM2LDI1ICs1MzcsMjMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclMKICAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNw
YWNlLCBkZXN0LCBzcmMsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LAotICAgIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBSb3VuZGVkSW50UmVjdCYgcmVj
dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBQYXRoIHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
cmVjdC5yZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdo
dCgpLCByZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQo
KSk7CiAgICAgY2xpcChwYXRoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRS
b3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBj
b25zdCBJbnRTaXplJiB0b3BSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJl
Y3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgcGF0
aC5hZGRSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwgcmVjdC5yYWRpaSgpLnRvcExlZnQoKSwgcmVj
dC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCksIHJlY3QucmFk
aWkoKS5ib3R0b21SaWdodCgpKTsKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCkBAIC01ODUsNiAr
NTg0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIEdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIGdlbmVyYXRvci5maWxsKHRoaXMsIHJl
Y3QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRJbnRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3sKKyAgICBmaWxsUm91bmRlZFJlY3QocmVjdC5yZWN0KCksIHJlY3QucmFkaWkoKS50
b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdodCgpLCByZWN0LnJhZGlpKCkuYm90dG9tTGVm
dCgpLCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworfQor
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbikKIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4NTg4NTIzYWI3MWYxZWU5MmNlOTNj
ZDVkOTNkODRjMzhjYjJlMzQwLi5hNDU5YjM3Y2JkZGRjMWEwNTYzNTVlY2RhNzBjNjk1MmJkOTE1
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMTIwLDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiAgICAgY2xhc3MgSW1hZ2VCdWZm
ZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBSb3VuZGVkSW50UmVjdDsKICAgICBj
bGFzcyBLVVJMOwogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogICAgIGNsYXNz
IFRleHRSdW47CkBAIC0yODIsNiArMjgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR2VuZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90
dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0
JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzEwLDEwICszMTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpOwotICAg
ICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRv
bUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgdm9pZCBhZGRSb3Vu
ZGVkUmVjdENsaXAoY29uc3QgUm91bmRlZEludFJlY3QmKTsKICAgICAgICAgdm9pZCBhZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CiAgICAgICAg
IHZvaWQgY2xpcE91dChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xpcE91dFJvdW5k
ZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRT
aXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpOworICAgICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBSb3Vu
ZGVkSW50UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29u
c3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7CiAgICAgICAgIHZvaWQgY2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZTgwYzlhZTEzMmE4MDg4ZmNkYmIzMzE5ZDgwMDg2NWE1MDU0MjAzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJl
Y3QuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSb3VuZGVkSW50UmVjdC5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJv
dW5kZWRJbnRSZWN0OjpSYWRpaTo6aXNaZXJvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BM
ZWZ0LmlzWmVybygpICYmIG1fdG9wUmlnaHQuaXNaZXJvKCkgJiYgbV9ib3R0b21MZWZ0LmlzWmVy
bygpICYmIG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7Cit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6
OlJhZGlpOjpzY2FsZShmbG9hdCBmYWN0b3IpCit7CisgICAgaWYgKGZhY3RvciA9PSAxKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29t
ZXMgemVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KKyAgICBtX3RvcExlZnQu
c2NhbGUoZmFjdG9yKTsKKyAgICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpIHx8ICFtX3RvcExlZnQu
aGVpZ2h0KCkpCisgICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKKyAgICBtX3RvcFJpZ2h0
LnNjYWxlKGZhY3Rvcik7CisgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkgfHwgIW1fdG9wUmln
aHQuaGVpZ2h0KCkpCisgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgbV9ib3R0
b21MZWZ0LnNjYWxlKGZhY3Rvcik7CisgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgoKSB8fCAh
bV9ib3R0b21MZWZ0LmhlaWdodCgpKQorICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7
CisgICAgbV9ib3R0b21SaWdodC5zY2FsZShmYWN0b3IpOworICAgIGlmICghbV9ib3R0b21SaWdo
dC53aWR0aCgpIHx8ICFtX2JvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICBtX2JvdHRvbVJp
Z2h0ID0gSW50U2l6ZSgpOworCit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlpOjpleHBh
bmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdo
dFdpZHRoKQoreworICAgIG1fdG9wTGVmdC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX3RvcExlZnQu
d2lkdGgoKSArIGxlZnRXaWR0aCkpOworICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3RkOjptYXgo
MCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKworICAgIG1fdG9wUmlnaHQuc2V0
V2lkdGgoc3RkOjptYXgoMCwgbV90b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAg
IG1fdG9wUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0
b3BXaWR0aCkpOworCisgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4KDAsIG1fYm90
dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV9ib3R0b21MZWZ0LnNldEhlaWdo
dChzdGQ6Om1heCgwLCBtX2JvdHRvbUxlZnQuaGVpZ2h0KCkgKyBib3R0b21XaWR0aCkpOworCisg
ICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX2JvdHRvbVJpZ2h0LndpZHRo
KCkgKyByaWdodFdpZHRoKSk7CisgICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQoc3RkOjptYXgo
MCwgbV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Cit9CisKK3ZvaWQgUm91
bmRlZEludFJlY3Q6OlJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJvdW5kZWRJbnRS
ZWN0OjpSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAgaWYgKGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAg
ICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxlZnQoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJpZ2h0KCk7CisgICAgICAgIG1fdG9wTGVm
dCA9IGVkZ2VzLnRvcExlZnQoKTsKKyAgICB9CisKKyAgICBpZiAoaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fdG9wUmln
aHQgPSBlZGdlcy50b3BSaWdodCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2JvdHRv
bUxlZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBlZGdl
cy5ib3R0b21SaWdodCgpOworICAgIH0KK30KKwordm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6
OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sKKyAgICBpZiAoZXhj
bHVkZUxvZ2ljYWxMZWZ0RWRnZSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAg
ICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICBtX3RvcExlZnQgPSBJbnRTaXplKCk7
CisgICAgfQorICAgICAgICAKKyAgICBpZiAoZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKKyAg
ICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXpl
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsK
KyAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICB9Cit9CisKK1JvdW5kZWRJ
bnRSZWN0OjpSb3VuZGVkSW50UmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo
dCkKKyAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQoreworfQorCitSb3VuZGVkSW50
UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJh
ZGlpKQorICAgIDogbV9yZWN0KHJlY3QpCisgICAgLCBtX3JhZGlpKHJhZGlpKQoreworfQorCitS
b3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
SW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgIDogbV9yZWN0KHJl
Y3QpCisgICAgLCBtX3JhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21S
aWdodCkKK3sKK30KKwordm9pZCBSb3VuZGVkSW50UmVjdDo6aW5jbHVkZUxvZ2ljYWxFZGdlcyhj
b25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAgbV9yYWRpaS5p
bmNsdWRlTG9naWNhbEVkZ2VzKGVkZ2VzLCBpc0hvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKK30KKwordm9pZCBSb3VuZGVkSW50UmVj
dDo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9n
aWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQoreworICAgIG1fcmFk
aWkuZXhjbHVkZUxvZ2ljYWxFZGdlcyhpc0hvcml6b250YWwsIGV4Y2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZElu
dFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzE4MmIyYzBlMDYzYWNhNDIyNzVkODZkZTdlZDI5Zjk5NzMwZDRkYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRJbnRSZWN0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
b3VuZGVkSW50UmVjdF9oCisjZGVmaW5lIFJvdW5kZWRJbnRSZWN0X2gKKworI2luY2x1ZGUgIklu
dFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisKK2NsYXNzIFJvdW5kZWRJbnRSZWN0
IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBSYWRpaSB7CisgICAgcHVibGljOgorICAgICAgICBSYWRp
aSgpIHt9CisgICAgICAgIFJhZGlpKGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBi
b3R0b21SaWdodCkKKyAgICAgICAgICAgIDogbV90b3BMZWZ0KHRvcExlZnQpCisgICAgICAgICAg
ICAsIG1fdG9wUmlnaHQodG9wUmlnaHQpCisgICAgICAgICAgICAsIG1fYm90dG9tTGVmdChib3R0
b21MZWZ0KQorICAgICAgICAgICAgLCBtX2JvdHRvbVJpZ2h0KGJvdHRvbVJpZ2h0KQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgSW50U2l6ZSYg
c2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQorICAgICAgICB2b2lkIHNl
dEJvdHRvbUxlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9
CisgICAgICAgIHZvaWQgc2V0Qm90dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2Jv
dHRvbVJpZ2h0ID0gc2l6ZTsgfQorICAgICAgICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9CisgICAgICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQorICAgICAgICBjb25zdCBJbnRTaXplJiBi
b3R0b21MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgICAgIGNvbnN0
IEludFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQor
CisgICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCBpbmNsdWRlTG9n
aWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAg
ICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKworICAg
ICAgICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7CisgICAgICAgIHZvaWQgZXhwYW5kKGludCB0
b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCk7
CisgICAgICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7IGV4cGFuZChzaXplLCBzaXplLCBzaXpl
LCBzaXplKTsgfQorICAgICAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGludCBib3R0b21X
aWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwg
LWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KKyAgICAgICAgdm9pZCBz
aHJpbmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBJbnRTaXplIG1fdG9wTGVmdDsKKyAgICAgICAgSW50U2l6ZSBt
X3RvcFJpZ2h0OworICAgICAgICBJbnRTaXplIG1fYm90dG9tTGVmdDsKKyAgICAgICAgSW50U2l6
ZSBtX2JvdHRvbVJpZ2h0OworICAgIH07CisKKyAgICBleHBsaWNpdCBSb3VuZGVkSW50UmVjdChj
b25zdCBJbnRSZWN0JiwgY29uc3QgUmFkaWkmID0gUmFkaWkoKSk7CisgICAgUm91bmRlZEludFJl
Y3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIFJvdW5kZWRJbnRS
ZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXpl
JiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90
dG9tUmlnaHQpOworCisgICAgY29uc3QgSW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdDsgfQorICAgIGNvbnN0IFJhZGlpJiByYWRpaSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaWk7
IH0KKyAgICBib29sIGlzUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JhZGlpLmlzWmVybygp
OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmlzRW1wdHkoKTsg
fQorCisgICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVj
dDsgfQorICAgIHZvaWQgc2V0UmFkaWkoY29uc3QgUmFkaWkmIHJhZGlpKSB7IG1fcmFkaWkgPSBy
YWRpaTsgfQorCisgICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUgc2l6ZSkgeyBtX3JlY3QubW92
ZShzaXplKTsgfQorICAgIHZvaWQgaW5mbGF0ZShpbnQgc2l6ZSkgeyBtX3JlY3QuaW5mbGF0ZShz
aXplKTsgIH0KKyAgICB2b2lkIGluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpIHsgbV9yZWN0Lmlu
ZmxhdGUoc2l6ZSk7IG1fcmFkaWkuZXhwYW5kKHNpemUpOyB9CisgICAgdm9pZCBleHBhbmRSYWRp
aShpbnQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsgfQorICAgIHZvaWQgc2hyaW5rUmFk
aWkoaW50IHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7IH0KKworICAgIHZvaWQgaW5jbHVk
ZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29s
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwor
ICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKworcHJp
dmF0ZToKKyAgICBJbnRSZWN0IG1fcmVjdDsKKyAgICBSYWRpaSBtX3JhZGlpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUm91bmRlZEludFJlY3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1ZGU5OGU3MTE4MDg4MTc2OGIyZWQ2
ZmI5MjAzN2M2NTdmYTI5ZGE3Li45MzIyNDAyMmViMzkwNzI2NzkwYmU1YTY2NzJiNjAyMGY0NzE5
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTA2MiwxNCAr
MTA2Miw4IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICB9CiAgICAgSW50UmVjdCBjbGlwUmVjdChpc0Nv
bnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KHR4LCB0eSkgOiBvdmVyZmxvd0NsaXBSZWN0KHR4
LCB0eSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgaWYgKHN0eWxlKCkt
Pmhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICBJbnRSZWN0IGJvcmRlclJlY3QgPSBJ
bnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotICAgICAgICBzdHlsZSgpLT5nZXRC
b3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxl
ZnQsIGJvdHRvbVJpZ2h0KTsKLQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRl
ZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7Ci0gICAgfQotICAgIAorICAgIGlmIChzdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMo
KSkKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChzdHlsZSgp
LT5nZXRSb3VuZGVkQm9yZGVyRm9yKEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSkp
KTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCA1MDk4MzA2YWUxZmNjZTQ3OGMwMDNkOTJjYzIwZTEzMjFlODI3NTI1Li4y
NTBkYWNlNGIwNzZhMDFjMjM0ZWMzZmVhZDMyZTNmMTNkODYzNzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTU0NywyNiAr
NTQ3LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICBjb250ZXh0LT5zYXZl
KCk7CiAKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQ7Ci0gICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJS
ZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAg
ICAgIGlmICghaW5jbHVkZUxlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0b3BMZWZ0ID0gSW50U2l6
ZSgpOwotICAgICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9udGFsKCkpCi0gICAgICAgICAgICAg
ICAgYm90dG9tTGVmdCA9IEludFNpemUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKCFpbmNsdWRlUmlnaHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoYm94LT5pc0hvcml6b250
YWwoKSkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgICAgICAg
ICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICBSb3VuZGVkSW50UmVjdCBib3Jk
ZXIgPSBzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpOworICAgICAgICBi
b3JkZXIuZXhjbHVkZUxvZ2ljYWxFZGdlcyhib3gtPmlzSG9yaXpvbnRhbCgpLCAhaW5jbHVkZUxl
ZnRFZGdlLCAhaW5jbHVkZVJpZ2h0RWRnZSk7CisgICAgICAgIGNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChib3JkZXIpOwogICAgICAgICBjbGlwcGVkVG9Cb3JkZXJSYWRpdXMgPSB0cnVlOwog
ICAgIH0KIApAQCAtMTAyNCw2MiArMTAwNywzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAog
ICAgIGJvb2wgcmVuZGVyUmlnaHQgPSByaWdodFN0eWxlID4gQkhJRERFTiAmJiAhcmlnaHRUcmFu
c3BhcmVudCAmJiAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAg
IGJvb2wgcmVuZGVyQm90dG9tID0gYm90dG9tU3R5bGUgPiBCSElEREVOICYmICFib3R0b21UcmFu
c3BhcmVudCAmJiAoaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKLSAg
ICBib29sIHJlbmRlclJhZGlpID0gZmFsc2U7CiAgICAgUGF0aCByb3VuZGVkUGF0aDsKLSAgICBJ
bnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICBJ
bnRSZWN0IGJvcmRlclJlY3QodHgsIHR5LCB3LCBoKTsKKyAgICBSb3VuZGVkSW50UmVjdCBib3Jk
ZXIodHgsIHR5LCB3LCBoKTsKIAogICAgIGlmIChzdHlsZS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsK
LSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVm
dFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRCb3JkZXJSYWRp
aUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRv
bUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgYm9yZGVyLmluY2x1ZGVM
b2dpY2FsRWRnZXMoc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyLnJlY3QoKSkucmFk
aWkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbCwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAg
IGludCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkg
PyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwogICAgICAgICBpbnQgcmlnaHRXaWR0aCA9
ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBzdHlsZS0+Ym9yZGVy
UmlnaHRXaWR0aCgpIDogMDsKICAgICAgICAgaW50IHRvcFdpZHRoID0gKGhvcml6b250YWwgfHwg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA6IDA7CiAg
ICAgICAgIGludCBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKSA/IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDogMDsKIAotICAgICAgICBJbnRS
ZWN0IGlubmVyQm9yZGVyUmVjdCA9IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCB0b3BXaWR0
aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7Ci0gICAgICAgIEludFNpemUg
aW5uZXJUb3BMZWZ0UmFkaXVzLCBpbm5lclRvcFJpZ2h0UmFkaXVzLCBpbm5lckJvdHRvbUxlZnRS
YWRpdXMsIGlubmVyQm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIAotICAgICAgICBzdHlsZS0+
Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGlubmVyQm9yZGVyUmVj
dCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGlubmVyVG9w
TGVmdFJhZGl1cywgaW5uZXJUb3BSaWdodFJhZGl1cywgaW5uZXJCb3R0b21MZWZ0UmFkaXVzLCBp
bm5lckJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgICAgICBJbnRTaXplIGlubmVyVG9wTGVmdCwg
aW5uZXJUb3BSaWdodCwgaW5uZXJCb3R0b21MZWZ0LCBpbm5lckJvdHRvbVJpZ2h0OwotCi0gICAg
ICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0b3BMZWZ0ID0g
dG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlubmVyVG9wTGVmdCA9IGlubmVyVG9wTGVmdFJh
ZGl1czsKLSAgICAgICAgICAgIGlmIChob3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAgICAgYm90
dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJCb3R0b21M
ZWZ0ID0gaW5uZXJCb3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlu
bmVyVG9wUmlnaHQgPSBpbm5lclRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgICAg
ICBpZiAoaG9yaXpvbnRhbCkgewotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9wUmlnaHRS
YWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJUb3BSaWdodCA9IGlubmVyVG9wUmlnaHRSYWRp
dXM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBi
b3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlubmVyQm90dG9tTGVmdCA9IGlubmVy
Qm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0
ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICBpbm5lckJvdHRvbVJpZ2h0ID0gaW5u
ZXJCb3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQorICAgICAgICBSb3VuZGVkSW50UmVjdCBp
bm5lcihib3JkZXJJbm5lclJlY3QoYm9yZGVyLnJlY3QoKSwgdG9wV2lkdGgsIGJvdHRvbVdpZHRo
LCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpKTsKKyAgICAgICAgaW5uZXIuaW5jbHVkZUxvZ2ljYWxF
ZGdlcyhzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRocyhpbm5lci5y
ZWN0KCksIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRoKS5yYWRp
aSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwsIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgICAgICBy
ZW5kZXJSYWRpaSA9ICF0b3BMZWZ0LmlzWmVybygpIHx8ICF0b3BSaWdodC5pc1plcm8oKSB8fCAh
Ym90dG9tTGVmdC5pc1plcm8oKSB8fCAhYm90dG9tUmlnaHQuaXNaZXJvKCk7Ci0gICAgICAgIAot
ICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgaWYgKGJvcmRlci5pc1JvdW5kZWQo
KSkgewogICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5uZXIgYW5kIG91dGVyIHJhZGlpIHJl
Y3RzLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0
b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXJSZWN0LCBpbm5lclRvcExlZnQs
IGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5uZXJCb3R0b21SaWdodCk7Ci0gICAg
ICAgICAgICByb3VuZGVkUGF0aC5hZGRSb3VuZGVkUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0
b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKKyAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyKTsKKyAgICAgICAgICAgIHJvdW5kZWRQ
YXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlci5yZWN0KCksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQo
KSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgp
LCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKICAgICAgICAgfQogICAgIH0KIAorICAg
IGJvb2wgcmVuZGVyUmFkaWkgPSBib3JkZXIuaXNSb3VuZGVkKCk7CiAgICAgYm9vbCB1cHBlckxl
ZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRvcFN0eWxlID09IGxlZnRTdHls
ZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9vbCB1cHBlclJpZ2h0Qm9yZGVy
U3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUgPT0gcmlnaHRTdHlsZSkgJiYg
KHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAhPSBPVVRTRVQpICYmICh0b3BT
dHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAmJiAodG9wU3R5bGUgIT0gR1JP
T1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyTGVmdCAm
JiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9y
KSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gUklER0UpICYm
IChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IEdST09WRSk7CkBAIC0x
MDg5LDExICsxMDQyLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVy
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB4
ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVuZGVyUmFk
aWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZSh0b3BMZWZ0LCB0b3BSaWdodCwgc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJ
bm5lckVkZ2UoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdo
dCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCks
IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQsIEJTVG9wLCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgdXBwZXJSaWdodEJvcmRlclN0
eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29u
dGV4dCwgYm9yZGVyLCBCU1RvcCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIHVwcGVyUmln
aHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heCht
YXgoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSksIHN0
eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0
aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSwgdGhpY2tuZXNzLCBCU1RvcCwgc3R5bGUsIHRvcENvbG9yLCB0b3BTdHlsZSk7
CisgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
LnJlY3QoKSwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0aGlja25lc3Ms
IEJTVG9wLCBzdHlsZSwgdG9wQ29sb3IsIHRvcFN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBp
Z25vcmVMZWZ0ID0gKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBs
ZWZ0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUCkBAIC0xMTEwLDExICsxMDYzLDEx
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAgICAg
IGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2ls
bEFyY0lubmVyRWRnZShib3R0b21MZWZ0LCBib3R0b21SaWdodCwgc3R5bGUtPmJvcmRlckxlZnRX
aWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lk
dGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVk
Z2UoYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdo
dCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCks
IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3ND
b250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQsIEJTQm90dG9tLCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJSaWdodEJv
cmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBo
aWNzQ29udGV4dCwgYm9yZGVyLCBCU0JvdHRvbSwgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gs
IGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVz
cyA9IG1heChtYXgoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0
V2lkdGgoKSksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAgICAgZHJhd0Jv
eFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgdGhpY2tuZXNzLCBCU0JvdHRvbSwgc3R5bGUsIGJv
dHRvbUNvbG9yLCBib3R0b21TdHlsZSk7CisgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRo
KGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLnJlY3QoKSwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpLCB0aGlja25lc3MsIEJTQm90dG9tLCBzdHlsZSwgYm90dG9tQ29sb3Is
IGJvdHRvbVN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKGJvdHRvbUNv
bG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQg
JiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUCkBAIC0xMTMzLDExICsxMDg2LDExIEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB5ID0gdHk7CiAgICAgICAgIGludCB5MiA9IHR5
ICsgaDsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRn
ZShib3R0b21MZWZ0LCB0b3BMZWZ0LCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUt
PmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSkpIHsKKyAgICAgICAg
aWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9yZGVyLnJhZGlpKCku
Ym90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0
aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAg
ICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTTGVmdCwgdXBwZXJMZWZ0
Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAg
ICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLCBCU0xlZnQs
IHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwg
c3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
ICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRlckxlZnRX
aWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKLSAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB0aGlja25l
c3MsIEJTTGVmdCwgc3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0eWxlKTsKKyAgICAgICAgICAgIGRy
YXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXIucmVjdCgpLCByb3VuZGVk
UGF0aCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB0aGlja25lc3MsIEJTTGVmdCwgc3R5bGUs
IGxlZnRDb2xvciwgbGVmdFN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVz
dG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBpZ25vcmVUb3AgPSAo
dG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVu
dCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUCkBAIC0xMTUyLDExICsxMTA1LDExIEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYgKHJlbmRlclJpZ2h0KSB7Ci0gICAgICAg
IGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvdHRvbVJpZ2h0LCB0
b3BSaWdodCwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKSkgeworICAgICAgICBpZiAocmVuZGVyUmFk
aWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgp
LCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwg
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpKSB7CiAg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGNsaXBCb3Jk
ZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJp
Z2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNSaWdodCwgdXBwZXJSaWdodEJvcmRlclN0
eWxlc01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgICAgICBjbGlw
Qm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXIsIEJTUmlnaHQsIHVwcGVy
UmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHls
ZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAg
ICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
KTsKLSAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3Jk
ZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgdGhpY2tuZXNz
LCBCU1JpZ2h0LCBzdHlsZSwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSk7CisgICAgICAgICAgICBk
cmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLnJlY3QoKSwgcm91bmRl
ZFBhdGgsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHRoaWNrbmVzcywgQlNSaWdodCwgc3R5
bGUsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5yZXN0b3JlKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBib29sIGlnbm9yZVRv
cCA9ICgodG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRvcFRyYW5zcGFyZW50ID09IHJpZ2h0
VHJhbnNwYXJlbnQpCkBAIC0xMjA5LDY1ICsxMTYyLDQzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQg
dHgsCiAgICAgYm9vbCByZW5kZXJSaWdodCA9IHJpZ2h0U3R5bGUgPiBCSElEREVOICYmICFyaWdo
dFRyYW5zcGFyZW50ICYmICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAgICAgYm9vbCByZW5kZXJCb3R0b20gPSBib3R0b21TdHlsZSA+IEJISURERU4gJiYgIWJvdHRv
bVRyYW5zcGFyZW50ICYmIChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
IAotICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBmYWxzZTsKLSAgICBJbnRTaXplIHRvcExlZnQsIHRv
cFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKIAorICAgIFJvdW5kZWRJbnRSZWN0IGJv
cmRlcih0eCwgdHksIHcsIGgpOwogICAgIGlmIChzdHlsZS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsK
LSAgICAgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gSW50UmVjdCh0eCwgdHksIHcsIGgpOwotCi0g
ICAgICAgIEludFNpemUgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRS
YWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICBzdHlsZS0+Z2V0Qm9yZGVyUmFkaWlG
b3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UpIHsKLSAgICAgICAgICAgIHRvcExlZnQgPSB0b3BMZWZ0UmFkaXVzOwotICAg
ICAgICAgICAgaWYgKGhvcml6b250YWwpCi0gICAgICAgICAgICAgICAgYm90dG9tTGVmdCA9IGJv
dHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdG9wUmln
aHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoaG9yaXpvbnRhbCkKLSAg
ICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAg
ICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJlbmRlclJhZGlpID0gIXRvcExlZnQuaXNaZXJvKCkgfHwgIXRvcFJpZ2h0LmlzWmVybygp
IHx8ICFib3R0b21MZWZ0LmlzWmVybygpIHx8ICFib3R0b21SaWdodC5pc1plcm8oKTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgLy8gQ2xpcCB0byB0
aGUgcm91bmRlZCByZWN0YW5nbGUuCisgICAgICAgIGJvcmRlci5pbmNsdWRlTG9naWNhbEVkZ2Vz
KHN0eWxlLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlci5yZWN0KCkpLnJhZGlpKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwsIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgaWYgKCFib3JkZXIu
aXNaZXJvKCkpIHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlcik7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBpbnQgZmlyc3RBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVN0YXJ0LCBmaXJzdEFu
Z2xlU3Bhbiwgc2Vjb25kQW5nbGVTcGFuOwogICAgIGZsb2F0IHRoaWNrbmVzczsKKyAgICBib29s
IHJlbmRlclJhZGlpID0gYm9yZGVyLmlzUm91bmRlZCgpOwogICAgIGJvb2wgdXBwZXJMZWZ0Qm9y
ZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJMZWZ0ICYmICh0b3BTdHlsZSA9PSBsZWZ0U3R5bGUpICYm
ICh0b3BDb2xvciA9PSBsZWZ0Q29sb3IpOwogICAgIGJvb2wgdXBwZXJSaWdodEJvcmRlclN0eWxl
c01hdGNoID0gcmVuZGVyUmlnaHQgJiYgKHRvcFN0eWxlID09IHJpZ2h0U3R5bGUpICYmICh0b3BD
b2xvciA9PSByaWdodENvbG9yKSAmJiAodG9wU3R5bGUgIT0gT1VUU0VUKSAmJiAodG9wU3R5bGUg
IT0gUklER0UpICYmICh0b3BTdHlsZSAhPSBJTlNFVCkgJiYgKHRvcFN0eWxlICE9IEdST09WRSk7
CiAgICAgYm9vbCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKGJv
dHRvbVN0eWxlID09IGxlZnRTdHlsZSkgJiYgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvcikgJiYg
KGJvdHRvbVN0eWxlICE9IE9VVFNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IFJJREdFKSAmJiAoYm90
dG9tU3R5bGUgIT0gSU5TRVQpICYmIChib3R0b21TdHlsZSAhPSBHUk9PVkUpOwogICAgIGJvb2wg
bG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyUmlnaHQgJiYgKGJvdHRvbVN0eWxl
ID09IHJpZ2h0U3R5bGUpICYmIChib3R0b21Db2xvciA9PSByaWdodENvbG9yKTsKIAogICAgIGlm
IChyZW5kZXJUb3ApIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAm
JiB0b3BMZWZ0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAgKHRvcENvbG9yID09IGxlZnRD
b2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0g
T1VUU0VUICYmCi0gICAgICAgICAgICAgKGxlZnRTdHlsZSA9PSBET1RURUQgfHwgbGVmdFN0eWxl
ID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQgfHwgbGVmdFN0eWxlID09IE9VVFNFVCkp
OwotCi0gICAgICAgIGJvb2wgaWdub3JlX3JpZ2h0ID0gKHJlbmRlclJhZGlpICYmIHRvcFJpZ2h0
LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IgJiYg
dG9wVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCAmJiB0b3BTdHlsZSA+PSBPVVRTRVQg
JiYKLSAgICAgICAgICAgICAocmlnaHRTdHlsZSA9PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBE
QVNIRUQgfHwgcmlnaHRTdHlsZSA9PSBTT0xJRCB8fCByaWdodFN0eWxlID09IElOU0VUKSk7Cisg
ICAgICAgIGJvb2wgaWdub3JlTGVmdCA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIucmFkaWkoKS50
b3BMZWZ0KCkud2lkdGgoKSA+IDApCisgICAgICAgICAgICB8fCAodG9wQ29sb3IgPT0gbGVmdENv
bG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiB0b3BTdHlsZSA+PSBP
VVRTRVQKKyAgICAgICAgICAgICAgICAmJiAobGVmdFN0eWxlID09IERPVFRFRCB8fCBsZWZ0U3R5
bGUgPT0gREFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0gT1VUU0VU
KSk7CisgICAgICAgIAorICAgICAgICBib29sIGlnbm9yZVJpZ2h0ID0gKHJlbmRlclJhZGlpICYm
IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSA+IDApCisgICAgICAgICAgICB8fCAo
dG9wQ29sb3IgPT0gcmlnaHRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFy
ZW50ICYmIHRvcFN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxl
ID09IERPVFRFRCB8fCByaWdodFN0eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElE
IHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeCA9IHR4OwogICAgICAg
ICBpbnQgeDIgPSB0eCArIHc7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAg
ICAgeCArPSB0b3BMZWZ0LndpZHRoKCk7Ci0gICAgICAgICAgICB4MiAtPSB0b3BSaWdodC53aWR0
aCgpOworICAgICAgICAgICAgeCArPSBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsK
KyAgICAgICAgICAgIHgyIC09IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgs
IHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRvcENvbG9yLCB0
b3BTdHlsZSwKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCksIGlnbm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpKTsKKyAgICAgICAgICAgICAgICAgICBpZ25vcmVMZWZ0ID8gMCA6IHN0eWxlLT5ib3JkZXJM
ZWZ0V2lkdGgoKSwgaWdub3JlUmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7
CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CiAgICAgICAgICAgICBpbnQgbGVmdFkgPSB0
eTsKQEAgLTEyNzcsMTUgKzEyMDgsMTUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAg
ICAgICAgIC8vIHdpdGggdGhlIGFyYy1kcmF3aW5nIGZ1bmN0aW9uLgogICAgICAgICAgICAgdGhp
Y2tuZXNzID0gc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAo
dG9wTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyLnJhZGlpKCkudG9wTGVm
dCgpLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICBpbnQgbGVmdFggPSB0eDsKICAgICAgICAg
ICAgICAgICAvLyBUaGUgaW5uZXIgY2xpcCBjbGlwcyBpbnNpZGUgdGhlIGFyYy4gVGhpcyBpcyBl
c3BlY2lhbGx5IGltcG9ydGFudCBmb3IgMXB4IGJvcmRlcnMuCi0gICAgICAgICAgICAgICAgYm9v
bCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgdG9wTGVm
dC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRo
KCkgPCB0b3BMZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5u
ZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcExl
ZnQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdp
ZHRoKCkgPCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICYmICh0b3BTdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkg
PiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobGVmdFgs
IGxlZnRZLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0LmhlaWdodCgpICogMiksCisgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAo
SW50UmVjdChsZWZ0WCwgbGVmdFksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpICog
MiwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTI5MywyMCArMTIyNCwy
MCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVT
cGFuID0gdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPyA5MCA6IDQ1OwogCiAgICAgICAgICAg
ICAgICAgLy8gRHJhdyB1cHBlciBsZWZ0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgbGVmdFgsIGxlZnRZLCB0aGlja25lc3MsIHRvcExlZnQs
IGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJhd0Fy
Y0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm9y
ZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwg
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmICh0b3BSaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50
IHJpZ2h0WCA9IHR4ICsgdyAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyOwotICAgICAgICAgICAgICAg
IGJvb2wgYXBwbHlSaWdodElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwg
dG9wUmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpIDwgdG9wUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoYm9yZGVyLnJh
ZGlpKCkudG9wUmlnaHQoKS53aWR0aCgpKSB7CisgICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9
IHR4ICsgdyAtIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSAqIDI7CisgICAgICAg
ICAgICAgICAgYm9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkgPCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLndpZHRoKCkpCisgICAgICAgICAgICAg
ICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcFJp
Z2h0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmICh0b3BTdHlsZSAhPSBET1VC
TEUgfHwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAo
YXBwbHlSaWdodElubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHJpZ2h0WCwgbGVmdFksIHRvcFJpZ2h0LndpZHRoKCkg
KiAyLCB0b3BSaWdodC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCBsZWZ0WSwg
Ym9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0aCgpICogMiwgYm9yZGVyLnJhZGlpKCkudG9w
UmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKTsKICAg
ICAgICAgICAgICAgICB9CiAKQEAgLTEzMTksNyArMTI1MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB1cHBl
ciByaWdodCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIHNlY29uZEFuZ2xlU3Rh
cnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgYm9yZGVyLnJhZGlpKCku
dG9wUmlnaHQoKSwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwgZmFsc2UpOwog
ICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEzMjgsMzYgKzEyNTksMzYgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICB9CiAKICAgICBpZiAocmVuZGVyQm90dG9tKSB7
Ci0gICAgICAgIGJvb2wgaWdub3JlX2xlZnQgPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tTGVmdC53
aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAgIChib3R0b21Db2xvciA9PSBsZWZ0Q29sb3IgJiYg
Ym90dG9tVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGJvdHRvbVN0eWxlID49IE9V
VFNFVCAmJgotICAgICAgICAgICAgIChsZWZ0U3R5bGUgPT0gRE9UVEVEIHx8IGxlZnRTdHlsZSA9
PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRTdHlsZSA9PSBPVVRTRVQpKTsK
KyAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci5yYWRpaSgp
LmJvdHRvbUxlZnQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHx8IChib3R0b21Db2xvciA9
PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIGJv
dHRvbVN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgPT0gRE9U
VEVEIHx8IGxlZnRTdHlsZSA9PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRT
dHlsZSA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9yZV9yaWdodCA9IChyZW5kZXJS
YWRpaSAmJiBib3R0b21SaWdodC53aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAgIChib3R0b21D
b2xvciA9PSByaWdodENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJl
bnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKHJpZ2h0U3R5bGUg
PT0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQg
fHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkpOworICAgICAgICBib29sIGlnbm9yZVJpZ2h0ID0gKHJl
bmRlclJhZGlpICYmIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSA+IDApCisg
ICAgICAgICAgICB8fCAoYm90dG9tQ29sb3IgPT0gcmlnaHRDb2xvciAmJiBib3R0b21UcmFuc3Bh
cmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYmIGJvdHRvbVN0eWxlID49IE9VVFNFVAorICAgICAg
ICAgICAgICAgICYmIChyaWdodFN0eWxlID09IERPVFRFRCB8fCByaWdodFN0eWxlID09IERBU0hF
RCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQpKTsKIAogICAg
ICAgICBpbnQgeCA9IHR4OwogICAgICAgICBpbnQgeDIgPSB0eCArIHc7CiAgICAgICAgIGlmIChy
ZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgeCArPSBib3R0b21MZWZ0LndpZHRoKCk7Ci0gICAg
ICAgICAgICB4MiAtPSBib3R0b21SaWdodC53aWR0aCgpOworICAgICAgICAgICAgeCArPSBib3Jk
ZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKTsKKyAgICAgICAgICAgIHgyIC09IGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKTsKICAgICAgICAgfQogCiAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgsIHR5ICsgaCAtIHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpLCB4MiwgdHkgKyBoLCBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRv
bVN0eWxlLAotICAgICAgICAgICAgICAgICAgIGlnbm9yZV9sZWZ0ID8gMCA6IHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSwgaWdub3JlX3JpZ2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCkpOworICAgICAgICAgICAgICAgICAgIGlnbm9yZUxlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpLCBpZ25vcmVSaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsK
IAogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKICAgICAgICAgICAgIHRoaWNrbmVzcyA9IHN0
eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpICogMjsKIAotICAgICAgICAgICAgaWYgKGJvdHRvbUxl
ZnQud2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgo
KSkgewogICAgICAgICAgICAgICAgIGludCBsZWZ0WCA9IHR4OwotICAgICAgICAgICAgICAgIGlu
dCBsZWZ0WSA9IHR5ICsgaCAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAg
ICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8
IGJvdHRvbUxlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpIDwgYm90dG9tTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBp
bnQgbGVmdFkgPSB0eSArIGggLSBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkg
KiAyOworICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlMZWZ0SW5uZXJDbGlwID0gKHN0eWxlLT5i
b3JkZXJMZWZ0V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS53aWR0aCgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3Jk
ZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYm
IChib3R0b21TdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPiA2
KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobGVmdFgsIGxl
ZnRZLCBib3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0LmhlaWdodCgpICogMiksCisg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS53aWR0
aCgpICogMiwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTM3
MCwyMSArMTMwMSwyMSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgIC8vIERyYXcgbG93ZXIgbGVmdCBhcmMKLSAgICAgICAgICAg
ICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhp
Y2tuZXNzLCBib3R0b21MZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAg
ICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgbGVmdFgsIGxl
ZnRZLCB0aGlja25lc3MsIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgZmlyc3RBbmdsZVN0
YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90
dG9tLCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlm
IChhcHBseUxlZnRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYm90dG9tUmln
aHQud2lkdGgoKSkgewotICAgICAgICAgICAgICAgIGludCByaWdodFkgPSB0eSArIGggLSBib3R0
b21SaWdodC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW50IHJpZ2h0WCA9IHR4ICsg
dyAtIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyOwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlS
aWdodElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm90dG9tUmlnaHQu
d2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpIDwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoYm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKS53aWR0aCgpKSB7CisgICAgICAgICAgICAgICAgaW50IHJpZ2h0WSA9
IHR5ICsgaCAtIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAyOworICAg
ICAgICAgICAgICAgIGludCByaWdodFggPSB0eCArIHcgLSBib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpLndpZHRoKCkgKiAyOworICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlSaWdodElubmVy
Q2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkuYm90dG9t
UmlnaHQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLmhlaWdodCgpKQogICAg
ICAgICAgICAgICAgICAgICAmJiAoYm90dG9tU3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5l
ckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoSW50UmVjdChyaWdodFgsIHJpZ2h0WSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRv
bVJpZ2h0LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChyaWdodFgsIHJpZ2h0WSwgYm9yZGVy
LnJhZGlpKCkuYm90dG9tUmlnaHQoKS53aWR0aCgpICogMiwgYm9yZGVyLnJhZGlpKCkuYm90dG9t
UmlnaHQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsK
ICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzOTIsNyArMTMyMyw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gbG93ZXJSaWdodEJv
cmRlclN0eWxlc01hdGNoID8gOTAgOiA0NTsKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgbG93
ZXIgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCByaWdodFgsIHJpZ2h0WSwgdGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vjb25kQW5n
bGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCByaWdodFksIHRoaWNrbmVzcywgYm9yZGVyLnJh
ZGlpKCkuYm90dG9tUmlnaHQoKSwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0
b21TdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlw
KQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTE0
MDEsMzYgKzEzMzIsMzYgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICB9CiAKICAgICBp
ZiAocmVuZGVyTGVmdCkgewotICAgICAgICBib29sIGlnbm9yZV90b3AgPSAocmVuZGVyUmFkaWkg
JiYgdG9wTGVmdC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9wQ29sb3IgPT0gbGVm
dENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUg
Pj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKHRvcFN0eWxlID09IERPVFRFRCB8fCB0b3BTdHls
ZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0gU09MSUQgfHwgdG9wU3R5bGUgPT0gT1VUU0VUKSk7
CisgICAgICAgIGJvb2wgaWdub3JlVG9wID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci5yYWRpaSgp
LnRvcExlZnQoKS5oZWlnaHQoKSA+IDApCisgICAgICAgICAgICB8fCAodG9wQ29sb3IgPT0gbGVm
dENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUg
Pj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKHRvcFN0eWxlID09IERPVFRFRCB8fCB0b3BT
dHlsZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0gU09MSUQgfHwgdG9wU3R5bGUgPT0gT1VUU0VU
KSk7CiAKLSAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9tID0gKHJlbmRlclJhZGlpICYmIGJvdHRv
bUxlZnQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAgICAgICAgKGJvdHRvbUNvbG9yID09IGxlZnRD
b2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxl
ID49IE9VVFNFVCAmJgotICAgICAgICAgICAgIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90
dG9tU3R5bGUgPT0gREFTSEVEIHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxl
ID09IElOU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlQm90dG9tID0gKHJlbmRlclJhZGlpICYm
IGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSA+IDApCisgICAgICAgICAgICB8
fCAoYm90dG9tQ29sb3IgPT0gbGVmdENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IGxlZnRU
cmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKGJv
dHRvbVN0eWxlID09IERPVFRFRCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5
bGUgPT0gU09MSUQgfHwgYm90dG9tU3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeSA9
IHR5OwogICAgICAgICBpbnQgeTIgPSB0eSArIGg7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkg
ewotICAgICAgICAgICAgeSArPSB0b3BMZWZ0LmhlaWdodCgpOwotICAgICAgICAgICAgeTIgLT0g
Ym90dG9tTGVmdC5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkgKz0gYm9yZGVyLnJhZGlpKCkudG9w
TGVmdCgpLmhlaWdodCgpOworICAgICAgICAgICAgeTIgLT0gYm9yZGVyLnJhZGlpKCkuYm90dG9t
TGVmdCgpLmhlaWdodCgpOwogICAgICAgICB9CiAKICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgdHgsIHksIHR4ICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB5
MiwgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICBpZ25v
cmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6
IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgICAgICAgICBpZ25vcmVU
b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZUJvdHRvbSA/IDAgOiBzdHls
ZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmICgh
dXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNo
KSkgewogICAgICAgICAgICAgaW50IHRvcFggPSB0eDsKICAgICAgICAgICAgIHRoaWNrbmVzcyA9
IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAqIDI7CiAKLSAgICAgICAgICAgIGlmICghdXBwZXJM
ZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgdG9wTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAgICBp
ZiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoICYmIGJvcmRlci5yYWRpaSgpLnRvcExlZnQo
KS53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICAgaW50IHRvcFkgPSB0eTsKLSAgICAgICAgICAg
ICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8
IHRvcExlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpIDwgdG9wTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5
VG9wSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgp
LnRvcExlZnQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJMZWZ0
V2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkgewog
ICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0
KHRvcFgsIHRvcFksIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkgKiAyKSwK
KyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0
Q2xpcChJbnRSZWN0KHRvcFgsIHRvcFksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgp
ICogMiwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUt
PmJvcmRlckxlZnRXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE0MzgsMjAgKzEz
NjksMjAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBmaXJzdEFu
Z2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB0b3AgbGVmdCBhcmMKLSAg
ICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIHRv
cFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgs
IHRvcFksIHRoaWNrbmVzcywgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBmaXJzdEFuZ2xlU3Rh
cnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0
LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5
VG9wSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3Rv
cmUoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFsb3dlckxlZnRCb3JkZXJT
dHlsZXNNYXRjaCAmJiBib3R0b21MZWZ0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQg
Ym90dG9tWSA9IHR5ICsgaCAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAg
ICAgIGJvb2wgYXBwbHlCb3R0b21Jbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
IDwgYm90dG9tTGVmdC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkgPCBib3R0b21MZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgaWYg
KCFsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCkud2lkdGgoKSkgeworICAgICAgICAgICAgICAgIGludCBib3R0b21ZID0gdHkgKyBoIC0gYm9y
ZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBi
b29sIGFwcGx5Qm90dG9tSW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJv
cmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAm
JiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgIT0gRE9VQkxF
IHx8IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChh
cHBseUJvdHRvbUlubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIGJvdHRvbVksIGJvdHRvbUxlZnQud2lkdGgo
KSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIGJvdHRv
bVksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS53aWR0aCgpICogMiwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tTGVmdCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlckxlZnRXaWR0
aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE0NTksNyArMTM5MCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gNDU7CiAK
ICAgICAgICAgICAgICAgICAvLyBEcmF3IGJvdHRvbSBsZWZ0IGFyYwotICAgICAgICAgICAgICAg
IGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgYm90dG9tWSwgdGhpY2tu
ZXNzLCBib3R0b21MZWZ0LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCisgICAg
ICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCBib3R0
b21ZLCB0aGlja25lc3MsIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgc2Vjb25kQW5nbGVT
dGFydCwgc2Vjb25kQW5nbGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNM
ZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChh
cHBseUJvdHRvbUlubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5yZXN0b3JlKCk7CkBAIC0xNDY4LDM4ICsxMzk5LDM4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQg
dHgsCiAgICAgfQogCiAgICAgaWYgKHJlbmRlclJpZ2h0KSB7Ci0gICAgICAgIGJvb2wgaWdub3Jl
X3RvcCA9IChyZW5kZXJSYWRpaSAmJiB0b3BSaWdodC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAg
ICAgICAoKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BUcmFuc3BhcmVudCA9PSByaWdo
dFRyYW5zcGFyZW50KSAmJgotICAgICAgICAgICAgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJp
Z2h0U3R5bGUgPT0gSU5TRVQpICYmCi0gICAgICAgICAgICAodG9wU3R5bGUgPT0gRE9UVEVEIHx8
IHRvcFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHlsZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBP
VVRTRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVUb3AgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVy
LnJhZGlpKCkudG9wUmlnaHQoKS5oZWlnaHQoKSA+IDApCisgICAgICAgICAgICB8fCAoKHRvcENv
bG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50
KQorICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdodFN0eWxl
ID09IElOU0VUKQorICAgICAgICAgICAgICAgICYmICh0b3BTdHlsZSA9PSBET1RURUQgfHwgdG9w
U3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRvcFN0eWxlID09IE9VVFNF
VCkpOwogCi0gICAgICAgIGJvb2wgaWdub3JlX2JvdHRvbSA9IChyZW5kZXJSYWRpaSAmJiBib3R0
b21SaWdodC5oZWlnaHQoKSA+IDApIHx8Ci0gICAgICAgICAgICAoKGJvdHRvbUNvbG9yID09IHJp
Z2h0Q29sb3IpICYmIChib3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50KSAmJgot
ICAgICAgICAgICAgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gSU5TRVQp
ICYmCi0gICAgICAgICAgICAoYm90dG9tU3R5bGUgPT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09
IERBU0hFRCB8fCBib3R0b21TdHlsZSA9PSBTT0xJRCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkp
OworICAgICAgICBib29sIGlnbm9yZUJvdHRvbSA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIucmFk
aWkoKS5ib3R0b21SaWdodCgpLmhlaWdodCgpID4gMCkKKyAgICAgICAgICAgIHx8ICgoYm90dG9t
Q29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNw
YXJlbnQpCisgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPj0gRE9UVEVEIHx8IHJpZ2h0
U3R5bGUgPT0gSU5TRVQpCisgICAgICAgICAgICAgICAgJiYgKGJvdHRvbVN0eWxlID09IERPVFRF
RCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQgfHwgYm90
dG9tU3R5bGUgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeSA9IHR5OwogICAgICAgICBpbnQg
eTIgPSB0eSArIGg7CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgeSAr
PSB0b3BSaWdodC5oZWlnaHQoKTsKLSAgICAgICAgICAgIHkyIC09IGJvdHRvbVJpZ2h0LmhlaWdo
dCgpOworICAgICAgICAgICAgeSArPSBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLmhlaWdodCgp
OworICAgICAgICAgICAgeTIgLT0gYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS5oZWlnaHQo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIHR4ICsgdyAtIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHksIHR4ICsgdywgeTIsIEJT
UmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3Jl
X3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdub3JlX2JvdHRvbSA/IDAgOiBz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlVG9w
ID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVCb3R0b20gPyAwIDogc3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiAoIXVw
cGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNo
KSkgewogICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSAq
IDI7CiAKLSAgICAgICAgICAgIGlmICghdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoICYmIHRv
cFJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgdG9wWCA9IHR4ICsgdyAtIHRv
cFJpZ2h0LndpZHRoKCkgKiAyOworICAgICAgICAgICAgaWYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5
bGVzTWF0Y2ggJiYgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0aCgpKSB7CisgICAgICAg
ICAgICAgICAgaW50IHRvcFggPSB0eCArIHcgLSBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLndp
ZHRoKCkgKiAyOwogICAgICAgICAgICAgICAgIGludCB0b3BZID0gdHk7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwg
dG9wUmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpIDwgdG9wUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgYm9vbCBhcHBs
eVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm9yZGVyLnJhZGlp
KCkudG9wUmlnaHQoKS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLmhlaWdodCgpKQogICAg
ICAgICAgICAgICAgICAgICAmJiAocmlnaHRTdHlsZSAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRl
clJpZ2h0V2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xp
cCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJ
bnRSZWN0KHRvcFgsIHRvcFksIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCB0b3BSaWdodC5oZWlnaHQo
KSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91
bmRlZFJlY3RDbGlwKEludFJlY3QodG9wWCwgdG9wWSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQo
KS53aWR0aCgpICogMiwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS5oZWlnaHQoKSAqIDIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAt
MTUwNywyMSArMTQzOCwyMSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRl
cihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAg
ICAgIGZpcnN0QW5nbGVTcGFuID0gNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHRvcCBy
aWdodCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIHRvcFgsIHRvcFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIGZpcnN0QW5nbGVTdGFydCwgZmly
c3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCks
IGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLCB0cnVlKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
IWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3R0b21SaWdodC53aWR0aCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaW50IGJvdHRvbVggPSB0eCArIHcgLSBib3R0b21SaWdodC53aWR0aCgp
ICogMjsKLSAgICAgICAgICAgICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAtIGJvdHRvbVJpZ2h0
LmhlaWdodCgpICogMjsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJDbGlw
ID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3R0b21SaWdodC53aWR0aCgpKQotICAg
ICAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3R0b21S
aWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIGlmICghbG93ZXJSaWdodEJvcmRlclN0eWxlc01h
dGNoICYmIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkgeworICAgICAgICAg
ICAgICAgIGludCBib3R0b21YID0gdHggKyB3IC0gYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQo
KS53aWR0aCgpICogMjsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAtIGJv
cmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAyOworICAgICAgICAgICAgICAg
IGJvb2wgYXBwbHlCb3R0b21Jbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8
IGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkuYm90dG9t
UmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgIT0g
RE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAg
ICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChib3R0b21YLCBib3R0b21ZLCBib3R0b21S
aWdodC53aWR0aCgpICogMiwgYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0
KGJvdHRvbVgsIGJvdHRvbVksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSAq
IDIsIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE1MjksNyAr
MTQ2MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgc2Vjb25k
QW5nbGVTcGFuID0gNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGJvdHRvbSByaWdodCBh
cmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGJv
dHRvbVgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQs
IHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIGJvdHRvbVgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm9yZGVyLnJhZGlpKCku
Ym90dG9tUmlnaHQoKSwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwg
ZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkKICAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xNTQyLDE1ICsx
NDczLDE1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiB9CiAjZW5kaWYKIAotdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBib3gsIGNvbnN0IEludFNpemUmIHRvcExl
ZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBj
b25zdCBJbnRTaXplJiBib3R0b21SaWdodCwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNs
aXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgUm91bmRlZEludFJlY3QmIGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3hTaWRlIHNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0
Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAg
ICBGbG9hdFBvaW50IHF1YWRbNF07Ci0gICAgaW50IHR4ID0gYm94LngoKTsKLSAgICBpbnQgdHkg
PSBib3gueSgpOwotICAgIGludCB3ID0gYm94LndpZHRoKCk7Ci0gICAgaW50IGggPSBib3guaGVp
Z2h0KCk7CisgICAgaW50IHR4ID0gYm9yZGVyLnJlY3QoKS54KCk7CisgICAgaW50IHR5ID0gYm9y
ZGVyLnJlY3QoKS55KCk7CisgICAgaW50IHcgPSBib3JkZXIucmVjdCgpLndpZHRoKCk7CisgICAg
aW50IGggPSBib3JkZXIucmVjdCgpLmhlaWdodCgpOwogCiAgICAgYm9vbCBob3Jpem9udGFsID0g
c3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgaW50IGxlZnRXaWR0aCA9ICgh
aG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExlZnRFZGdlKSA/IHN0eWxlLT5ib3JkZXJMZWZ0
V2lkdGgoKSA6IDA7CkBAIC0xNTYzLDI2ICsxNDk0LDI2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4CiAgICAgc3dpdGNoIChzaWRlKSB7CiAgICAgY2FzZSBCU1RvcDoKICAgICAgICAgcXVhZFsw
XSA9IEZsb2F0UG9pbnQodHgsIHR5KTsKLSAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHgg
KyBtYXgodG9wTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1heCh0b3BMZWZ0LmhlaWdo
dCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBt
YXgodG9wUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRvcFJpZ2h0LmhlaWdo
dCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChi
b3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBtYXgoYm9y
ZGVyLnJhZGlpKCkudG9wTGVmdCgpLmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFk
WzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53
aWR0aCgpLCByaWdodFdpZHRoKSwgdHkgKyBtYXgoYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS5o
ZWlnaHQoKSwgdG9wV2lkdGgpKTsKICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3
LCB0eSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQlNMZWZ0OgogICAgICAgICBxdWFkWzBd
ID0gRmxvYXRQb2ludCh0eCwgdHkpOwotICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCAr
IG1heCh0b3BMZWZ0LndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgbWF4KHRvcExlZnQuaGVpZ2h0
KCksIHRvcFdpZHRoKSk7Ci0gICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KGJv
dHRvbUxlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbUxlZnQuaGVp
Z2h0KCksIGJvdHRvbVdpZHRoKSk7CisgICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsg
bWF4KGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1h
eChib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CisgICAgICAg
IHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQo
KS53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIGggLSBtYXgoYm9yZGVyLnJhZGlpKCkuYm90dG9t
TGVmdCgpLmhlaWdodCgpLCBib3R0b21XaWR0aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQ
b2ludCh0eCwgdHkgKyBoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCU0JvdHRvbToKICAg
ICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5ICsgaCk7Ci0gICAgICAgIHF1YWRbMV0g
PSBGbG9hdFBvaW50KHR4ICsgbWF4KGJvdHRvbUxlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkg
KyBoIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7Ci0gICAgICAgIHF1
YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3R0b21SaWdodC53aWR0aCgpLCByaWdo
dFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbVJpZ2h0LmhlaWdodCgpLCBib3R0b21XaWR0aCkp
OworICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIucmFkaWkoKS5i
b3R0b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvcmRlci5yYWRp
aSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsy
XSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCku
d2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpLmhlaWdodCgpLCBib3R0b21XaWR0aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQ
b2ludCh0eCArIHcsIHR5ICsgaCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQlNSaWdodDoK
ICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSk7Ci0gICAgICAgIHF1YWRb
MV0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heCh0b3BSaWdodC53aWR0aCgpLCByaWdodFdpZHRo
KSwgdHkgKyBtYXgodG9wUmlnaHQuaGVpZ2h0KCksIHRvcFdpZHRoKSk7Ci0gICAgICAgIHF1YWRb
Ml0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3R0b21SaWdodC53aWR0aCgpLCByaWdodFdp
ZHRoKSwgdHkgKyBoIC0gbWF4KGJvdHRvbVJpZ2h0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOwor
ICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm9yZGVyLnJhZGlpKCku
dG9wUmlnaHQoKS53aWR0aCgpLCByaWdodFdpZHRoKSwgdHkgKyBtYXgoYm9yZGVyLnJhZGlpKCku
dG9wUmlnaHQoKS5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKKyAgICAgICAgcXVhZFsyXSA9IEZsb2F0
UG9pbnQodHggKyB3IC0gbWF4KGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwg
cmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLmhl
aWdodCgpLCBib3R0b21XaWR0aCkpOwogICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh0eCAr
IHcsIHR5ICsgaCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xNjEzLDE4ICsx
NTQ0LDYgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29u
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXgKICAgICBncmFwaGljc0NvbnRleHQtPmNs
aXBDb252ZXhQb2x5Z29uKDQsIHNlY29uZFF1YWQsICFzZWNvbmRFZGdlTWF0Y2hlcyk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCB1bmlmb3JtbHlFeHBhbmRCb3JkZXJSYWRpaShpbnQgZGVsdGEs
IEludFNpemUmIHRvcExlZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0
LCBJbnRTaXplJiBib3R0b21SaWdodCkKLXsKLSAgICB0b3BMZWZ0LmV4cGFuZChkZWx0YSwgZGVs
dGEpOwotICAgIHRvcExlZnQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgIHRvcFJpZ2h0LmV4
cGFuZChkZWx0YSwgZGVsdGEpOwotICAgIHRvcFJpZ2h0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
LSAgICBib3R0b21MZWZ0LmV4cGFuZChkZWx0YSwgZGVsdGEpOwotICAgIGJvdHRvbUxlZnQuY2xh
bXBOZWdhdGl2ZVRvWmVybygpOwotICAgIGJvdHRvbVJpZ2h0LmV4cGFuZChkZWx0YSwgZGVsdGEp
OwotICAgIGJvdHRvbVJpZ2h0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLX0KLQogdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSogcywgU2hh
ZG93U3R5bGUgc2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGJvcmRl
ci1pbWFnZS4gIFdvdWxkIGJlIGdyZWF0IHRvIHVzZSBib3JkZXItaW1hZ2UgYXMgYSBtYXNrLgpA
QCAtMTYzMiw2MSArMTU1MSwxOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
eFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAgICAgaWYgKGNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVj
dCByZWN0KHR4LCB0eSwgdywgaCk7Ci0gICAgSW50U2l6ZSB0b3BMZWZ0OwotICAgIEludFNpemUg
dG9wUmlnaHQ7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0OwotICAgIEludFNpemUgYm90dG9tUmln
aHQ7Ci0KKyAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIodHgsIHR5LCB3LCBoKTsKICAgICBib29s
IGhhc0JvcmRlclJhZGl1cyA9IHMtPmhhc0JvcmRlclJhZGl1cygpOwogICAgIGJvb2wgaXNIb3Jp
em9udGFsID0gcy0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKICAgICBpZiAoaGFzQm9yZGVy
UmFkaXVzICYmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSkgewotICAgICAgICBJbnRTaXplIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBi
b3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgcy0+Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UpIHsKLSAgICAgICAgICAgIGlmIChzaGFkb3dTdHlsZSA9PSBJbnNldCkgewot
ICAgICAgICAgICAgICAgIHRvcExlZnRSYWRpdXMuZXhwYW5kKC1ib3JkZXJMZWZ0KCksIC1ib3Jk
ZXJUb3AoKSk7Ci0gICAgICAgICAgICAgICAgdG9wTGVmdFJhZGl1cy5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkgewotICAgICAgICAgICAg
ICAgICAgICBib3R0b21MZWZ0UmFkaXVzLmV4cGFuZCgtYm9yZGVyTGVmdCgpLCAtYm9yZGVyQm90
dG9tKCkpOwotICAgICAgICAgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzLmNsYW1wTmVnYXRp
dmVUb1plcm8oKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICB0b3BSaWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJpZ2h0KCksIC1ib3JkZXJUb3AoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b3BMZWZ0ID0g
dG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAg
ICAgICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKLSAgICAgICAgICAgIGlmIChzaGFk
b3dTdHlsZSA9PSBJbnNldCkgewotICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHsK
LSAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuZXhwYW5kKC1ib3JkZXJSaWdodCgp
LCAtYm9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgICAgICB0b3BSaWdodFJhZGl1cy5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5leHBhbmQoLWJvcmRlckxlZnQoKSwgLWJvcmRlckJv
dHRvbSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5jbGFtcE5lZ2F0
aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJvdHRvbVJp
Z2h0UmFkaXVzLmV4cGFuZCgtYm9yZGVyUmlnaHQoKSwgLWJvcmRlckJvdHRvbSgpKTsKLSAgICAg
ICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgICAg
IHRvcFJpZ2h0ID0gdG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBib3R0b21S
aWdodCA9IGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHNo
YWRvd1N0eWxlID09IEluc2V0KSB7Ci0gICAgICAgIHJlY3QubW92ZShpbmNsdWRlTG9naWNhbExl
ZnRFZGdlIHx8ICFpc0hvcml6b250YWwgPyBib3JkZXJMZWZ0KCkgOiAwLCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlIHx8IGlzSG9yaXpvbnRhbCA/IGJvcmRlclRvcCgpIDogMCk7Ci0gICAgICAgIHJl
Y3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0gKChpbmNsdWRlTG9naWNhbExlZnRFZGdlIHx8ICFp
c0hvcml6b250YWwpID8gYm9yZGVyTGVmdCgpIDogMCkgLSAoKGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlIHx8ICFpc0hvcml6b250YWwpID8gYm9yZGVyUmlnaHQoKSA6IDApKTsKLSAgICAgICAgcmVj
dC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAtICgoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBp
c0hvcml6b250YWwpID8gYm9yZGVyVG9wKCkgOiAwKSAtICgoaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UgfHwgaXNIb3Jpem9udGFsKSA/IGJvcmRlckJvdHRvbSgpIDogMCkpOworICAgICAgICBib3Jk
ZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5zZXQpID8gcy0+Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0
aEJvcmRlcldpZHRocyhib3JkZXIucmVjdCgpLCBib3JkZXJUb3AoKSwgYm9yZGVyQm90dG9tKCks
IGJvcmRlckxlZnQoKSwgYm9yZGVyUmlnaHQoKSkgOiBzLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJv
cmRlci5yZWN0KCkpOworICAgICAgICBib3JkZXIuaW5jbHVkZUxvZ2ljYWxFZGdlcyhib3JkZXIu
cmFkaWkoKSwgaXNIb3Jpem9udGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAgICAgfQorICAgCisgICAgaWYgKHNoYWRvd1N0eWxlID09IEluc2V0
KQorICAgICAgICBib3JkZXIuc2V0UmVjdChJbnRSZWN0KGJvcmRlci5yZWN0KCkueCgpICsgKGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgIWlzSG9yaXpvbnRhbCA/IGJvcmRlckxlZnQoKSA6IDAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci5yZWN0KCkueSgpICsgKGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgaXNIb3Jpem9udGFsID8gYm9yZGVyVG9wKCkgOiAwKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIucmVjdCgpLndpZHRoKCkgLSAo
KGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgIWlzSG9yaXpvbnRhbCkgPyBib3JkZXJMZWZ0KCkg
OiAwKSAtICgoaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgfHwgIWlzSG9yaXpvbnRhbCkgPyBib3Jk
ZXJSaWdodCgpIDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnJl
Y3QoKS5oZWlnaHQoKSAtICgoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpc0hvcml6b250YWwp
ID8gYm9yZGVyVG9wKCkgOiAwKSAtICgoaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgfHwgaXNIb3Jp
em9udGFsKSA/IGJvcmRlckJvdHRvbSgpIDogMCkpKTsKIAogICAgIGJvb2wgaGFzT3BhcXVlQmFj
a2dyb3VuZCA9IHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikuaXNWYWxpZCgpICYmIHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikuYWxwaGEoKSA9PSAyNTU7CiAgICAgZm9yIChjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3cgPSBzLT5ib3hTaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPm5leHQo
KSkgewpAQCAtMTY5OSwxMiArMTU3NiwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAgICAg
ICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciA9IHNoYWRvdy0+Y29sb3IoKTsKIAogICAgICAg
ICBpZiAoc2hhZG93LT5zdHlsZSgpID09IE5vcm1hbCkgewotICAgICAgICAgICAgSW50UmVjdCBm
aWxsUmVjdChyZWN0KTsKKyAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGZpbGxSZWN0ID0gYm9y
ZGVyOwogICAgICAgICAgICAgZmlsbFJlY3QuaW5mbGF0ZShzaGFkb3dTcHJlYWQpOwogICAgICAg
ICAgICAgaWYgKGZpbGxSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0KHJlY3QpOworICAgICAgICAgICAgSW50
UmVjdCBzaGFkb3dSZWN0KGJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5p
bmZsYXRlKHNoYWRvd0JsdXIgKyBzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgc2hhZG93UmVj
dC5tb3ZlKHNoYWRvd09mZnNldCk7CiAKQEAgLTE3MTksMzIgKzE1OTYsMjMgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBpbnQgdHgsIGludAogCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAg
ICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3RU
b0NsaXBPdXQgPSByZWN0OwotICAgICAgICAgICAgICAgIEludFNpemUgdG9wTGVmdFRvQ2xpcE91
dCA9IHRvcExlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BSaWdodFRvQ2xpcE91dCA9
IHRvcFJpZ2h0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9tTGVmdFRvQ2xpcE91dCA9
IGJvdHRvbUxlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21SaWdodFRvQ2xpcE91
dCA9IGJvdHRvbVJpZ2h0OwotCi0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0VG9GaWxs
ID0gdG9wTGVmdDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIHRvcFJpZ2h0VG9GaWxsID0gdG9w
UmlnaHQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21MZWZ0VG9GaWxsICA9IGJvdHRv
bUxlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21SaWdodFRvRmlsbCA9IGJvdHRv
bVJpZ2h0OwotICAgICAgICAgICAgICAgIGlmIChzaGFkb3dTcHJlYWQgPCAwKQotICAgICAgICAg
ICAgICAgICAgICB1bmlmb3JtbHlFeHBhbmRCb3JkZXJSYWRpaShzaGFkb3dTcHJlYWQsIHRvcExl
ZnRUb0ZpbGwsIHRvcFJpZ2h0VG9GaWxsLCBib3R0b21MZWZ0VG9GaWxsLCBib3R0b21SaWdodFRv
RmlsbCk7CisgICAgICAgICAgICAgICAgUm91bmRlZEludFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJv
cmRlcjsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1
bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQog
ICAgICAgICAgICAgICAgIC8vIHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhlIG90aGVy
IGhhbmQsIGl0IGludHJvZHVjZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUKICAgICAgICAgICAg
ICAgICAvLyBjb3JuZXJzLiBUaG9zZSBhcmUgYXZvaWRlZCBieSBpbnNldHRpbmcgdGhlIGNsaXBw
aW5nIHBhdGggYnkgb25lIHBpeGVsLgogICAgICAgICAgICAgICAgIGlmIChoYXNPcGFxdWVCYWNr
Z3JvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQuaW5mbGF0ZSgtMSk7
Ci0gICAgICAgICAgICAgICAgICAgIHVuaWZvcm1seUV4cGFuZEJvcmRlclJhZGlpKC0xLCB0b3BM
ZWZ0VG9DbGlwT3V0LCB0b3BSaWdodFRvQ2xpcE91dCwgYm90dG9tTGVmdFRvQ2xpcE91dCwgYm90
dG9tUmlnaHRUb0NsaXBPdXQpOworICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0Lmlu
ZmxhdGVXaXRoUmFkaWkoLTEpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0LCB0b3BMZWZ0VG9DbGlwT3V0LCB0
b3BSaWdodFRvQ2xpcE91dCwgYm90dG9tTGVmdFRvQ2xpcE91dCwgYm90dG9tUmlnaHRUb0NsaXBP
dXQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVjdCwg
dG9wTGVmdFRvRmlsbCwgdG9wUmlnaHRUb0ZpbGwsIGJvdHRvbUxlZnRUb0ZpbGwsIGJvdHRvbVJp
Z2h0VG9GaWxsLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0KTsKKworICAg
ICAgICAgICAgICAgIGlmIChzaGFkb3dTcHJlYWQgPCAwKQorICAgICAgICAgICAgICAgICAgICBm
aWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVjdCwgQ29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3RU
b0NsaXBPdXQgPSByZWN0OworICAgICAgICAgICAgICAgIEludFJlY3QgcmVjdFRvQ2xpcE91dCA9
IGJvcmRlci5yZWN0KCk7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1
ZSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNh
dmVzIHRpbWUKICAgICAgICAgICAgICAgICAvLyB3aGVuIHBhaW50aW5nIHRoZSBzaGFkb3cuIE9u
IHRoZSBvdGhlciBoYW5kLCBpdCBpbnRyb2R1Y2VzIHN1YnBpeGVsIGdhcHMgYWxvbmcgdGhlCkBA
IC0xNzU5LDIwICsxNjI3LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKIAogICAgICAgICAg
ICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dCk7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+ZmlsbFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChmaWxsUmVjdC5yZWN0KCksIENvbG9yOjpi
bGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSW5zZXQg
c2hhZG93LgotICAgICAgICAgICAgSW50UmVjdCBob2xlUmVjdChyZWN0KTsKKyAgICAgICAgICAg
IEludFJlY3QgaG9sZVJlY3QoYm9yZGVyLnJlY3QoKSk7CiAgICAgICAgICAgICBob2xlUmVjdC5p
bmZsYXRlKC1zaGFkb3dTcHJlYWQpOwogCiAgICAgICAgICAgICBpZiAoaG9sZVJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIHNo
YWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocmVjdCwgc2hhZG93Q29sb3IsIHMtPmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJvcmRl
ci5yZWN0KCksIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC0xNzk0LDcgKzE2NjIsNyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGludCB0eCwgaW50CiAKICAgICAgICAgICAgIENvbG9yIGZpbGxDb2xvcihzaGFkb3dDb2xv
ci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwog
Ci0gICAgICAgICAgICBJbnRSZWN0IG91dGVyUmVjdChyZWN0KTsKKyAgICAgICAgICAgIEludFJl
Y3Qgb3V0ZXJSZWN0KGJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgb3V0ZXJSZWN0LmluZmxh
dGVYKHcgLSAyICogc2hhZG93U3ByZWFkKTsKICAgICAgICAgICAgIG91dGVyUmVjdC5pbmZsYXRl
WShoIC0gMiAqIHNoYWRvd1NwcmVhZCk7CiAKQEAgLTE4MDIsMTEgKzE2NzAsMTEgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBpbnQgdHgsIGludAogCiAgICAgICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBp
ZiAoaGFzQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAg
ICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoYm9yZGVyLnJlY3QoKSwgYm9yZGVyLnJh
ZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBib3JkZXIucmFkaWko
KS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNsaXAocGF0aCk7CiAgICAgICAgICAgICAgICAgcGF0aC5jbGVhcigp
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChyZWN0
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKGJvcmRlci5yZWN0KCkpOwogCiAgICAg
ICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0KDIgKiB3ICsgbWF4KDAsIHNoYWRvd09mZnNldC53
aWR0aCgpKSArIHNoYWRvd0JsdXIgLSAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7CiAgICAgICAg
ICAgICBjb250ZXh0LT50cmFuc2xhdGUoZXh0cmFPZmZzZXQud2lkdGgoKSwgZXh0cmFPZmZzZXQu
aGVpZ2h0KCkpOwpAQCAtMTgxNiw4ICsxNjg0LDggQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAog
CiAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHNoYWRvd1NwcmVhZCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHVuaWZvcm1seUV4cGFuZEJv
cmRlclJhZGlpKC1zaGFkb3dTcHJlYWQsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBi
b3R0b21SaWdodCk7Ci0gICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChob2xlUmVj
dCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAg
ICAgICAgICAgICAgYm9yZGVyLnNocmlua1JhZGlpKHNoYWRvd1NwcmVhZCk7CisgICAgICAgICAg
ICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkudG9wTGVm
dCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGhvbGVSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA5OGUzODZiNjgzNjk4
ODFjOGIwZGZkZWJjNjE3YjA3YjUwYzZiOTY2Li43MzU1ZjJkZTUzMzBhZDNmZWNlYWE0MjcxM2M5
ZjI5MzE1MzRiOTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaApAQCAtMTMzLDggKzEzMyw4IEBAIHByaXZhdGU6CiAKICAgICBJbnRTaXpl
IGNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqLCBJbnRTaXplIHNjYWxlZFNp
emUpIGNvbnN0OwogCi0gICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBCb3hTaWRl
IHNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcywgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLAorICAgIHZvaWQgY2xpcEJvcmRlclNpZGVQb2x5Z29uKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBib3JkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVz
LCBib29sIHNlY29uZEVkZ2VNYXRjaGVzLCBjb25zdCBSZW5kZXJTdHlsZSosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJWaWV3Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBjN2M4MWY5ZWQz
OGZhMTBlYzk3MTM5Mjg5NzA2OTcwZTA4M2NkNGRmLi4zNzQ1MmE4NTcwZjM0NGRmZjJjNjc0YmI2
Nzk5MjdjN2IyNjkxNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtOTc4LDM2ICs5NzgsMjQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdCb3hTaWRl
RnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIEludFJlY3QKICAgICAg
ICAgICAgIGlubmVyQm9yZGVyTGVmdFdpZHRoICs9IDE7CiAKICAgICAgICAgLy8gR2V0IHRoZSBp
bm5lciBib3JkZXIgcmVjdHMgZm9yIGJvdGggdGhlIG91dGVyIGJvcmRlciBsaW5lIGFuZCB0aGUg
aW5uZXIgYm9yZGVyIGxpbmUKLSAgICAgICAgSW50UmVjdCBvdXRlckJvcmRlcklubmVyUmVjdCA9
IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCBvdXRlckJvcmRlclRvcFdpZHRoLCBvdXRlckJv
cmRlckJvdHRvbVdpZHRoLCAKLSAgICAgICAgICAgIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRl
ckJvcmRlclJpZ2h0V2lkdGgpOwotICAgICAgICBJbnRSZWN0IGlubmVyQm9yZGVySW5uZXJSZWN0
ID0gYm9yZGVySW5uZXJSZWN0KGJvcmRlclJlY3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlubmVy
Qm9yZGVyQm90dG9tV2lkdGgsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlu
bmVyQm9yZGVyUmlnaHRXaWR0aCk7Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBpbm5lciByYWRpaSBm
b3IgdGhlIG91dGVyIGJvcmRlciBsaW5lCi0gICAgICAgIEludFNpemUgb3V0ZXJCb3JkZXJUb3BM
ZWZ0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgb3V0ZXJCb3Jk
ZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAgb3V0ZXJCb3JkZXJCb3R0b21S
aWdodElubmVyUmFkaXVzOwotICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJl
Y3RXaXRoQm9yZGVyV2lkdGhzKG91dGVyQm9yZGVySW5uZXJSZWN0LCBvdXRlckJvcmRlclRvcFdp
ZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRoLCAKLSAgICAgICAgICAgIG91dGVyQm9yZGVyTGVm
dFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsIG91dGVyQm9yZGVyVG9wTGVmdElubmVyUmFk
aXVzLCBvdXRlckJvcmRlclRvcFJpZ2h0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAgb3V0ZXJC
b3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyQm90dG9tUmlnaHRJbm5lclJh
ZGl1cyk7Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBpbm5lciByYWRpaSBmb3IgdGhlIGlubmVyIGJv
cmRlciBsaW5lCi0gICAgICAgIEludFNpemUgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMs
IGlubmVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21MZWZ0SW5u
ZXJSYWRpdXMsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVz
OwotICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lk
dGhzKGlubmVyQm9yZGVySW5uZXJSZWN0LCBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRl
ckJvdHRvbVdpZHRoLCAKLSAgICAgICAgICAgIGlubmVyQm9yZGVyTGVmdFdpZHRoLCBpbm5lckJv
cmRlclJpZ2h0V2lkdGgsIGlubmVyQm9yZGVyVG9wTGVmdElubmVyUmFkaXVzLCBpbm5lckJvcmRl
clRvcFJpZ2h0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJCb3R0b21MZWZ0
SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyQm90dG9tUmlnaHRJbm5lclJhZGl1cyk7CiAKICAgICAg
ICAgLy8gRHJhdyBpbm5lciBib3JkZXIgbGluZQogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNh
dmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaW5uZXJC
b3JkZXJJbm5lclJlY3QsIGlubmVyQm9yZGVyVG9wTGVmdElubmVyUmFkaXVzLCAKLSAgICAgICAg
ICAgIGlubmVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21MZWZ0
SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyQm90dG9tUmlnaHRJbm5lclJhZGl1cyk7CisgICAgICAg
IEludFJlY3QgaW5uZXJCb3JkZXJJbm5lclJlY3QgPSBib3JkZXJJbm5lclJlY3QoYm9yZGVyUmVj
dCwgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJCb3Jk
ZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCk7CisgICAgICAgIFJvdW5kZWRJbnRS
ZWN0IGlubmVyQ2xpcCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJXaXRoQm9yZGVyV2lk
dGhzKGlubmVyQm9yZGVySW5uZXJSZWN0LCBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRl
ckJvdHRvbVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckJvcmRlckxlZnRXaWR0
aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRS
b3VuZGVkUmVjdENsaXAoaW5uZXJDbGlwKTsKICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChn
cmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIHRoaWNrbmVzcywgZHJhd1Ro
aWNrbmVzcywgcywgc3R5bGUsIGMsIFNPTElEKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5y
ZXN0b3JlKCk7CiAKICAgICAgICAgLy8gRHJhdyBvdXRlciBib3JkZXIgbGluZQogICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
Um91bmRlZFJlY3Qob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVyVG9wTGVmdElubmVy
UmFkaXVzLCAKLSAgICAgICAgICAgIG91dGVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgb3V0
ZXJCb3JkZXJCb3R0b21MZWZ0SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyQm90dG9tUmlnaHRJbm5l
clJhZGl1cyk7CisgICAgICAgIEludFJlY3Qgb3V0ZXJCb3JkZXJJbm5lclJlY3QgPSBib3JkZXJJ
bm5lclJlY3QoYm9yZGVyUmVjdCwgb3V0ZXJCb3JkZXJUb3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0
b21XaWR0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0ZXJCb3JkZXJMZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCk7Cisg
ICAgICAgIFJvdW5kZWRJbnRSZWN0IG91dGVyQ2xpcCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJC
b3JkZXJXaXRoQm9yZGVyV2lkdGhzKG91dGVyQm9yZGVySW5uZXJSZWN0LCBvdXRlckJvcmRlclRv
cFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRoLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0ZXJCb3JkZXJMZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KG91dGVyQ2xpcCk7CiAgICAgICAgIGRy
YXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRo
LCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBTT0xJRCk7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogCkBAIC0xMDI5LDE4ICsxMDE3LDE0IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBJbnRSZWN0CiAgICAgICAgIEludFJlY3QgaGFsZkJvcmRlclJlY3QgPSBi
b3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIC8gMiwg
c3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgLyAyLCAKICAgICAgICAgICAgIHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgLyAyKTsKIAotICAg
ICAgICBJbnRTaXplIHRvcExlZnRIYWxmUmFkaXVzLCB0b3BSaWdodEhhbGZSYWRpdXMsIGJvdHRv
bUxlZnRIYWxmUmFkaXVzLCBib3R0b21SaWdodEhhbGZSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5n
ZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoaGFsZkJvcmRlclJlY3Qs
IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIAotICAgICAgICAgICAgc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCBzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpIC8gMiwgCi0gICAgICAgICAgICB0b3BMZWZ0SGFsZlJhZGl1cywg
dG9wUmlnaHRIYWxmUmFkaXVzLCBib3R0b21MZWZ0SGFsZlJhZGl1cywgYm90dG9tUmlnaHRIYWxm
UmFkaXVzKTsKLQogICAgICAgICAvLyBQYWludCBmdWxsIGJvcmRlcgogICAgICAgICBkcmF3Qm94
U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyUGF0aCwgdGhp
Y2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzLCBzdHlsZSwgYywgczEpOwogCiAgICAgICAgIC8vIFBh
aW50IGlubmVyIG9ubHkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGhhbGZCb3JkZXJSZWN0LCB0b3BM
ZWZ0SGFsZlJhZGl1cywgdG9wUmlnaHRIYWxmUmFkaXVzLAotICAgICAgICAgICAgYm90dG9tTGVm
dEhhbGZSYWRpdXMsIGJvdHRvbVJpZ2h0SGFsZlJhZGl1cyk7CisgICAgICAgIFJvdW5kZWRJbnRS
ZWN0IGNsaXBSZWN0ID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlcldpdGhCb3JkZXJXaWR0
aHMoaGFsZkJvcmRlclJlY3QsIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5i
b3JkZXJCb3R0b21XaWR0aCgpIC8gMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSAvIDIpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChjbGlwUmVjdCk7CiAgICAg
ICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3Jk
ZXJQYXRoLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMik7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCA5NzRhOGQwNzJlZGY2Nzc5MGYwODkzNjc1OGYy
ODQ4YjA3YzY4ZGY3Li4wZDcyZjk1YzhhMGNjOTZkMmIwNTE4MTE2ODQ3ZTQ3ZDM4MDRiZTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTEzNSwx
MSArMTM1LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2gg
YSBjbGlwIGlmIHdlIGhhdmUgYSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5k
IHRoZSBmb3JlZ3JvdW5kIGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCiAgICAgICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBJbnRT
aXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAg
ICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0
b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJp
Z2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoYm9y
ZGVyUmVjdCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggYmU2NzBmZjg5ZTYwMjYy
YjA3M2Y1N2RjMjA1NjQwODMwODI2MDBlNC4uYjE4YmUzOGE1ZGFiY2MzZTliOTZkNDljYThkMGYz
NWZhYWM1M2M3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtV2luLmNwcApAQCAtNjc1LDkgKzY3NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGRJbnRlcm5hbChSZW5kZXJPYmplY3QqIG8sCiAgICAg
ICAgIC8vIGJhY2tncm91bmQgKHRoZW1lZCBvciBmaWxsZWQpIGFwcHJvcHJpYXRlbHkuCiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgd2UgZG8gdGhlIHJpZ2h0IHRoaW5nIGlmIGNzcyBiYWNr
Z3JvdW5kLWNsaXAgaXMgc2V0LgogICAgICAgICBpLmNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAg
SW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAg
ICAgIG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICBpLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQp
OworICAgICAgICBpLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChvLT5zdHlsZSgpLT5nZXRS
b3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICB9CiAgICAgewogICAgICAgICBjb25zdCBUaGVtZURh
dGEmIHRoZW1lRGF0YSA9IGdldFRoZW1lRGF0YShvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBhMTNiNGFhNDkzNjAwYTg4MGMxYjY4ZDAwOTIwODhh
MWJkMGJmNzVmLi4yZDgxMGZkM2M3ZGE0OTIzMmYzMGI3ZmY0OTRmOGZkMGM2MmQ5YmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xMDMyLDE0ICsx
MDMyLDggQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50
cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4KIAogICAgIHBhaW50SW5mby5jb250ZXh0
LT5zYXZlKCk7CiAKLSAgICBJbnRTaXplIHRvcExlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSB0b3BS
aWdodFJhZGl1czsKLSAgICBJbnRTaXplIGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSBi
b3R0b21SaWdodFJhZGl1czsKLQotICAgIG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVj
dChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90
dG9tUmlnaHRSYWRpdXMpOwotCi0gICAgaW50IHJhZGl1cyA9IHRvcExlZnRSYWRpdXMud2lkdGgo
KTsKKyAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSBvLT5zdHlsZSgpLT5nZXRSb3VuZGVkQm9y
ZGVyRm9yKHIpOworICAgIGludCByYWRpdXMgPSBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lk
dGgoKTsKIAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNl
UmVmKCk7CiAKQEAgLTEwNjIsMjcgKzEwNTYsMjcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFp
bnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW4K
ICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFk
aW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLnJpZ2h0KCksICByLnkoKSksIENH
UG9pbnRNYWtlKHIucmlnaHQoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCks
IGZhbHNlLCBmYWxzZSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dD
b250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRk
Um91bmRlZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFk
ZFJvdW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRl
eHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCB0b3BMZWZ0UmFkaXVz
LCB0b3BSaWdodFJhZGl1cywgSW50U2l6ZSgpLCBJbnRTaXplKCkpOworICAgIHBhaW50SW5mby5j
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoUm91bmRlZEludFJlY3QoZW5jbG9zaW5nSW50UmVj
dCh0b3BHcmFkaWVudCksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCku
dG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5h
ZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNp
emUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoUm91bmRlZEludFJl
Y3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgp
LCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0
KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGlu
Zy5nZXQoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQog
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0
KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
ciwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRv
bVJpZ2h0UmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KGJvcmRlcik7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcu
Z2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5n
ZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTEzMDMsOSArMTI5
Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mCiAgICAgICAgIG1haW5TaGFkaW5nLmFkb3B0
Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAg
Ym91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1h
aW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0
cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoYm91bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAgICAgICAgcmFk
aXVzLCByYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
Um91bmRlZEludFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsK
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDZkNWQzMjI4ODkwODY4M2Y0
ZjlhMjYxNDI5YWNiMzc1YTFlYmQyNzAuLmUyZWEwNDVhZTQ4Mjk3NTg3MGRlNDBiNGVlYzVjZWJj
MWJhM2ExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmNwcApAQCAtNzUxLDE0ICs3NTEsOCBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWlu
dE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKIAotICAgIEludFNpemUgdG9wTGVmdFJhZGl1
czsKLSAgICBJbnRTaXplIHRvcFJpZ2h0UmFkaXVzOwotICAgIEludFNpemUgYm90dG9tTGVmdFJh
ZGl1czsKLSAgICBJbnRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzOwotCi0gICAgby0+c3R5bGUoKS0+
Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBi
b3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0KLSAgICBpbnQgcmFkaXVzID0g
dG9wTGVmdFJhZGl1cy53aWR0aCgpOworICAgIFJvdW5kZWRJbnRSZWN0IGJvdW5kID0gby0+c3R5
bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIpOworICAgIGludCByYWRpdXMgPSBib3VuZC5y
YWRpaSgpLnRvcExlZnQoKS53aWR0aCgpOwogCiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIApAQCAtNzgwLDI4ICs3NzQsMjggQEAgdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW4KIAogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hh
ZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIu
cmlnaHQoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSks
IG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNhdmUoKTsKLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdFJhZGl1cywgdG9w
UmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICBD
R0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kLnJlY3QoKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1No
YWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0
LT5yZXN0b3JlKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRv
cExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChlbmNs
b3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm91bmQucmFkaWkoKS50b3BMZWZ0KCksIGJvdW5k
LnJhZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkp
IHsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVu
dCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJh
ZGl1cyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoUm91
bmRlZEludFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwg
SW50U2l6ZSgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm91bmQucmFkaWkoKS5ib3R0
b21SaWdodCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRv
bVNoYWRpbmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwog
ICAgIH0KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVz
LCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBi
b3VuZC5yZWN0KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
Ym91bmQpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGxlZnRTaGFkaW5nLmdl
dCgpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCByaWdodFNoYWRpbmcuZ2V0
KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CkBAIC05NTcsMzQgKzk1MSwz
NSBAQCBjb25zdCBpbnQgdHJhY2tSYWRpdXMgPSAyOwogCiBib29sIFJlbmRlclRoZW1lU2FmYXJp
OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgSW50UmVjdCBib3VuZHMgPSByOwotCi0g
ICAgaWYgKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSAgU2xpZGVySG9yaXpvbnRhbFBhcnQp
IHsKLSAgICAgICAgYm91bmRzLnNldEhlaWdodCh0cmFja1dpZHRoKTsKLSAgICAgICAgYm91bmRz
LnNldFkoci55KCkgKyByLmhlaWdodCgpIC8gMiAtIHRyYWNrV2lkdGggLyAyKTsKLSAgICB9IGVs
c2UgaWYgKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpIHsK
LSAgICAgICAgYm91bmRzLnNldFdpZHRoKHRyYWNrV2lkdGgpOwotICAgICAgICBib3VuZHMuc2V0
WChyLngoKSArIHIud2lkdGgoKSAvIDIgLSB0cmFja1dpZHRoIC8gMik7Ci0gICAgfQorICAgIElu
dFNpemUgcmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7CisgICAgUm91bmRlZEludFJl
Y3QgYm91bmRzKHIsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cyk7CisKKyAgICBpZiAo
by0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09ICBTbGlkZXJIb3Jpem9udGFsUGFydCkKKyAgICAg
ICAgYm91bmRzLnNldFJlY3QoSW50UmVjdChyLngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByLnkoKSArIHIuaGVpZ2h0KCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgci53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYWNrV2lkdGgpKTsKKyAgICBlbHNlIGlmIChvLT5zdHlsZSgpLT5hcHBlYXJh
bmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQorICAgICAgICBib3VuZHMuc2V0UmVjdChJbnRS
ZWN0KHIueCgpICsgci53aWR0aCgpIC8gMiAtIHRyYWNrV2lkdGggLyAyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHIueSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYWNrV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuaGVpZ2h0KCkp
KTsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOwogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0
KGNvbnRleHQsIGJvdW5kcy5yZWN0KCkpOwogCiAgICAgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFj
a3MgbWFpbkNhbGxiYWNrcyA9IHsgMCwgVHJhY2tHcmFkaWVudEludGVycG9sYXRlLCBOVUxMIH07
CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1haW5GdW5jdGlvbihBZG9wdENGLCBDR0Z1
bmN0aW9uQ3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZtYWluQ2FsbGJhY2tzKSk7CiAg
ICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gbWFpblNoYWRpbmc7CiAgICAgaWYgKG8tPnN0eWxl
KCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCi0gICAgICAgIG1haW5TaGFk
aW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3Vu
ZHMueCgpLCAgYm91bmRzLmJvdHRvbSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJpZ2h0KCksIGJv
dW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAg
ICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1Bv
aW50TWFrZShib3VuZHMucmVjdCgpLngoKSwgIGJvdW5kcy5yZWN0KCkuYm90dG9tKCkpLCBDR1Bv
aW50TWFrZShib3VuZHMucmVjdCgpLnJpZ2h0KCksIGJvdW5kcy5yZWN0KCkuYm90dG9tKCkpLCBt
YWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogICAgIGVsc2UKLSAgICAgICAgbWFp
blNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtl
KGJvdW5kcy54KCksICBib3VuZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRz
LmJvdHRvbSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAg
bWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRN
YWtlKGJvdW5kcy5yZWN0KCkueCgpLCAgYm91bmRzLnJlY3QoKS55KCkpLCBDR1BvaW50TWFrZShi
b3VuZHMucmVjdCgpLngoKSwgYm91bmRzLnJlY3QoKS5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5n
ZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywg
dHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
Ym91bmRzLAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAgICAgICAgcmFkaXVzLCByYWRpdXMp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzKTsKICAg
ICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcAppbmRleCAyN2I4NzgzYmFlYmUwNDUwOTZmNTFj
M2RiM2M1NmNhOWY5YzZkMjFlLi5jNTBjZjVhYjlhMWIxMGIwMjU2Zjk4ZWQzMTBlZTFlZGQ1ZjA3
ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5D
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3Bw
CkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnQKICAgICBpbnQgeSA9
IHIueSgpICsgKHIuaGVpZ2h0KCkgLSBjYW5jZWxTaXplLmhlaWdodCgpKSAvIDIgKyAxOwogICAg
IEludFJlY3QgY2FuY2VsQm91bmRzKEludFBvaW50KHgsIHkpLCBjYW5jZWxTaXplKTsKICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoY2FuY2VsQm91bmRzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2Fu
Y2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoUm91bmRlZEludFJlY3QoY2FuY2VsQm91bmRzLCBjYW5jZWxSYWRpdXMsIGNh
bmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+ZmlsbFJlY3QoY2FuY2VsQm91bmRzLCBidXR0b25Db2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKICAgICAvLyBEcmF3IHRoZSAneCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKaW5kZXggMTUyYmIyZjgwMzFlOGY3ZGI0NTI2Y2NkMDFiYTVlZDI0
MmNlMzE0Yi4uNmVmNzkxMDdkN2MyNWI1YmZjYzUzMzc0NjAzZjVkZWFjZDExMDI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTI3NCwxMSArMjc0LDcg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSkKIAogICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJh
ZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQg
Z2V0cyBwYWludGVkLgogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICAKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQ7Ci0gICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0
LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVm
dCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9y
KGJvcmRlclJlY3QpKTsKICAgICB9CiAKICAgICBpZiAobV93aWRnZXQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDAzNjM1ZDlmMTlmYmE0OTAx
NjU2NzI3ODk2OGY4ZjEzZGE3NDhhODMuLjBlNTBlZGI3ODAwMGE1MGFiZGQ4ZDBmMzlhNWIwZmQ3
OTI1Njc2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3Jk
ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEu
aApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBCb3JkZXJEYXRhX2gKIAogI2luY2x1ZGUgIkJv
cmRlclZhbHVlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUu
aCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogCkBAIC0xMDksNyArMTEwLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IExlbmd0aFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90
b3BSaWdodDsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJl
dHVybiBtX2JvdHRvbUxlZnQ7IH0KICAgICBjb25zdCBMZW5ndGhTaXplJiBib3R0b21SaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmlnaHQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBC
b3JkZXJWYWx1ZSBtX2xlZnQ7CiAgICAgQm9yZGVyVmFsdWUgbV9yaWdodDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDg4MTgxOGM4ZDA2
YzdjODQ0NTY1N2YyZDYxNjQzNWE2YjRlYjYyM2UuLjYwMDg3MDgxNjA5YTBkNzNhZjY2NWNkYTdi
MTNjNmEyMzExYTBmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtNzQxLDcgKzc0MSwxOSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRC
b3hTaGFkb3coU2hhZG93RGF0YSogc2hhZG93RGF0YSwgYm9vbCBhZGQpCiAgICAgcmFyZURhdGEt
Pm1fYm94U2hhZG93LnNldChzaGFkb3dEYXRhKTsKIH0KIAotc3RhdGljIHZvaWQgY29uc3RyYWlu
Q29ybmVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIElu
dFNpemUmIHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdo
dCkKK3N0YXRpYyBSb3VuZGVkSW50UmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRl
ckRhdGEmIGJvcmRlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBSb3Vu
ZGVkSW50UmVjdDo6UmFkaWkoSW50U2l6ZShib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1Zh
bHVlKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
cmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLmNh
bGNWYWx1ZSh3aWR0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0
aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoYm9yZGVyLmJvdHRvbVJp
Z2h0KCkud2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVl
KGhlaWdodCkpKTsKK30KKworc3RhdGljIGZsb2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkKIHsK
ICAgICAvLyBDb25zdHJhaW4gY29ybmVyIHJhZGlpIHVzaW5nIENTUzMgcnVsZXM6CiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJhZGl1cwpA
QCAtNzUwLDc1ICs3NjIsNDMgQEAgc3RhdGljIHZvaWQgY29uc3RyYWluQ29ybmVyUmFkaWlGb3JS
ZWN0KGNvbnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFMKICAgICB1bnNpZ25l
ZCByYWRpaVN1bTsKIAogICAgIC8vIHRvcAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvcExlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQu
d2lkdGgoKSk7IC8vIENhc3RzIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cuCi0gICAgaWYgKHJh
ZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHIud2lkdGgoKSkpCi0gICAgICAgIGZhY3Rv
ciA9IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4oci53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3Ip
OworICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlpLnRvcExlZnQoKS53
aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS50b3BSaWdodCgpLndpZHRoKCkp
OyAvLyBDYXN0cyB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChyYWRpaVN1bSA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LndpZHRoKCkpKQorICAgICAgICBmYWN0b3IgPSBz
dGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0
b3IpOwogCiAgICAgLy8gYm90dG9tCi0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYm90dG9tTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21SaWdo
dC53aWR0aCgpKTsKLSAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci53
aWR0aCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLndpZHRo
KCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CisgICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CisgICAgaWYgKHJhZGlpU3VtID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWlu
KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LndpZHRoKCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CiAg
ICAgCiAgICAgLy8gbGVmdAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRv
cExlZnQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbUxlZnQuaGVpZ2h0
KCkpOwotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyLmhlaWdodCgp
KSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLmhlaWdodCgpKSAv
IHJhZGlpU3VtLCBmYWN0b3IpOworICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFkaWku
Ym90dG9tTGVmdCgpLmhlaWdodCgpKTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRp
Y19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwogICAgIAog
ICAgIC8vIHJpZ2h0Ci0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmln
aHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgp
KTsKLSAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci5oZWlnaHQoKSkp
Ci0gICAgICAgIGZhY3RvciA9IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4oci5oZWlnaHQoKSkgLyBy
YWRpaVN1bSwgZmFjdG9yKTsKKyAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YWRpaS50b3BSaWdodCgpLmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS5i
b3R0b21SaWdodCgpLmhlaWdodCgpKTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRp
Y19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwogICAgIAot
ICAgIC8vIFNjYWxlIGFsbCByYWRpaSBieSBmIGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAoZmFjdG9y
IDwgMSkgewotICAgICAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29tZXMg
emVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KLSAgICAgICAgdG9wTGVmdC5z
Y2FsZShmYWN0b3IpOwotICAgICAgICBpZiAoIXRvcExlZnQud2lkdGgoKSB8fCAhdG9wTGVmdC5o
ZWlnaHQoKSkKLSAgICAgICAgICAgIHRvcExlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgIHRvcFJp
Z2h0LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICghdG9wUmlnaHQud2lkdGgoKSB8fCAhdG9w
UmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAg
ICAgYm90dG9tTGVmdC5zY2FsZShmYWN0b3IpOwotICAgICAgICBpZiAoIWJvdHRvbUxlZnQud2lk
dGgoKSB8fCAhYm90dG9tTGVmdC5oZWlnaHQoKSkKLSAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBJ
bnRTaXplKCk7Ci0gICAgICAgIGJvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlm
ICghYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAg
ICAgICBib3R0b21SaWdodCA9IEludFNpemUoKTsKLSAgICB9CisgICAgQVNTRVJUKGZhY3RvciA8
PSAxKTsKKyAgICByZXR1cm4gZmFjdG9yOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpnZXRCb3Jk
ZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6
ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBj
b25zdAorUm91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IoY29u
c3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICB0b3BMZWZ0ID0gSW50U2l6ZShzdXJyb3Vu
ZC0+Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3Vu
ZC0+Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwotICAg
IHRvcFJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKS5j
YWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLmhlaWdodCgp
LmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7Ci0gICAgCi0gICAgYm90dG9tTGVmdCA9IEludFNpemUo
c3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgp
KSwgc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVp
Z2h0KCkpKTsKLSAgICBib3R0b21SaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0
b21SaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIu
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwotCi0gICAgY29u
c3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0
LCBib3R0b21SaWdodCk7CisgICAgUm91bmRlZEludFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1Jh
ZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgcmFkaWkuc2NhbGUoY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihyZWN0LCByYWRpaSkpOworICAg
IHJldHVybiBSb3VuZGVkSW50UmVjdChyZWN0LCByYWRpaSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5
bGU6OmdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRS
ZWN0JiBpbm5lclJlY3QsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCB1bnNpZ25lZCBzaG9ydCBi
b3R0b21XaWR0aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdo
dFdpZHRoLCBJbnRTaXplJiBpbm5lclRvcExlZnQsIEludFNpemUmIGlubmVyVG9wUmlnaHQsIElu
dFNpemUmIGlubmVyQm90dG9tTGVmdCwgSW50U2l6ZSYgaW5uZXJCb3R0b21SaWdodCkgY29uc3QK
K1JvdW5kZWRJbnRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJXaXRoQm9y
ZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVjdCwgdW5zaWduZWQgc2hvcnQgdG9wV2lk
dGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0
IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCkgY29uc3QKIHsKLSAgICBpbm5l
clRvcExlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2Fs
Y1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCkuaGVp
Z2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotICAgIGlubmVyVG9wUmlnaHQg
PSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZShp
bm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5j
YWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0ID0gSW50
U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5l
clJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNh
bGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lckJvdHRvbVJpZ2h0ID0gSW50
U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5u
ZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCku
Y2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotCi0KLSAgICBpbm5lclRvcExlZnQuc2V0
V2lkdGgobWF4KDAsIGlubmVyVG9wTGVmdC53aWR0aCgpIC0gbGVmdFdpZHRoKSk7Ci0gICAgaW5u
ZXJUb3BMZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJUb3BMZWZ0LmhlaWdodCgpIC0gdG9wV2lk
dGgpKTsKLQotICAgIGlubmVyVG9wUmlnaHQuc2V0V2lkdGgobWF4KDAsIGlubmVyVG9wUmlnaHQu
d2lkdGgoKSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBpbm5lclRvcFJpZ2h0LnNldEhlaWdodChtYXgo
MCwgaW5uZXJUb3BSaWdodC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7Ci0KLSAgICBpbm5lckJvdHRv
bUxlZnQuc2V0V2lkdGgobWF4KDAsIGlubmVyQm90dG9tTGVmdC53aWR0aCgpIC0gbGVmdFdpZHRo
KSk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0b21MZWZ0
LmhlaWdodCgpIC0gYm90dG9tV2lkdGgpKTsKLQotICAgIGlubmVyQm90dG9tUmlnaHQuc2V0V2lk
dGgobWF4KDAsIGlubmVyQm90dG9tUmlnaHQud2lkdGgoKSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBp
bm5lckJvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0b21SaWdodC5oZWlnaHQo
KSAtIGJvdHRvbVdpZHRoKSk7Ci0KLSAgICBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoaW5u
ZXJSZWN0LCBpbm5lclRvcExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5u
ZXJCb3R0b21SaWdodCk7CisgICAgUm91bmRlZEludFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1Jh
ZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIGlubmVyUmVjdC53aWR0aCgpLCBpbm5lclJlY3QuaGVp
Z2h0KCkpOworICAgIHJhZGlpLnNocmluayh0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0
aCwgcmlnaHRXaWR0aCk7CisgICAgcmFkaWkuc2NhbGUoY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihp
bm5lclJlY3QsIHJhZGlpKSk7CisgICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0KGlubmVyUmVjdCwg
cmFkaWkpOwogfQogCiBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291
bnRlckRpcmVjdGl2ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCBjYmM1YzE3YjZhYWIyOTkyZjQ3ZWM2NWQyN2E5NTU1MGI3Zjgx
ZDgzLi42MmQwYTFlNjUxNWQ0ZjJhMmIyZWI1MjhjZGM2OWEyOTEwZTIyN2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTQsNiArNTQsNyBA
QAogI2luY2x1ZGUgIk91dGxpbmVWYWx1ZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIlJvdW5kZWRJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiU2hhZG93RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlQmFja2dyb3VuZERhdGEuaCIK
ICNpbmNsdWRlICJTdHlsZUJveERhdGEuaCIKQEAgLTg1MiwxMyArODUzLDEwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRo
KCksIEZpeGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KLQogICAgIAot
ICAgIHZvaWQgZ2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0
b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpIGNvbnN0OwotICAgIHZvaWQgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RX
aXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgs
IHVuc2lnbmVkIHNob3J0IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0LCBJbnRTaXpl
JiBpbm5lclRvcFJpZ2h0LCBJbnRTaXplJiBpbm5lckJvdHRvbUxlZnQsIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEludFNpemUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0OworICAgIFJv
dW5kZWRJbnRSZWN0IGdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYpIGNvbnN0Owor
ICAgIFJvdW5kZWRJbnRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlcldpdGhCb3JkZXJXaWR0aHMo
Y29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0
IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJp
Z2h0V2lkdGgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQg
c2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0K
ICAgICB2b2lkIHNldEJvcmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fc3R5bGUsIHYpIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79127</attachid>
            <date>2011-01-16 22:46:36 -0800</date>
            <delta_ts>2011-01-18 05:48:49 -0800</delta_ts>
            <desc>trying to fix the build break</desc>
            <filename>bug-51664-20110117154633.patch</filename>
            <type>text/plain</type>
            <size>110960</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDljYTQ4NGFkNzIyYTRjZTVmMjc3ODI5ZjE3ODU3OWNiNmEyNGFjYjIu
LjQyNTEzMzg1NWEzY2EyYjAwOTg4OGQ3YWE3YjBmMDkzNzRmYWJhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNTMxLDYgKzUzMSw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VHJhdmVyc2FsU3RhdGUuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCisJ
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcCBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDgwNTBiNDhjZmE3ZTAzMzdlMDNjNTdkZGI3ZDM1Nzg3ODUyYTg2
ZWIuLjc2NWU0MTNiNDgwMzFkNjAwNDg1NTJjZDViODJjZTUyYzY2ZTNiMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xMzUwLDYgKzEzNTAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMjk0MGViMGUzZmNiMjY3Njc3YjZhOGE3MmVkY2FmNjNkODExNjE3Zi4uYWI5ZWRh
OTRiZjc1ZjE3NzUzODhlOWU3Njg2N2ZjNzYyODE3ODFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDkzIEBACisyMDExLTAxLTE0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9y
aW5nOiBFeHRyYWN0IFJvdW5kZWRJbnRSZWN0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTY2NAorCisgICAgICAgIFJvdW5kZWRJbnRSZWN0
IGlzIGEgcGFpciBvZiByZWN0IGFuZCBmb3VyIEludFNpemUgb2JqZWN0cyB3aGljaCByZXByZXNl
bnQKKyAgICAgICAgY29ybmVyIHJhZGlpIG9mIHRoZSByZWN0YW5nbGUuIEludFNpemUgaXMgZ3Jv
dXBlZCBpbnRvIFJvdW5kZWRJbnRSZWN0OjpSYWRpaS4KKyAgICAgICAgTm93IFJlbmRlclN0eWxl
OjpnZXRSb3VuZGVkQm9yZGVyRm9yKCkgYW5kIFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJC
b3JkZXJXaXRoQm9yZGVyV2lkdGhzKCkKKyAgICAgICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0IGFu
ZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcCgpLCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdCgpCisgICAgICAgIGFuZCBvdGhlciBmdW5jdGlvbnMgYWNjZXB0IFJv
dW5kZWRJbnRSZWN0IGFzIGFuIGFyZ3VtZW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8g
YmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Sb3VuZGVkSW50UmVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRl
ZEludFJlY3Q6OlJhZGlpOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJl
Y3Q6OlJhZGlpOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFk
aWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6Omlu
Y2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OlJh
ZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRS
ZWN0OjpSb3VuZGVkSW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6
aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6
ZXhjbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZEludFJlY3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFk
aWk6OlJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2V0
VG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnNldFRv
cFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2V0Qm90
dG9tTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnNldEJv
dHRvbVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6dG9w
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnRvcFJpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6Ym90dG9tTGVmdCk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmJvdHRvbVJpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2hyaW5rKToKKyAgICAgICAgKFdl
YkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJ
bnRSZWN0OjpyYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6aXNSb3Vu
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0Ojppc0VtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpzZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJvdW5kZWRJbnRSZWN0OjpzZXRSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50
UmVjdDo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6aW5mbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaENvbnRl
bnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVQb2x5Z29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGV4dEZp
ZWxkSW50ZXJuYWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNr
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2sp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRh
dGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY1JhZGlpRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNDb25zdHJh
aW50U2NhbGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRC
b3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5l
ckJvcmRlcldpdGhCb3JkZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJvcmRlclJh
ZGl1cyk6CisKIDIwMTEtMDEtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBmNGEyMzlmMTk1MTI2YTQyMGRlMmI2ZGU5ZWZjNzU2ZjNhNDM4OWY0Li44NGY4ODM3OGY1ODVi
MzFhOWU5ODc1YmMwNTM3Nzg1MjJmNjE4NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yOTQyLDYg
KzI5NDIsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxT
dGF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvU2ltcGxlRm9udERhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggN2FmMDA4YzVhZDQ0YWEx
ZTE2NzZlODNmZWM4Y2EyZjA3NzRjMmQ4YS4uMDU5MWUzZDU3YTA1MzU1Zjc5MDhkODc5NmZkODE0
Y2E5N2U0MmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEyMTAsNiArMTIxMCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmUuY3BwIFwKQEAgLTIxMjksNiArMjEzMCw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZURlY29kZXJRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYmM1ZjY5NjYwMzExZjgxNGNhMzhjZjg0MTEwMjEyM2Q1MjFmY2M4OC4u
MDhkNzhhOTg4ZTg3OTU2Mjc5NGYyNTg3YmYxNThhZDcwOGQ3YjFkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE1OCw2ICsz
MTU4LDggQEAKIAkJQTYyMkE4RkYxMjJDNDRBNjAwQTc4NUIzIC8qIEdlbmVyaWNCaW5kaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNjIyQThGOTEy
MkM0NEE2MDBBNzg1QjMgLyogR2VuZXJpY0JpbmRpbmcuaCAqLzsgfTsKIAkJQTcxODc2MEUwQjJB
MTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBB
MTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi87IH07CisJCUE3M0Y5NUZFMTJDOTdCRkUw
MDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZElu
dFJlY3QuY3BwICovOyB9OworCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZElu
dFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc2MTA3NTJBQ0IwMEM5
Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNzVFNDk3NzEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovOyB9
OwogCQlBNzVFOEI4ODBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4MDBFMURFMkQ2MDA3RjI0
ODEgLyogRkVCbGVuZC5jcHAgKi87IH07CkBAIC05NTI0LDYgKzk1MjYsOCBAQAogCQlBNzE4NzYw
RDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUE3MEM5MTFBRkIwMjAwMDk4OUQ2RCAvKiBI
VE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWV0ZXJFbGVt
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczRjk1RkMxMkM5N0JGRTAw
MzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJB
Q0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RThCODAwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRkVCbGVuZC5jcHA7IHBh
dGggPSBmaWx0ZXJzL0ZFQmxlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc0NDksNiArMTc0NTMsOCBAQAogCQkJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRo
VHJhdmVyc2FsU3RhdGUuaCAqLywKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0
dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAq
LywKKwkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICov
LAorCQkJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovLAog
CQkJCTM3MUY0RkZCMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgKi8s
CiAJCQkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8s
CiAJCQkJQjJDM0RBNTMwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLywK
QEAgLTIxNzExLDYgKzIxNzE3LDcgQEAKIAkJCQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyog
UmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzREQTM3MTAxM0YzRjcw
MDc5ODdBRCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTEwQTE1NUEw
NTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAorCQkJCUE3M0Y5NUZG
MTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTExQzkwRUY4NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUM2M0EyNDgwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMUYwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWVfYXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1MDIsNiArMjQ1MDksNyBAQAogCQkJCUZE
MzE2MEFDMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzc0REEzODEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThDRkY1RTcwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3gu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5k
ZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUM4MEVGODZENDcwMDlEMENB
RiAvKiBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2
M0EyNDkwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNjFiNzc4YzcyYjJhYjg3NzBlMDQzYWI0Yjc4NmViMDFl
NjAwMTAwYi4uZTdlYTg4MTMwNTYxOGFmOTQxNWNiZmVlYzliODZmZTBhZmY5YWUxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUm91bmRlZElu
dFJlY3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTM2LDI1ICs1MzcsMjMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclMKICAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVD
b2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LAotICAgIGNv
bnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBSb3VuZGVkSW50UmVj
dCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0
LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QocmVjdC5yZWN0KCksIHJlY3QucmFkaWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50
b3BSaWdodCgpLCByZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9t
UmlnaHQoKSk7CiAgICAgY2xpcChwYXRoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBPdXRSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNv
bnN0IFJvdW5kZWRJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Cisg
ICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwgcmVjdC5yYWRpaSgpLnRvcExlZnQo
KSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCksIHJl
Y3QucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCkBAIC01
ODUsNiArNTg0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIEdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIGdlbmVyYXRvci5maWxsKHRo
aXMsIHJlY3QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IFJvdW5kZWRJbnRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK3sKKyAgICBmaWxsUm91bmRlZFJlY3QocmVjdC5yZWN0KCksIHJlY3QucmFk
aWkoKS50b3BMZWZ0KCksIHJlY3QucmFkaWkoKS50b3BSaWdodCgpLCByZWN0LnJhZGlpKCkuYm90
dG9tTGVmdCgpLCByZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgY29sb3IsIGNvbG9yU3BhY2Up
OworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbikKIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4NTg4NTIzYWI3MWYxZWU5
MmNlOTNjZDVkOTNkODRjMzhjYjJlMzQwLi5hNDU5YjM3Y2JkZGRjMWEwNTYzNTVlY2RhNzBjNjk1
MmJkOTE1YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtMTIwLDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiAgICAgY2xhc3MgSW1h
Z2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBSb3VuZGVkSW50UmVjdDsK
ICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogICAg
IGNsYXNzIFRleHRSdW47CkBAIC0yODIsNiArMjgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSk7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR2VuZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6
ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJ
bnRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFy
UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzEwLDEwICszMTIsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYp
OwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgdm9pZCBh
ZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgUm91bmRlZEludFJlY3QmKTsKICAgICAgICAgdm9pZCBh
ZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CiAg
ICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xpcE91
dFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25z
dCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHQpOworICAgICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkSW50UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBX
aW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50
cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7CiAgICAgICAgIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZTgwYzlhZTEzMmE4MDg4ZmNkYmIzMzE5ZDgwMDg2NWE1MDU0MjAzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZEludFJlY3QuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSb3VuZGVkSW50UmVjdC5oIgorCisjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiti
b29sIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6aXNaZXJvKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV90b3BMZWZ0LmlzWmVybygpICYmIG1fdG9wUmlnaHQuaXNaZXJvKCkgJiYgbV9ib3R0b21MZWZ0
LmlzWmVybygpICYmIG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7Cit9CisKK3ZvaWQgUm91bmRlZElu
dFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9hdCBmYWN0b3IpCit7CisgICAgaWYgKGZhY3RvciA9PSAx
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVy
IGJlY29tZXMgemVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KKyAgICBtX3Rv
cExlZnQuc2NhbGUoZmFjdG9yKTsKKyAgICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpIHx8ICFtX3Rv
cExlZnQuaGVpZ2h0KCkpCisgICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKKyAgICBtX3Rv
cFJpZ2h0LnNjYWxlKGZhY3Rvcik7CisgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkgfHwgIW1f
dG9wUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAg
bV9ib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7CisgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgo
KSB8fCAhbV9ib3R0b21MZWZ0LmhlaWdodCgpKQorICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRT
aXplKCk7CisgICAgbV9ib3R0b21SaWdodC5zY2FsZShmYWN0b3IpOworICAgIGlmICghbV9ib3R0
b21SaWdodC53aWR0aCgpIHx8ICFtX2JvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICBtX2Jv
dHRvbVJpZ2h0ID0gSW50U2l6ZSgpOworCit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlp
OjpleHBhbmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGlu
dCByaWdodFdpZHRoKQoreworICAgIG1fdG9wTGVmdC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX3Rv
cExlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOworICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3Rk
OjptYXgoMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKworICAgIG1fdG9wUmln
aHQuc2V0V2lkdGgoc3RkOjptYXgoMCwgbV90b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkp
OworICAgIG1fdG9wUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fdG9wUmlnaHQuaGVpZ2h0
KCkgKyB0b3BXaWR0aCkpOworCisgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4KDAs
IG1fYm90dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV9ib3R0b21MZWZ0LnNl
dEhlaWdodChzdGQ6Om1heCgwLCBtX2JvdHRvbUxlZnQuaGVpZ2h0KCkgKyBib3R0b21XaWR0aCkp
OworCisgICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX2JvdHRvbVJpZ2h0
LndpZHRoKCkgKyByaWdodFdpZHRoKSk7CisgICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQoc3Rk
OjptYXgoMCwgbV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Cit9CisKK3Zv
aWQgUm91bmRlZEludFJlY3Q6OlJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJvdW5k
ZWRJbnRSZWN0OjpSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAgaWYg
KGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAg
ICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxlZnQoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJpZ2h0KCk7CisgICAgICAgIG1f
dG9wTGVmdCA9IGVkZ2VzLnRvcExlZnQoKTsKKyAgICB9CisKKyAgICBpZiAoaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1f
dG9wUmlnaHQgPSBlZGdlcy50b3BSaWdodCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQg
PSBlZGdlcy5ib3R0b21SaWdodCgpOworICAgIH0KK30KKwordm9pZCBSb3VuZGVkSW50UmVjdDo6
UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sKKyAgICBp
ZiAoZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQor
ICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICBtX3RvcExlZnQgPSBJbnRT
aXplKCk7CisgICAgfQorICAgICAgICAKKyAgICBpZiAoZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
IHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBJ
bnRTaXplKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNp
emUoKTsKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICB9Cit9CisKK1Jv
dW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCkKKyAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQoreworfQorCitSb3Vu
ZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmFk
aWkmIHJhZGlpKQorICAgIDogbV9yZWN0KHJlY3QpCisgICAgLCBtX3JhZGlpKHJhZGlpKQorewor
fQorCitSb3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgIDogbV9y
ZWN0KHJlY3QpCisgICAgLCBtX3JhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBi
b3R0b21SaWdodCkKK3sKK30KKwordm9pZCBSb3VuZGVkSW50UmVjdDo6aW5jbHVkZUxvZ2ljYWxF
ZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAgbV9y
YWRpaS5pbmNsdWRlTG9naWNhbEVkZ2VzKGVkZ2VzLCBpc0hvcml6b250YWwsIGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKK30KKwordm9pZCBSb3VuZGVk
SW50UmVjdDo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQoreworICAg
IG1fcmFkaWkuZXhjbHVkZUxvZ2ljYWxFZGdlcyhpc0hvcml6b250YWwsIGV4Y2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZEludFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJ
bnRSZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE4MmIyYzBlMDYzYWNhNDIyNzVkODZkZTdlZDI5Zjk5NzMw
ZDRkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JvdW5kZWRJbnRSZWN0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBSb3VuZGVkSW50UmVjdF9oCisjZGVmaW5lIFJvdW5kZWRJbnRSZWN0X2gKKworI2luY2x1
ZGUgIkludFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisKK2NsYXNzIFJvdW5kZWRJ
bnRSZWN0IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBSYWRpaSB7CisgICAgcHVibGljOgorICAgICAg
ICBSYWRpaSgpIHt9CisgICAgICAgIFJhZGlpKGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0
IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRT
aXplJiBib3R0b21SaWdodCkKKyAgICAgICAgICAgIDogbV90b3BMZWZ0KHRvcExlZnQpCisgICAg
ICAgICAgICAsIG1fdG9wUmlnaHQodG9wUmlnaHQpCisgICAgICAgICAgICAsIG1fYm90dG9tTGVm
dChib3R0b21MZWZ0KQorICAgICAgICAgICAgLCBtX2JvdHRvbVJpZ2h0KGJvdHRvbVJpZ2h0KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgSW50
U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0VG9wUmln
aHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQorICAgICAgICB2
b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBz
aXplOyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkg
eyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsgfQorICAgICAgICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0
KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9CisgICAgICAgIGNvbnN0IEludFNpemUmIHRv
cFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQorICAgICAgICBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgICAg
IGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdo
dDsgfQorCisgICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCBpbmNs
dWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CisgICAgICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9v
bCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
KworICAgICAgICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7CisgICAgICAgIHZvaWQgZXhwYW5k
KGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRX
aWR0aCk7CisgICAgICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7IGV4cGFuZChzaXplLCBzaXpl
LCBzaXplLCBzaXplKTsgfQorICAgICAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGludCBi
b3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BX
aWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KKyAgICAgICAg
dm9pZCBzaHJpbmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBJbnRTaXplIG1fdG9wTGVmdDsKKyAgICAgICAgSW50
U2l6ZSBtX3RvcFJpZ2h0OworICAgICAgICBJbnRTaXplIG1fYm90dG9tTGVmdDsKKyAgICAgICAg
SW50U2l6ZSBtX2JvdHRvbVJpZ2h0OworICAgIH07CisKKyAgICBleHBsaWNpdCBSb3VuZGVkSW50
UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgUmFkaWkmID0gUmFkaWkoKSk7CisgICAgUm91bmRl
ZEludFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIFJvdW5k
ZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6
ZSYgYm90dG9tUmlnaHQpOworCisgICAgY29uc3QgSW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQorICAgIGNvbnN0IFJhZGlpJiByYWRpaSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFkaWk7IH0KKyAgICBib29sIGlzUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JhZGlpLmlz
WmVybygpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmlzRW1w
dHkoKTsgfQorCisgICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWN0
ID0gcmVjdDsgfQorICAgIHZvaWQgc2V0UmFkaWkoY29uc3QgUmFkaWkmIHJhZGlpKSB7IG1fcmFk
aWkgPSByYWRpaTsgfQorCisgICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUgc2l6ZSkgeyBtX3Jl
Y3QubW92ZShzaXplKTsgfQorICAgIHZvaWQgaW5mbGF0ZShpbnQgc2l6ZSkgeyBtX3JlY3QuaW5m
bGF0ZShzaXplKTsgIH0KKyAgICB2b2lkIGluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpIHsgbV9y
ZWN0LmluZmxhdGUoc2l6ZSk7IG1fcmFkaWkuZXhwYW5kKHNpemUpOyB9CisgICAgdm9pZCBleHBh
bmRSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsgfQorICAgIHZvaWQgc2hy
aW5rUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7IH0KKworICAgIHZvaWQg
aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFs
LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOworICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9v
bCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
KworcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fcmVjdDsKKyAgICBSYWRpaSBtX3JhZGlpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUm91bmRlZEludFJlY3RfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzZDM2N2FhNTYwYmEzZmMw
MTczZDYxODZjYzBmMTExOWNjOTUwZWRmLi5mMjBhYTBlNjQ0YTZlMjRhMjI5ZmJmNjM1NzgyOTc2
ODgxNzVkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTA2
NywxNCArMTA2Nyw4IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICB9CiAgICAgSW50UmVjdCBjbGlwUmVj
dChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KHR4LCB0eSkgOiBvdmVyZmxvd0NsaXBS
ZWN0KHR4LCB0eSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgaWYgKHN0
eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICBJbnRSZWN0IGJvcmRlclJl
Y3QgPSBJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotICAgICAgICBzdHlsZSgp
LT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRk
Um91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0
LCBib3R0b21SaWdodCk7Ci0gICAgfQotICAgIAorICAgIGlmIChzdHlsZSgpLT5oYXNCb3JkZXJS
YWRpdXMoKSkKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChz
dHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWln
aHQoKSkpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAppbmRleCA1MDk4MzA2YWUxZmNjZTQ3OGMwMDNkOTJjYzIwZTEzMjFlODI3
NTI1Li4xMTc3MWE3MjBiZjhlNTQzYzg3MTk5NzlmNzc5OGMxOGU0MGQ3MGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTU0
NywyNiArNTQ3LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICBjb250ZXh0
LT5zYXZlKCk7CiAKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQ7Ci0gICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChi
b3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwot
Ci0gICAgICAgIGlmICghaW5jbHVkZUxlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0b3BMZWZ0ID0g
SW50U2l6ZSgpOwotICAgICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9udGFsKCkpCi0gICAgICAg
ICAgICAgICAgYm90dG9tTGVmdCA9IEludFNpemUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKCFpbmNsdWRlUmlnaHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoYm94LT5pc0hv
cml6b250YWwoKSkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAg
ICAgICAgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0
b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICBSb3VuZGVkSW50UmVj
dCBib3JkZXIgPSBzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpOworICAg
ICAgICBib3JkZXIuZXhjbHVkZUxvZ2ljYWxFZGdlcyhib3gtPmlzSG9yaXpvbnRhbCgpLCAhaW5j
bHVkZUxlZnRFZGdlLCAhaW5jbHVkZVJpZ2h0RWRnZSk7CisgICAgICAgIGNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAgICAgICBjbGlwcGVkVG9Cb3JkZXJSYWRpdXMgPSB0
cnVlOwogICAgIH0KIApAQCAtMTAyNCw2MiArMTAwNywzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50
IHR4LAogICAgIGJvb2wgcmVuZGVyUmlnaHQgPSByaWdodFN0eWxlID4gQkhJRERFTiAmJiAhcmln
aHRUcmFuc3BhcmVudCAmJiAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogICAgIGJvb2wgcmVuZGVyQm90dG9tID0gYm90dG9tU3R5bGUgPiBCSElEREVOICYmICFib3R0
b21UcmFuc3BhcmVudCAmJiAoaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAKLSAgICBib29sIHJlbmRlclJhZGlpID0gZmFsc2U7CiAgICAgUGF0aCByb3VuZGVkUGF0aDsK
LSAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsK
LSAgICBJbnRSZWN0IGJvcmRlclJlY3QodHgsIHR5LCB3LCBoKTsKKyAgICBSb3VuZGVkSW50UmVj
dCBib3JkZXIodHgsIHR5LCB3LCBoKTsKIAogICAgIGlmIChzdHlsZS0+aGFzQm9yZGVyUmFkaXVz
KCkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90
dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRCb3Jk
ZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMs
IGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgYm9yZGVyLmlu
Y2x1ZGVMb2dpY2FsRWRnZXMoc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyLnJlY3Qo
KSkucmFkaWkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRh
bCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAg
ICAgICAgIGludCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSkgPyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwogICAgICAgICBpbnQgcmlnaHRX
aWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpIDogMDsKICAgICAgICAgaW50IHRvcFdpZHRoID0gKGhvcml6b250
YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA6
IDA7CiAgICAgICAgIGludCBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKSA/IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDogMDsKIAotICAgICAg
ICBJbnRSZWN0IGlubmVyQm9yZGVyUmVjdCA9IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCB0
b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7Ci0gICAgICAgIElu
dFNpemUgaW5uZXJUb3BMZWZ0UmFkaXVzLCBpbm5lclRvcFJpZ2h0UmFkaXVzLCBpbm5lckJvdHRv
bUxlZnRSYWRpdXMsIGlubmVyQm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgIAotICAgICAgICBz
dHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGlubmVyQm9y
ZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGlu
bmVyVG9wTGVmdFJhZGl1cywgaW5uZXJUb3BSaWdodFJhZGl1cywgaW5uZXJCb3R0b21MZWZ0UmFk
aXVzLCBpbm5lckJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgICAgICBJbnRTaXplIGlubmVyVG9w
TGVmdCwgaW5uZXJUb3BSaWdodCwgaW5uZXJCb3R0b21MZWZ0LCBpbm5lckJvdHRvbVJpZ2h0Owot
Ci0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICB0b3BM
ZWZ0ID0gdG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlubmVyVG9wTGVmdCA9IGlubmVyVG9w
TGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlmIChob3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAg
ICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJC
b3R0b21MZWZ0ID0gaW5uZXJCb3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAg
ICAgIGlubmVyVG9wUmlnaHQgPSBpbm5lclRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAg
ICAgICAgICBpZiAoaG9yaXpvbnRhbCkgewotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9w
UmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJUb3BSaWdodCA9IGlubmVyVG9wUmln
aHRSYWRpdXM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJvdHRvbUxl
ZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlubmVyQm90dG9tTGVmdCA9
IGlubmVyQm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvdHRv
bVJpZ2h0ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICBpbm5lckJvdHRvbVJpZ2h0
ID0gaW5uZXJCb3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQorICAgICAgICBSb3VuZGVkSW50
UmVjdCBpbm5lcihib3JkZXJJbm5lclJlY3QoYm9yZGVyLnJlY3QoKSwgdG9wV2lkdGgsIGJvdHRv
bVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpKTsKKyAgICAgICAgaW5uZXIuaW5jbHVkZUxv
Z2ljYWxFZGdlcyhzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRocyhp
bm5lci5yZWN0KCksIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRo
KS5yYWRpaSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWws
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAg
ICAgICByZW5kZXJSYWRpaSA9ICF0b3BMZWZ0LmlzWmVybygpIHx8ICF0b3BSaWdodC5pc1plcm8o
KSB8fCAhYm90dG9tTGVmdC5pc1plcm8oKSB8fCAhYm90dG9tUmlnaHQuaXNaZXJvKCk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgaWYgKGJvcmRlci5pc1Jv
dW5kZWQoKSkgewogICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5uZXIgYW5kIG91dGVyIHJh
ZGlpIHJlY3RzLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXJSZWN0LCBpbm5lclRv
cExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5uZXJCb3R0b21SaWdodCk7
Ci0gICAgICAgICAgICByb3VuZGVkUGF0aC5hZGRSb3VuZGVkUmVjdChib3JkZXJSZWN0LCB0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyKTsKKyAgICAgICAgICAgIHJv
dW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlci5yZWN0KCksIGJvcmRlci5yYWRpaSgpLnRv
cExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9t
TGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKICAgICAgICAgfQogICAgIH0K
IAorICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBib3JkZXIuaXNSb3VuZGVkKCk7CiAgICAgYm9vbCB1
cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRvcFN0eWxlID09IGxl
ZnRTdHlsZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9vbCB1cHBlclJpZ2h0
Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUgPT0gcmlnaHRTdHls
ZSkgJiYgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAhPSBPVVRTRVQpICYm
ICh0b3BTdHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAmJiAodG9wU3R5bGUg
IT0gR1JPT1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVy
TGVmdCAmJiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0gbGVm
dENvbG9yKSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gUklE
R0UpICYmIChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IEdST09WRSk7
CkBAIC0xMDg5LDExICsxMDQyLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAg
IGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVu
ZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZSh0b3BMZWZ0LCB0b3BSaWdodCwgc3R5
bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldp
bGxBcmNJbm5lckVkZ2UoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50
b3BSaWdodCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhp
Y3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQsIEJTVG9wLCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgdXBwZXJSaWdodEJv
cmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBo
aWNzQ29udGV4dCwgYm9yZGVyLCBCU1RvcCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIHVw
cGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9
IG1heChtYXgoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAgICAgZHJhd0JveFNpZGVG
cm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSwgdGhpY2tuZXNzLCBCU1RvcCwgc3R5bGUsIHRvcENvbG9yLCB0b3BT
dHlsZSk7CisgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwg
Ym9yZGVyLnJlY3QoKSwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0aGlj
a25lc3MsIEJTVG9wLCBzdHlsZSwgdG9wQ29sb3IsIHRvcFN0eWxlKTsKICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Ym9vbCBpZ25vcmVMZWZ0ID0gKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVu
dCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUCkBAIC0xMTEwLDExICsx
MDYzLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB4ID0gdHg7CiAg
ICAgICAgIGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9y
ZGVyV2lsbEFyY0lubmVyRWRnZShib3R0b21MZWZ0LCBib3R0b21SaWdodCwgc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyQm90
dG9tV2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJ
bm5lckVkZ2UoYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0
b21SaWdodCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3Jh
cGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQsIEJTQm90dG9tLCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJS
aWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29u
KGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLCBCU0JvdHRvbSwgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVz
TWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRo
aWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAgICAg
ZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5kZWRQ
YXRoLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgdGhpY2tuZXNzLCBCU0JvdHRvbSwgc3R5
bGUsIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSk7CisgICAgICAgICAgICBkcmF3Qm94U2lkZUZy
b21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLnJlY3QoKSwgcm91bmRlZFBhdGgsIHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpLCB0aGlja25lc3MsIEJTQm90dG9tLCBzdHlsZSwgYm90dG9t
Q29sb3IsIGJvdHRvbVN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9y
ZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKGJv
dHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNw
YXJlbnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUCkBAIC0xMTMzLDExICsxMDg2LDExIEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB5ID0gdHk7CiAgICAgICAgIGludCB5
MiA9IHR5ICsgaDsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lu
bmVyRWRnZShib3R0b21MZWZ0LCB0b3BMZWZ0LCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwg
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSkpIHsKKyAg
ICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9yZGVyLnJh
ZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAg
ICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0
LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTTGVmdCwgdXBw
ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBzdHls
ZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAg
ICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLCBC
U0xlZnQsIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlckxlZnRCb3JkZXJTdHlsZXNN
YXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpKTsKLSAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB0
aGlja25lc3MsIEJTTGVmdCwgc3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0eWxlKTsKKyAgICAgICAg
ICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXIucmVjdCgpLCBy
b3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB0aGlja25lc3MsIEJTTGVmdCwg
c3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBpZ25vcmVU
b3AgPSAodG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFu
c3BhcmVudCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUCkBAIC0xMTUyLDExICsxMTA1LDExIEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYgKHJlbmRlclJpZ2h0KSB7Ci0g
ICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGJvdHRvbVJp
Z2h0LCB0b3BSaWdodCwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKSkgeworICAgICAgICBpZiAocmVu
ZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lk
dGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkp
KSB7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGNs
aXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHRvcExlZnQs
IHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNSaWdodCwgdXBwZXJSaWdodEJv
cmRlclN0eWxlc01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gsIHN0eWxlLCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgICAg
ICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXIsIEJTUmlnaHQs
IHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNo
LCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChzdHlsZS0+Ym9yZGVyUmln
aHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpKTsKLSAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0
LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgdGhp
Y2tuZXNzLCBCU1JpZ2h0LCBzdHlsZSwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSk7CisgICAgICAg
ICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLnJlY3QoKSwg
cm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHRoaWNrbmVzcywgQlNSaWdo
dCwgc3R5bGUsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUpOwogICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBib29sIGln
bm9yZVRvcCA9ICgodG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRvcFRyYW5zcGFyZW50ID09
IHJpZ2h0VHJhbnNwYXJlbnQpCkBAIC0xMjA5LDY1ICsxMTYyLDQzIEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBpbnQgdHgsCiAgICAgYm9vbCByZW5kZXJSaWdodCA9IHJpZ2h0U3R5bGUgPiBCSElEREVOICYm
ICFyaWdodFRyYW5zcGFyZW50ICYmICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSk7CiAgICAgYm9vbCByZW5kZXJCb3R0b20gPSBib3R0b21TdHlsZSA+IEJISURERU4gJiYg
IWJvdHRvbVRyYW5zcGFyZW50ICYmIChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKIAotICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBmYWxzZTsKLSAgICBJbnRTaXplIHRvcExl
ZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKIAorICAgIFJvdW5kZWRJbnRS
ZWN0IGJvcmRlcih0eCwgdHksIHcsIGgpOwogICAgIGlmIChzdHlsZS0+aGFzQm9yZGVyUmFkaXVz
KCkpIHsKLSAgICAgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gSW50UmVjdCh0eCwgdHksIHcsIGgp
OwotCi0gICAgICAgIEludFNpemUgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRv
bUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICBzdHlsZS0+Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBi
b3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0KLSAgICAgICAgaWYgKGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKLSAgICAgICAgICAgIHRvcExlZnQgPSB0b3BMZWZ0UmFkaXVz
OwotICAgICAgICAgICAgaWYgKGhvcml6b250YWwpCi0gICAgICAgICAgICAgICAgYm90dG9tTGVm
dCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoaG9yaXpvbnRh
bCkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwot
ICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJlbmRlclJhZGlpID0gIXRvcExlZnQuaXNaZXJvKCkgfHwgIXRvcFJpZ2h0Lmlz
WmVybygpIHx8ICFib3R0b21MZWZ0LmlzWmVybygpIHx8ICFib3R0b21SaWdodC5pc1plcm8oKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAgICAgICAgICAgLy8gQ2xp
cCB0byB0aGUgcm91bmRlZCByZWN0YW5nbGUuCisgICAgICAgIGJvcmRlci5pbmNsdWRlTG9naWNh
bEVkZ2VzKHN0eWxlLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlci5yZWN0KCkpLnJhZGlpKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgaWYgKGJv
cmRlci5pc1JvdW5kZWQoKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7
Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJS
ZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGludCBmaXJzdEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3RhcnQs
IGZpcnN0QW5nbGVTcGFuLCBzZWNvbmRBbmdsZVNwYW47CiAgICAgZmxvYXQgdGhpY2tuZXNzOwor
ICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBib3JkZXIuaXNSb3VuZGVkKCk7CiAgICAgYm9vbCB1cHBl
ckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRvcFN0eWxlID09IGxlZnRT
dHlsZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9vbCB1cHBlclJpZ2h0Qm9y
ZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUgPT0gcmlnaHRTdHlsZSkg
JiYgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAhPSBPVVRTRVQpICYmICh0
b3BTdHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAmJiAodG9wU3R5bGUgIT0g
R1JPT1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyTGVm
dCAmJiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9tQ29sb3IgPT0gbGVmdENv
bG9yKSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9tU3R5bGUgIT0gUklER0Up
ICYmIChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxlICE9IEdST09WRSk7CiAg
ICAgYm9vbCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAoYm90
dG9tU3R5bGUgPT0gcmlnaHRTdHlsZSkgJiYgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IpOwog
CiAgICAgaWYgKHJlbmRlclRvcCkgewotICAgICAgICBib29sIGlnbm9yZV9sZWZ0ID0gKHJlbmRl
clJhZGlpICYmIHRvcExlZnQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9wQ29sb3Ig
PT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiB0b3BT
dHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAobGVmdFN0eWxlID09IERPVFRFRCB8fCBs
ZWZ0U3R5bGUgPT0gREFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8fCBsZWZ0U3R5bGUgPT0g
T1VUU0VUKSk7Ci0KLSAgICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFkaWkgJiYg
dG9wUmlnaHQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9wQ29sb3IgPT0gcmlnaHRD
b2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50ICYmIHRvcFN0eWxlID49
IE9VVFNFVCAmJgotICAgICAgICAgICAgIChyaWdodFN0eWxlID09IERPVFRFRCB8fCByaWdodFN0
eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJpZ2h0U3R5bGUgPT0gSU5T
RVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci5y
YWRpaSgpLnRvcExlZnQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHx8ICh0b3BDb2xvciA9
PSBsZWZ0Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFyZW50ICYmIHRvcFN0
eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5bGUgPT0gRE9UVEVEIHx8
IGxlZnRTdHlsZSA9PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElEIHx8IGxlZnRTdHlsZSA9
PSBPVVRTRVQpKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaWdub3JlUmlnaHQgPSAocmVuZGVy
UmFkaWkgJiYgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0aCgpID4gMCkKKyAgICAgICAg
ICAgIHx8ICh0b3BDb2xvciA9PSByaWdodENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IHJpZ2h0
VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKHJp
Z2h0U3R5bGUgPT0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUg
PT0gU09MSUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkpOwogCiAgICAgICAgIGludCB4ID0gdHg7
CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7Ci0g
ICAgICAgICAgICB4ICs9IHRvcExlZnQud2lkdGgoKTsKLSAgICAgICAgICAgIHgyIC09IHRvcFJp
Z2h0LndpZHRoKCk7CisgICAgICAgICAgICB4ICs9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53
aWR0aCgpOworICAgICAgICAgICAgeDIgLT0gYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0
aCgpOwogICAgICAgICB9CiAKICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgeCwgdHksIHgyLCB0eSArIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBCU1RvcCwgdG9w
Q29sb3IsIHRvcFN0eWxlLAotICAgICAgICAgICAgICAgICAgIGlnbm9yZV9sZWZ0ID8gMCA6IHN0
eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3JlX3JpZ2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCkpOworICAgICAgICAgICAgICAgICAgIGlnbm9yZUxlZnQgPyAwIDogc3R5bGUt
PmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVSaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKICAgICAgICAgICAgIGludCBs
ZWZ0WSA9IHR5OwpAQCAtMTI3NywxNSArMTIwOCwxNSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4
LAogICAgICAgICAgICAgLy8gd2l0aCB0aGUgYXJjLWRyYXdpbmcgZnVuY3Rpb24uCiAgICAgICAg
ICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSAqIDI7CiAKLSAgICAgICAg
ICAgIGlmICh0b3BMZWZ0LndpZHRoKCkpIHsKKyAgICAgICAgICAgIGlmIChib3JkZXIucmFkaWko
KS50b3BMZWZ0KCkud2lkdGgoKSkgewogICAgICAgICAgICAgICAgIGludCBsZWZ0WCA9IHR4Owog
ICAgICAgICAgICAgICAgIC8vIFRoZSBpbm5lciBjbGlwIGNsaXBzIGluc2lkZSB0aGUgYXJjLiBU
aGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciAxcHggYm9yZGVycy4KLSAgICAgICAgICAg
ICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkg
PCB0b3BMZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSA8IHRvcExlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgYm9vbCBhcHBs
eUxlZnRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5oZWlnaHQoKSkKICAgICAg
ICAgICAgICAgICAgICAgJiYgKHRvcFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApIHsK
ICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVj
dChsZWZ0WCwgbGVmdFksIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkgKiAy
KSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRS
ZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndp
ZHRoKCkgKiAyLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMjkzLDIw
ICsxMjI0LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgICAgICAgICAgZmly
c3RBbmdsZVNwYW4gPSB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA/IDkwIDogNDU7CiAKICAg
ICAgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJh
d0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywg
dG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAg
ICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tu
ZXNzLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmds
ZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3IsIHRv
cFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKQog
ICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHRvcFJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgcmlnaHRYID0gdHggKyB3IC0gdG9wUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkgPCB0b3BSaWdodC53aWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3R5bGUt
PmJvcmRlclRvcFdpZHRoKCkgPCB0b3BSaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgIGlmIChi
b3JkZXIucmFkaWkoKS50b3BSaWdodCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQg
cmlnaHRYID0gdHggKyB3IC0gYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0aCgpICogMjsK
KyAgICAgICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRl
clJpZ2h0V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnJhZGlp
KCkudG9wUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKHRvcFN0eWxl
ICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA+IDYpOwogICAgICAgICAgICAg
ICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCBsZWZ0WSwgdG9wUmlnaHQu
d2lkdGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChyaWdodFgs
IGxlZnRZLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIucmFk
aWkoKS50b3BSaWdodCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlclRvcFdpZHRo
KCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTMxOSw3ICsxMjUwLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBE
cmF3IHVwcGVyIHJpZ2h0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgc2Vjb25k
QW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIu
cmFkaWkoKS50b3BSaWdodCgpLCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3IsIHRvcFN0eWxlLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApCiAgICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTMyOCwzNiArMTI1
OSwzNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5kZXJC
b3R0b20pIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAmJiBib3R0
b21MZWZ0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAgKGJvdHRvbUNvbG9yID09IGxlZnRD
b2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5
bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKGxlZnRTdHlsZSA9PSBET1RURUQgfHwgbGVm
dFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQgfHwgbGVmdFN0eWxlID09IE9V
VFNFVCkpOworICAgICAgICBib29sIGlnbm9yZUxlZnQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVy
LnJhZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCkgPiAwKQorICAgICAgICAgICAgfHwgKGJvdHRv
bUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJl
bnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKGxlZnRTdHls
ZSA9PSBET1RURUQgfHwgbGVmdFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQg
fHwgbGVmdFN0eWxlID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdub3JlX3JpZ2h0ID0g
KHJlbmRlclJhZGlpICYmIGJvdHRvbVJpZ2h0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAg
KGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gcmlnaHRU
cmFuc3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAocmln
aHRTdHlsZSA9PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBEQVNIRUQgfHwgcmlnaHRTdHlsZSA9
PSBTT0xJRCB8fCByaWdodFN0eWxlID09IElOU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlUmln
aHQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS53aWR0aCgp
ID4gMCkKKyAgICAgICAgICAgIHx8IChib3R0b21Db2xvciA9PSByaWdodENvbG9yICYmIGJvdHRv
bVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VU
CisgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPT0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUg
PT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkp
OwogCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKICAgICAg
ICAgaWYgKHJlbmRlclJhZGlpKSB7Ci0gICAgICAgICAgICB4ICs9IGJvdHRvbUxlZnQud2lkdGgo
KTsKLSAgICAgICAgICAgIHgyIC09IGJvdHRvbVJpZ2h0LndpZHRoKCk7CisgICAgICAgICAgICB4
ICs9IGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS53aWR0aCgpOworICAgICAgICAgICAgeDIg
LT0gYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS53aWR0aCgpOwogICAgICAgICB9CiAKICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkgKyBoIC0gc3R5
bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBib3R0b21Db2xv
ciwgYm90dG9tU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5
bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJp
Z2h0V2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlTGVmdCA/IDAgOiBzdHlsZS0+
Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZVJpZ2h0ID8gMCA6IHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAgICAgICAgICAgdGhpY2tu
ZXNzID0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAo
Ym90dG9tTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyLnJhZGlpKCkuYm90
dG9tTGVmdCgpLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICBpbnQgbGVmdFggPSB0eDsKLSAg
ICAgICAgICAgICAgICBpbnQgbGVmdFkgPSB0eSArIGggLSBib3R0b21MZWZ0LmhlaWdodCgpICog
MjsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCkgPCBib3R0b21MZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAg
ICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbUxlZnQuaGVpZ2h0KCkpCisg
ICAgICAgICAgICAgICAgaW50IGxlZnRZID0gdHkgKyBoIC0gYm9yZGVyLnJhZGlpKCkuYm90dG9t
TGVmdCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5TGVmdElubmVy
Q2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21M
ZWZ0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLmhlaWdodCgpKQogICAgICAg
ICAgICAgICAgICAgICAmJiAoYm90dG9tU3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJC
b3R0b21XaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xp
cCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJ
bnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5o
ZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElu
bmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobGVmdFgsIGxlZnRZLCBib3JkZXIucmFkaWkoKS5i
b3R0b21MZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWln
aHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgICAg
ICAgICB9CiAKQEAgLTEzNzAsMjEgKzEzMDEsMjEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIGxlZnQg
YXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBs
ZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJz
dEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCksIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlLCB0cnVlKTsKICAg
ICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKGJvdHRvbVJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgcmlnaHRZ
ID0gdHkgKyBoIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOwotICAgICAgICAgICAgICAgIGlu
dCByaWdodFggPSB0eCArIHcgLSBib3R0b21SaWdodC53aWR0aCgpICogMjsKLSAgICAgICAgICAg
ICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgo
KSA8IGJvdHRvbVJpZ2h0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+
Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAg
aWYgKGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkgeworICAgICAgICAgICAg
ICAgIGludCByaWdodFkgPSB0eSArIGggLSBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLmhl
aWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0gdHggKyB3IC0gYm9yZGVy
LnJhZGlpKCkuYm90dG9tUmlnaHQoKS53aWR0aCgpICogMjsKKyAgICAgICAgICAgICAgICBib29s
IGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYg
KHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQo
KS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGJvdHRvbVN0eWxlICE9IERPVUJM
RSB8fCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlm
IChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElu
bmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCByaWdodFksIGJvdHRvbVJpZ2h0Lndp
ZHRoKCkgKiAyLCBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRY
LCByaWdodFksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSAqIDIsIGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMzkyLDcgKzEzMjMsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3Bh
biA9IGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCA/IDkwIDogNDU7CiAKICAgICAgICAgICAg
ICAgICAvLyBEcmF3IGxvd2VyIHJpZ2h0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCByaWdodFksIHRoaWNrbmVzcywgYm90dG9t
UmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAg
ICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgcmlnaHRZLCB0aGlj
a25lc3MsIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNl
Y29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBi
b3R0b21Db2xvciwgYm90dG9tU3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBw
bHlSaWdodElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5y
ZXN0b3JlKCk7CkBAIC0xNDAxLDM2ICsxMzMyLDM2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgs
CiAgICAgfQogCiAgICAgaWYgKHJlbmRlckxlZnQpIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfdG9w
ID0gKHJlbmRlclJhZGlpICYmIHRvcExlZnQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAgICAgICAg
KHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJl
bnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAgICh0b3BTdHlsZSA9PSBE
T1RURUQgfHwgdG9wU3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRvcFN0
eWxlID09IE9VVFNFVCkpOworICAgICAgICBib29sIGlnbm9yZVRvcCA9IChyZW5kZXJSYWRpaSAm
JiBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0KCkgPiAwKQorICAgICAgICAgICAgfHwg
KHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJl
bnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmICh0b3BTdHlsZSA9
PSBET1RURUQgfHwgdG9wU3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09IFNPTElEIHx8IHRv
cFN0eWxlID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdub3JlX2JvdHRvbSA9IChyZW5k
ZXJSYWRpaSAmJiBib3R0b21MZWZ0LmhlaWdodCgpID4gMCkgfHwKLSAgICAgICAgICAgIChib3R0
b21Db2xvciA9PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5zcGFy
ZW50ICYmIGxlZnRTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAoYm90dG9tU3R5bGUg
PT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09IERBU0hFRCB8fCBib3R0b21TdHlsZSA9PSBTT0xJ
RCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkpOworICAgICAgICBib29sIGlnbm9yZUJvdHRvbSA9
IChyZW5kZXJSYWRpaSAmJiBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPiAw
KQorICAgICAgICAgICAgfHwgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFu
c3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVAorICAgICAg
ICAgICAgICAgICYmIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5bGUgPT0gREFT
SEVEIHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElOU0VUKSk7CiAK
ICAgICAgICAgaW50IHkgPSB0eTsKICAgICAgICAgaW50IHkyID0gdHkgKyBoOwogICAgICAgICBp
ZiAocmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAgIHkgKz0gdG9wTGVmdC5oZWlnaHQoKTsKLSAg
ICAgICAgICAgIHkyIC09IGJvdHRvbUxlZnQuaGVpZ2h0KCk7CisgICAgICAgICAgICB5ICs9IGJv
cmRlci5yYWRpaSgpLnRvcExlZnQoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkyIC09IGJvcmRl
ci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB5LCB0eCArIHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsCi0gICAgICAg
ICAgICAgICAgICAgaWdub3JlX3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdu
b3JlX2JvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAg
ICAgICAgICAgaWdub3JlVG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVC
b3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogCiAgICAgICAgIGlmIChy
ZW5kZXJSYWRpaSAmJiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoIHx8ICFsb3dlckxlZnRC
b3JkZXJTdHlsZXNNYXRjaCkpIHsKICAgICAgICAgICAgIGludCB0b3BYID0gdHg7CiAgICAgICAg
ICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgKiAyOwogCi0gICAgICAg
ICAgICBpZiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoICYmIHRvcExlZnQud2lkdGgoKSkg
eworICAgICAgICAgICAgaWYgKCF1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIu
cmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSkgewogICAgICAgICAgICAgICAgIGludCB0b3BZID0g
dHk7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCkgPCB0b3BMZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYm
IChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcExlZnQuaGVpZ2h0KCkpCisgICAgICAgICAg
ICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkg
PCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAg
JiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmhl
aWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAobGVmdFN0eWxlICE9IERPVUJMRSB8fCBz
dHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlU
b3BJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0
LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRk
SW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCBib3JkZXIucmFkaWkoKS50
b3BMZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5oZWlnaHQoKSAq
IDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQog
CkBAIC0xNDM4LDIwICsxMzY5LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAg
ICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSA0NTsKIAogICAgICAgICAgICAgICAgIC8vIERyYXcg
dG9wIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRvcExlZnQsIGZpcnN0QW5nbGVTdGFydCwg
Zmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIGJvcmRlci5yYWRpaSgpLnRvcExlZnQo
KSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsIHRydWUpOwogICAgICAgICAg
ICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgh
bG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm90dG9tTGVmdC53aWR0aCgpKSB7Ci0gICAg
ICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSArIGggLSBib3R0b21MZWZ0LmhlaWdodCgpICog
MjsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJDbGlwID0gKHN0eWxlLT5i
b3JkZXJMZWZ0V2lkdGgoKSA8IGJvdHRvbUxlZnQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAg
ICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm90dG9tTGVmdC5oZWlnaHQoKSkK
KyAgICAgICAgICAgIGlmICghbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm9yZGVyLnJh
ZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9t
WSA9IHR5ICsgaCAtIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAqIDI7Cisg
ICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLnJh
ZGlpKCkuYm90dG9tTGVmdCgpLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAobGVm
dFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPiA2KTsKICAgICAg
ICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCBib3R0b21ZLCBi
b3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0LmhlaWdodCgpICogMiksCisgICAgICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50
UmVjdCh0b3BYLCBib3R0b21ZLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKSAq
IDIsIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxl
LT5ib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xNDU5LDcgKzEz
OTAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAgIHNlY29uZEFu
Z2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBib3R0b20gbGVmdCBhcmMK
LSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgs
IGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25k
QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgdG9wWCwgYm90dG9tWSwgdGhpY2tuZXNzLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsIGZhbHNlKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTQ2OCwzOCArMTM5OSwzOCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5kZXJSaWdodCkgewotICAg
ICAgICBib29sIGlnbm9yZV90b3AgPSAocmVuZGVyUmFkaWkgJiYgdG9wUmlnaHQuaGVpZ2h0KCkg
PiAwKSB8fAotICAgICAgICAgICAgKCh0b3BDb2xvciA9PSByaWdodENvbG9yKSAmJiAodG9wVHJh
bnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkgJiYKLSAgICAgICAgICAgIChyaWdodFN0eWxl
ID49IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKSAmJgotICAgICAgICAgICAgKHRvcFN0
eWxlID09IERPVFRFRCB8fCB0b3BTdHlsZSA9PSBEQVNIRUQgfHwgdG9wU3R5bGUgPT0gU09MSUQg
fHwgdG9wU3R5bGUgPT0gT1VUU0VUKSk7CisgICAgICAgIGJvb2wgaWdub3JlVG9wID0gKHJlbmRl
clJhZGlpICYmIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPiAwKQorICAgICAg
ICAgICAgfHwgKCh0b3BDb2xvciA9PSByaWdodENvbG9yKSAmJiAodG9wVHJhbnNwYXJlbnQgPT0g
cmlnaHRUcmFuc3BhcmVudCkKKyAgICAgICAgICAgICAgICAmJiAocmlnaHRTdHlsZSA+PSBET1RU
RUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkKKyAgICAgICAgICAgICAgICAmJiAodG9wU3R5bGUg
PT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHlsZSA9PSBTT0xJRCB8fCB0
b3BTdHlsZSA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9yZV9ib3R0b20gPSAocmVu
ZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAgICAgICAgKChi
b3R0b21Db2xvciA9PSByaWdodENvbG9yKSAmJiAoYm90dG9tVHJhbnNwYXJlbnQgPT0gcmlnaHRU
cmFuc3BhcmVudCkgJiYKLSAgICAgICAgICAgIChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdo
dFN0eWxlID09IElOU0VUKSAmJgotICAgICAgICAgICAgKGJvdHRvbVN0eWxlID09IERPVFRFRCB8
fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0gU09MSUQgfHwgYm90dG9t
U3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVCb3R0b20gPSAocmVuZGVyUmFk
aWkgJiYgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSA+IDApCisgICAgICAg
ICAgICB8fCAoKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IpICYmIChib3R0b21UcmFuc3BhcmVu
dCA9PSByaWdodFRyYW5zcGFyZW50KQorICAgICAgICAgICAgICAgICYmIChyaWdodFN0eWxlID49
IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKQorICAgICAgICAgICAgICAgICYmIChib3R0
b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5bGUgPT0gREFTSEVEIHx8IGJvdHRvbVN0eWxl
ID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElOU0VUKSk7CiAKICAgICAgICAgaW50IHkgPSB0
eTsKICAgICAgICAgaW50IHkyID0gdHkgKyBoOwogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsK
LSAgICAgICAgICAgIHkgKz0gdG9wUmlnaHQuaGVpZ2h0KCk7Ci0gICAgICAgICAgICB5MiAtPSBi
b3R0b21SaWdodC5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkgKz0gYm9yZGVyLnJhZGlpKCkudG9w
UmlnaHQoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkyIC09IGJvcmRlci5yYWRpaSgpLmJvdHRv
bVJpZ2h0KCkuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCB5
LCB0eCArIHcsIHkyLCBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLAotICAgICAgICAg
ICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9y
ZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgICAgICAgICAg
ICAgICAgIGlnbm9yZVRvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdub3JlQm90
dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVu
ZGVyUmFkaWkgJiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyUmlnaHRC
b3JkZXJTdHlsZXNNYXRjaCkpIHsKICAgICAgICAgICAgIHRoaWNrbmVzcyA9IHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAoIXVwcGVyUmlnaHRCb3JkZXJT
dHlsZXNNYXRjaCAmJiB0b3BSaWdodC53aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHRv
cFggPSB0eCArIHcgLSB0b3BSaWdodC53aWR0aCgpICogMjsKKyAgICAgICAgICAgIGlmICghdXBw
ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoICYmIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lk
dGgoKSkgeworICAgICAgICAgICAgICAgIGludCB0b3BYID0gdHggKyB3IC0gYm9yZGVyLnJhZGlp
KCkudG9wUmlnaHQoKS53aWR0aCgpICogMjsKICAgICAgICAgICAgICAgICBpbnQgdG9wWSA9IHR5
OwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlUb3BJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRl
clJpZ2h0V2lkdGgoKSA8IHRvcFJpZ2h0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYm
IChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcFJpZ2h0LmhlaWdodCgpKQorICAgICAgICAg
ICAgICAgIGJvb2wgYXBwbHlUb3BJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgo
KSA8IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQo
KS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgIT0gRE9VQkxF
IHx8IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAo
YXBwbHlUb3BJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJS
b3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCB0b3BSaWdodC53aWR0aCgpICogMiwg
dG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgsIHRvcFksIGJvcmRlci5y
YWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCku
aGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTE1MDcsMjEgKzE0MzgsMjEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0
eCwKICAgICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAg
ICAgLy8gRHJhdyB0b3AgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRvcFJpZ2h0LCBmaXJz
dEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCBib3JkZXIucmFk
aWkoKS50b3BSaWdodCgpLCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwg
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKQogICAgICAgICAg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm90dG9tUmln
aHQud2lkdGgoKSkgewotICAgICAgICAgICAgICAgIGludCBib3R0b21YID0gdHggKyB3IC0gYm90
dG9tUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSAr
IGggLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBs
eUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgYm90dG9tUmln
aHQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpIDwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAoIWxvd2VyUmln
aHRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLndpZHRo
KCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tWCA9IHR4ICsgdyAtIGJvcmRlci5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSAqIDI7CisgICAgICAgICAgICAgICAgaW50IGJvdHRv
bVkgPSB0eSArIGggLSBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLmhlaWdodCgpICogMjsK
KyAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJDbGlwID0gKHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLndpZHRoKCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICYm
IChyaWdodFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpID4gNik7
CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlwKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QoYm90dG9tWCwg
Ym90dG9tWSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJpZ2h0LmhlaWdodCgpICog
MiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoSW50UmVjdChib3R0b21YLCBib3R0b21ZLCBib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLmhlaWdodCgp
ICogMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAgICAgICAgICAgICAgICAg
fQogCkBAIC0xNTI5LDcgKzE0NjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAg
ICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAgICAgLy8gRHJh
dyBib3R0b20gcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCBib3R0b21YLCBib3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbVJpZ2h0LCBz
ZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJhd0Fy
Y0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3R0b21YLCBib3R0b21ZLCB0aGlja25lc3Ms
IGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFu
Z2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29s
b3IsIHJpZ2h0U3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21J
bm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgp
OwpAQCAtMTU0MiwxNSArMTQ3MywxNSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogfQogI2Vu
ZGlmCiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgYm94LCBjb25z
dCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6
ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsCit2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBib3JkZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94U2lkZSBzaWRlLCBi
b29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpCiB7CiAgICAgRmxvYXRQb2ludCBxdWFkWzRdOwotICAgIGludCB0eCA9IGJveC54
KCk7Ci0gICAgaW50IHR5ID0gYm94LnkoKTsKLSAgICBpbnQgdyA9IGJveC53aWR0aCgpOwotICAg
IGludCBoID0gYm94LmhlaWdodCgpOworICAgIGludCB0eCA9IGJvcmRlci5yZWN0KCkueCgpOwor
ICAgIGludCB0eSA9IGJvcmRlci5yZWN0KCkueSgpOworICAgIGludCB3ID0gYm9yZGVyLnJlY3Qo
KS53aWR0aCgpOworICAgIGludCBoID0gYm9yZGVyLnJlY3QoKS5oZWlnaHQoKTsKIAogICAgIGJv
b2wgaG9yaXpvbnRhbCA9IHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGlu
dCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBz
dHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwpAQCAtMTU2MywyNiArMTQ5NCwyNiBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleAogICAgIHN3aXRjaCAoc2lkZSkgewogICAgIGNhc2UgQlNUb3A6
CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4LCB0eSk7Ci0gICAgICAgIHF1YWRbMV0g
PSBGbG9hdFBvaW50KHR4ICsgbWF4KHRvcExlZnQud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBt
YXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKLSAgICAgICAgcXVhZFsyXSA9IEZsb2F0
UG9pbnQodHggKyB3IC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIG1h
eCh0b3BSaWdodC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0
UG9pbnQodHggKyBtYXgoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCksIGxlZnRXaWR0
aCksIHR5ICsgbWF4KGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5oZWlnaHQoKSwgdG9wV2lkdGgp
KTsKKyAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KGJvcmRlci5yYWRp
aSgpLnRvcFJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KGJvcmRlci5yYWRp
aSgpLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CiAgICAgICAgIHF1YWRbM10gPSBG
bG9hdFBvaW50KHR4ICsgdywgdHkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJTTGVmdDoK
ICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5KTsKLSAgICAgICAgcXVhZFsxXSA9
IEZsb2F0UG9pbnQodHggKyBtYXgodG9wTGVmdC53aWR0aCgpLCBsZWZ0V2lkdGgpLCB0eSArIG1h
eCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQ
b2ludCh0eCArIG1heChib3R0b21MZWZ0LndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAtIG1h
eChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOworICAgICAgICBxdWFkWzFdID0g
RmxvYXRQb2ludCh0eCArIG1heChib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSwgbGVm
dFdpZHRoKSwgdHkgKyBtYXgoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmhlaWdodCgpLCB0b3BX
aWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIucmFk
aWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBoIC0gbWF4KGJvcmRl
ci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKICAgICAgICAg
cXVhZFszXSA9IEZsb2F0UG9pbnQodHgsIHR5ICsgaCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQlNCb3R0b206CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4LCB0eSArIGgpOwot
ICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3R0b21MZWZ0LndpZHRoKCks
IGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21XaWR0
aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm90dG9tUmln
aHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21SaWdodC5oZWlnaHQo
KSwgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgo
Ym9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAt
IG1heChib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIGJvdHRvbVdpZHRoKSk7
CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3JkZXIucmFkaWko
KS5ib3R0b21SaWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIGggLSBtYXgoYm9yZGVy
LnJhZGlpKCkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKICAgICAgICAg
cXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEJTUmlnaHQ6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4ICsgdywgdHkp
OwotICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgodG9wUmlnaHQud2lk
dGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRvcFJpZ2h0LmhlaWdodCgpLCB0b3BXaWR0aCkp
OwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBtYXgoYm90dG9tUmlnaHQu
d2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21SaWdodC5oZWlnaHQoKSwg
Ym90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4
KGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4
KGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CisgICAgICAg
IHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIGggLSBtYXgoYm9yZGVyLnJhZGlpKCku
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKICAgICAgICAgcXVhZFszXSA9
IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgpAQCAtMTYxMywxOCArMTU0NCw2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBC
b3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNvbmRRdWFkLCAhc2Vjb25kRWRn
ZU1hdGNoZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdW5pZm9ybWx5RXhwYW5kQm9yZGVy
UmFkaWkoaW50IGRlbHRhLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50
U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpCi17Ci0gICAgdG9wTGVmdC5l
eHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0b3BMZWZ0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
LSAgICB0b3BSaWdodC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0b3BSaWdodC5jbGFtcE5l
Z2F0aXZlVG9aZXJvKCk7Ci0gICAgYm90dG9tTGVmdC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAg
ICBib3R0b21MZWZ0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICBib3R0b21SaWdodC5leHBh
bmQoZGVsdGEsIGRlbHRhKTsKLSAgICBib3R0b21SaWdodC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
Ci19Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgY29uc3QgUmVu
ZGVyU3R5bGUqIHMsIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6
IERlYWwgd2l0aCBib3JkZXItaW1hZ2UuICBXb3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWlt
YWdlIGFzIGEgbWFzay4KQEAgLTE2MzIsNjEgKzE1NTEsMTkgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgs
IGludAogICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEludFJlY3QgcmVjdCh0eCwgdHksIHcsIGgpOwotICAgIEludFNpemUgdG9wTGVm
dDsKLSAgICBJbnRTaXplIHRvcFJpZ2h0OwotICAgIEludFNpemUgYm90dG9tTGVmdDsKLSAgICBJ
bnRTaXplIGJvdHRvbVJpZ2h0OwotCisgICAgUm91bmRlZEludFJlY3QgYm9yZGVyKHR4LCB0eSwg
dywgaCk7CiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMgPSBzLT5oYXNCb3JkZXJSYWRpdXMoKTsK
ICAgICBib29sIGlzSG9yaXpvbnRhbCA9IHMtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAg
ICAgaWYgKGhhc0JvcmRlclJhZGl1cyAmJiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0
b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAg
ICAgIHMtPmdldEJvcmRlclJhZGlpRm9yUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdo
dFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0gICAgICAg
IGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93U3R5
bGUgPT0gSW5zZXQpIHsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0UmFkaXVzLmV4cGFuZCgtYm9y
ZGVyTGVmdCgpLCAtYm9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgIHRvcExlZnRSYWRpdXMu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwp
IHsKLSAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5leHBhbmQoLWJvcmRlckxl
ZnQoKSwgLWJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJh
ZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuZXhwYW5kKC1ib3JkZXJSaWdodCgpLCAt
Ym9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgICAgICB0b3BSaWdodFJhZGl1cy5jbGFtcE5l
Z2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdG9wTGVmdCA9IHRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsKQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gdG9wUmlnaHRSYWRpdXM7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAg
ICAgICAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsKLSAgICAgICAgICAgICAgICBpZiAo
aXNIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzLmV4cGFu
ZCgtYm9yZGVyUmlnaHQoKSwgLWJvcmRlclRvcCgpKTsKLSAgICAgICAgICAgICAgICAgICAgdG9w
UmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMuZXhwYW5kKC1ib3JkZXJM
ZWZ0KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRS
YWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBib3R0b21SaWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJpZ2h0KCksIC1ib3JkZXJC
b3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2
ZVRvWmVybygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkK
LSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVzOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAg
ICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmIChzaGFkb3dTdHlsZSA9PSBJbnNldCkgewotICAgICAgICByZWN0Lm1vdmUo
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsID8gYm9yZGVyTGVmdCgpIDog
MCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpc0hvcml6b250YWwgPyBib3JkZXJUb3AoKSA6
IDApOwotICAgICAgICByZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgoKSAtICgoaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsKSA/IGJvcmRlckxlZnQoKSA6IDApIC0gKChpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSB8fCAhaXNIb3Jpem9udGFsKSA/IGJvcmRlclJpZ2h0KCkgOiAw
KSk7Ci0gICAgICAgIHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSAoKGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UgfHwgaXNIb3Jpem9udGFsKSA/IGJvcmRlclRvcCgpIDogMCkgLSAoKGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlIHx8IGlzSG9yaXpvbnRhbCkgPyBib3JkZXJCb3R0b20oKSA6IDAp
KTsKKyAgICAgICAgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHMtPmdldFJvdW5k
ZWRJbm5lckJvcmRlcldpdGhCb3JkZXJXaWR0aHMoYm9yZGVyLnJlY3QoKSwgYm9yZGVyVG9wKCks
IGJvcmRlckJvdHRvbSgpLCBib3JkZXJMZWZ0KCksIGJvcmRlclJpZ2h0KCkpIDogcy0+Z2V0Um91
bmRlZEJvcmRlckZvcihib3JkZXIucmVjdCgpKTsKKyAgICAgICAgYm9yZGVyLmluY2x1ZGVMb2dp
Y2FsRWRnZXMoYm9yZGVyLnJhZGlpKCksIGlzSG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIH0KKyAgIAorICAgIGlmIChzaGFk
b3dTdHlsZSA9PSBJbnNldCkKKyAgICAgICAgYm9yZGVyLnNldFJlY3QoSW50UmVjdChib3JkZXIu
cmVjdCgpLngoKSArIChpbmNsdWRlTG9naWNhbExlZnRFZGdlIHx8ICFpc0hvcml6b250YWwgPyBi
b3JkZXJMZWZ0KCkgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIu
cmVjdCgpLnkoKSArIChpbmNsdWRlTG9naWNhbExlZnRFZGdlIHx8IGlzSG9yaXpvbnRhbCA/IGJv
cmRlclRvcCgpIDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnJl
Y3QoKS53aWR0aCgpIC0gKChpbmNsdWRlTG9naWNhbExlZnRFZGdlIHx8ICFpc0hvcml6b250YWwp
ID8gYm9yZGVyTGVmdCgpIDogMCkgLSAoKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlIHx8ICFpc0hv
cml6b250YWwpID8gYm9yZGVyUmlnaHQoKSA6IDApLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvcmRlci5yZWN0KCkuaGVpZ2h0KCkgLSAoKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Ug
fHwgaXNIb3Jpem9udGFsKSA/IGJvcmRlclRvcCgpIDogMCkgLSAoKGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlIHx8IGlzSG9yaXpvbnRhbCkgPyBib3JkZXJCb3R0b20oKSA6IDApKSk7CiAKICAgICBi
b29sIGhhc09wYXF1ZUJhY2tncm91bmQgPSBzLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmFsaWQoKSAmJiBzLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmFscGhhKCkgPT0gMjU1OwogICAgIGZvciAo
Y29uc3QgU2hhZG93RGF0YSogc2hhZG93ID0gcy0+Ym94U2hhZG93KCk7IHNoYWRvdzsgc2hhZG93
ID0gc2hhZG93LT5uZXh0KCkpIHsKQEAgLTE2OTksMTIgKzE1NzYsMTIgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBp
bnQgdHgsIGludAogICAgICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNv
bG9yKCk7CiAKICAgICAgICAgaWYgKHNoYWRvdy0+c3R5bGUoKSA9PSBOb3JtYWwpIHsKLSAgICAg
ICAgICAgIEludFJlY3QgZmlsbFJlY3QocmVjdCk7CisgICAgICAgICAgICBSb3VuZGVkSW50UmVj
dCBmaWxsUmVjdCA9IGJvcmRlcjsKICAgICAgICAgICAgIGZpbGxSZWN0LmluZmxhdGUoc2hhZG93
U3ByZWFkKTsKICAgICAgICAgICAgIGlmIChmaWxsUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qgc2hhZG93UmVjdChyZWN0KTsK
KyAgICAgICAgICAgIEludFJlY3Qgc2hhZG93UmVjdChib3JkZXIucmVjdCgpKTsKICAgICAgICAg
ICAgIHNoYWRvd1JlY3QuaW5mbGF0ZShzaGFkb3dCbHVyICsgc2hhZG93U3ByZWFkKTsKICAgICAg
ICAgICAgIHNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQpOwogCkBAIC0xNzE5LDMyICsxNTk2
LDIzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKIAogICAgICAgICAgICAgY29udGV4dC0+c2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3Bh
Y2UoKSk7CiAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICAg
ICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gcmVjdDsKLSAgICAgICAgICAgICAgICBJbnRTaXpl
IHRvcExlZnRUb0NsaXBPdXQgPSB0b3BMZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgdG9w
UmlnaHRUb0NsaXBPdXQgPSB0b3BSaWdodDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGJvdHRv
bUxlZnRUb0NsaXBPdXQgPSBib3R0b21MZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90
dG9tUmlnaHRUb0NsaXBPdXQgPSBib3R0b21SaWdodDsKLQotICAgICAgICAgICAgICAgIEludFNp
emUgdG9wTGVmdFRvRmlsbCA9IHRvcExlZnQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BS
aWdodFRvRmlsbCA9IHRvcFJpZ2h0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9tTGVm
dFRvRmlsbCAgPSBib3R0b21MZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgYm90dG9tUmln
aHRUb0ZpbGwgPSBib3R0b21SaWdodDsKLSAgICAgICAgICAgICAgICBpZiAoc2hhZG93U3ByZWFk
IDwgMCkKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhwYW5kQm9yZGVyUmFkaWkoc2hh
ZG93U3ByZWFkLCB0b3BMZWZ0VG9GaWxsLCB0b3BSaWdodFRvRmlsbCwgYm90dG9tTGVmdFRvRmls
bCwgYm90dG9tUmlnaHRUb0ZpbGwpOworICAgICAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IHJl
Y3RUb0NsaXBPdXQgPSBib3JkZXI7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlz
IG9wYXF1ZSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5n
IHNvIHNhdmVzIHRpbWUKICAgICAgICAgICAgICAgICAvLyB3aGVuIHBhaW50aW5nIHRoZSBzaGFk
b3cuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpbnRyb2R1Y2VzIHN1YnBpeGVsIGdhcHMgYWxvbmcg
dGhlCiAgICAgICAgICAgICAgICAgLy8gY29ybmVycy4gVGhvc2UgYXJlIGF2b2lkZWQgYnkgaW5z
ZXR0aW5nIHRoZSBjbGlwcGluZyBwYXRoIGJ5IG9uZSBwaXhlbC4KICAgICAgICAgICAgICAgICBp
ZiAoaGFzT3BhcXVlQmFja2dyb3VuZCkgewotICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlw
T3V0LmluZmxhdGUoLTEpOwotICAgICAgICAgICAgICAgICAgICB1bmlmb3JtbHlFeHBhbmRCb3Jk
ZXJSYWRpaSgtMSwgdG9wTGVmdFRvQ2xpcE91dCwgdG9wUmlnaHRUb0NsaXBPdXQsIGJvdHRvbUxl
ZnRUb0NsaXBPdXQsIGJvdHRvbVJpZ2h0VG9DbGlwT3V0KTsKKyAgICAgICAgICAgICAgICAgICAg
cmVjdFRvQ2xpcE91dC5pbmZsYXRlV2l0aFJhZGlpKC0xKTsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCwgdG9w
TGVmdFRvQ2xpcE91dCwgdG9wUmlnaHRUb0NsaXBPdXQsIGJvdHRvbUxlZnRUb0NsaXBPdXQsIGJv
dHRvbVJpZ2h0VG9DbGlwT3V0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRl
ZFJlY3QoZmlsbFJlY3QsIHRvcExlZnRUb0ZpbGwsIHRvcFJpZ2h0VG9GaWxsLCBib3R0b21MZWZ0
VG9GaWxsLCBib3R0b21SaWdodFRvRmlsbCwgQ29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRv
Q2xpcE91dCk7CisKKyAgICAgICAgICAgICAgICBpZiAoc2hhZG93U3ByZWFkIDwgMCkKKyAgICAg
ICAgICAgICAgICAgICAgZmlsbFJlY3QuZXhwYW5kUmFkaWkoc2hhZG93U3ByZWFkKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFj
aywgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gcmVjdDsKKyAgICAgICAgICAgICAgICBJbnRSZWN0
IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOwogCiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlIGJveCBpcyBvcGFxdWUsIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dl
dmVyLCBkb2luZyBzbyBzYXZlcyB0aW1lCiAgICAgICAgICAgICAgICAgLy8gd2hlbiBwYWludGlu
ZyB0aGUgc2hhZG93LiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhlbCBn
YXBzIGFsb25nIHRoZQpAQCAtMTc1OSwyMCArMTYyNywyMCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwg
aW50CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwT3V0KHJlY3RUb0NsaXBPdXQpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHMtPmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZmlsbFJlY3Qu
cmVjdCgpLCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIEluc2V0IHNoYWRvdy4KLSAgICAgICAgICAgIEludFJlY3QgaG9sZVJlY3QocmVj
dCk7CisgICAgICAgICAgICBJbnRSZWN0IGhvbGVSZWN0KGJvcmRlci5yZWN0KCkpOwogICAgICAg
ICAgICAgaG9sZVJlY3QuaW5mbGF0ZSgtc2hhZG93U3ByZWFkKTsKIAogICAgICAgICAgICAgaWYg
KGhvbGVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRp
dXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChyZWN0LCB0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIHNoYWRvd0NvbG9yLCBz
LT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRl
ZFJlY3QoYm9yZGVyLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHJlY3QsIHNo
YWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChib3JkZXIucmVjdCgpLCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtMTc5NCw3ICsx
NjYyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogCiAgICAgICAgICAgICBDb2xvciBmaWxs
Q29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9y
LmJsdWUoKSwgMjU1KTsKIAotICAgICAgICAgICAgSW50UmVjdCBvdXRlclJlY3QocmVjdCk7Cisg
ICAgICAgICAgICBJbnRSZWN0IG91dGVyUmVjdChib3JkZXIucmVjdCgpKTsKICAgICAgICAgICAg
IG91dGVyUmVjdC5pbmZsYXRlWCh3IC0gMiAqIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBv
dXRlclJlY3QuaW5mbGF0ZVkoaCAtIDIgKiBzaGFkb3dTcHJlYWQpOwogCkBAIC0xODAyLDExICsx
NjcwLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKIAogICAgICAgICAgICAgUGF0aCBwYXRo
OwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewotICAgICAgICAgICAgICAgIHBh
dGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlci5y
ZWN0KCksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQo
KSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdo
dCgpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBhdGgpOwogICAgICAgICAgICAg
ICAgIHBhdGguY2xlYXIoKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmNsaXAocmVjdCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChib3JkZXIu
cmVjdCgpKTsKIAogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgyICogdyArIG1heCgw
LCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dCbHVyIC0gMiAqIHNoYWRvd1NwcmVhZCAr
IDEsIDApOwogICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGV4dHJhT2Zmc2V0LndpZHRo
KCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKQEAgLTE4MTYsOCArMTY4NCw4IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgaW50IHR4LCBpbnQKIAogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewogICAg
ICAgICAgICAgICAgIGlmIChzaGFkb3dTcHJlYWQgPiAwKQotICAgICAgICAgICAgICAgICAgICB1
bmlmb3JtbHlFeHBhbmRCb3JkZXJSYWRpaSgtc2hhZG93U3ByZWFkLCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotICAgICAgICAgICAgICAgIHBhdGguYWRkUm91
bmRlZFJlY3QoaG9sZVJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21S
aWdodCk7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlci5zaHJpbmtSYWRpaShzaGFkb3dTcHJl
YWQpOworICAgICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QsIGJvcmRl
ci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgYm9yZGVyLnJh
ZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChob2xlUmVjdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5k
ZXggOGY5ZjQ2NTc4MDVhYmYzOWFkOTc2ZjE1YzczNjJlMWE4ZDdhMTVmMy4uZjZiY2I5NGI4NjAz
Y2U4MzUzZWJmZGY3YzczOWMyMTc1NjQ3ZWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRl
OgogCiAgICAgSW50U2l6ZSBjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiwg
SW50U2l6ZSBzY2FsZWRTaXplKSBjb25zdDsKIAotICAgIHZvaWQgY2xpcEJvcmRlclNpZGVQb2x5
Z29uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdo
dCwgY29uc3QgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25k
RWRnZU1hdGNoZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKKyAgICB2b2lkIGNsaXBCb3Jk
ZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgYm9y
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJveFNpZGUsIGJvb2wg
Zmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcywgY29uc3QgUmVuZGVyU3R5
bGUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICBmcmllbmQgY2xh
c3MgUmVuZGVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
aW5kZXggOTdhYzVjM2Q0YzM3MDc5YjRkNjIwMWI4MjA0ZmE1OTI5MGY1YTBjYy4uNWIzOWUwZDdl
ZjU3NTdmMjY0MjQ3NjUyMDZhYTg5N2FkZWQzZDAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTk3OSwzNiArOTc5LDI0IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBJbnRSZWN0CiAgICAgICAgICAgICBpbm5lckJvcmRlckxlZnRXaWR0aCArPSAxOwogCiAgICAg
ICAgIC8vIEdldCB0aGUgaW5uZXIgYm9yZGVyIHJlY3RzIGZvciBib3RoIHRoZSBvdXRlciBib3Jk
ZXIgbGluZSBhbmQgdGhlIGlubmVyIGJvcmRlciBsaW5lCi0gICAgICAgIEludFJlY3Qgb3V0ZXJC
b3JkZXJJbm5lclJlY3QgPSBib3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwgb3V0ZXJCb3JkZXJU
b3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0b21XaWR0aCwgCi0gICAgICAgICAgICBvdXRlckJvcmRl
ckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoKTsKLSAgICAgICAgSW50UmVjdCBpbm5l
ckJvcmRlcklubmVyUmVjdCA9IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCBpbm5lckJvcmRl
clRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCAKLSAgICAgICAgICAgIGlubmVyQm9y
ZGVyTGVmdFdpZHRoLCBpbm5lckJvcmRlclJpZ2h0V2lkdGgpOwotCi0gICAgICAgIC8vIEdldCB0
aGUgaW5uZXIgcmFkaWkgZm9yIHRoZSBvdXRlciBib3JkZXIgbGluZQotICAgICAgICBJbnRTaXpl
IG91dGVyQm9yZGVyVG9wTGVmdElubmVyUmFkaXVzLCBvdXRlckJvcmRlclRvcFJpZ2h0SW5uZXJS
YWRpdXMsIG91dGVyQm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCAKLSAgICAgICAgICAgIG91
dGVyQm9yZGVyQm90dG9tUmlnaHRJbm5lclJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdldElubmVy
Qm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhvdXRlckJvcmRlcklubmVyUmVjdCwg
b3V0ZXJCb3JkZXJUb3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0b21XaWR0aCwgCi0gICAgICAgICAg
ICBvdXRlckJvcmRlckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoLCBvdXRlckJvcmRl
clRvcExlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCAKLSAg
ICAgICAgICAgIG91dGVyQm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJv
dHRvbVJpZ2h0SW5uZXJSYWRpdXMpOwotCi0gICAgICAgIC8vIEdldCB0aGUgaW5uZXIgcmFkaWkg
Zm9yIHRoZSBpbm5lciBib3JkZXIgbGluZQotICAgICAgICBJbnRTaXplIGlubmVyQm9yZGVyVG9w
TGVmdElubmVyUmFkaXVzLCBpbm5lckJvcmRlclRvcFJpZ2h0SW5uZXJSYWRpdXMsIGlubmVyQm9y
ZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCAKLSAgICAgICAgICAgIGlubmVyQm9yZGVyQm90dG9t
UmlnaHRJbm5lclJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdldElubmVyQm9yZGVyUmFkaWlGb3JS
ZWN0V2l0aEJvcmRlcldpZHRocyhpbm5lckJvcmRlcklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BX
aWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgCi0gICAgICAgICAgICBpbm5lckJvcmRlckxl
ZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoLCBpbm5lckJvcmRlclRvcExlZnRJbm5lclJh
ZGl1cywgaW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCAKLSAgICAgICAgICAgIGlubmVy
Qm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJS
YWRpdXMpOwogCiAgICAgICAgIC8vIERyYXcgaW5uZXIgYm9yZGVyIGxpbmUKICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRl
ZFJlY3RDbGlwKGlubmVyQm9yZGVySW5uZXJSZWN0LCBpbm5lckJvcmRlclRvcExlZnRJbm5lclJh
ZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlclRvcFJpZ2h0SW5uZXJSYWRpdXMsIGlubmVy
Qm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJS
YWRpdXMpOworICAgICAgICBJbnRSZWN0IGlubmVyQm9yZGVySW5uZXJSZWN0ID0gYm9yZGVySW5u
ZXJSZWN0KGJvcmRlclJlY3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlubmVyQm9yZGVyQm90dG9t
V2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlubmVyQm9yZGVyTGVmdFdpZHRoLCBpbm5lckJvcmRlclJpZ2h0V2lkdGgpOworICAg
ICAgICBSb3VuZGVkSW50UmVjdCBpbm5lckNsaXAgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9y
ZGVyV2l0aEJvcmRlcldpZHRocyhpbm5lckJvcmRlcklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BX
aWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5u
ZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGlubmVyQ2xpcCk7CiAgICAgICAgIGRyYXdC
b3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0
aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBTT0xJRCk7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9yZGVy
IGxpbmUKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KG91dGVyQm9yZGVySW5uZXJSZWN0LCBvdXRlckJv
cmRlclRvcExlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRlclRvcFJpZ2h0
SW5uZXJSYWRpdXMsIG91dGVyQm9yZGVyQm90dG9tTGVmdElubmVyUmFkaXVzLCBvdXRlckJvcmRl
ckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXMpOworICAgICAgICBJbnRSZWN0IG91dGVyQm9yZGVySW5u
ZXJSZWN0ID0gYm9yZGVySW5uZXJSZWN0KGJvcmRlclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgs
IG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRl
clJpZ2h0V2lkdGgpOworICAgICAgICBSb3VuZGVkSW50UmVjdCBvdXRlckNsaXAgPSBzdHlsZS0+
Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRocyhvdXRlckJvcmRlcklubmVyUmVj
dCwgb3V0ZXJCb3JkZXJUb3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0b21XaWR0aCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lk
dGgpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChvdXRlckNs
aXApOwogICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVy
UmVjdCwgYm9yZGVyUGF0aCwgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzLCBzdHlsZSwgYywg
U09MSUQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKIApAQCAtMTAzMCwx
OCArMTAxOCwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgSW50UmVjdAogICAgICAgICBJbnRSZWN0IGhh
bGZCb3JkZXJSZWN0ID0gYm9yZGVySW5uZXJSZWN0KGJvcmRlclJlY3QsIHN0eWxlLT5ib3JkZXJM
ZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIC8gMiwgCiAgICAgICAg
ICAgICBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpIC8gMik7CiAKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0SGFsZlJhZGl1cywgdG9wUmlnaHRI
YWxmUmFkaXVzLCBib3R0b21MZWZ0SGFsZlJhZGl1cywgYm90dG9tUmlnaHRIYWxmUmFkaXVzOwot
ICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhz
KGhhbGZCb3JkZXJSZWN0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCAKLSAgICAgICAg
ICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRlckxlZnRXaWR0
aCgpIC8gMiwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSAvIDIsIAotICAgICAgICAgICAgdG9w
TGVmdEhhbGZSYWRpdXMsIHRvcFJpZ2h0SGFsZlJhZGl1cywgYm90dG9tTGVmdEhhbGZSYWRpdXMs
IGJvdHRvbVJpZ2h0SGFsZlJhZGl1cyk7Ci0KICAgICAgICAgLy8gUGFpbnQgZnVsbCBib3JkZXIK
ICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3Qs
IGJvcmRlclBhdGgsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgcywgc3R5bGUsIGMsIHMxKTsK
IAogICAgICAgICAvLyBQYWludCBpbm5lciBvbmx5CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChoYWxm
Qm9yZGVyUmVjdCwgdG9wTGVmdEhhbGZSYWRpdXMsIHRvcFJpZ2h0SGFsZlJhZGl1cywKLSAgICAg
ICAgICAgIGJvdHRvbUxlZnRIYWxmUmFkaXVzLCBib3R0b21SaWdodEhhbGZSYWRpdXMpOworICAg
ICAgICBSb3VuZGVkSW50UmVjdCBjbGlwUmVjdCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3Jk
ZXJXaXRoQm9yZGVyV2lkdGhzKGhhbGZCb3JkZXJSZWN0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRo
KCkgLyAyLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkgLyAyKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
Y2xpcFJlY3QpOwogICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwg
Ym9yZGVyUmVjdCwgYm9yZGVyUGF0aCwgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzLCBzdHls
ZSwgYywgczIpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggOTc0YThkMDcyZWRm
Njc3OTBmMDg5MzY3NThmMjg0OGIwN2M2OGRmNy4uMGQ3MmY5NWM4YTBjYzk2ZDJiMDUxODExNjg0
N2U0N2QzODA0YmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCkBAIC0xMzUsMTEgKzEzNSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJhZGl1cywgc2luY2Ug
d2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQgZ2V0cyBwYWludGVk
LgogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQ7Ci0gICAgICAgICAgICBzdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVy
UmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLQotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXJSZWN0
LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChzdHlsZSgpLT5nZXRSb3Vu
ZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4
IDViNDFlYTIxMzNiN2U4ODJhMTNlOTNkOGMzZjJkZTQ0OWUzMmEwZTIuLjU3MmFhMmZkNWJkZWQ4
ZDY4ZTFmYzY5MWIwYTlhZjk4YjU3M2UyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTY3Niw5ICs2NzYsNyBAQCBi
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGV4dEZpZWxkSW50ZXJuYWwoUmVuZGVy
T2JqZWN0KiBvLAogICAgICAgICAvLyBiYWNrZ3JvdW5kICh0aGVtZWQgb3IgZmlsbGVkKSBhcHBy
b3ByaWF0ZWx5LgogICAgICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIHdlIGRvIHRoZSByaWdodCB0
aGluZyBpZiBjc3MgYmFja2dyb3VuZC1jbGlwIGlzIHNldC4KICAgICAgICAgaS5jb250ZXh0LT5z
YXZlKCk7Ci0gICAgICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0OwotICAgICAgICBvLT5zdHlsZSgpLT5nZXRCb3JkZXJSYWRpaUZvclJlY3Qociwg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICAgICAgaS5j
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxl
ZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgaS5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
by0+c3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihyKSk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEgPSBnZXRUaGVtZURhdGEobyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggMDc2NDA5M2U2YmM3ZGQx
MTRiYjYyMjViYWJlZmViZmE1ZmMzNzkzOS4uNjA1ZTk1ODZlODIzZDU3ZjJkZDUzOTRmZmJhZjFi
ZGIyOGRlNmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtMTAzMywxNCArMTAzMyw4IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxp
c3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAKICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCi0gICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzOwot
ICAgIEludFNpemUgdG9wUmlnaHRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0UmFkaXVz
OwotICAgIEludFNpemUgYm90dG9tUmlnaHRSYWRpdXM7Ci0KLSAgICBvLT5zdHlsZSgpLT5nZXRC
b3JkZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRv
bUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgIGludCByYWRpdXMgPSB0b3BM
ZWZ0UmFkaXVzLndpZHRoKCk7CisgICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gby0+c3R5bGUo
KS0+Z2V0Um91bmRlZEJvcmRlckZvcihyKTsKKyAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCkBAIC0xMDYzLDI3ICsxMDU3LDI3IEBAIHZvaWQgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5n
KEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5yaWdo
dCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCkgLSByYWRpdXMsIHIueSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdo
dFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOworICAgIHBhaW50
SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKICAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnJlc3RvcmUoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50
KSwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIEludFNpemUoKSwgSW50U2l6ZSgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKFJvdW5kZWRJbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCks
IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAg
Q0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7CiAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIENH
Q29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9tR3JhZGllbnQpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGVuY2xvc2luZ0ludFJlY3QoYm90dG9t
R3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm90dG9tTGVmdFJhZGl1cywgYm90dG9t
UmlnaHRSYWRpdXMpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RD
bGlwKFJvdW5kZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRT
aXplKCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFk
aWkoKS5ib3R0b21SaWdodCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRl
eHQsIGJvdHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVz
dG9yZSgpOwogICAgIH0KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgQ0dD
b250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRk
Um91bmRlZFJlY3RDbGlwKHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFk
ZFJvdW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRl
eHQsIGxlZnRTaGFkaW5nLmdldCgpKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0
LCByaWdodFNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7
CkBAIC0xMzA0LDkgKzEyOTgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRy
YWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZgogICAgICAgICBt
YWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1h
a2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCBib3Vu
ZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAg
SW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kcywKLSAgICAgICAgcmFkaXVzLCByYWRp
dXMsCi0gICAgICAgIHJhZGl1cywgcmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRk
Um91bmRlZFJlY3RDbGlwKFJvdW5kZWRJbnRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJh
ZGl1cywgcmFkaXVzKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNo
YWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCAz
YzFkZWRjNmU0ZTViNGMxODQwNGJmOTY5MmM3ZDQ0Y2M0YTZiNzhkLi40N2Y2MjdlOGRkOWZjYzk1
ZjUxM2QyMTA5ZTE4NzcxZjRlMDUxOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTc1MiwxNCArNzUyLDggQEAgdm9pZCBSZW5kZXJU
aGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW4KIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAKLSAgICBJbnRT
aXplIHRvcExlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSB0b3BSaWdodFJhZGl1czsKLSAgICBJbnRT
aXplIGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21SaWdodFJhZGl1czsKLQot
ICAgIG8tPnN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0UmFkaXVzLCB0
b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotCi0g
ICAgaW50IHJhZGl1cyA9IHRvcExlZnRSYWRpdXMud2lkdGgoKTsKKyAgICBSb3VuZGVkSW50UmVj
dCBib3VuZCA9IG8tPnN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3Iocik7CisgICAgaW50IHJh
ZGl1cyA9IGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAgICBDR0NvbG9yU3Bh
Y2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCkBAIC03ODEsMjggKzc3
NSwyOCBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAgICAgUmV0YWluUHRyPENHU2hhZGlu
Z1JlZj4gcmlnaHRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwg
Q0dQb2ludE1ha2Uoci5yaWdodCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCkgLSBy
YWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4
dCwgcik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BM
ZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRS
YWRpdXMpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmQucmVjdCgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvdW5kKTsKICAgICBD
R0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZl
KCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KHRv
cEdyYWRpZW50KSwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIEludFNpemUoKSwgSW50
U2l6ZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKFJvdW5k
ZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRv
cExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkp
OwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRp
ZW50LmlzRW1wdHkoKSkgewogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAg
ICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0
KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvdHRvbUxlZnRSYWRpdXMs
IGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50
KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3Vu
ZC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmco
Y29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5yZXN0b3JlKCk7CiAgICAgfQogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQsIGJvdW5kLnJlY3QoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwg
bGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJp
Z2h0U2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAg
LTk1OCwzNCArOTUyLDM1IEBAIGNvbnN0IGludCB0cmFja1JhZGl1cyA9IDI7CiAKIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBJbnRSZWN0IGJv
dW5kcyA9IHI7Ci0KLSAgICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09ICBTbGlkZXJI
b3Jpem9udGFsUGFydCkgewotICAgICAgICBib3VuZHMuc2V0SGVpZ2h0KHRyYWNrV2lkdGgpOwot
ICAgICAgICBib3VuZHMuc2V0WShyLnkoKSArIHIuaGVpZ2h0KCkgLyAyIC0gdHJhY2tXaWR0aCAv
IDIpOwotICAgIH0gZWxzZSBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclZl
cnRpY2FsUGFydCkgewotICAgICAgICBib3VuZHMuc2V0V2lkdGgodHJhY2tXaWR0aCk7Ci0gICAg
ICAgIGJvdW5kcy5zZXRYKHIueCgpICsgci53aWR0aCgpIC8gMiAtIHRyYWNrV2lkdGggLyAyKTsK
LSAgICB9CisgICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMsIHRyYWNrUmFkaXVzKTsKKyAg
ICBSb3VuZGVkSW50UmVjdCBib3VuZHMociwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVz
KTsKKworICAgIGlmIChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gIFNsaWRlckhvcml6b250
YWxQYXJ0KQorICAgICAgICBib3VuZHMuc2V0UmVjdChJbnRSZWN0KHIueCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHIueSgpICsgci5oZWlnaHQoKSAvIDIgLSB0cmFja1dpZHRo
IC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLndpZHRoKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tXaWR0aCkpOworICAgIGVsc2UgaWYgKG8tPnN0
eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCisgICAgICAgIGJvdW5k
cy5zZXRSZWN0KEludFJlY3Qoci54KCkgKyByLndpZHRoKCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci55KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhY2tXaWR0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgci5oZWlnaHQoKSkpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZl
KCk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMpOworICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzLnJlY3QoKSk7CiAKICAgICBzdHJ1Y3QgQ0dG
dW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAwLCBUcmFja0dyYWRpZW50SW50ZXJw
b2xhdGUsIE5VTEwgfTsKICAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gbWFpbkZ1bmN0aW9u
KEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5D
YWxsYmFja3MpKTsKICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBtYWluU2hhZGluZzsKICAg
ICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCkKLSAg
ICAgICAgbWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENH
UG9pbnRNYWtlKGJvdW5kcy54KCksICBib3VuZHMuYm90dG9tKCkpLCBDR1BvaW50TWFrZShib3Vu
ZHMucmlnaHQoKSwgYm91bmRzLmJvdHRvbSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlh
bChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCkueCgpLCAgYm91bmRzLnJlY3QoKS5i
b3R0b20oKSksIENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCkucmlnaHQoKSwgYm91bmRzLnJlY3Qo
KS5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgZWxz
ZQotICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFrZShib3Vu
ZHMueCgpLCBib3VuZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNz
cGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMucmVjdCgpLnkoKSks
IENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCkueCgpLCBib3VuZHMucmVjdCgpLmJvdHRvbSgpKSwg
bWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIEludFNpemUgcmFkaXVz
KHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChib3VuZHMsCi0gICAgICAgIHJhZGl1cywgcmFkaXVzLAotICAgICAgICBy
YWRpdXMsIHJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xp
cChib3VuZHMpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5n
LmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCmluZGV4IDJjNTVmMzEy
NjQ3YTdiNDVjNjUxNTE3ZGE5YTdlZTVjZDFlNTdmODEuLmQ0YmZmOTYzNmQ4YjIzYWRjYjI2MGM3
NGRjZDYzNWRiYzgwZDljZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW5DRS5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCBib29sIFJlbmRlclRoZW1lV2luQ0U6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dAogICAgIGludCB5ID0gci55KCkgKyAoci5oZWlnaHQoKSAtIGNhbmNlbFNpemUuaGVpZ2h0KCkp
IC8gMiArIDE7CiAgICAgSW50UmVjdCBjYW5jZWxCb3VuZHMoSW50UG9pbnQoeCwgeSksIGNhbmNl
bFNpemUpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChjYW5jZWxCb3VuZHMsIGNhbmNlbFJhZGl1cywgY2Fu
Y2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChjYW5jZWxCb3VuZHMsIGNh
bmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cykpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChjYW5jZWxCb3VuZHMsIGJ1dHRvbkNvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgdGhlICd4JwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAwNTY3NzNhNmFhMGE3ZjUyNDFi
OTkwMmNkMjVkMzQxOWQ5MTc4MWE2Li5hMWMxNmM5ODE2MmM2ZjI3ODI0OWVjMTUyZDAzNzdhMmQz
N2Y5ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAt
Mjc1LDExICsyNzUsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGludCB0eCwgaW50IHR5KQogCiAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhh
dmUgYSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5k
IGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7Ci0gICAgICAgIAotICAgICAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0
b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JS
ZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdo
dCk7Ci0KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3Jk
ZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKHN0eWxlKCktPmdldFJv
dW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkpOwogICAgIH0KIAogICAgIGlmIChtX3dpZGdldCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggMDM2
MzVkOWYxOWZiYTQ5MDE2NTY3Mjc4OTY4ZjhmMTNkYTc0OGE4My4uMGU1MGVkYjc4MDAwYTUwYWJk
ZDhkMGYzOWE1YjBmZDc5MjU2NzYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0JvcmRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIEJvcmRlckRhdGFfaAog
CiAjaW5jbHVkZSAiQm9yZGVyVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCiAKQEAgLTEwOSw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYgdG9wUmlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm90dG9tTGVm
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsgfQogICAgIGNvbnN0IExlbmd0aFNpemUm
IGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQotICAgIAorCiBw
cml2YXRlOgogICAgIEJvcmRlclZhbHVlIG1fbGVmdDsKICAgICBCb3JkZXJWYWx1ZSBtX3JpZ2h0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5k
ZXggNDY2NWU1MmY0MTQ0OTdhN2I2NDhhZjBiM2U2MzM5YTNmYWMxZjQ1MC4uMjgzNmZiOThkODI2
OWQzMDgzYmFhZDdlMDkzNTg4YzMwNDA0ODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC03NDQsNyArNzQ0LDE5IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldEJveFNoYWRvdyhTaGFkb3dEYXRhKiBzaGFkb3dEYXRhLCBib29sIGFkZCkK
ICAgICByYXJlRGF0YS0+bV9ib3hTaGFkb3cuc2V0KHNoYWRvd0RhdGEpOwogfQogCi1zdGF0aWMg
dm9pZCBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6
ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNp
emUmIGJvdHRvbVJpZ2h0KQorc3RhdGljIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSBjYWxjUmFkaWlG
b3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0OjpSYWRpaShJbnRTaXplKGJvcmRlci50b3BMZWZ0KCku
d2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGJvcmRlci50b3BSaWdo
dCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdo
dCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShib3JkZXIuYm90
dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1Zh
bHVlKGhlaWdodCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShi
b3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWln
aHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSkpOworfQorCitzdGF0aWMgZmxvYXQgY2FsY0NvbnN0cmFp
bnRTY2FsZUZvcihjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFk
aWkmIHJhZGlpKQogewogICAgIC8vIENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NTMyBy
dWxlczoKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1i
b3JkZXItcmFkaXVzCkBAIC03NTMsNzUgKzc2NSw0MyBAQCBzdGF0aWMgdm9pZCBjb25zdHJhaW5D
b3JuZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50
UwogICAgIHVuc2lnbmVkIHJhZGlpU3VtOwogCiAgICAgLy8gdG9wCi0gICAgcmFkaWlTdW0gPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0b3BSaWdodC53aWR0aCgpKTsgLy8gQ2FzdHMgdG8gYXZvaWQgaW50ZWdlciBvdmVyZmxv
dy4KLSAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci53aWR0aCgpKSkK
LSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLndpZHRoKCkpIC8gcmFk
aWlTdW0sIGZhY3Rvcik7CisgICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFk
aWkudG9wTGVmdCgpLndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlpLnRvcFJp
Z2h0KCkud2lkdGgoKSk7IC8vIENhc3RzIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cuCisgICAg
aWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkpCisgICAg
ICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LndpZHRoKCkpIC8g
cmFkaWlTdW0sIGZhY3Rvcik7CiAKICAgICAvLyBib3R0b20KLSAgICByYWRpaVN1bSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyLndpZHRoKCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHIud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKKyAgICByYWRpaVN1bSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSkgKyBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpKTsKKyAgICBpZiAocmFk
aWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC53aWR0aCgpKSkKKyAgICAgICAgZmFj
dG9yID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkgLyByYWRpaVN1
bSwgZmFjdG9yKTsKICAgICAKICAgICAvLyBsZWZ0Ci0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odG9wTGVmdC5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90
dG9tTGVmdC5oZWlnaHQoKSk7Ci0gICAgaWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHIuaGVpZ2h0KCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHIuaGVpZ2h0KCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CisgICAgcmFkaWlTdW0gPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkpOworICAgIGlmIChyYWRpaVN1bSA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSkKKyAgICAgICAgZmFjdG9yID0g
c3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KCkpIC8gcmFkaWlTdW0sIGZh
Y3Rvcik7CiAgICAgCiAgICAgLy8gcmlnaHQKLSAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih0b3BSaWdodC5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90dG9t
UmlnaHQuaGVpZ2h0KCkpOwotICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyLmhlaWdodCgpKSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0Pihy
LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAgIHJhZGlpU3VtID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOworICAgIGlmIChyYWRpaVN1bSA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSkKKyAgICAgICAgZmFjdG9yID0g
c3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KCkpIC8gcmFkaWlTdW0sIGZh
Y3Rvcik7CiAgICAgCi0gICAgLy8gU2NhbGUgYWxsIHJhZGlpIGJ5IGYgaWYgbmVjZXNzYXJ5Lgot
ICAgIGlmIChmYWN0b3IgPCAxKSB7Ci0gICAgICAgIC8vIElmIGVpdGhlciByYWRpdXMgb24gYSBj
b3JuZXIgYmVjb21lcyB6ZXJvLCByZXNldCBib3RoIHJhZGlpIG9uIHRoYXQgY29ybmVyLgotICAg
ICAgICB0b3BMZWZ0LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICghdG9wTGVmdC53aWR0aCgp
IHx8ICF0b3BMZWZ0LmhlaWdodCgpKQotICAgICAgICAgICAgdG9wTGVmdCA9IEludFNpemUoKTsK
LSAgICAgICAgdG9wUmlnaHQuc2NhbGUoZmFjdG9yKTsKLSAgICAgICAgaWYgKCF0b3BSaWdodC53
aWR0aCgpIHx8ICF0b3BSaWdodC5oZWlnaHQoKSkKLSAgICAgICAgICAgIHRvcFJpZ2h0ID0gSW50
U2l6ZSgpOwotICAgICAgICBib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICgh
Ym90dG9tTGVmdC53aWR0aCgpIHx8ICFib3R0b21MZWZ0LmhlaWdodCgpKQotICAgICAgICAgICAg
Ym90dG9tTGVmdCA9IEludFNpemUoKTsKLSAgICAgICAgYm90dG9tUmlnaHQuc2NhbGUoZmFjdG9y
KTsKLSAgICAgICAgaWYgKCFib3R0b21SaWdodC53aWR0aCgpIHx8ICFib3R0b21SaWdodC5oZWln
aHQoKSkKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0ID0gSW50U2l6ZSgpOwotICAgIH0KKyAgICBB
U1NFUlQoZmFjdG9yIDw9IDEpOworICAgIHJldHVybiBmYWN0b3I7CiB9CiAKLXZvaWQgUmVuZGVy
U3R5bGU6OmdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRTaXplJiB0
b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpIGNvbnN0CitSb3VuZGVkSW50UmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRl
ZEJvcmRlckZvcihjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewotICAgIHRvcExlZnQgPSBJ
bnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lk
dGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhl
aWdodCgpKSk7Ci0gICAgdG9wUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmln
aHQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJp
Z2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKLSAgICAKLSAgICBib3R0b21M
ZWZ0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNW
YWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5j
YWxjVmFsdWUoci5oZWlnaHQoKSkpOwotICAgIGJvdHRvbVJpZ2h0ID0gSW50U2l6ZShzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vy
cm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgp
KSk7Ci0KLSAgICBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdCwgdG9wUmln
aHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICBSb3VuZGVkSW50UmVjdDo6UmFkaWkg
cmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKTsKKyAgICByYWRpaS5zY2FsZShjYWxjQ29uc3RyYWludFNjYWxlRm9yKHJlY3Qs
IHJhZGlpKSk7CisgICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0KHJlY3QsIHJhZGlpKTsKIH0KIAot
dm9pZCBSZW5kZXJTdHlsZTo6Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lk
dGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVjdCwgdW5zaWduZWQgc2hvcnQgdG9wV2lkdGgsIHVu
c2lnbmVkIHNob3J0IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2ln
bmVkIHNob3J0IHJpZ2h0V2lkdGgsIEludFNpemUmIGlubmVyVG9wTGVmdCwgSW50U2l6ZSYgaW5u
ZXJUb3BSaWdodCwgSW50U2l6ZSYgaW5uZXJCb3R0b21MZWZ0LCBJbnRTaXplJiBpbm5lckJvdHRv
bVJpZ2h0KSBjb25zdAorUm91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5l
ckJvcmRlcldpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYgaW5uZXJSZWN0LCB1bnNpZ25l
ZCBzaG9ydCB0b3BXaWR0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBib3R0b21XaWR0aCwg
dW5zaWduZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRoKSBjb25z
dAogewotICAgIGlubmVyVG9wTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0
KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVy
LnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0gICAg
aW5uZXJUb3BSaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLndpZHRo
KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BSaWdo
dCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lckJv
dHRvbUxlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCku
Y2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotICAgIGlubmVyQm90
dG9tUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgp
LmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmln
aHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0KLQotICAgIGlu
bmVyVG9wTGVmdC5zZXRXaWR0aChtYXgoMCwgaW5uZXJUb3BMZWZ0LndpZHRoKCkgLSBsZWZ0V2lk
dGgpKTsKLSAgICBpbm5lclRvcExlZnQuc2V0SGVpZ2h0KG1heCgwLCBpbm5lclRvcExlZnQuaGVp
Z2h0KCkgLSB0b3BXaWR0aCkpOwotCi0gICAgaW5uZXJUb3BSaWdodC5zZXRXaWR0aChtYXgoMCwg
aW5uZXJUb3BSaWdodC53aWR0aCgpIC0gcmlnaHRXaWR0aCkpOwotICAgIGlubmVyVG9wUmlnaHQu
c2V0SGVpZ2h0KG1heCgwLCBpbm5lclRvcFJpZ2h0LmhlaWdodCgpIC0gdG9wV2lkdGgpKTsKLQot
ICAgIGlubmVyQm90dG9tTGVmdC5zZXRXaWR0aChtYXgoMCwgaW5uZXJCb3R0b21MZWZ0LndpZHRo
KCkgLSBsZWZ0V2lkdGgpKTsKLSAgICBpbm5lckJvdHRvbUxlZnQuc2V0SGVpZ2h0KG1heCgwLCBp
bm5lckJvdHRvbUxlZnQuaGVpZ2h0KCkgLSBib3R0b21XaWR0aCkpOwotCi0gICAgaW5uZXJCb3R0
b21SaWdodC5zZXRXaWR0aChtYXgoMCwgaW5uZXJCb3R0b21SaWdodC53aWR0aCgpIC0gcmlnaHRX
aWR0aCkpOwotICAgIGlubmVyQm90dG9tUmlnaHQuc2V0SGVpZ2h0KG1heCgwLCBpbm5lckJvdHRv
bVJpZ2h0LmhlaWdodCgpIC0gYm90dG9tV2lkdGgpKTsKLQotICAgIGNvbnN0cmFpbkNvcm5lclJh
ZGlpRm9yUmVjdChpbm5lclJlY3QsIGlubmVyVG9wTGVmdCwgaW5uZXJUb3BSaWdodCwgaW5uZXJC
b3R0b21MZWZ0LCBpbm5lckJvdHRvbVJpZ2h0KTsKKyAgICBSb3VuZGVkSW50UmVjdDo6UmFkaWkg
cmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgaW5uZXJSZWN0LndpZHRoKCks
IGlubmVyUmVjdC5oZWlnaHQoKSk7CisgICAgcmFkaWkuc2hyaW5rKHRvcFdpZHRoLCBib3R0b21X
aWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRoKTsKKyAgICByYWRpaS5zY2FsZShjYWxjQ29uc3Ry
YWludFNjYWxlRm9yKGlubmVyUmVjdCwgcmFkaWkpKTsKKyAgICByZXR1cm4gUm91bmRlZEludFJl
Y3QoaW5uZXJSZWN0LCByYWRpaSk7CiB9CiAKIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIFJl
bmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDFkN2FhZGFjNzEyY2I5Zjk5NWNiMjA5
ZjFlNjEyYzJhNmU1ZTU0YzEuLjFlZjk4MWEyOGUyOGY2NGNiZDJkZjUxNWQxYTdmNzc1MGQyODA3
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBA
IC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKICNpbmNsdWRlICJP
dXRsaW5lVmFsdWUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1
ZGUgIlJvdW5kZWRJbnRSZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgogI2luY2x1ZGUg
IlN0eWxlQmFja2dyb3VuZERhdGEuaCIKICNpbmNsdWRlICJTdHlsZUJveERhdGEuaCIKICNpbmNs
dWRlICJTdHlsZUZsZXhpYmxlQm94RGF0YS5oIgpAQCAtODQ2LDEzICs4NDgsMTAgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUoTGVuZ3RoKHMud2lk
dGgoKSwgRml4ZWQpLCBMZW5ndGgocy5oZWlnaHQoKSwgRml4ZWQpKSk7CiAgICAgfQotCiAgICAg
Ci0gICAgdm9pZCBnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYsIEludFNpemUm
IHRvcExlZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0LCBJbnRTaXpl
JiBib3R0b21SaWdodCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVj
dFdpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRo
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBib3R0b21XaWR0
aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRoLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplJiBpbm5lclRvcExlZnQsIEludFNp
emUmIGlubmVyVG9wUmlnaHQsIEludFNpemUmIGlubmVyQm90dG9tTGVmdCwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50U2l6ZSYgaW5uZXJCb3R0b21SaWdodCkgY29uc3Q7CisgICAg
Um91bmRlZEludFJlY3QgZ2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBJbnRSZWN0JikgY29uc3Q7
CisgICAgUm91bmRlZEludFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRo
cyhjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgc2hvcnQgdG9wV2lkdGgsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hv
cnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQg
cmlnaHRXaWR0aCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aCh1bnNpZ25l
ZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdikg
fQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIo
c3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdikgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79270</attachid>
            <date>2011-01-18 05:48:57 -0800</date>
            <delta_ts>2011-01-18 08:42:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51664-20110118224854.patch</filename>
            <type>text/plain</type>
            <size>116754</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDljYTQ4NGFkNzIyYTRjZTVmMjc3ODI5ZjE3ODU3OWNiNmEyNGFjYjIu
LjQyNTEzMzg1NWEzY2EyYjAwOTg4OGQ3YWE3YjBmMDkzNzRmYWJhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNTMxLDYgKzUzMSw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VHJhdmVyc2FsU3RhdGUuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCisJ
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3BwIFwKIAlwbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcCBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDgwNTBiNDhjZmE3ZTAzMzdlMDNjNTdkZGI3ZDM1Nzg3ODUyYTg2
ZWIuLjc2NWU0MTNiNDgwMzFkNjAwNDg1NTJjZDViODJjZTUyYzY2ZTNiMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xMzUwLDYgKzEzNTAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYjhmZDk2NTc5MDdjMDljNmU3YzQyZDU4NDJhZjFmOWNjZjRiYWQwMy4uNjMwYTg3
NTQxZmVmMTYxNTJjZThmOWFjYWFiZmIzMDVjN2Q3NWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4MyBAQAorMjAxMS0wMS0xOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3Rv
cmluZzogRXh0cmFjdCBSb3VuZGVkSW50UmVjdCBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE2NjQKKworICAgICAgICBSb3VuZGVkSW50UmVj
dCBpcyBhIHBhaXIgb2YgcmVjdCBhbmQgZm91ciBJbnRTaXplIG9iamVjdHMgd2hpY2ggcmVwcmVz
ZW50CisgICAgICAgIGNvcm5lciByYWRpaSBvZiB0aGUgcmVjdGFuZ2xlLiBJbnRTaXplIGlzIGdy
b3VwZWQgaW50byBSb3VuZGVkSW50UmVjdDo6UmFkaWkuCisgICAgICAgIE5vdyBSZW5kZXJTdHls
ZTo6Z2V0Um91bmRlZEJvcmRlckZvcigpIGFuZCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVy
Qm9yZGVyV2l0aEJvcmRlcldpZHRocygpCisgICAgICAgIHJldHVybiBSb3VuZGVkSW50UmVjdCBh
bmQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXAoKSwgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QoKQorICAgICAgICBhbmQgb3RoZXIgZnVuY3Rpb25zIGFjY2VwdCBS
b3VuZGVkSW50UmVjdCBhcyBhbiBhcmd1bWVudC4KKworICAgICAgICAqIEFuZHJvaWQubWs6Cisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVk
UmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmlzWmVybyk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJv
dW5kZWRJbnRSZWN0OjpSYWRpaTo6aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJvdW5kZWRJbnRSZWN0OjppbmNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6UmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZEludFJlY3Q6OlJhZGlpOjpzZXRUb3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5k
ZWRJbnRSZWN0OjpSYWRpaTo6c2V0VG9wUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRl
ZEludFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5k
ZWRJbnRSZWN0OjpSYWRpaTo6c2V0Qm90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZEludFJlY3Q6OlJhZGlpOjp0b3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJ
bnRSZWN0OjpSYWRpaTo6dG9wUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJl
Y3Q6OlJhZGlpOjpib3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0
OjpSYWRpaTo6Ym90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6
OlJhZGlpOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OlJhZGlp
OjpzaHJpbmspOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6
OlJvdW5kZWRJbnRSZWN0Ojppc1JvdW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZElu
dFJlY3Q6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnNldFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnNldFJhZGlpKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0Ojptb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJv
dW5kZWRJbnRSZWN0OjppbmZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0
OjppbmZsYXRlV2l0aFJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0Ojpl
eHBhbmRSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6c2hyaW5rUmFk
aWkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZHJhd0JveFNpZGVGcm9t
UGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGRJbnRlcm5hbCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRN
ZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY0NvbnN0cmFpbnRTY2FsZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRocyk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c2V0Qm9yZGVyUmFkaXVzKToKKworMjAxMS0wMS0xOCAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEV4dHJhY3QgUm91bmRlZEludFJlY3QgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNjY0CisK
KyAgICAgICAgUm91bmRlZEludFJlY3QgaXMgYSBwYWlyIG9mIHJlY3QgYW5kIGZvdXIgSW50U2l6
ZSBvYmplY3RzIHdoaWNoIHJlcHJlc2VudAorICAgICAgICBjb3JuZXIgcmFkaWkgb2YgdGhlIHJl
Y3RhbmdsZS4gSW50U2l6ZSBpcyBncm91cGVkIGludG8gUm91bmRlZEludFJlY3Q6OlJhZGlpLgor
ICAgICAgICBOb3cgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IoKSBhbmQgUmVuZGVy
U3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlcldpdGhCb3JkZXJXaWR0aHMoKQorICAgICAgICBy
ZXR1cm4gUm91bmRlZEludFJlY3QgYW5kIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RD
bGlwKCksIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KCkKKyAgICAgICAgYW5kIG90
aGVyIGZ1bmN0aW9ucyBhY2NlcHQgUm91bmRlZEludFJlY3QgYXMgYW4gYXJndW1lbnQuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAqIEFu
ZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVk
UmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmlzWmVybyk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OnNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJv
dW5kZWRJbnRSZWN0OjpSYWRpaTo6aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJvdW5kZWRJbnRSZWN0OjppbmNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJvdW5kZWRJbnRSZWN0OjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6UmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZEludFJlY3Q6OlJhZGlpOjpzZXRUb3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5k
ZWRJbnRSZWN0OjpSYWRpaTo6c2V0VG9wUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRl
ZEludFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5k
ZWRJbnRSZWN0OjpSYWRpaTo6c2V0Qm90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZEludFJlY3Q6OlJhZGlpOjp0b3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJ
bnRSZWN0OjpSYWRpaTo6dG9wUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJl
Y3Q6OlJhZGlpOjpib3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0
OjpSYWRpaTo6Ym90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6
OlJhZGlpOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OlJhZGlp
OjpzaHJpbmspOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6
OlJvdW5kZWRJbnRSZWN0Ojppc1JvdW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZElu
dFJlY3Q6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnNldFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZEludFJlY3Q6OnNldFJhZGlpKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0Ojptb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJv
dW5kZWRJbnRSZWN0OjppbmZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0
OjppbmZsYXRlV2l0aFJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRJbnRSZWN0Ojpl
eHBhbmRSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkSW50UmVjdDo6c2hyaW5rUmFk
aWkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZHJhd0JveFNpZGVGcm9t
UGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGRJbnRlcm5hbCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRN
ZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY0NvbnN0cmFpbnRTY2FsZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRocyk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c2V0Qm9yZGVyUmFkaXVzKToKKwogMjAxMS0wMS0xOCAgS29uc3RhbnRpbiBU
b2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBU
YW11cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVmYmJiNzA5NmM4NDE3ODRiOWZkYTg2MDdi
NDU1NjEyNGJlNDQ1N2UuLmQyMGU5NzUwYzM0NDA3YTJiNTIzNDlmMTljZjllNWJkYzFhMzQ5NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDM1LDYgKzI0MzUsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxT
dGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA4Mjc4ZTJiYzUyNGRjMDk4ODVlYWVkODk2ZjIwZDcwNDBlNWZjMDVkLi4yNjI0MGIz
YWJlMGI3NDE2ZmQ3ZWFhOGY5MThlZjY1ODZkOWFkNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
OTQyLDYgKzI5NDIsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2
ZXJzYWxTdGF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZDM3Y2RjNzNh
YzYxOTljY2E2MTg0NmExYTJjZDNiY2Y2YTI0ZDk5OS4uZGUxMjI5N2NhYjJhMzlhNmZkMzg5ZTY2
MDkxOGU4Y2RlZDYxMjRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEyMTAsNiArMTIxMCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXR0ZXJuLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIFwKQEAgLTIxMjksNiArMjEzMCw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDNjM2VhNzgzOGU1NTljYWQ2NmEyZTI3MWM0MjgxNzA2ZTkzZGQwZDkuLmI3
OTA0NzIwM2U3M2U0YzFhYWY1NmU2NDM5ZDM5ZTMwZWZiOWY4NGMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjY5Myw2ICsyNjY5MywxNCBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZEludFJlY3QuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91
bmRlZEludFJlY3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmNwcCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlZDg2YzY3N2E5YTQ1NjY2NDJjZjk3ZTk0Y2VjYjc0ZmNk
YmFmMzBhLi4yMTVmODIwYzY2NzhhYTQ3ZTQyM2I2MDU4Mzg2YjJhM2Q5N2YwMWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
MTYzLDYgKzMxNjMsOCBAQAogCQlBNjIyQThGRjEyMkM0NEE2MDBBNzg1QjMgLyogR2VuZXJpY0Jp
bmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE2
MjJBOEY5MTIyQzQ0QTYwMEE3ODVCMyAvKiBHZW5lcmljQmluZGluZy5oICovOyB9OwogCQlBNzE4
NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBE
cmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3ODhGMEIy
RDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKKwkJQTczRjk1RkUx
MkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkSW50UmVjdC5jcHAgKi87IH07CisJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkSW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1
MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgKi87IH07CiAJCUE3NUU4Qjg4MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4QjgwMEUxREUy
RDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLzsgfTsKQEAgLTk1MzMsNiArOTUzNSw4IEBACiAJ
CUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQ29udHJvbGxlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxQTcwQzkxMUFGQjAyMDAwOTg5
RDZEIC8qIEhUTUxNZXRlckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxN
ZXRlckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzNGOTVGQzEy
Qzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUm91bmRlZEludFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm91bmRlZEludFJlY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5
NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzVFOEI4MDBFMURFMkQ2MDA3RjI0ODEgLyog
RkVCbGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUJsZW5k
LmNwcDsgcGF0aCA9IGZpbHRlcnMvRkVCbGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzQ2MCw2ICsxNzQ2NCw4IEBACiAJCQkJQTg4REQ0ODYwQjQ2MjlBMzAwQzAyOTkw
IC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5oICovLAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0
OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0
dGVybi5oICovLAorCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVj
dC5jcHAgKi8sCisJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0
LmggKi8sCiAJCQkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRh
LmNwcCAqLywKIAkJCQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERh
dGEuaCAqLywKIAkJCQlCMkMzREE1MzBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEu
Y3BwICovLApAQCAtMjE3MjUsNiArMjE3MzEsNyBAQAogCQkJCUZEMzE2MEFEMTJCMDI2RjcwMEMx
QTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NERBMzcx
MDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVF
MTBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUU5MTFDOTBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzYzQTI0ODBGNzE2NDY2MDBDMDlENUEgLyogUnVu
TG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZV9hcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDUxNiw2ICsyNDUyMyw3IEBA
CiAJCQkJRkQzMTYwQUMxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNzREQTM4MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjVFNzBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElu
bGluZUJveC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkg
LyogUm91bmRlZEludFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTExQzgwRUY4NkQ0
NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQzYzQTI0OTBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2MWI3NzhjNzJiMmFiODc3MGUwNDNhYjRi
Nzg2ZWIwMWU2MDAxMDBiLi5lN2VhODgxMzA1NjE4YWY5NDE1Y2JmZWVjOWI4NmZlMGFmZjlhZTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJS
b3VuZGVkSW50UmVjdC5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01MzYsMjUgKzUz
NywyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yUwogICAgICAgICBpbWFnZS0+ZHJhdyh0aGlz
LCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQs
Ci0gICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmln
aHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IFJvdW5k
ZWRJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3Qs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwgcmVjdC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5y
YWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWko
KS5ib3R0b21SaWdodCgpKTsKICAgICBjbGlwKHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRl
ZFJlY3QoY29uc3QgUm91bmRlZEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRk
Um91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJp
Z2h0KTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QucmVjdCgpLCByZWN0LnJhZGlpKCku
dG9wTGVmdCgpLCByZWN0LnJhZGlpKCkudG9wUmlnaHQoKSwgcmVjdC5yYWRpaSgpLmJvdHRvbUxl
ZnQoKSwgcmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpOwogICAgIGNsaXBPdXQocGF0aCk7CiB9
CiAKQEAgLTU4NSw2ICs1ODQsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAgICAgZ2VuZXJhdG9y
LmZpbGwodGhpcywgcmVjdCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgUm91bmRlZEludFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwg
cmVjdC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFk
aWkoKS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLCBjb2xvciwgY29s
b3JTcGFjZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKQogewogICAgIG1fc3RhdGUu
Y29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg1ODg1MjNh
YjcxZjFlZTkyY2U5M2NkNWQ5M2Q4NGMzOGNiMmUzNDAuLmE0NTliMzdjYmRkZGMxYTA1NjM1NWVj
ZGE3MGM2OTUyYmQ5MTVjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAgICBj
bGFzcyBJbWFnZUJ1ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0OworICAgIGNsYXNzIFJvdW5kZWRJ
bnRSZWN0OwogICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0Q7CiAgICAgY2xhc3MgVGV4dFJ1bjsKQEAgLTI4Miw2ICsyODMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBHZW5lcmF0b3ImKTsKICAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3Qg
Um91bmRlZEludFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogCiAgICAgICAgIHZv
aWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMTAsMTAgKzMxMiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGNsaXAoY29uc3QgRmxv
YXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3Qm
LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3Qg
SW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpOworICAgICAg
ICB2b2lkIGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBSb3VuZGVkSW50UmVjdCYpOwogICAgICAg
ICB2b2lkIGFkZElubmVyUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmLCBpbnQgdGhpY2tu
ZXNzKTsKICAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdm9p
ZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExl
ZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBj
b25zdCBJbnRTaXplJiBib3R0b21SaWdodCk7CisgICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRS
ZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcFBhdGgoY29uc3Qg
UGF0aCYsIFdpbmRSdWxlKTsKICAgICAgICAgdm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3Qg
bnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9vbCBhbnRpYWxpYXMgPSB0cnVlKTsKICAg
ICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVj
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZEludFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZElu
dFJlY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlODBjOWFlMTMyYTgwODhmY2RiYjMzMTlkODAwODY1YTUw
NTQyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkSW50UmVjdC5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJvdW5kZWRJbnRSZWN0LmgiCisKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2Jvb2wgUm91bmRlZEludFJlY3Q6OlJhZGlpOjppc1plcm8oKSBjb25zdAoreworICAg
IHJldHVybiBtX3RvcExlZnQuaXNaZXJvKCkgJiYgbV90b3BSaWdodC5pc1plcm8oKSAmJiBtX2Jv
dHRvbUxlZnQuaXNaZXJvKCkgJiYgbV9ib3R0b21SaWdodC5pc1plcm8oKTsKK30KKwordm9pZCBS
b3VuZGVkSW50UmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKK3sKKyAgICBpZiAoZmFj
dG9yID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIGVpdGhlciByYWRpdXMgb24g
YSBjb3JuZXIgYmVjb21lcyB6ZXJvLCByZXNldCBib3RoIHJhZGlpIG9uIHRoYXQgY29ybmVyLgor
ICAgIG1fdG9wTGVmdC5zY2FsZShmYWN0b3IpOworICAgIGlmICghbV90b3BMZWZ0LndpZHRoKCkg
fHwgIW1fdG9wTGVmdC5oZWlnaHQoKSkKKyAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgpOwor
ICAgIG1fdG9wUmlnaHQuc2NhbGUoZmFjdG9yKTsKKyAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgo
KSB8fCAhbV90b3BSaWdodC5oZWlnaHQoKSkKKyAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUo
KTsKKyAgICBtX2JvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKKyAgICBpZiAoIW1fYm90dG9tTGVm
dC53aWR0aCgpIHx8ICFtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpCisgICAgICAgIG1fYm90dG9tTGVm
dCA9IEludFNpemUoKTsKKyAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7CisgICAgaWYg
KCFtX2JvdHRvbVJpZ2h0LndpZHRoKCkgfHwgIW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCisgICAg
ICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CisKK30KKwordm9pZCBSb3VuZGVkSW50UmVj
dDo6UmFkaWk6OmV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRX
aWR0aCwgaW50IHJpZ2h0V2lkdGgpCit7CisgICAgbV90b3BMZWZ0LnNldFdpZHRoKHN0ZDo6bWF4
KDAsIG1fdG9wTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV90b3BMZWZ0LnNldEhl
aWdodChzdGQ6Om1heCgwLCBtX3RvcExlZnQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworCisgICAg
bV90b3BSaWdodC5zZXRXaWR0aChzdGQ6Om1heCgwLCBtX3RvcFJpZ2h0LndpZHRoKCkgKyByaWdo
dFdpZHRoKSk7CisgICAgbV90b3BSaWdodC5zZXRIZWlnaHQoc3RkOjptYXgoMCwgbV90b3BSaWdo
dC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7CisKKyAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgoc3Rk
OjptYXgoMCwgbV9ib3R0b21MZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsKKyAgICBtX2JvdHRv
bUxlZnQuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAsIG1fYm90dG9tTGVmdC5oZWlnaHQoKSArIGJvdHRv
bVdpZHRoKSk7CisKKyAgICBtX2JvdHRvbVJpZ2h0LnNldFdpZHRoKHN0ZDo6bWF4KDAsIG1fYm90
dG9tUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX2JvdHRvbVJpZ2h0LnNldEhl
aWdodChzdGQ6Om1heCgwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsK
K30KKwordm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmluY2x1ZGVMb2dpY2FsRWRnZXMoY29u
c3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sK
KyAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgeworICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsKQorICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gZWRnZXMuYm90dG9tTGVmdCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3RvcFJpZ2h0ID0gZWRnZXMudG9wUmlnaHQoKTsKKyAg
ICAgICAgbV90b3BMZWZ0ID0gZWRnZXMudG9wTGVmdCgpOworICAgIH0KKworICAgIGlmIChpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAg
ICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJpZ2h0KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxlZnQoKTsKKyAgICAgICAgbV9ib3R0
b21SaWdodCA9IGVkZ2VzLmJvdHRvbVJpZ2h0KCk7CisgICAgfQorfQorCit2b2lkIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaTo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9v
bCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQor
eworICAgIGlmIChleGNsdWRlTG9naWNhbExlZnRFZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6
b250YWwpCisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wTGVm
dCA9IEludFNpemUoKTsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChleGNsdWRlTG9naWNhbFJp
Z2h0RWRnZSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAgICAgICAgbV90b3BS
aWdodCA9IEludFNpemUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9ib3R0b21MZWZ0
ID0gSW50U2l6ZSgpOworICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gSW50U2l6ZSgpOworICAgIH0K
K30KKworUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQorICAgIDogbV9yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpCit7Cit9
CisKK1JvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBSYWRpaSYgcmFkaWkpCisgICAgOiBtX3JlY3QocmVjdCkKKyAgICAsIG1fcmFkaWkocmFk
aWkpCit7Cit9CisKK1JvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwg
Y29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpCisg
ICAgOiBtX3JlY3QocmVjdCkKKyAgICAsIG1fcmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0KQoreworfQorCit2b2lkIFJvdW5kZWRJbnRSZWN0OjppbmNsdWRl
TG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sK
KyAgICBtX3JhZGlpLmluY2x1ZGVMb2dpY2FsRWRnZXMoZWRnZXMsIGlzSG9yaXpvbnRhbCwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworfQorCit2b2lk
IFJvdW5kZWRJbnRSZWN0OjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBi
b29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
Cit7CisgICAgbV9yYWRpaS5leGNsdWRlTG9naWNhbEVkZ2VzKGlzSG9yaXpvbnRhbCwgZXhjbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Sb3VuZGVkSW50UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZEludFJlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTgyYjJjMGUwNjNhY2E0MjI3NWQ4NmRlN2Vk
MjlmOTk3MzBkNGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZEludFJlY3QuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFJvdW5kZWRJbnRSZWN0X2gKKyNkZWZpbmUgUm91bmRlZEludFJlY3RfaAor
CisjaW5jbHVkZSAiSW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKworY2xhc3Mg
Um91bmRlZEludFJlY3QgeworcHVibGljOgorICAgIGNsYXNzIFJhZGlpIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFJhZGlpKCkge30KKyAgICAgICAgUmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVm
dCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNv
bnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVm
dCkKKyAgICAgICAgICAgICwgbV90b3BSaWdodCh0b3BSaWdodCkKKyAgICAgICAgICAgICwgbV9i
b3R0b21MZWZ0KGJvdHRvbUxlZnQpCisgICAgICAgICAgICAsIG1fYm90dG9tUmlnaHQoYm90dG9t
UmlnaHQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VG9wTGVmdChj
b25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBz
ZXRUb3BSaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9Cisg
ICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9t
TGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXpl
JiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9CisgICAgICAgIGNvbnN0IEludFNpemUm
IHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KKyAgICAgICAgY29uc3QgSW50
U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CisgICAgICAgIGNv
bnN0IEludFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0K
KyAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Jv
dHRvbVJpZ2h0OyB9CisKKyAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKworICAgICAgICB2
b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpv
bnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKKyAgICAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9u
dGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOworCisgICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgZmFjdG9yKTsKKyAgICAgICAgdm9p
ZCBleHBhbmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGlu
dCByaWdodFdpZHRoKTsKKyAgICAgICAgdm9pZCBleHBhbmQoaW50IHNpemUpIHsgZXhwYW5kKHNp
emUsIHNpemUsIHNpemUsIHNpemUpOyB9CisgICAgICAgIHZvaWQgc2hyaW5rKGludCB0b3BXaWR0
aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkgeyBleHBh
bmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQor
ICAgICAgICB2b2lkIHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwg
c2l6ZSk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEludFNpemUgbV90b3BMZWZ0OworICAg
ICAgICBJbnRTaXplIG1fdG9wUmlnaHQ7CisgICAgICAgIEludFNpemUgbV9ib3R0b21MZWZ0Owor
ICAgICAgICBJbnRTaXplIG1fYm90dG9tUmlnaHQ7CisgICAgfTsKKworICAgIGV4cGxpY2l0IFJv
dW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsKKyAg
ICBSb3VuZGVkSW50UmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cisg
ICAgUm91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQs
IGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25z
dCBJbnRTaXplJiBib3R0b21SaWdodCk7CisKKyAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgY29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYWRpaTsgfQorICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1f
cmFkaWkuaXNaZXJvKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3QuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
eyBtX3JlY3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSYWRpaShjb25zdCBSYWRpaSYgcmFkaWkp
IHsgbV9yYWRpaSA9IHJhZGlpOyB9CisKKyAgICB2b2lkIG1vdmUoY29uc3QgSW50U2l6ZSBzaXpl
KSB7IG1fcmVjdC5tb3ZlKHNpemUpOyB9CisgICAgdm9pZCBpbmZsYXRlKGludCBzaXplKSB7IG1f
cmVjdC5pbmZsYXRlKHNpemUpOyAgfQorICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6
ZSkgeyBtX3JlY3QuaW5mbGF0ZShzaXplKTsgbV9yYWRpaS5leHBhbmQoc2l6ZSk7IH0KKyAgICB2
b2lkIGV4cGFuZFJhZGlpKGludCBzaXplKSB7IG1fcmFkaWkuZXhwYW5kKHNpemUpOyB9CisgICAg
dm9pZCBzaHJpbmtSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLnNocmluayhzaXplKTsgfQorCisg
ICAgdm9pZCBpbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hv
cml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CisgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9u
dGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOworCitwcml2YXRlOgorICAgIEludFJlY3QgbV9yZWN0OworICAgIFJhZGlpIG1fcmFk
aWk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSb3VuZGVkSW50
UmVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNkMzY3YWE1
NjBiYTNmYzAxNzNkNjE4NmNjMGYxMTE5Y2M5NTBlZGYuLmYyMGFhMGU2NDRhNmUyNGEyMjlmYmY2
MzU3ODI5NzY4ODE3NWQ4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC0xMDY3LDE0ICsxMDY3LDggQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAo
UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgIH0KICAgICBJbnRSZWN0
IGNsaXBSZWN0KGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QodHgsIHR5KSA6IG92ZXJm
bG93Q2xpcFJlY3QodHgsIHR5KSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAg
ICBpZiAoc3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7Ci0gICAgICAgIEludFJlY3Qg
Ym9yZGVyUmVjdCA9IEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci0gICAgICAg
IHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKLSAgICB9Ci0gICAgCisgICAgaWYgKHN0eWxlKCktPmhh
c0JvcmRlclJhZGl1cygpKQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoSW50UmVjdCh0eCwgdHksIHdpZHRo
KCksIGhlaWdodCgpKSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDUwOTgzMDZhZTFmY2NlNDc4YzAwM2Q5MmNjMjBl
MTMyMWU4Mjc1MjUuLmZiMDI0ZmMwMjZkMDYxMWI0NDliMTYzMDc2YzRiOTNhODBkZjBkZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cApAQCAtNTQ3LDI2ICs1NDcsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgICAg
IGNvbnRleHQtPnNhdmUoKTsKIAotICAgICAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAgc3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlG
b3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21S
aWdodCk7Ci0KLSAgICAgICAgaWYgKCFpbmNsdWRlTGVmdEVkZ2UpIHsKLSAgICAgICAgICAgIHRv
cExlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgICAgICBpZiAoYm94LT5pc0hvcml6b250YWwoKSkK
LSAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gSW50U2l6ZSgpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoIWluY2x1ZGVSaWdodEVkZ2UpIHsKLSAgICAgICAgICAgIGlmIChi
b3gtPmlzSG9yaXpvbnRhbCgpKQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0gSW50U2l6ZSgp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBJbnRTaXpl
KCk7Ci0gICAgICAgICAgICBib3R0b21SaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlclJlY3QsIHRv
cExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgIFJvdW5k
ZWRJbnRSZWN0IGJvcmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVj
dCk7CisgICAgICAgIGJvcmRlci5leGNsdWRlTG9naWNhbEVkZ2VzKGJveCAmJiBib3gtPmlzSG9y
aXpvbnRhbCgpLCAhaW5jbHVkZUxlZnRFZGdlLCAhaW5jbHVkZVJpZ2h0RWRnZSk7CisgICAgICAg
IGNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAgICAgICBjbGlwcGVkVG9C
b3JkZXJSYWRpdXMgPSB0cnVlOwogICAgIH0KIApAQCAtMTAyNCw2MiArMTAwNywzMiBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgaW50IHR4LAogICAgIGJvb2wgcmVuZGVyUmlnaHQgPSByaWdodFN0eWxlID4g
QkhJRERFTiAmJiAhcmlnaHRUcmFuc3BhcmVudCAmJiAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwogICAgIGJvb2wgcmVuZGVyQm90dG9tID0gYm90dG9tU3R5bGUgPiBC
SElEREVOICYmICFib3R0b21UcmFuc3BhcmVudCAmJiAoaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAKLSAgICBib29sIHJlbmRlclJhZGlpID0gZmFsc2U7CiAgICAgUGF0
aCByb3VuZGVkUGF0aDsKLSAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0
LCBib3R0b21SaWdodDsKLSAgICBJbnRSZWN0IGJvcmRlclJlY3QodHgsIHR5LCB3LCBoKTsKKyAg
ICBSb3VuZGVkSW50UmVjdCBib3JkZXIodHgsIHR5LCB3LCBoKTsKIAogICAgIGlmIChzdHlsZS0+
aGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCB0b3BS
aWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAg
IHN0eWxlLT5nZXRCb3JkZXJSYWRpaUZvclJlY3QoYm9yZGVyUmVjdCwgdG9wTGVmdFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICAgICAgYm9yZGVyLmluY2x1ZGVMb2dpY2FsRWRnZXMoc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJG
b3IoYm9yZGVyLnJlY3QoKSkucmFkaWkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwogCiAgICAgICAgIGludCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwogICAg
ICAgICBpbnQgcmlnaHRXaWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkgPyBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogMDsKICAgICAgICAgaW50IHRvcFdp
ZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSA6IDA7CiAgICAgICAgIGludCBib3R0b21XaWR0aCA9IChob3Jpem9udGFs
IHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
IDogMDsKIAotICAgICAgICBJbnRSZWN0IGlubmVyQm9yZGVyUmVjdCA9IGJvcmRlcklubmVyUmVj
dChib3JkZXJSZWN0LCB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0
aCk7Ci0gICAgICAgIEludFNpemUgaW5uZXJUb3BMZWZ0UmFkaXVzLCBpbm5lclRvcFJpZ2h0UmFk
aXVzLCBpbm5lckJvdHRvbUxlZnRSYWRpdXMsIGlubmVyQm90dG9tUmlnaHRSYWRpdXM7Ci0gICAg
ICAgIAotICAgICAgICBzdHlsZS0+Z2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVy
V2lkdGhzKGlubmVyQm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgs
IHJpZ2h0V2lkdGgsIGlubmVyVG9wTGVmdFJhZGl1cywgaW5uZXJUb3BSaWdodFJhZGl1cywgaW5u
ZXJCb3R0b21MZWZ0UmFkaXVzLCBpbm5lckJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgICAgICBJ
bnRTaXplIGlubmVyVG9wTGVmdCwgaW5uZXJUb3BSaWdodCwgaW5uZXJCb3R0b21MZWZ0LCBpbm5l
ckJvdHRvbVJpZ2h0OwotCi0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0g
ICAgICAgICAgICB0b3BMZWZ0ID0gdG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlubmVyVG9w
TGVmdCA9IGlubmVyVG9wTGVmdFJhZGl1czsKLSAgICAgICAgICAgIGlmIChob3Jpem9udGFsKSB7
Ci0gICAgICAgICAgICAgICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAg
ICAgICAgICAgaW5uZXJCb3R0b21MZWZ0ID0gaW5uZXJCb3R0b21MZWZ0UmFkaXVzOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVz
OwotICAgICAgICAgICAgICAgIGlubmVyVG9wUmlnaHQgPSBpbm5lclRvcFJpZ2h0UmFkaXVzOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoaG9yaXpvbnRhbCkgewotICAgICAgICAgICAgICAg
IHRvcFJpZ2h0ID0gdG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICAgICAgaW5uZXJUb3BSaWdo
dCA9IGlubmVyVG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgICAgIGlu
bmVyQm90dG9tTGVmdCA9IGlubmVyQm90dG9tTGVmdFJhZGl1czsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJvdHRvbVJpZ2h0ID0gYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgICAgICAgICBp
bm5lckJvdHRvbVJpZ2h0ID0gaW5uZXJCb3R0b21SaWdodFJhZGl1czsKLSAgICAgICAgfQorICAg
ICAgICBSb3VuZGVkSW50UmVjdCBpbm5lcihib3JkZXJJbm5lclJlY3QoYm9yZGVyLnJlY3QoKSwg
dG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpKTsKKyAgICAgICAg
aW5uZXIuaW5jbHVkZUxvZ2ljYWxFZGdlcyhzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0
aEJvcmRlcldpZHRocyhpbm5lci5yZWN0KCksIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdp
ZHRoLCByaWdodFdpZHRoKS5yYWRpaSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKIAotICAgICAgICByZW5kZXJSYWRpaSA9ICF0b3BMZWZ0LmlzWmVybygpIHx8ICF0
b3BSaWdodC5pc1plcm8oKSB8fCAhYm90dG9tTGVmdC5pc1plcm8oKSB8fCAhYm90dG9tUmlnaHQu
aXNaZXJvKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAg
aWYgKGJvcmRlci5pc1JvdW5kZWQoKSkgewogICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5u
ZXIgYW5kIG91dGVyIHJhZGlpIHJlY3RzLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChi
b3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3Jk
ZXJSZWN0LCBpbm5lclRvcExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5u
ZXJCb3R0b21SaWdodCk7Ci0gICAgICAgICAgICByb3VuZGVkUGF0aC5hZGRSb3VuZGVkUmVjdChi
b3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyKTsK
KyAgICAgICAgICAgIHJvdW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlci5yZWN0KCksIGJv
cmRlci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgYm9yZGVy
LnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBib3JkZXIuaXNSb3VuZGVk
KCk7CiAgICAgYm9vbCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYg
KHRvcFN0eWxlID09IGxlZnRTdHlsZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAg
Ym9vbCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5
bGUgPT0gcmlnaHRTdHlsZSkgJiYgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHls
ZSAhPSBPVVRTRVQpICYmICh0b3BTdHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VU
KSAmJiAodG9wU3R5bGUgIT0gR1JPT1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxl
c01hdGNoID0gcmVuZGVyTGVmdCAmJiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90
dG9tQ29sb3IgPT0gbGVmdENvbG9yKSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90
dG9tU3R5bGUgIT0gUklER0UpICYmIChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0
eWxlICE9IEdST09WRSk7CkBAIC0xMDg5LDExICsxMDQyLDExIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKIAot
ICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZSh0b3BMZWZ0
LCB0b3BSaWdodCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJh
ZGlpICYmIGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBi
b3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSkgewogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lk
ZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTVG9wLCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRj
aCwgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNp
ZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLCBCU1RvcCwgdXBwZXJMZWZ0Qm9yZGVy
U3R5bGVzTWF0Y2gsIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZs
b2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5i
b3JkZXJMZWZ0V2lkdGgoKSksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAg
ICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIHJvdW5k
ZWRQYXRoLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgdGhpY2tuZXNzLCBCU1RvcCwgc3R5bGUs
IHRvcENvbG9yLCB0b3BTdHlsZSk7CisgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdy
YXBoaWNzQ29udGV4dCwgYm9yZGVyLnJlY3QoKSwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpLCB0aGlja25lc3MsIEJTVG9wLCBzdHlsZSwgdG9wQ29sb3IsIHRvcFN0eWxlKTsK
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKHRvcENvbG9yID09IGxlZnRDb2xvciAm
JiB0b3BUcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VU
CkBAIC0xMTEwLDExICsxMDYzLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAg
IGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKIAotICAgICAgICBpZiAocmVu
ZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3R0b21MZWZ0LCBib3R0b21SaWdo
dCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBz
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYm
IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3Jk
ZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSkgewogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVy
U2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIEJTQm90dG9tLCBsb3dlckxlZnRCb3JkZXJTdHls
ZXNNYXRjaCwgbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJv
cmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLCBCU0JvdHRvbSwgbG93ZXJM
ZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUs
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAg
ICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heChtYXgoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRo
KCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkp
OwotICAgICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRl
clJlY3QsIHJvdW5kZWRQYXRoLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgdGhpY2tuZXNz
LCBCU0JvdHRvbSwgc3R5bGUsIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSk7CisgICAgICAgICAg
ICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLnJlY3QoKSwgcm91
bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCB0aGlja25lc3MsIEJTQm90dG9t
LCBzdHlsZSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlKTsKICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBp
Z25vcmVMZWZ0ID0gKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVu
dCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUCkBAIC0xMTMzLDEx
ICsxMDg2LDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgICAgIGludCB5ID0gdHk7
CiAgICAgICAgIGludCB5MiA9IHR5ICsgaDsKIAotICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYg
Ym9yZGVyV2lsbEFyY0lubmVyRWRnZShib3R0b21MZWZ0LCB0b3BMZWZ0LCBzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0
V2lkdGgoKSkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmIGJvcmRlcldpbGxBcmNJbm5l
ckVkZ2UoYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0
KCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKSkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zYXZlKCk7Ci0gICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQsIEJTTGVmdCwgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gsIGxvd2VyTGVmdEJvcmRlclN0
eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOworICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29uKGdyYXBoaWNzQ29u
dGV4dCwgYm9yZGVyLCBCU0xlZnQsIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoLCBsb3dlckxl
ZnRCb3JkZXJTdHlsZXNNYXRjaCwgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGZsb2F0IHRoaWNrbmVzcyA9IG1heCht
YXgoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0
eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBh
dGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpLCB0aGlja25lc3MsIEJTTGVmdCwgc3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0
eWxlKTsKKyAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXIucmVjdCgpLCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB0aGlj
a25lc3MsIEJTTGVmdCwgc3R5bGUsIGxlZnRDb2xvciwgbGVmdFN0eWxlKTsKICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgYm9vbCBpZ25vcmVUb3AgPSAodG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFy
ZW50ID09IGxlZnRUcmFuc3BhcmVudCAmJiBsZWZ0U3R5bGUgPj0gT1VUU0VUCkBAIC0xMTUyLDEx
ICsxMTA1LDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYgKHJl
bmRlclJpZ2h0KSB7Ci0gICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiBib3JkZXJXaWxsQXJjSW5u
ZXJFZGdlKGJvdHRvbVJpZ2h0LCB0b3BSaWdodCwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCks
IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKSkgewor
ICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShib3JkZXIu
cmFkaWkoKS5ib3R0b21SaWdodCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBzdHlsZS0+
Ym9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkpKSB7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsK
LSAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIGJvcmRl
clJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgQlNSaWdo
dCwgdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoLCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0
Y2gsIHN0eWxlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CisgICAgICAgICAgICBjbGlwQm9yZGVyU2lkZVBvbHlnb24oZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXIsIEJTUmlnaHQsIHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCwgbG93ZXJSaWdodEJv
cmRlclN0eWxlc01hdGNoLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChz
dHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSksIHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgo
Z3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkUGF0aCwgc3R5bGUtPmJvcmRlclJp
Z2h0V2lkdGgoKSwgdGhpY2tuZXNzLCBCU1JpZ2h0LCBzdHlsZSwgcmlnaHRDb2xvciwgcmlnaHRT
dHlsZSk7CisgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwg
Ym9yZGVyLnJlY3QoKSwgcm91bmRlZFBhdGgsIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHRo
aWNrbmVzcywgQlNSaWdodCwgc3R5bGUsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUpOwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBib29sIGlnbm9yZVRvcCA9ICgodG9wQ29sb3IgPT0gcmlnaHRDb2xvcikgJiYgKHRv
cFRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQpCkBAIC0xMjA5LDY1ICsxMTYyLDQzIEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgYm9vbCByZW5kZXJSaWdodCA9IHJpZ2h0U3R5
bGUgPiBCSElEREVOICYmICFyaWdodFRyYW5zcGFyZW50ICYmICghaG9yaXpvbnRhbCB8fCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgYm9vbCByZW5kZXJCb3R0b20gPSBib3R0b21TdHls
ZSA+IEJISURERU4gJiYgIWJvdHRvbVRyYW5zcGFyZW50ICYmIChob3Jpem9udGFsIHx8IGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBmYWxzZTsKLSAg
ICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKIAor
ICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlcih0eCwgdHksIHcsIGgpOwogICAgIGlmIChzdHlsZS0+
aGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gSW50UmVj
dCh0eCwgdHksIHcsIGgpOwotCi0gICAgICAgIEludFNpemUgdG9wTGVmdFJhZGl1cywgdG9wUmln
aHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzOwotICAgICAgICBz
dHlsZS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnRSYWRpdXMsIHRv
cFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0KLSAg
ICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKLSAgICAgICAgICAgIHRvcExlZnQg
PSB0b3BMZWZ0UmFkaXVzOwotICAgICAgICAgICAgaWYgKGhvcml6b250YWwpCi0gICAgICAgICAg
ICAgICAgYm90dG9tTGVmdCA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdG9wUmlnaHQgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgICAg
ICBpZiAoaG9yaXpvbnRhbCkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFk
aXVzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0
b21MZWZ0UmFkaXVzOwotICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1
czsKLSAgICAgICAgfQotCi0gICAgICAgIHJlbmRlclJhZGlpID0gIXRvcExlZnQuaXNaZXJvKCkg
fHwgIXRvcFJpZ2h0LmlzWmVybygpIHx8ICFib3R0b21MZWZ0LmlzWmVybygpIHx8ICFib3R0b21S
aWdodC5pc1plcm8oKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewotICAg
ICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcm91bmRlZCByZWN0YW5nbGUuCisgICAgICAgIGJvcmRl
ci5pbmNsdWRlTG9naWNhbEVkZ2VzKHN0eWxlLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlci5y
ZWN0KCkpLnJhZGlpKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6
b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
KyAgICAgICAgaWYgKGJvcmRlci5pc1JvdW5kZWQoKSkgewogICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChib3JkZXJSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAo
Ym9yZGVyKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGludCBmaXJzdEFuZ2xlU3RhcnQsIHNl
Y29uZEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLCBzZWNvbmRBbmdsZVNwYW47CiAgICAgZmxv
YXQgdGhpY2tuZXNzOworICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBib3JkZXIuaXNSb3VuZGVkKCk7
CiAgICAgYm9vbCB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKHRv
cFN0eWxlID09IGxlZnRTdHlsZSkgJiYgKHRvcENvbG9yID09IGxlZnRDb2xvcik7CiAgICAgYm9v
bCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAodG9wU3R5bGUg
PT0gcmlnaHRTdHlsZSkgJiYgKHRvcENvbG9yID09IHJpZ2h0Q29sb3IpICYmICh0b3BTdHlsZSAh
PSBPVVRTRVQpICYmICh0b3BTdHlsZSAhPSBSSURHRSkgJiYgKHRvcFN0eWxlICE9IElOU0VUKSAm
JiAodG9wU3R5bGUgIT0gR1JPT1ZFKTsKICAgICBib29sIGxvd2VyTGVmdEJvcmRlclN0eWxlc01h
dGNoID0gcmVuZGVyTGVmdCAmJiAoYm90dG9tU3R5bGUgPT0gbGVmdFN0eWxlKSAmJiAoYm90dG9t
Q29sb3IgPT0gbGVmdENvbG9yKSAmJiAoYm90dG9tU3R5bGUgIT0gT1VUU0VUKSAmJiAoYm90dG9t
U3R5bGUgIT0gUklER0UpICYmIChib3R0b21TdHlsZSAhPSBJTlNFVCkgJiYgKGJvdHRvbVN0eWxl
ICE9IEdST09WRSk7CiAgICAgYm9vbCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5k
ZXJSaWdodCAmJiAoYm90dG9tU3R5bGUgPT0gcmlnaHRTdHlsZSkgJiYgKGJvdHRvbUNvbG9yID09
IHJpZ2h0Q29sb3IpOwogCiAgICAgaWYgKHJlbmRlclRvcCkgewotICAgICAgICBib29sIGlnbm9y
ZV9sZWZ0ID0gKHJlbmRlclJhZGlpICYmIHRvcExlZnQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAg
ICAgICAodG9wQ29sb3IgPT0gbGVmdENvbG9yICYmIHRvcFRyYW5zcGFyZW50ID09IGxlZnRUcmFu
c3BhcmVudCAmJiB0b3BTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAgICAobGVmdFN0eWxl
ID09IERPVFRFRCB8fCBsZWZ0U3R5bGUgPT0gREFTSEVEIHx8IGxlZnRTdHlsZSA9PSBTT0xJRCB8
fCBsZWZ0U3R5bGUgPT0gT1VUU0VUKSk7Ci0KLSAgICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAo
cmVuZGVyUmFkaWkgJiYgdG9wUmlnaHQud2lkdGgoKSA+IDApIHx8Ci0gICAgICAgICAgICAodG9w
Q29sb3IgPT0gcmlnaHRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50
ICYmIHRvcFN0eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAgIChyaWdodFN0eWxlID09IERP
VFRFRCB8fCByaWdodFN0eWxlID09IERBU0hFRCB8fCByaWdodFN0eWxlID09IFNPTElEIHx8IHJp
Z2h0U3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVMZWZ0ID0gKHJlbmRlclJh
ZGlpICYmIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAg
IHx8ICh0b3BDb2xvciA9PSBsZWZ0Q29sb3IgJiYgdG9wVHJhbnNwYXJlbnQgPT0gbGVmdFRyYW5z
cGFyZW50ICYmIHRvcFN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChsZWZ0U3R5
bGUgPT0gRE9UVEVEIHx8IGxlZnRTdHlsZSA9PSBEQVNIRUQgfHwgbGVmdFN0eWxlID09IFNPTElE
IHx8IGxlZnRTdHlsZSA9PSBPVVRTRVQpKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaWdub3Jl
UmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0aCgp
ID4gMCkKKyAgICAgICAgICAgIHx8ICh0b3BDb2xvciA9PSByaWdodENvbG9yICYmIHRvcFRyYW5z
cGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQgJiYgdG9wU3R5bGUgPj0gT1VUU0VUCisgICAgICAg
ICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPT0gRE9UVEVEIHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVE
IHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkpOwogCiAgICAg
ICAgIGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9IHR4ICsgdzsKICAgICAgICAgaWYgKHJl
bmRlclJhZGlpKSB7Ci0gICAgICAgICAgICB4ICs9IHRvcExlZnQud2lkdGgoKTsKLSAgICAgICAg
ICAgIHgyIC09IHRvcFJpZ2h0LndpZHRoKCk7CisgICAgICAgICAgICB4ICs9IGJvcmRlci5yYWRp
aSgpLnRvcExlZnQoKS53aWR0aCgpOworICAgICAgICAgICAgeDIgLT0gYm9yZGVyLnJhZGlpKCku
dG9wUmlnaHQoKS53aWR0aCgpOwogICAgICAgICB9CiAKICAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHksIHgyLCB0eSArIHN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpLCBCU1RvcCwgdG9wQ29sb3IsIHRvcFN0eWxlLAotICAgICAgICAgICAgICAgICAgIGlnbm9y
ZV9sZWZ0ID8gMCA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgaWdub3JlX3JpZ2h0ID8gMCA6
IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOworICAgICAgICAgICAgICAgICAgIGlnbm9yZUxl
ZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVSaWdodCA/IDAgOiBzdHls
ZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKICAg
ICAgICAgICAgIGludCBsZWZ0WSA9IHR5OwpAQCAtMTI3NywxNSArMTIwOCwxNSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgLy8gd2l0aCB0aGUgYXJjLWRyYXdpbmcgZnVu
Y3Rpb24uCiAgICAgICAgICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSAq
IDI7CiAKLSAgICAgICAgICAgIGlmICh0b3BMZWZ0LndpZHRoKCkpIHsKKyAgICAgICAgICAgIGlm
IChib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSkgewogICAgICAgICAgICAgICAgIGlu
dCBsZWZ0WCA9IHR4OwogICAgICAgICAgICAgICAgIC8vIFRoZSBpbm5lciBjbGlwIGNsaXBzIGlu
c2lkZSB0aGUgYXJjLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciAxcHggYm9yZGVy
cy4KLSAgICAgICAgICAgICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCkgPCB0b3BMZWZ0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgICAgICYm
IChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcExlZnQuaGVpZ2h0KCkpCisgICAgICAgICAg
ICAgICAgYm9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
IDwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAg
ICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5o
ZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKHRvcFN0eWxlICE9IERPVUJMRSB8fCBz
dHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA+IDYpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxl
ZnRJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExl
ZnQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5h
ZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLndpZHRoKCkgKiAyLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0
KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAg
fQogCkBAIC0xMjkzLDIwICsxMjI0LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAg
ICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA/
IDkwIDogNDU7CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJjCi0gICAg
ICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVm
dFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRY
LCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGZpcnN0QW5nbGVT
dGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1Rv
cCwgdG9wQ29sb3IsIHRvcFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlM
ZWZ0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3Rv
cmUoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHRvcFJpZ2h0LndpZHRoKCkp
IHsKLSAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0gdHggKyB3IC0gdG9wUmlnaHQud2lkdGgo
KSAqIDI7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkgPCB0b3BSaWdodC53aWR0aCgpKQotICAgICAgICAgICAgICAg
ICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCB0b3BSaWdodC5oZWlnaHQoKSkKKyAg
ICAgICAgICAgIGlmIChib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLndpZHRoKCkpIHsKKyAgICAg
ICAgICAgICAgICBpbnQgcmlnaHRYID0gdHggKyB3IC0gYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQo
KS53aWR0aCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAg
PSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCku
d2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgp
IDwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAg
ICAgJiYgKHRvcFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA+IDYp
OwogICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCBs
ZWZ0WSwgdG9wUmlnaHQud2lkdGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMiksCisgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAo
SW50UmVjdChyaWdodFgsIGxlZnRZLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLndpZHRoKCkg
KiAyLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUt
PmJvcmRlclRvcFdpZHRoKCkpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTMxOSw3ICsxMjUw
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAvLyBEcmF3IHVwcGVyIHJpZ2h0IGFyYwotICAgICAgICAgICAgICAgIGRyYXdB
cmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0
b3BSaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAg
ICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhp
Y2tuZXNzLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNv
bmRBbmdsZVNwYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29s
b3IsIHRvcFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5l
ckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpA
QCAtMTMyOCwzNiArMTI1OSwzNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAog
ICAgIGlmIChyZW5kZXJCb3R0b20pIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5k
ZXJSYWRpaSAmJiBib3R0b21MZWZ0LndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAgKGJvdHRv
bUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJl
bnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUICYmCi0gICAgICAgICAgICAgKGxlZnRTdHlsZSA9
PSBET1RURUQgfHwgbGVmdFN0eWxlID09IERBU0hFRCB8fCBsZWZ0U3R5bGUgPT0gU09MSUQgfHwg
bGVmdFN0eWxlID09IE9VVFNFVCkpOworICAgICAgICBib29sIGlnbm9yZUxlZnQgPSAocmVuZGVy
UmFkaWkgJiYgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCkgPiAwKQorICAgICAg
ICAgICAgfHwgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xvciAmJiBib3R0b21UcmFuc3BhcmVudCA9
PSBsZWZ0VHJhbnNwYXJlbnQgJiYgYm90dG9tU3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAg
ICAgJiYgKGxlZnRTdHlsZSA9PSBET1RURUQgfHwgbGVmdFN0eWxlID09IERBU0hFRCB8fCBsZWZ0
U3R5bGUgPT0gU09MSUQgfHwgbGVmdFN0eWxlID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wg
aWdub3JlX3JpZ2h0ID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbVJpZ2h0LndpZHRoKCkgPiAwKSB8
fAotICAgICAgICAgICAgKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IgJiYgYm90dG9tVHJhbnNw
YXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCAmJiBib3R0b21TdHlsZSA+PSBPVVRTRVQgJiYKLSAg
ICAgICAgICAgICAocmlnaHRTdHlsZSA9PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBEQVNIRUQg
fHwgcmlnaHRTdHlsZSA9PSBTT0xJRCB8fCByaWdodFN0eWxlID09IElOU0VUKSk7CisgICAgICAg
IGJvb2wgaWdub3JlUmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnJhZGlpKCkuYm90dG9t
UmlnaHQoKS53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHx8IChib3R0b21Db2xvciA9PSByaWdo
dENvbG9yICYmIGJvdHRvbVRyYW5zcGFyZW50ID09IHJpZ2h0VHJhbnNwYXJlbnQgJiYgYm90dG9t
U3R5bGUgPj0gT1VUU0VUCisgICAgICAgICAgICAgICAgJiYgKHJpZ2h0U3R5bGUgPT0gRE9UVEVE
IHx8IHJpZ2h0U3R5bGUgPT0gREFTSEVEIHx8IHJpZ2h0U3R5bGUgPT0gU09MSUQgfHwgcmlnaHRT
dHlsZSA9PSBJTlNFVCkpOwogCiAgICAgICAgIGludCB4ID0gdHg7CiAgICAgICAgIGludCB4MiA9
IHR4ICsgdzsKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7Ci0gICAgICAgICAgICB4ICs9IGJv
dHRvbUxlZnQud2lkdGgoKTsKLSAgICAgICAgICAgIHgyIC09IGJvdHRvbVJpZ2h0LndpZHRoKCk7
CisgICAgICAgICAgICB4ICs9IGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS53aWR0aCgpOwor
ICAgICAgICAgICAgeDIgLT0gYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS53aWR0aCgpOwog
ICAgICAgICB9CiAKICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
eCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90
dG9tLCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3Jl
X2xlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDog
c3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlTGVm
dCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZVJpZ2h0ID8gMCA6IHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAg
ICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgKiAyOwogCi0g
ICAgICAgICAgICBpZiAoYm90dG9tTGVmdC53aWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9y
ZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICBpbnQg
bGVmdFggPSB0eDsKLSAgICAgICAgICAgICAgICBpbnQgbGVmdFkgPSB0eSArIGggLSBib3R0b21M
ZWZ0LmhlaWdodCgpICogMjsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xp
cCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3R0b21MZWZ0LndpZHRoKCkpCi0gICAg
ICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbUxl
ZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgaW50IGxlZnRZID0gdHkgKyBoIC0gYm9yZGVy
LnJhZGlpKCkuYm90dG9tTGVmdCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBib29s
IGFwcGx5TGVmdElubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIu
cmFkaWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0
eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLmhl
aWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAoYm90dG9tU3R5bGUgIT0gRE9VQkxFIHx8
IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFw
cGx5TGVmdElubmVyQ2xpcCkgewogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJv
dW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgYm90dG9tTGVmdC53aWR0aCgpICog
MiwgYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobGVmdFgsIGxlZnRZLCBi
b3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLmJv
dHRvbUxlZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
KTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEzNzAsMjEgKzEzMDEsMjEgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBE
cmF3IGxvd2VyIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgZmlyc3RB
bmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94
U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3JkZXIucmFk
aWkoKS5ib3R0b21MZWZ0KCksIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0
eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKQogICAg
ICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKGJvdHRvbVJpZ2h0LndpZHRoKCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgcmlnaHRZID0gdHkgKyBoIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOwotICAg
ICAgICAgICAgICAgIGludCByaWdodFggPSB0eCArIHcgLSBib3R0b21SaWdodC53aWR0aCgpICog
MjsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSA8IGJvdHRvbVJpZ2h0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAg
ICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbVJpZ2h0LmhlaWdodCgp
KQorICAgICAgICAgICAgaWYgKGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkg
eworICAgICAgICAgICAgICAgIGludCByaWdodFkgPSB0eSArIGggLSBib3JkZXIucmFkaWkoKS5i
b3R0b21SaWdodCgpLmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0g
dHggKyB3IC0gYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS53aWR0aCgpICogMjsKKyAgICAg
ICAgICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlclJpZ2h0
V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKGJvdHRv
bVN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA+IDYpOwogICAg
ICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCByaWdodFks
IGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyLCBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIpLAorICAg
ICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlw
KEludFJlY3QocmlnaHRYLCByaWdodFksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0x
MzkyLDcgKzEzMjMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAgICAgICAg
IHNlY29uZEFuZ2xlU3BhbiA9IGxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCA/IDkwIDogNDU7
CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIHJpZ2h0IGFyYwotICAgICAgICAgICAg
ICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCByaWdodFksIHRo
aWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0
WCwgcmlnaHRZLCB0aGlja25lc3MsIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIHNlY29u
ZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUsIGZhbHNlKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CkBAIC0xNDAxLDM2ICsxMzMyLDM2IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgdHgsCiAgICAgfQogCiAgICAgaWYgKHJlbmRlckxlZnQpIHsKLSAgICAgICAg
Ym9vbCBpZ25vcmVfdG9wID0gKHJlbmRlclJhZGlpICYmIHRvcExlZnQuaGVpZ2h0KCkgPiAwKSB8
fAotICAgICAgICAgICAgKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9
PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVCAmJgotICAgICAgICAgICAg
ICh0b3BTdHlsZSA9PSBET1RURUQgfHwgdG9wU3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxlID09
IFNPTElEIHx8IHRvcFN0eWxlID09IE9VVFNFVCkpOworICAgICAgICBib29sIGlnbm9yZVRvcCA9
IChyZW5kZXJSYWRpaSAmJiBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkuaGVpZ2h0KCkgPiAwKQor
ICAgICAgICAgICAgfHwgKHRvcENvbG9yID09IGxlZnRDb2xvciAmJiB0b3BUcmFuc3BhcmVudCA9
PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49IE9VVFNFVAorICAgICAgICAgICAgICAg
ICYmICh0b3BTdHlsZSA9PSBET1RURUQgfHwgdG9wU3R5bGUgPT0gREFTSEVEIHx8IHRvcFN0eWxl
ID09IFNPTElEIHx8IHRvcFN0eWxlID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdub3Jl
X2JvdHRvbSA9IChyZW5kZXJSYWRpaSAmJiBib3R0b21MZWZ0LmhlaWdodCgpID4gMCkgfHwKLSAg
ICAgICAgICAgIChib3R0b21Db2xvciA9PSBsZWZ0Q29sb3IgJiYgYm90dG9tVHJhbnNwYXJlbnQg
PT0gbGVmdFRyYW5zcGFyZW50ICYmIGxlZnRTdHlsZSA+PSBPVVRTRVQgJiYKLSAgICAgICAgICAg
ICAoYm90dG9tU3R5bGUgPT0gRE9UVEVEIHx8IGJvdHRvbVN0eWxlID09IERBU0hFRCB8fCBib3R0
b21TdHlsZSA9PSBTT0xJRCB8fCBib3R0b21TdHlsZSA9PSBJTlNFVCkpOworICAgICAgICBib29s
IGlnbm9yZUJvdHRvbSA9IChyZW5kZXJSYWRpaSAmJiBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkgPiAwKQorICAgICAgICAgICAgfHwgKGJvdHRvbUNvbG9yID09IGxlZnRDb2xv
ciAmJiBib3R0b21UcmFuc3BhcmVudCA9PSBsZWZ0VHJhbnNwYXJlbnQgJiYgbGVmdFN0eWxlID49
IE9VVFNFVAorICAgICAgICAgICAgICAgICYmIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90
dG9tU3R5bGUgPT0gREFTSEVEIHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxl
ID09IElOU0VUKSk7CiAKICAgICAgICAgaW50IHkgPSB0eTsKICAgICAgICAgaW50IHkyID0gdHkg
KyBoOwogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAgIHkgKz0gdG9wTGVm
dC5oZWlnaHQoKTsKLSAgICAgICAgICAgIHkyIC09IGJvdHRvbUxlZnQuaGVpZ2h0KCk7CisgICAg
ICAgICAgICB5ICs9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIHkyIC09IGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKTsKICAgICAgICAg
fQogCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB5LCB0
eCArIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0
U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgaWdub3JlX3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSwgaWdub3JlX2JvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSk7CisgICAgICAgICAgICAgICAgICAgaWdub3JlVG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BX
aWR0aCgpLCBpZ25vcmVCb3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwog
CiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNo
IHx8ICFsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKICAgICAgICAgICAgIGludCB0b3BY
ID0gdHg7CiAgICAgICAgICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkg
KiAyOwogCi0gICAgICAgICAgICBpZiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoICYmIHRv
cExlZnQud2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKCF1cHBlckxlZnRCb3JkZXJTdHlsZXNN
YXRjaCAmJiBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSkgewogICAgICAgICAgICAg
ICAgIGludCB0b3BZID0gdHk7Ci0gICAgICAgICAgICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xp
cCA9IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCB0b3BMZWZ0LndpZHRoKCkpCi0gICAgICAg
ICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcExlZnQuaGVpZ2h0
KCkpCisgICAgICAgICAgICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAmJiAobGVmdFN0eWxl
ICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPiA2KTsKICAgICAgICAgICAg
ICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCB0b3BMZWZ0LndpZHRo
KCkgKiAyLCB0b3BMZWZ0LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCBi
b3JkZXIucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLnRvcExl
ZnQoKS5oZWlnaHQoKSAqIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAg
ICAgICAgICAgICAgfQogCkBAIC0xNDM4LDIwICsxMzY5LDIwIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsCiAgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSA0NTsKIAogICAgICAgICAg
ICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRvcExlZnQsIGZp
cnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgZHJhd0FyY0Zv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIGJvcmRlci5y
YWRpaSgpLnRvcExlZnQoKSwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsIHRy
dWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkKICAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGlmICghbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggJiYgYm90dG9tTGVmdC53
aWR0aCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGJvdHRvbVkgPSB0eSArIGggLSBib3R0b21M
ZWZ0LmhlaWdodCgpICogMjsKLSAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJD
bGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvdHRvbUxlZnQud2lkdGgoKSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm90dG9t
TGVmdC5oZWlnaHQoKSkKKyAgICAgICAgICAgIGlmICghbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0
Y2ggJiYgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAg
ICAgICBpbnQgYm90dG9tWSA9IHR5ICsgaCAtIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5o
ZWlnaHQoKSAqIDI7CisgICAgICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9
IChzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCku
d2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpIDwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLmhlaWdodCgpKQogICAgICAgICAgICAg
ICAgICAgICAmJiAobGVmdFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRo
KCkgPiA2KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApIHsKICAg
ICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0
b3BYLCBib3R0b21ZLCBib3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0LmhlaWdodCgp
ICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCBib3R0b21ZLCBib3JkZXIucmFkaWkoKS5ib3R0b21M
ZWZ0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAq
IDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQog
CkBAIC0xNDU5LDcgKzEzOTAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgICAgICAg
ICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDQ1OwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBi
b3R0b20gbGVmdCBhcmMKLSAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHRvcFgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5n
bGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgYm90dG9tWSwgdGhpY2tuZXNzLCBib3JkZXIucmFk
aWkoKS5ib3R0b21MZWZ0KCksIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUs
IGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTQ2OCwzOCAr
MTM5OSwzOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAgIH0KIAogICAgIGlmIChyZW5k
ZXJSaWdodCkgewotICAgICAgICBib29sIGlnbm9yZV90b3AgPSAocmVuZGVyUmFkaWkgJiYgdG9w
UmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAotICAgICAgICAgICAgKCh0b3BDb2xvciA9PSByaWdodENv
bG9yKSAmJiAodG9wVHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkgJiYKLSAgICAgICAg
ICAgIChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKSAmJgotICAg
ICAgICAgICAgKHRvcFN0eWxlID09IERPVFRFRCB8fCB0b3BTdHlsZSA9PSBEQVNIRUQgfHwgdG9w
U3R5bGUgPT0gU09MSUQgfHwgdG9wU3R5bGUgPT0gT1VUU0VUKSk7CisgICAgICAgIGJvb2wgaWdu
b3JlVG9wID0gKHJlbmRlclJhZGlpICYmIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkuaGVpZ2h0
KCkgPiAwKQorICAgICAgICAgICAgfHwgKCh0b3BDb2xvciA9PSByaWdodENvbG9yKSAmJiAodG9w
VHJhbnNwYXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkKKyAgICAgICAgICAgICAgICAmJiAocmln
aHRTdHlsZSA+PSBET1RURUQgfHwgcmlnaHRTdHlsZSA9PSBJTlNFVCkKKyAgICAgICAgICAgICAg
ICAmJiAodG9wU3R5bGUgPT0gRE9UVEVEIHx8IHRvcFN0eWxlID09IERBU0hFRCB8fCB0b3BTdHls
ZSA9PSBTT0xJRCB8fCB0b3BTdHlsZSA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9y
ZV9ib3R0b20gPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAot
ICAgICAgICAgICAgKChib3R0b21Db2xvciA9PSByaWdodENvbG9yKSAmJiAoYm90dG9tVHJhbnNw
YXJlbnQgPT0gcmlnaHRUcmFuc3BhcmVudCkgJiYKLSAgICAgICAgICAgIChyaWdodFN0eWxlID49
IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKSAmJgotICAgICAgICAgICAgKGJvdHRvbVN0
eWxlID09IERPVFRFRCB8fCBib3R0b21TdHlsZSA9PSBEQVNIRUQgfHwgYm90dG9tU3R5bGUgPT0g
U09MSUQgfHwgYm90dG9tU3R5bGUgPT0gSU5TRVQpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVCb3R0
b20gPSAocmVuZGVyUmFkaWkgJiYgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS5oZWlnaHQo
KSA+IDApCisgICAgICAgICAgICB8fCAoKGJvdHRvbUNvbG9yID09IHJpZ2h0Q29sb3IpICYmIChi
b3R0b21UcmFuc3BhcmVudCA9PSByaWdodFRyYW5zcGFyZW50KQorICAgICAgICAgICAgICAgICYm
IChyaWdodFN0eWxlID49IERPVFRFRCB8fCByaWdodFN0eWxlID09IElOU0VUKQorICAgICAgICAg
ICAgICAgICYmIChib3R0b21TdHlsZSA9PSBET1RURUQgfHwgYm90dG9tU3R5bGUgPT0gREFTSEVE
IHx8IGJvdHRvbVN0eWxlID09IFNPTElEIHx8IGJvdHRvbVN0eWxlID09IElOU0VUKSk7CiAKICAg
ICAgICAgaW50IHkgPSB0eTsKICAgICAgICAgaW50IHkyID0gdHkgKyBoOwogICAgICAgICBpZiAo
cmVuZGVyUmFkaWkpIHsKLSAgICAgICAgICAgIHkgKz0gdG9wUmlnaHQuaGVpZ2h0KCk7Ci0gICAg
ICAgICAgICB5MiAtPSBib3R0b21SaWdodC5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkgKz0gYm9y
ZGVyLnJhZGlpKCkudG9wUmlnaHQoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHkyIC09IGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIHcgLSBzdHlsZS0+Ym9yZGVy
UmlnaHRXaWR0aCgpLCB5LCB0eCArIHcsIHkyLCBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0
eWxlLAotICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRv
cFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkp
OworICAgICAgICAgICAgICAgICAgIGlnbm9yZVRvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lk
dGgoKSwgaWdub3JlQm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAog
ICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gg
fHwgIWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKICAgICAgICAgICAgIHRoaWNrbmVz
cyA9IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgKiAyOwogCi0gICAgICAgICAgICBpZiAoIXVw
cGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCAmJiB0b3BSaWdodC53aWR0aCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IHRvcFggPSB0eCArIHcgLSB0b3BSaWdodC53aWR0aCgpICogMjsKKyAgICAg
ICAgICAgIGlmICghdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoICYmIGJvcmRlci5yYWRpaSgp
LnRvcFJpZ2h0KCkud2lkdGgoKSkgeworICAgICAgICAgICAgICAgIGludCB0b3BYID0gdHggKyB3
IC0gYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKS53aWR0aCgpICogMjsKICAgICAgICAgICAgICAg
ICBpbnQgdG9wWSA9IHR5OwotICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlUb3BJbm5lckNsaXAg
PSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA8IHRvcFJpZ2h0LndpZHRoKCkpCi0gICAgICAg
ICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcFJpZ2h0LmhlaWdo
dCgpKQorICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlUb3BJbm5lckNsaXAgPSAoc3R5bGUtPmJv
cmRlclJpZ2h0V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgYm9yZGVyLnJh
ZGlpKCkudG9wUmlnaHQoKS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgKHJpZ2h0
U3R5bGUgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPiA2KTsKICAgICAg
ICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApIHsKICAgICAgICAgICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdCh0b3BYLCB0b3BZLCB0b3BSaWdo
dC53aWR0aCgpICogMiwgdG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSwKKyAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRvcFgs
IHRvcFksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSAqIDIsIGJvcmRlci5yYWRp
aSgpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgKiAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE1MDcsMjEgKzE0MzgsMjEgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IDQ1Owog
CiAgICAgICAgICAgICAgICAgLy8gRHJhdyB0b3AgcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAg
ZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3Ms
IHRvcFJpZ2h0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAg
ICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tu
ZXNzLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5n
bGVTcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xv
ciwgcmlnaHRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJD
bGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0
Y2ggJiYgYm90dG9tUmlnaHQud2lkdGgoKSkgewotICAgICAgICAgICAgICAgIGludCBib3R0b21Y
ID0gdHggKyB3IC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW50
IGJvdHRvbVkgPSB0eSArIGggLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDI7Ci0gICAgICAgICAg
ICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0
aCgpIDwgYm90dG9tUmlnaHQud2lkdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpIDwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpCisgICAgICAgICAg
ICBpZiAoIWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCAmJiBib3JkZXIucmFkaWkoKS5ib3R0
b21SaWdodCgpLndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tWCA9IHR4ICsg
dyAtIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSAqIDI7CisgICAgICAgICAg
ICAgICAgaW50IGJvdHRvbVkgPSB0eSArIGggLSBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgp
LmhlaWdodCgpICogMjsKKyAgICAgICAgICAgICAgICBib29sIGFwcGx5Qm90dG9tSW5uZXJDbGlw
ID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdo
dCgpLndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyQm90dG9t
V2lkdGgoKSA8IGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICYmIChyaWdodFN0eWxlICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyUmln
aHRXaWR0aCgpID4gNik7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlw
KSB7CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKElu
dFJlY3QoYm90dG9tWCwgYm90dG9tWSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJp
Z2h0LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChib3R0b21YLCBib3R0b21ZLCBib3JkZXIu
cmFkaWkoKS5ib3R0b21SaWdodCgpLndpZHRoKCkgKiAyLCBib3JkZXIucmFkaWkoKS5ib3R0b21S
aWdodCgpLmhlaWdodCgpICogMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAg
ICAgICAgICAgICAgICAgfQogCkBAIC0xNTI5LDcgKzE0NjAsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
aW50IHR4LAogICAgICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDQ1OwogCiAgICAgICAg
ICAgICAgICAgLy8gRHJhdyBib3R0b20gcmlnaHQgYXJjCi0gICAgICAgICAgICAgICAgZHJhd0Fy
Y0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3R0b21YLCBib3R0b21ZLCB0aGlja25lc3Ms
IGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCisgICAgICAg
ICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3R0b21YLCBib3R0
b21ZLCB0aGlja25lc3MsIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIHNlY29uZEFuZ2xl
U3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJT
UmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBp
ZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+cmVzdG9yZSgpOwpAQCAtMTU0MiwxNSArMTQ3MywxNSBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
aW50IHR4LAogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3Jk
ZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50
UmVjdCYgYm94LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdo
dCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQs
Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBib3JkZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Qm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNo
ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgRmxvYXRQb2ludCBxdWFkWzRdOwotICAg
IGludCB0eCA9IGJveC54KCk7Ci0gICAgaW50IHR5ID0gYm94LnkoKTsKLSAgICBpbnQgdyA9IGJv
eC53aWR0aCgpOwotICAgIGludCBoID0gYm94LmhlaWdodCgpOworICAgIGludCB0eCA9IGJvcmRl
ci5yZWN0KCkueCgpOworICAgIGludCB0eSA9IGJvcmRlci5yZWN0KCkueSgpOworICAgIGludCB3
ID0gYm9yZGVyLnJlY3QoKS53aWR0aCgpOworICAgIGludCBoID0gYm9yZGVyLnJlY3QoKS5oZWln
aHQoKTsKIAogICAgIGJvb2wgaG9yaXpvbnRhbCA9IHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpOwogICAgIGludCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSkgPyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiAwOwpAQCAtMTU2MywyNiAr
MTQ5NCwyNiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHln
b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleAogICAgIHN3aXRjaCAoc2lkZSkgewog
ICAgIGNhc2UgQlNUb3A6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHR4LCB0eSk7Ci0g
ICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHR4ICsgbWF4KHRvcExlZnQud2lkdGgoKSwgbGVm
dFdpZHRoKSwgdHkgKyBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKLSAgICAgICAg
cXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3IC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIHJpZ2h0
V2lkdGgpLCB0eSArIG1heCh0b3BSaWdodC5oZWlnaHQoKSwgdG9wV2lkdGgpKTsKKyAgICAgICAg
cXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndp
ZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgbWF4KGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5oZWln
aHQoKSwgdG9wV2lkdGgpKTsKKyAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQodHggKyB3IC0g
bWF4KGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsg
bWF4KGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHRvcFdpZHRoKSk7CiAgICAg
ICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHR4ICsgdywgdHkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEJTTGVmdDoKICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQodHgsIHR5KTsKLSAg
ICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQodHggKyBtYXgodG9wTGVmdC53aWR0aCgpLCBsZWZ0
V2lkdGgpLCB0eSArIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBx
dWFkWzJdID0gRmxvYXRQb2ludCh0eCArIG1heChib3R0b21MZWZ0LndpZHRoKCksIGxlZnRXaWR0
aCksIHR5ICsgaCAtIG1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21XaWR0aCkpOworICAg
ICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3JkZXIucmFkaWkoKS50b3BMZWZ0
KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkgKyBtYXgoYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgp
LmhlaWdodCgpLCB0b3BXaWR0aCkpOworICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCAr
IG1heChib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkud2lkdGgoKSwgbGVmdFdpZHRoKSwgdHkg
KyBoIC0gbWF4KGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgYm90dG9tV2lk
dGgpKTsKICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQodHgsIHR5ICsgaCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQlNCb3R0b206CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50
KHR4LCB0eSArIGgpOwotICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIG1heChib3R0
b21MZWZ0LndpZHRoKCksIGxlZnRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21MZWZ0LmhlaWdo
dCgpLCBib3R0b21XaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcg
LSBtYXgoYm90dG9tUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0
b21SaWdodC5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0
UG9pbnQodHggKyBtYXgoYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLndpZHRoKCksIGxlZnRX
aWR0aCksIHR5ICsgaCAtIG1heChib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCks
IGJvdHRvbVdpZHRoKSk7CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1h
eChib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSAr
IGggLSBtYXgoYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9tV2lk
dGgpKTsKICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEJTUmlnaHQ6CiAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBv
aW50KHR4ICsgdywgdHkpOwotICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh0eCArIHcgLSBt
YXgodG9wUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgbWF4KHRvcFJpZ2h0LmhlaWdo
dCgpLCB0b3BXaWR0aCkpOwotICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh0eCArIHcgLSBt
YXgoYm90dG9tUmlnaHQud2lkdGgoKSwgcmlnaHRXaWR0aCksIHR5ICsgaCAtIG1heChib3R0b21S
aWdodC5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9p
bnQodHggKyB3IC0gbWF4KGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkud2lkdGgoKSwgcmlnaHRX
aWR0aCksIHR5ICsgbWF4KGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHRvcFdp
ZHRoKSk7CisgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHR4ICsgdyAtIG1heChib3JkZXIu
cmFkaWkoKS5ib3R0b21SaWdodCgpLndpZHRoKCksIHJpZ2h0V2lkdGgpLCB0eSArIGggLSBtYXgo
Ym9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgYm90dG9tV2lkdGgpKTsKICAg
ICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQodHggKyB3LCB0eSArIGgpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpAQCAtMTYxMywxOCArMTU0NCw2IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNvbmRR
dWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdW5pZm9y
bWx5RXhwYW5kQm9yZGVyUmFkaWkoaW50IGRlbHRhLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXpl
JiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpCi17
Ci0gICAgdG9wTGVmdC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0b3BMZWZ0LmNsYW1wTmVn
YXRpdmVUb1plcm8oKTsKLSAgICB0b3BSaWdodC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICB0
b3BSaWdodC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgYm90dG9tTGVmdC5leHBhbmQoZGVs
dGEsIGRlbHRhKTsKLSAgICBib3R0b21MZWZ0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICBi
b3R0b21SaWdodC5leHBhbmQoZGVsdGEsIGRlbHRhKTsKLSAgICBib3R0b21SaWdodC5jbGFtcE5l
Z2F0aXZlVG9aZXJvKCk7Ci19Ci0KIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBp
bnQgaCwgY29uc3QgUmVuZGVyU3R5bGUqIHMsIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBib29s
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7
CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBib3JkZXItaW1hZ2UuICBXb3VsZCBiZSBncmVhdCB0
byB1c2UgYm9yZGVyLWltYWdlIGFzIGEgbWFzay4KQEAgLTE2MzIsNjEgKzE1NTEsMTkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBpbnQgdHgsIGludAogICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEludFJlY3QgcmVjdCh0eCwgdHksIHcsIGgpOwotICAg
IEludFNpemUgdG9wTGVmdDsKLSAgICBJbnRTaXplIHRvcFJpZ2h0OwotICAgIEludFNpemUgYm90
dG9tTGVmdDsKLSAgICBJbnRTaXplIGJvdHRvbVJpZ2h0OwotCisgICAgUm91bmRlZEludFJlY3Qg
Ym9yZGVyKHR4LCB0eSwgdywgaCk7CiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMgPSBzLT5oYXNC
b3JkZXJSYWRpdXMoKTsKICAgICBib29sIGlzSG9yaXpvbnRhbCA9IHMtPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cyAmJiAoaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkpIHsKLSAgICAgICAgSW50U2l6ZSB0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmln
aHRSYWRpdXM7Ci0gICAgICAgIHMtPmdldEJvcmRlclJhZGlpRm9yUmVjdChyZWN0LCB0b3BMZWZ0
UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRp
dXMpOwotCi0gICAgICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAgICAgICAg
ICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0UmFk
aXVzLmV4cGFuZCgtYm9yZGVyTGVmdCgpLCAtYm9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAg
IHRvcExlZnRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgICAgIGlm
IChpc0hvcml6b250YWwpIHsKLSAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cy5l
eHBhbmQoLWJvcmRlckxlZnQoKSwgLWJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgYm90dG9tTGVmdFJhZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuZXhwYW5kKC1i
b3JkZXJSaWdodCgpLCAtYm9yZGVyVG9wKCkpOwotICAgICAgICAgICAgICAgICAgICB0b3BSaWdo
dFJhZGl1cy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdG9wTGVmdCA9IHRvcExlZnRSYWRpdXM7Ci0gICAgICAgICAg
ICBpZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21M
ZWZ0UmFkaXVzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRvcFJpZ2h0ID0g
dG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvcFJp
Z2h0UmFkaXVzLmV4cGFuZCgtYm9yZGVyUmlnaHQoKSwgLWJvcmRlclRvcCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXMu
ZXhwYW5kKC1ib3JkZXJMZWZ0KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJvdHRvbUxlZnRSYWRpdXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cy5leHBhbmQoLWJvcmRlclJp
Z2h0KCksIC1ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRp
dXMuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbCkKLSAgICAgICAgICAgICAgICB0b3BSaWdodCA9IHRvcFJpZ2h0UmFkaXVz
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBib3R0b21M
ZWZ0UmFkaXVzOwotICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBib3R0b21SaWdodFJhZGl1czsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChzaGFkb3dTdHlsZSA9PSBJbnNldCkgewotICAg
ICAgICByZWN0Lm1vdmUoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsID8g
Ym9yZGVyTGVmdCgpIDogMCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpc0hvcml6b250YWwg
PyBib3JkZXJUb3AoKSA6IDApOwotICAgICAgICByZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgoKSAt
ICgoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsKSA/IGJvcmRlckxlZnQo
KSA6IDApIC0gKChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSB8fCAhaXNIb3Jpem9udGFsKSA/IGJv
cmRlclJpZ2h0KCkgOiAwKSk7Ci0gICAgICAgIHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkg
LSAoKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgfHwgaXNIb3Jpem9udGFsKSA/IGJvcmRlclRvcCgp
IDogMCkgLSAoKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlIHx8IGlzSG9yaXpvbnRhbCkgPyBib3Jk
ZXJCb3R0b20oKSA6IDApKTsKKyAgICAgICAgUm91bmRlZEludFJlY3Q6OlJhZGlpIHJhZGlpID0g
KChzaGFkb3dTdHlsZSA9PSBJbnNldCkgPyBzLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJXaXRoQm9y
ZGVyV2lkdGhzKGJvcmRlci5yZWN0KCksIGJvcmRlclRvcCgpLCBib3JkZXJCb3R0b20oKSwgYm9y
ZGVyTGVmdCgpLCBib3JkZXJSaWdodCgpKSA6IHMtPmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVy
LnJlY3QoKSkpLnJhZGlpKCk7CisgICAgICAgIGJvcmRlci5pbmNsdWRlTG9naWNhbEVkZ2VzKHJh
ZGlpLCBpc0hvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICB9CisgICAKKyAgICBpZiAoc2hhZG93U3R5bGUgPT0gSW5zZXQpCisg
ICAgICAgIGJvcmRlci5zZXRSZWN0KEludFJlY3QoYm9yZGVyLnJlY3QoKS54KCkgKyAoaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsID8gYm9yZGVyTGVmdCgpIDogMCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnJlY3QoKS55KCkgKyAoaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSB8fCBpc0hvcml6b250YWwgPyBib3JkZXJUb3AoKSA6IDApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci5yZWN0KCkud2lkdGgoKSAtICgoaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSB8fCAhaXNIb3Jpem9udGFsKSA/IGJvcmRlckxlZnQoKSA6IDAp
IC0gKChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSB8fCAhaXNIb3Jpem9udGFsKSA/IGJvcmRlclJp
Z2h0KCkgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIucmVjdCgp
LmhlaWdodCgpIC0gKChpbmNsdWRlTG9naWNhbExlZnRFZGdlIHx8IGlzSG9yaXpvbnRhbCkgPyBi
b3JkZXJUb3AoKSA6IDApIC0gKChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSB8fCBpc0hvcml6b250
YWwpID8gYm9yZGVyQm90dG9tKCkgOiAwKSkpOwogCiAgICAgYm9vbCBoYXNPcGFxdWVCYWNrZ3Jv
dW5kID0gcy0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KS5pc1ZhbGlkKCkgJiYgcy0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKS5hbHBoYSgpID09IDI1NTsKICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvdyA9IHMtPmJveFNoYWRvdygpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpKSB7
CkBAIC0xNjk5LDEyICsxNTc2LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4LCBpbnQKICAgICAgICAg
Y29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yID0gc2hhZG93LT5jb2xvcigpOwogCiAgICAgICAgIGlm
IChzaGFkb3ctPnN0eWxlKCkgPT0gTm9ybWFsKSB7Ci0gICAgICAgICAgICBJbnRSZWN0IGZpbGxS
ZWN0KHJlY3QpOworICAgICAgICAgICAgUm91bmRlZEludFJlY3QgZmlsbFJlY3QgPSBib3JkZXI7
CiAgICAgICAgICAgICBmaWxsUmVjdC5pbmZsYXRlKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAg
ICBpZiAoZmlsbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QocmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0
IHNoYWRvd1JlY3QoYm9yZGVyLnJlY3QoKSk7CiAgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxh
dGUoc2hhZG93Qmx1ciArIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBzaGFkb3dSZWN0Lm1v
dmUoc2hhZG93T2Zmc2V0KTsKIApAQCAtMTcxOSwzMiArMTU5NiwyMyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGlu
dCB0eCwgaW50CiAKICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAg
aWYgKGhhc0JvcmRlclJhZGl1cykgewotICAgICAgICAgICAgICAgIEludFJlY3QgcmVjdFRvQ2xp
cE91dCA9IHJlY3Q7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0VG9DbGlwT3V0ID0g
dG9wTGVmdDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIHRvcFJpZ2h0VG9DbGlwT3V0ID0gdG9w
UmlnaHQ7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBib3R0b21MZWZ0VG9DbGlwT3V0ID0gYm90
dG9tTGVmdDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGJvdHRvbVJpZ2h0VG9DbGlwT3V0ID0g
Ym90dG9tUmlnaHQ7Ci0KLSAgICAgICAgICAgICAgICBJbnRTaXplIHRvcExlZnRUb0ZpbGwgPSB0
b3BMZWZ0OwotICAgICAgICAgICAgICAgIEludFNpemUgdG9wUmlnaHRUb0ZpbGwgPSB0b3BSaWdo
dDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGJvdHRvbUxlZnRUb0ZpbGwgID0gYm90dG9tTGVm
dDsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGJvdHRvbVJpZ2h0VG9GaWxsID0gYm90dG9tUmln
aHQ7Ci0gICAgICAgICAgICAgICAgaWYgKHNoYWRvd1NwcmVhZCA8IDApCi0gICAgICAgICAgICAg
ICAgICAgIHVuaWZvcm1seUV4cGFuZEJvcmRlclJhZGlpKHNoYWRvd1NwcmVhZCwgdG9wTGVmdFRv
RmlsbCwgdG9wUmlnaHRUb0ZpbGwsIGJvdHRvbUxlZnRUb0ZpbGwsIGJvdHRvbVJpZ2h0VG9GaWxs
KTsKKyAgICAgICAgICAgICAgICBSb3VuZGVkSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVy
OwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0IGlzIHVubmVj
ZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2luZyBzbyBzYXZlcyB0aW1lCiAgICAg
ICAgICAgICAgICAgLy8gd2hlbiBwYWludGluZyB0aGUgc2hhZG93LiBPbiB0aGUgb3RoZXIgaGFu
ZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhlbCBnYXBzIGFsb25nIHRoZQogICAgICAgICAgICAgICAg
IC8vIGNvcm5lcnMuIFRob3NlIGFyZSBhdm9pZGVkIGJ5IGluc2V0dGluZyB0aGUgY2xpcHBpbmcg
cGF0aCBieSBvbmUgcGl4ZWwuCiAgICAgICAgICAgICAgICAgaWYgKGhhc09wYXF1ZUJhY2tncm91
bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVjdFRvQ2xpcE91dC5pbmZsYXRlKC0xKTsKLSAg
ICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhwYW5kQm9yZGVyUmFkaWkoLTEsIHRvcExlZnRU
b0NsaXBPdXQsIHRvcFJpZ2h0VG9DbGlwT3V0LCBib3R0b21MZWZ0VG9DbGlwT3V0LCBib3R0b21S
aWdodFRvQ2xpcE91dCk7CisgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQuaW5mbGF0
ZVdpdGhSYWRpaSgtMSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
Y2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQsIHRvcExlZnRUb0NsaXBPdXQsIHRvcFJp
Z2h0VG9DbGlwT3V0LCBib3R0b21MZWZ0VG9DbGlwT3V0LCBib3R0b21SaWdodFRvQ2xpcE91dCk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGZpbGxSZWN0LCB0b3BM
ZWZ0VG9GaWxsLCB0b3BSaWdodFRvRmlsbCwgYm90dG9tTGVmdFRvRmlsbCwgYm90dG9tUmlnaHRU
b0ZpbGwsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQpOworCisgICAgICAg
ICAgICAgICAgaWYgKHNoYWRvd1NwcmVhZCA8IDApCisgICAgICAgICAgICAgICAgICAgIGZpbGxS
ZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZmlsbFJvdW5kZWRSZWN0KGZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2UoKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEludFJlY3QgcmVjdFRvQ2xp
cE91dCA9IHJlY3Q7CisgICAgICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9y
ZGVyLnJlY3QoKTsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBp
dCBpcyB1bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMg
dGltZQogICAgICAgICAgICAgICAgIC8vIHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhl
IG90aGVyIGhhbmQsIGl0IGludHJvZHVjZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUKQEAgLTE3
NTksMjAgKzE2MjcsMjAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgsIGludAogCiAgICAgICAgICAgICAg
ICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcE91dChyZWN0VG9DbGlwT3V0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdChmaWxsUmVjdCwgQ29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNr
LCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb250ZXh0
LT5yZXN0b3JlKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNldCBzaGFk
b3cuCi0gICAgICAgICAgICBJbnRSZWN0IGhvbGVSZWN0KHJlY3QpOworICAgICAgICAgICAgSW50
UmVjdCBob2xlUmVjdChib3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIGhvbGVSZWN0LmluZmxh
dGUoLXNoYWRvd1NwcmVhZCk7CiAKICAgICAgICAgICAgIGlmIChob2xlUmVjdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCBzaGFkb3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGJvcmRlciwgc2hhZG93
Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChyZWN0LCBzaGFkb3dDb2xvciwgcy0+Y29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoYm9yZGVyLnJl
Y3QoKSwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTE3OTQsNyArMTY2Miw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
aW50IHR4LCBpbnQKIAogICAgICAgICAgICAgQ29sb3IgZmlsbENvbG9yKHNoYWRvd0NvbG9yLnJl
ZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIDI1NSk7CiAKLSAg
ICAgICAgICAgIEludFJlY3Qgb3V0ZXJSZWN0KHJlY3QpOworICAgICAgICAgICAgSW50UmVjdCBv
dXRlclJlY3QoYm9yZGVyLnJlY3QoKSk7CiAgICAgICAgICAgICBvdXRlclJlY3QuaW5mbGF0ZVgo
dyAtIDIgKiBzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgb3V0ZXJSZWN0LmluZmxhdGVZKGgg
LSAyICogc2hhZG93U3ByZWFkKTsKIApAQCAtMTgwMiwxMSArMTY3MCwxMSBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGludCB0eCwgaW50CiAKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIGlmICho
YXNCb3JkZXJSYWRpdXMpIHsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJl
Y3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAg
ICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChib3JkZXIucmVjdCgpLCBib3JkZXIucmFkaWko
KS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIGJvcmRlci5yYWRpaSgpLmJv
dHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+Y2xpcChwYXRoKTsKICAgICAgICAgICAgICAgICBwYXRoLmNsZWFyKCk7CiAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHJlY3QpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAoYm9yZGVyLnJlY3QoKSk7CiAKICAgICAgICAg
ICAgIEludFNpemUgZXh0cmFPZmZzZXQoMiAqIHcgKyBtYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRo
KCkpICsgc2hhZG93Qmx1ciAtIDIgKiBzaGFkb3dTcHJlYWQgKyAxLCAwKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWln
aHQoKSk7CkBAIC0xODE2LDggKzE2ODQsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50CiAKICAg
ICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAgICBpZiAoc2hh
ZG93U3ByZWFkID4gMCkKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5RXhwYW5kQm9yZGVy
UmFkaWkoLXNoYWRvd1NwcmVhZCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRv
bVJpZ2h0KTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0LCB0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworICAgICAgICAgICAg
ICAgICAgICBib3JkZXIuc2hyaW5rUmFkaWkoc2hhZG93U3ByZWFkKTsKKyAgICAgICAgICAgICAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0LCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCks
IGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwg
Ym9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBwYXRoLmFkZFJlY3QoaG9sZVJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDhmOWY0NjU3ODA1YWJmMzlh
ZDk3NmYxNWM3MzYyZTFhOGQ3YTE1ZjMuLmY2YmNiOTRiODYwM2NlODM1M2ViZmRmN2M3MzljMjE3
NTY0N2VhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCkBAIC0xMzQsOCArMTM0LDggQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgY2Fs
Y3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciosIEludFNpemUgc2NhbGVkU2l6ZSkg
Y29uc3Q7CiAKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IEJveFNpZGUgc2lk
ZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzLCBjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsCisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUm91bmRlZEludFJlY3QmIGJvcmRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBCb3hTaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJv
b2wgc2Vjb25kRWRnZU1hdGNoZXMsIGNvbnN0IFJlbmRlclN0eWxlKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclZpZXc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDk3YWM1YzNkNGMzNzA3
OWI0ZDYyMDFiODIwNGZhNTkyOTBmNWEwY2MuLjViMzllMGQ3ZWY1NzU3ZjI2NDI0NzY1MjA2YWE4
OTdhZGVkM2QwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CkBAIC05NzksMzYgKzk3OSwyNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0JveFNpZGVGcm9t
UGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgSW50UmVjdAogICAgICAgICAg
ICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGggKz0gMTsKIAogICAgICAgICAvLyBHZXQgdGhlIGlubmVy
IGJvcmRlciByZWN0cyBmb3IgYm90aCB0aGUgb3V0ZXIgYm9yZGVyIGxpbmUgYW5kIHRoZSBpbm5l
ciBib3JkZXIgbGluZQotICAgICAgICBJbnRSZWN0IG91dGVyQm9yZGVySW5uZXJSZWN0ID0gYm9y
ZGVySW5uZXJSZWN0KGJvcmRlclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVy
Qm90dG9tV2lkdGgsIAotICAgICAgICAgICAgb3V0ZXJCb3JkZXJMZWZ0V2lkdGgsIG91dGVyQm9y
ZGVyUmlnaHRXaWR0aCk7Ci0gICAgICAgIEludFJlY3QgaW5uZXJCb3JkZXJJbm5lclJlY3QgPSBi
b3JkZXJJbm5lclJlY3QoYm9yZGVyUmVjdCwgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3Jk
ZXJCb3R0b21XaWR0aCwgCi0gICAgICAgICAgICBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJC
b3JkZXJSaWdodFdpZHRoKTsKLQotICAgICAgICAvLyBHZXQgdGhlIGlubmVyIHJhZGlpIGZvciB0
aGUgb3V0ZXIgYm9yZGVyIGxpbmUKLSAgICAgICAgSW50U2l6ZSBvdXRlckJvcmRlclRvcExlZnRJ
bm5lclJhZGl1cywgb3V0ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBvdXRlckJvcmRlckJv
dHRvbUxlZnRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRlckJvdHRvbVJpZ2h0
SW5uZXJSYWRpdXM7Ci0gICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdp
dGhCb3JkZXJXaWR0aHMob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVyVG9wV2lkdGgs
IG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAotICAgICAgICAgICAgb3V0ZXJCb3JkZXJMZWZ0V2lk
dGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwgb3V0ZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMs
IG91dGVyQm9yZGVyVG9wUmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBvdXRlckJvcmRl
ckJvdHRvbUxlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVz
KTsKLQotICAgICAgICAvLyBHZXQgdGhlIGlubmVyIHJhZGlpIGZvciB0aGUgaW5uZXIgYm9yZGVy
IGxpbmUKLSAgICAgICAgSW50U2l6ZSBpbm5lckJvcmRlclRvcExlZnRJbm5lclJhZGl1cywgaW5u
ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5lclJh
ZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlckJvdHRvbVJpZ2h0SW5uZXJSYWRpdXM7Ci0g
ICAgICAgIHN0eWxlLT5nZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMo
aW5uZXJCb3JkZXJJbm5lclJlY3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlubmVyQm9yZGVyQm90
dG9tV2lkdGgsIAotICAgICAgICAgICAgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVy
UmlnaHRXaWR0aCwgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIGlubmVyQm9yZGVyVG9w
UmlnaHRJbm5lclJhZGl1cywgCi0gICAgICAgICAgICBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5l
clJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsKIAogICAgICAgICAv
LyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChpbm5lckJvcmRl
cklubmVyUmVjdCwgaW5uZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRpdXMsIAotICAgICAgICAgICAg
aW5uZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBpbm5lckJvcmRlckJvdHRvbUxlZnRJbm5l
clJhZGl1cywgaW5uZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFkaXVzKTsKKyAgICAgICAgSW50
UmVjdCBpbm5lckJvcmRlcklubmVyUmVjdCA9IGJvcmRlcklubmVyUmVjdChib3JkZXJSZWN0LCBp
bm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckJvcmRlckxl
ZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoKTsKKyAgICAgICAgUm91bmRlZEludFJlY3Qg
aW5uZXJDbGlwID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlcldpdGhCb3JkZXJXaWR0aHMo
aW5uZXJCb3JkZXJJbm5lclJlY3QsIGlubmVyQm9yZGVyVG9wV2lkdGgsIGlubmVyQm9yZGVyQm90
dG9tV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyQm9yZGVyTGVmdFdpZHRoLCBp
bm5lckJvcmRlclJpZ2h0V2lkdGgpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZFJvdW5k
ZWRSZWN0Q2xpcChpbm5lckNsaXApOwogICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBo
aWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyUGF0aCwgdGhpY2tuZXNzLCBkcmF3VGhpY2tu
ZXNzLCBzLCBzdHlsZSwgYywgU09MSUQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3Rv
cmUoKTsKIAogICAgICAgICAvLyBEcmF3IG91dGVyIGJvcmRlciBsaW5lCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3Vu
ZGVkUmVjdChvdXRlckJvcmRlcklubmVyUmVjdCwgb3V0ZXJCb3JkZXJUb3BMZWZ0SW5uZXJSYWRp
dXMsIAotICAgICAgICAgICAgb3V0ZXJCb3JkZXJUb3BSaWdodElubmVyUmFkaXVzLCBvdXRlckJv
cmRlckJvdHRvbUxlZnRJbm5lclJhZGl1cywgb3V0ZXJCb3JkZXJCb3R0b21SaWdodElubmVyUmFk
aXVzKTsKKyAgICAgICAgSW50UmVjdCBvdXRlckJvcmRlcklubmVyUmVjdCA9IGJvcmRlcklubmVy
UmVjdChib3JkZXJSZWN0LCBvdXRlckJvcmRlclRvcFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdp
ZHRoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvdXRlckJvcmRlckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoKTsKKyAgICAg
ICAgUm91bmRlZEludFJlY3Qgb3V0ZXJDbGlwID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRl
cldpdGhCb3JkZXJXaWR0aHMob3V0ZXJCb3JkZXJJbm5lclJlY3QsIG91dGVyQm9yZGVyVG9wV2lk
dGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRl
ckJvcmRlckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qob3V0ZXJDbGlwKTsKICAgICAgICAgZHJhd0Jv
eFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIHRo
aWNrbmVzcywgZHJhd1RoaWNrbmVzcywgcywgc3R5bGUsIGMsIFNPTElEKTsKICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAKQEAgLTEwMzAsMTggKzEwMTgsMTQgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIEludFJlY3QKICAgICAgICAgSW50UmVjdCBoYWxmQm9yZGVyUmVjdCA9IGJvcmRl
cklubmVyUmVjdChib3JkZXJSZWN0LCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgLyAyLCBzdHls
ZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAvIDIsIAogICAgICAgICAgICAgc3R5bGUtPmJvcmRlckxl
ZnRXaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSAvIDIpOwogCi0gICAgICAg
IEludFNpemUgdG9wTGVmdEhhbGZSYWRpdXMsIHRvcFJpZ2h0SGFsZlJhZGl1cywgYm90dG9tTGVm
dEhhbGZSYWRpdXMsIGJvdHRvbVJpZ2h0SGFsZlJhZGl1czsKLSAgICAgICAgc3R5bGUtPmdldElu
bmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhoYWxmQm9yZGVyUmVjdCwgc3R5
bGUtPmJvcmRlckxlZnRXaWR0aCgpIC8gMiwgCi0gICAgICAgICAgICBzdHlsZS0+Ym9yZGVyQm90
dG9tV2lkdGgoKSAvIDIsIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAvIDIsIHN0eWxlLT5ib3Jk
ZXJSaWdodFdpZHRoKCkgLyAyLCAKLSAgICAgICAgICAgIHRvcExlZnRIYWxmUmFkaXVzLCB0b3BS
aWdodEhhbGZSYWRpdXMsIGJvdHRvbUxlZnRIYWxmUmFkaXVzLCBib3R0b21SaWdodEhhbGZSYWRp
dXMpOwotCiAgICAgICAgIC8vIFBhaW50IGZ1bGwgYm9yZGVyCiAgICAgICAgIGRyYXdCb3hTaWRl
RnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCB0aGlja25l
c3MsIGRyYXdUaGlja25lc3MsIHMsIHN0eWxlLCBjLCBzMSk7CiAKICAgICAgICAgLy8gUGFpbnQg
aW5uZXIgb25seQogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoaGFsZkJvcmRlclJlY3QsIHRvcExlZnRI
YWxmUmFkaXVzLCB0b3BSaWdodEhhbGZSYWRpdXMsCi0gICAgICAgICAgICBib3R0b21MZWZ0SGFs
ZlJhZGl1cywgYm90dG9tUmlnaHRIYWxmUmFkaXVzKTsKKyAgICAgICAgUm91bmRlZEludFJlY3Qg
Y2xpcFJlY3QgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyV2l0aEJvcmRlcldpZHRocyho
YWxmQm9yZGVyUmVjdCwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIC8gMiwgc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCkgLyAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCkgLyAyLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIC8gMik7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGNsaXBSZWN0KTsKICAgICAgICAg
ZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBh
dGgsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgcywgc3R5bGUsIGMsIHMyKTsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDk3NGE4ZDA3MmVkZjY3NzkwZjA4OTM2NzU4ZjI4NDhi
MDdjNjhkZjcuLjBkNzJmOTVjOGEwY2M5NmQyYjA1MTgxMTY4NDdlNDdkMzgwNGJlOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTM1LDExICsx
MzUsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
aW50IHR4LCBpbnQgdHkpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gUHVzaCBhIGNs
aXAgaWYgd2UgaGF2ZSBhIGJvcmRlciByYWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhl
IGZvcmVncm91bmQgY29udGVudCB0aGF0IGdldHMgcGFpbnRlZC4KICAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludFNpemUg
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwotICAgICAgICAgICAg
c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGJvcmRlclJlY3QsIHRvcExlZnQsIHRvcFJp
Z2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0KLSAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoc3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJS
ZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCA1YjQxZWEyMTMzYjdlODgyYTEz
ZTkzZDhjM2YyZGU0NDllMzJhMGUyLi41NzJhYTJmZDViZGVkOGQ2OGUxZmM2OTFiMGE5YWY5OGI1
NzNlMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1XaW4uY3BwCkBAIC02NzYsOSArNjc2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtV2luOjpwYWludFRleHRGaWVsZEludGVybmFsKFJlbmRlck9iamVjdCogbywKICAgICAgICAg
Ly8gYmFja2dyb3VuZCAodGhlbWVkIG9yIGZpbGxlZCkgYXBwcm9wcmlhdGVseS4KICAgICAgICAg
Ly8gRklYTUU6IG1ha2Ugc3VyZSB3ZSBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgY3NzIGJhY2tncm91
bmQtY2xpcCBpcyBzZXQuCiAgICAgICAgIGkuY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBJbnRT
aXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsKLSAgICAgICAg
by0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodCk7Ci0gICAgICAgIGkuY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Cisg
ICAgICAgIGkuY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKG8tPnN0eWxlKCktPmdldFJvdW5k
ZWRCb3JkZXJGb3IocikpOwogICAgIH0KICAgICB7CiAgICAgICAgIGNvbnN0IFRoZW1lRGF0YSYg
dGhlbWVEYXRhID0gZ2V0VGhlbWVEYXRhKG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCmluZGV4IDA3NjQwOTNlNmJjN2RkMTE0YmI2MjI1YmFiZWZlYmZhNWZj
Mzc5MzkuLjYwNWU5NTg2ZTgyM2Q1N2YyZGQ1Mzk0ZmZiYWYxYmRiMjhkZTZmODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMzMsMTQgKzEwMzMs
OCBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKIAotICAgIEludFNpemUgdG9wTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIHRvcFJpZ2h0
UmFkaXVzOwotICAgIEludFNpemUgYm90dG9tTGVmdFJhZGl1czsKLSAgICBJbnRTaXplIGJvdHRv
bVJpZ2h0UmFkaXVzOwotCi0gICAgby0+c3R5bGUoKS0+Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KHIs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7Ci0KLSAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJhZGl1cy53aWR0aCgpOwor
ICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9IG8tPnN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJG
b3Iocik7CisgICAgaW50IHJhZGl1cyA9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgp
OwogCiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYo
KTsKIApAQCAtMTA2MywyNyArMTA1NywyNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1l
bnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbgogICAg
IFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdD
cmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIucmlnaHQoKSwgIHIueSgpKSwgQ0dQb2lu
dE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFs
c2UsIGZhbHNlKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRl
eHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRS
YWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKGJvcmRlcik7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwg
bWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAK
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRvcExlZnRSYWRpdXMsIHRv
cFJpZ2h0UmFkaXVzLCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHRv
cEdyYWRpZW50KSwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BS
aWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5n
KGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewogICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgp
LCBJbnRTaXplKCksIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChl
bmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJv
cmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkp
OwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdl
dCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICB9CiAKICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dCwgcik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmln
aHRSYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9y
ZGVyKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQo
KSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgp
KTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMTMwNCw5ICsxMjk4LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYKICAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRDRihD
R1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBib3Vu
ZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRzLmJvdHRvbSgpKSwgbWFpbkZ1
bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIEludFNpemUgcmFkaXVzKHRyYWNr
UmFkaXVzLCB0cmFja1JhZGl1cyk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChib3VuZHMsCi0gICAgICAgIHJhZGl1cywgcmFkaXVzLAotICAgICAgICByYWRpdXMs
IHJhZGl1cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3Vu
ZGVkSW50UmVjdChib3VuZHMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAg
IENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICBw
YWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggM2MxZGVkYzZlNGU1YjRjMTg0MDRi
Zjk2OTJjN2Q0NGNjNGE2Yjc4ZC4uNDdmNjI3ZThkZDlmY2M5NWY1MTNkMjEwOWUxODc3MWY0ZTA1
MTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
Y3BwCkBAIC03NTIsMTQgKzc1Miw4IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVu
dUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAKICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCi0gICAgSW50U2l6ZSB0b3BMZWZ0UmFkaXVzOwot
ICAgIEludFNpemUgdG9wUmlnaHRSYWRpdXM7Ci0gICAgSW50U2l6ZSBib3R0b21MZWZ0UmFkaXVz
OwotICAgIEludFNpemUgYm90dG9tUmlnaHRSYWRpdXM7Ci0KLSAgICBvLT5zdHlsZSgpLT5nZXRC
b3JkZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRv
bUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKLQotICAgIGludCByYWRpdXMgPSB0b3BM
ZWZ0UmFkaXVzLndpZHRoKCk7CisgICAgUm91bmRlZEludFJlY3QgYm91bmQgPSBvLT5zdHlsZSgp
LT5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpOworICAgIGludCByYWRpdXMgPSBib3VuZC5yYWRpaSgp
LnRvcExlZnQoKS53aWR0aCgpOwogCiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmlj
ZVJHQkNvbG9yU3BhY2VSZWYoKTsKIApAQCAtNzgxLDI4ICs3NzUsMjggQEAgdm9pZCBSZW5kZXJU
aGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW4KIAogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhB
ZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIucmlnaHQo
KSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5G
dW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5m
by5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRS
YWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICBDR0NvbnRl
eHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kLnJlY3QoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmco
Y29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5h
ZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBJbnRTaXplKCksIEludFNpemUoKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChlbmNsb3NpbmdJ
bnRSZWN0KHRvcEdyYWRpZW50KSwgYm91bmQucmFkaWkoKS50b3BMZWZ0KCksIGJvdW5kLnJhZGlp
KCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICBDR0NvbnRleHREcmF3
U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4
dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIElu
dFNpemUoKSwgSW50U2l6ZSgpLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoUm91bmRlZElu
dFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6
ZSgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm91bmQucmFkaWkoKS5ib3R0b21SaWdo
dCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRvbVNoYWRp
bmcuZ2V0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIH0K
IAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KHIsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0
b21SaWdodFJhZGl1cyk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZC5y
ZWN0KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmQp
OwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGxlZnRTaGFkaW5nLmdldCgpKTsK
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCByaWdodFNoYWRpbmcuZ2V0KCkpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CkBAIC05NTgsMzQgKzk1MiwzNSBAQCBj
b25zdCBpbnQgdHJhY2tSYWRpdXMgPSAyOwogCiBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWlu
dFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgSW50UmVjdCBib3VuZHMgPSByOwotCi0gICAgaWYg
KG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSAgU2xpZGVySG9yaXpvbnRhbFBhcnQpIHsKLSAg
ICAgICAgYm91bmRzLnNldEhlaWdodCh0cmFja1dpZHRoKTsKLSAgICAgICAgYm91bmRzLnNldFko
ci55KCkgKyByLmhlaWdodCgpIC8gMiAtIHRyYWNrV2lkdGggLyAyKTsKLSAgICB9IGVsc2UgaWYg
KG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpIHsKLSAgICAg
ICAgYm91bmRzLnNldFdpZHRoKHRyYWNrV2lkdGgpOwotICAgICAgICBib3VuZHMuc2V0WChyLngo
KSArIHIud2lkdGgoKSAvIDIgLSB0cmFja1dpZHRoIC8gMik7Ci0gICAgfQorICAgIEludFNpemUg
cmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7CisgICAgUm91bmRlZEludFJlY3QgYm91
bmRzKHIsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cyk7CisKKyAgICBpZiAoby0+c3R5
bGUoKS0+YXBwZWFyYW5jZSgpID09ICBTbGlkZXJIb3Jpem9udGFsUGFydCkKKyAgICAgICAgYm91
bmRzLnNldFJlY3QoSW50UmVjdChyLngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByLnkoKSArIHIuaGVpZ2h0KCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgci53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYWNrV2lkdGgpKTsKKyAgICBlbHNlIGlmIChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkg
PT0gU2xpZGVyVmVydGljYWxQYXJ0KQorICAgICAgICBib3VuZHMuc2V0UmVjdChJbnRSZWN0KHIu
eCgpICsgci53aWR0aCgpIC8gMiAtIHRyYWNrV2lkdGggLyAyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHIueSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNr
V2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuaGVpZ2h0KCkpKTsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNl
UmVmKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgYm91bmRzKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRl
eHQsIGJvdW5kcy5yZWN0KCkpOwogCiAgICAgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgbWFp
bkNhbGxiYWNrcyA9IHsgMCwgVHJhY2tHcmFkaWVudEludGVycG9sYXRlLCBOVUxMIH07CiAgICAg
UmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1haW5GdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9u
Q3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZtYWluQ2FsbGJhY2tzKSk7CiAgICAgUmV0
YWluUHRyPENHU2hhZGluZ1JlZj4gbWFpblNoYWRpbmc7CiAgICAgaWYgKG8tPnN0eWxlKCktPmFw
cGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCi0gICAgICAgIG1haW5TaGFkaW5nLmFk
b3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgp
LCAgYm91bmRzLmJvdHRvbSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJpZ2h0KCksIGJvdW5kcy5i
b3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIG1h
aW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFr
ZShib3VuZHMucmVjdCgpLngoKSwgIGJvdW5kcy5yZWN0KCkuYm90dG9tKCkpLCBDR1BvaW50TWFr
ZShib3VuZHMucmVjdCgpLnJpZ2h0KCksIGJvdW5kcy5yZWN0KCkuYm90dG9tKCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogICAgIGVsc2UKLSAgICAgICAgbWFpblNoYWRp
bmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5k
cy54KCksICBib3VuZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRzLmJvdHRv
bSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbWFpblNo
YWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJv
dW5kcy5yZWN0KCkueCgpLCAgYm91bmRzLnJlY3QoKS55KCkpLCBDR1BvaW50TWFrZShib3VuZHMu
cmVjdCgpLngoKSwgYm91bmRzLnJlY3QoKS5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tS
YWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRz
LAotICAgICAgICByYWRpdXMsIHJhZGl1cywKLSAgICAgICAgcmFkaXVzLCByYWRpdXMpOworICAg
IHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzKTsKICAgICBDR0Nv
bnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbkNFLmNwcAppbmRleCAyYzU1ZjMxMjY0N2E3YjQ1YzY1MTUxN2RhOWE3
ZWU1Y2QxZTU3ZjgxLi5kNGJmZjk2MzZkOGIyM2FkY2IyNjBjNzRkY2Q2MzVkYmM4MGQ5Y2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCkBAIC0z
NzgsNyArMzc4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnQKICAgICBpbnQgeSA9IHIueSgp
ICsgKHIuaGVpZ2h0KCkgLSBjYW5jZWxTaXplLmhlaWdodCgpKSAvIDIgKyAxOwogICAgIEludFJl
Y3QgY2FuY2VsQm91bmRzKEludFBvaW50KHgsIHkpLCBjYW5jZWxTaXplKTsKICAgICBwYWludElu
Zm8uY29udGV4dC0+c2F2ZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVj
dENsaXAoY2FuY2VsQm91bmRzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFk
aXVzLCBjYW5jZWxSYWRpdXMpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVj
dENsaXAoUm91bmRlZEludFJlY3QoY2FuY2VsQm91bmRzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJh
ZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMpKTsKICAgICBwYWludEluZm8uY29udGV4
dC0+ZmlsbFJlY3QoY2FuY2VsQm91bmRzLCBidXR0b25Db2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAKICAgICAvLyBEcmF3IHRoZSAneCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKaW5kZXggMjIyODNhMDEzYjhiMGEwOGQ0MjgzNTViYWIyNGM3YTdjYTU3NjY2
Ny4uZDRiOGJhNmFjNmYxMzg3OTk4NTQyZGQ0ZjY4ODNiMWIzMWZhMGI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTI3NSwxMSArMjc1LDcgQEAgdm9p
ZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0
eSkKIAogICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJhZGl1cywg
c2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQgZ2V0cyBw
YWludGVkLgogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgICAgICAKLSAg
ICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7
Ci0gICAgICAgIHN0eWxlKCktPmdldEJvcmRlclJhZGlpRm9yUmVjdChib3JkZXJSZWN0LCB0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwotCi0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyUmVjdCwgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRl
clJlY3QpKTsKICAgICB9CiAKICAgICBpZiAobV93aWRnZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDAzNjM1ZDlmMTlmYmE0OTAxNjU2NzI3
ODk2OGY4ZjEzZGE3NDhhODMuLjBlNTBlZGI3ODAwMGE1MGFiZGQ4ZDBmMzlhNWIwZmQ3OTI1Njc2
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApAQCAt
MjYsNiArMjYsNyBAQAogI2RlZmluZSBCb3JkZXJEYXRhX2gKIAogI2luY2x1ZGUgIkJvcmRlclZh
bHVlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNp
bmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogCkBAIC0xMDksNyArMTEwLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IExlbmd0aFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdo
dDsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBt
X2JvdHRvbUxlZnQ7IH0KICAgICBjb25zdCBMZW5ndGhTaXplJiBib3R0b21SaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fYm90dG9tUmlnaHQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBCb3JkZXJW
YWx1ZSBtX2xlZnQ7CiAgICAgQm9yZGVyVmFsdWUgbV9yaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDQ2NjVlNTJmNDE0NDk3YTdi
NjQ4YWYwYjNlNjMzOWEzZmFjMWY0NTAuLjI4MzZmYjk4ZDgyNjlkMzA4M2JhYWQ3ZTA5MzU4OGMz
MDQwNDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtNzQ0LDcgKzc0NCwxOSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3hTaGFk
b3coU2hhZG93RGF0YSogc2hhZG93RGF0YSwgYm9vbCBhZGQpCiAgICAgcmFyZURhdGEtPm1fYm94
U2hhZG93LnNldChzaGFkb3dEYXRhKTsKIH0KIAotc3RhdGljIHZvaWQgY29uc3RyYWluQ29ybmVy
UmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFNpemUm
IHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdodCkKK3N0
YXRpYyBSb3VuZGVkSW50UmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRlckRhdGEm
IGJvcmRlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBSb3VuZGVkSW50
UmVjdDo6UmFkaWkoSW50U2l6ZShib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdp
ZHRoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci50
b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW50U2l6ZShib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1
ZSh3aWR0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRl
ci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEludFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNh
bGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShoZWlnaHQpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoYm9yZGVyLmJvdHRvbVJpZ2h0KCku
d2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdo
dCkpKTsKK30KKworc3RhdGljIGZsb2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkKIHsKICAgICAv
LyBDb25zdHJhaW4gY29ybmVyIHJhZGlpIHVzaW5nIENTUzMgcnVsZXM6CiAgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJhZGl1cwpAQCAtNzUz
LDc1ICs3NjUsNDMgQEAgc3RhdGljIHZvaWQgY29uc3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KGNv
bnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFMKICAgICB1bnNpZ25lZCByYWRp
aVN1bTsKIAogICAgIC8vIHRvcAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRvcExlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQud2lkdGgo
KSk7IC8vIENhc3RzIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cuCi0gICAgaWYgKHJhZGlpU3Vt
ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHIud2lkdGgoKSkpCi0gICAgICAgIGZhY3RvciA9IG1p
bihzdGF0aWNfY2FzdDxmbG9hdD4oci53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAg
IHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlpLnRvcExlZnQoKS53aWR0aCgp
KSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS50b3BSaWdodCgpLndpZHRoKCkpOyAvLyBD
YXN0cyB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChyYWRpaVN1bSA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZWN0LndpZHRoKCkpKQorICAgICAgICBmYWN0b3IgPSBzdGQ6Om1p
bihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53aWR0aCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwog
CiAgICAgLy8gYm90dG9tCi0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90
dG9tTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21SaWdodC53aWR0
aCgpKTsKLSAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci53aWR0aCgp
KSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLndpZHRoKCkpIC8g
cmFkaWlTdW0sIGZhY3Rvcik7CisgICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlp
LmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CisgICAgaWYgKHJhZGlpU3VtID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRp
Y19jYXN0PGZsb2F0PihyZWN0LndpZHRoKCkpIC8gcmFkaWlTdW0sIGZhY3Rvcik7CiAgICAgCiAg
ICAgLy8gbGVmdAotICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcExlZnQu
aGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbUxlZnQuaGVpZ2h0KCkpOwot
ICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyLmhlaWdodCgpKSkKLSAg
ICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyLmhlaWdodCgpKSAvIHJhZGlp
U3VtLCBmYWN0b3IpOworICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlp
LnRvcExlZnQoKS5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFkaWkuYm90dG9t
TGVmdCgpLmhlaWdodCgpKTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVjdC5oZWlnaHQoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0
PGZsb2F0PihyZWN0LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwogICAgIAogICAgIC8v
IHJpZ2h0Ci0gICAgcmFkaWlTdW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQuaGVp
Z2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLSAg
ICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oci5oZWlnaHQoKSkpCi0gICAg
ICAgIGZhY3RvciA9IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4oci5oZWlnaHQoKSkgLyByYWRpaVN1
bSwgZmFjdG9yKTsKKyAgICByYWRpaVN1bSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS50
b3BSaWdodCgpLmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS5ib3R0b21S
aWdodCgpLmhlaWdodCgpKTsKKyAgICBpZiAocmFkaWlTdW0gPiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVjdC5oZWlnaHQoKSkpCisgICAgICAgIGZhY3RvciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0
PGZsb2F0PihyZWN0LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBmYWN0b3IpOwogICAgIAotICAgIC8v
IFNjYWxlIGFsbCByYWRpaSBieSBmIGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAoZmFjdG9yIDwgMSkg
ewotICAgICAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29tZXMgemVybywg
cmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KLSAgICAgICAgdG9wTGVmdC5zY2FsZShm
YWN0b3IpOwotICAgICAgICBpZiAoIXRvcExlZnQud2lkdGgoKSB8fCAhdG9wTGVmdC5oZWlnaHQo
KSkKLSAgICAgICAgICAgIHRvcExlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgIHRvcFJpZ2h0LnNj
YWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICghdG9wUmlnaHQud2lkdGgoKSB8fCAhdG9wUmlnaHQu
aGVpZ2h0KCkpCi0gICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgYm90
dG9tTGVmdC5zY2FsZShmYWN0b3IpOwotICAgICAgICBpZiAoIWJvdHRvbUxlZnQud2lkdGgoKSB8
fCAhYm90dG9tTGVmdC5oZWlnaHQoKSkKLSAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBJbnRTaXpl
KCk7Ci0gICAgICAgIGJvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7Ci0gICAgICAgIGlmICghYm90
dG9tUmlnaHQud2lkdGgoKSB8fCAhYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgICAgICBi
b3R0b21SaWdodCA9IEludFNpemUoKTsKLSAgICB9CisgICAgQVNTRVJUKGZhY3RvciA8PSAxKTsK
KyAgICByZXR1cm4gZmFjdG9yOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpnZXRCb3JkZXJSYWRp
aUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9w
UmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBjb25zdAor
Um91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3QgSW50
UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICB0b3BMZWZ0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9y
ZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9y
ZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwotICAgIHRvcFJp
Z2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKS5jYWxjVmFs
dWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNW
YWx1ZShyLmhlaWdodCgpKSk7Ci0gICAgCi0gICAgYm90dG9tTGVmdCA9IEludFNpemUoc3Vycm91
bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vy
cm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkp
KTsKLSAgICBib3R0b21SaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdo
dCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9t
UmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwotCi0gICAgY29uc3RyYWlu
Q29ybmVyUmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7CisgICAgUm91bmRlZEludFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1JhZGlpRm9y
KHN1cnJvdW5kLT5ib3JkZXIsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgcmFk
aWkuc2NhbGUoY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihyZWN0LCByYWRpaSkpOworICAgIHJldHVy
biBSb3VuZGVkSW50UmVjdChyZWN0LCByYWRpaSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6Omdl
dElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRSZWN0JiBp
bm5lclJlY3QsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCB1bnNpZ25lZCBzaG9ydCBib3R0b21X
aWR0aCwgdW5zaWduZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRo
LCBJbnRTaXplJiBpbm5lclRvcExlZnQsIEludFNpemUmIGlubmVyVG9wUmlnaHQsIEludFNpemUm
IGlubmVyQm90dG9tTGVmdCwgSW50U2l6ZSYgaW5uZXJCb3R0b21SaWdodCkgY29uc3QKK1JvdW5k
ZWRJbnRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJXaXRoQm9yZGVyV2lk
dGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVjdCwgdW5zaWduZWQgc2hvcnQgdG9wV2lkdGgsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxlZnRX
aWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCkgY29uc3QKIHsKLSAgICBpbm5lclRvcExl
ZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVl
KGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCku
Y2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotICAgIGlubmVyVG9wUmlnaHQgPSBJbnRT
aXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJl
Y3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFs
dWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0ID0gSW50U2l6ZShz
dXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qu
d2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1
ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKLSAgICBpbm5lckJvdHRvbVJpZ2h0ID0gSW50U2l6ZShz
dXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0
LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1Zh
bHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwotCi0KLSAgICBpbm5lclRvcExlZnQuc2V0V2lkdGgo
bWF4KDAsIGlubmVyVG9wTGVmdC53aWR0aCgpIC0gbGVmdFdpZHRoKSk7Ci0gICAgaW5uZXJUb3BM
ZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJUb3BMZWZ0LmhlaWdodCgpIC0gdG9wV2lkdGgpKTsK
LQotICAgIGlubmVyVG9wUmlnaHQuc2V0V2lkdGgobWF4KDAsIGlubmVyVG9wUmlnaHQud2lkdGgo
KSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBpbm5lclRvcFJpZ2h0LnNldEhlaWdodChtYXgoMCwgaW5u
ZXJUb3BSaWdodC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7Ci0KLSAgICBpbm5lckJvdHRvbUxlZnQu
c2V0V2lkdGgobWF4KDAsIGlubmVyQm90dG9tTGVmdC53aWR0aCgpIC0gbGVmdFdpZHRoKSk7Ci0g
ICAgaW5uZXJCb3R0b21MZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0b21MZWZ0LmhlaWdo
dCgpIC0gYm90dG9tV2lkdGgpKTsKLQotICAgIGlubmVyQm90dG9tUmlnaHQuc2V0V2lkdGgobWF4
KDAsIGlubmVyQm90dG9tUmlnaHQud2lkdGgoKSAtIHJpZ2h0V2lkdGgpKTsKLSAgICBpbm5lckJv
dHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgaW5uZXJCb3R0b21SaWdodC5oZWlnaHQoKSAtIGJv
dHRvbVdpZHRoKSk7Ci0KLSAgICBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoaW5uZXJSZWN0
LCBpbm5lclRvcExlZnQsIGlubmVyVG9wUmlnaHQsIGlubmVyQm90dG9tTGVmdCwgaW5uZXJCb3R0
b21SaWdodCk7CisgICAgUm91bmRlZEludFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1JhZGlpRm9y
KHN1cnJvdW5kLT5ib3JkZXIsIGlubmVyUmVjdC53aWR0aCgpLCBpbm5lclJlY3QuaGVpZ2h0KCkp
OworICAgIHJhZGlpLnNocmluayh0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmln
aHRXaWR0aCk7CisgICAgcmFkaWkuc2NhbGUoY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihpbm5lclJl
Y3QsIHJhZGlpKSk7CisgICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0KGlubmVyUmVjdCwgcmFkaWkp
OwogfQogCiBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291bnRlckRp
cmVjdGl2ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAppbmRleCA2NGNkMGEyOGM0ZTExZTM4YzcxMWU3ODM3NjgxMTk3ZDAxZjZiYmYyLi43
NWJhMDQ4MzdmZjFhZDIwOTE2Nzc5YjJhMTAwZjc4MDhmMjVkNjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNDMsNiArNDMsOCBAQAogI2lu
Y2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCiAjaW5jbHVkZSAiT3V0bGluZVZhbHVlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJSb3VuZGVkSW50UmVjdC5o
IgorI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUJhY2tncm91bmREYXRh
LmgiCiAjaW5jbHVkZSAiU3R5bGVCb3hEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVGbGV4aWJsZUJv
eERhdGEuaCIKQEAgLTg0NiwxMyArODQ4LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHNl
dEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVkKSwgTGVuZ3Ro
KHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KLQogICAgIAotICAgIHZvaWQgZ2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0
b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpIGNvbnN0
OwotICAgIHZvaWQgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RXaXRoQm9yZGVyV2lkdGhzKGNv
bnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxl
ZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0LCBJbnRTaXplJiBpbm5lclRvcFJpZ2h0LCBJ
bnRTaXplJiBpbm5lckJvdHRvbUxlZnQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFNpemUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0OworICAgIFJvdW5kZWRJbnRSZWN0IGdldFJv
dW5kZWRCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIFJvdW5kZWRJbnRSZWN0
IGdldFJvdW5kZWRJbm5lckJvcmRlcldpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYsIHVu
c2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJvdHRvbVdpZHRoLCB1bnNp
Z25lZCBzaG9ydCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJpZ2h0V2lkdGgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0KICAgICB2b2lkIHNldEJvcmRl
ckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9s
ZWZ0Lm1fc3R5bGUsIHYpIH0K
</data>
<flag name="review"
          id="70667"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>