<?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>85158</bug_id>
          
          <creation_ts>2012-04-29 07:50:20 -0700</creation_ts>
          <short_desc>Accumulation for values-animation is broken</short_desc>
          <delta_ts>2012-05-03 02:08:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>krit</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612428</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-29 07:50:20 -0700</bug_when>
    <thetext>Example:
&lt;rect width=&quot;999&quot; height=&quot;100&quot; fill=&quot;green&quot;/&gt;
   &lt;animate begin=&quot;0s&quot; values=&quot;0; 30; 20&quot; accumulate=&quot;sum&quot; repeatCount=&quot;5&quot; dur=&quot;2s&quot;/&gt;
&lt;/rect&gt;

The rect should animate like this:
0.000s -&gt; 0
0.500s -&gt; 15
1.000s -&gt; 30
1.500s -&gt; 25
1.999s -&gt; 20
2.000s -&gt; 20 (first accumulation, starts accumulating from the last set value, here &apos;20&apos;).
2.500s -&gt; 45
3.000s -&gt; 50
3.500s -&gt; 45
3.999s -&gt; 40
4.000s -&gt; 40 (second accumulation)
etc.

This is currently broken for values-animation. The accumulation should happen after a full cycle of the values animation ran (aka. at the end of the duration).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612435</commentid>
    <comment_count>1</comment_count>
      <attachid>139402</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-29 09:14:28 -0700</bug_when>
    <thetext>Created attachment 139402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612439</commentid>
    <comment_count>2</comment_count>
      <attachid>139402</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-29 10:52:33 -0700</bug_when>
    <thetext>Comment on attachment 139402
Patch

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

&gt; Source/WebCore/svg/SVGAnimatedColor.cpp:73
&gt; +    Color&amp; toAtEndOfDurationColor = toAtEndOfDuration-&gt;color();

This is a curious idiom. A getter that returns a non-const reference. Do we actually modify the color through this reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613374</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-01 07:18:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 139402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139402&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedColor.cpp:73
&gt; &gt; +    Color&amp; toAtEndOfDurationColor = toAtEndOfDuration-&gt;color();
&gt; 
&gt; This is a curious idiom. A getter that returns a non-const reference. Do we actually modify the color through this reference?

Thanks Darin for the review! It&apos;s a good point - I left it as-is for consistency. A follow-up patch will introduce const getters for SVGAnimatedType to get rid of the design flaw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613375</commentid>
    <comment_count>4</comment_count>
      <attachid>139402</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-01 07:20:49 -0700</bug_when>
    <thetext>Comment on attachment 139402
Patch

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

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:141
&gt; +    OwnPtr&lt;SVGAnimatedType&gt; toAtEndOfDurationType = m_animator-&gt;constructFromString(toAtEndOfDurationString);

Note to self: We should cache the toAtEndOfDurationType to avoid constructing this type for values animations at each point in time.
I&apos;ll take care of this when posting a follow-up patch to add the const getters for SVGAnimatedType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613408</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-01 08:17:40 -0700</bug_when>
    <thetext>Committed r115726: &lt;http://trac.webkit.org/changeset/115726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614053</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-02 00:28:57 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614054</commentid>
    <comment_count>7</comment_count>
      <attachid>139759</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-02 00:29:18 -0700</bug_when>
    <thetext>Created attachment 139759
Follow-up patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614327</commentid>
    <comment_count>8</comment_count>
      <attachid>139759</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-02 08:34:09 -0700</bug_when>
    <thetext>Comment on attachment 139759
Follow-up patch

This actually changes the behavior, we stop mutating from/to values it certain cases, I need to add a new testcase, and do some stylistic fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615066</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-03 00:07:46 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 139759 [details])
&gt; This actually changes the behavior, we stop mutating from/to values it certain cases, I need to add a new testcase, and do some stylistic fixes.

Ok, I was wrong, it was a bit too late yesterday - in fact I&apos;m changing this to avoid any mutation, but it didn&apos;t cause problems in practice before, as we reset the from/to values on every animation step, this is now gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615067</commentid>
    <comment_count>10</comment_count>
      <attachid>139967</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-03 00:08:19 -0700</bug_when>
    <thetext>Created attachment 139967
Follow-up patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615077</commentid>
    <comment_count>11</comment_count>
      <attachid>139967</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-05-03 00:48:40 -0700</bug_when>
    <thetext>Comment on attachment 139967
Follow-up patch v2

Looks good, some comments:

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

&gt; Source/WebCore/svg/SVGAnimatedBoolean.cpp:84
&gt;      bool&amp; animatedBoolean = animated-&gt;boolean();

Could we remove the reference here as well?

&gt; Source/WebCore/svg/SVGAnimatedType.cpp:244
&gt; +const std::pair&lt;SVGAngle, unsigned&gt;&amp; SVGAnimatedType::angleAndEnumeration() const
&gt; +{
&gt; +    ASSERT(m_type == AnimatedAngle);
&gt; +    return *m_data.angleAndEnumeration;
&gt; +}

Ok, these one liners should all be moved to the header, otherwise they would be a pure regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615081</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-03 00:52:33 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 139967 [details])
&gt; Looks good, some comments:
Thanks!

&gt; &gt; Source/WebCore/svg/SVGAnimatedBoolean.cpp:84
&gt; &gt;      bool&amp; animatedBoolean = animated-&gt;boolean();
&gt; Could we remove the reference here as well?
Nope, all &quot;animated*&quot; types are mutable - they will receive the actual animation updates.

&gt; &gt; Source/WebCore/svg/SVGAnimatedType.cpp:244
&gt; &gt; +const std::pair&lt;SVGAngle, unsigned&gt;&amp; SVGAnimatedType::angleAndEnumeration() const
&gt; &gt; +{
&gt; &gt; +    ASSERT(m_type == AnimatedAngle);
&gt; &gt; +    return *m_data.angleAndEnumeration;
&gt; &gt; +}
&gt; 
&gt; Ok, these one liners should all be moved to the header, otherwise they would be a pure regressions.
Ok, you&apos;re right, I&apos;ll move all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615086</commentid>
    <comment_count>13</comment_count>
      <attachid>139970</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-03 01:12:42 -0700</bug_when>
    <thetext>Created attachment 139970
Follow-up patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615106</commentid>
    <comment_count>14</comment_count>
      <attachid>139970</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-05-03 02:04:44 -0700</bug_when>
    <thetext>Comment on attachment 139970
Follow-up patch v3

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615108</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-03 02:08:53 -0700</bug_when>
    <thetext>Committed r115950: &lt;http://trac.webkit.org/changeset/115950&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139402</attachid>
            <date>2012-04-29 09:14:28 -0700</date>
            <delta_ts>2012-05-02 00:28:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85158-20120429181433.patch</filename>
            <type>text/plain</type>
            <size>76158</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNhOTk1OGUwNzFkZjQx
MGJmMzBiYThiMjljZjk1MjE3MmZhNWU4ZS4uMThjOGM0NGZkOGY2ZjFkYzE1OTU2NmNiNmUxZWVk
ODQ4ZjZmZDNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMi0wNC0yOSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBBY2N1bXVs
YXRpb24gZm9yIHZhbHVlcy1hbmltYXRpb24gaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4YW1wbGU6CisgICAgICAgIDxyZWN0IHdpZHRo
PSI5OTkiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgorICAgICAgICAgICAgPGFuaW1hdGUg
YmVnaW49IjBzIiB2YWx1ZXM9IjA7IDMwOyAyMCIgYWNjdW11bGF0ZT0ic3VtIiByZXBlYXRDb3Vu
dD0iNSIgZHVyPSIycyIvPgorICAgICAgICA8L3JlY3Q+CisKKyAgICAgICAgVGhlIHJlY3Qgc2hv
dWxkIGFuaW1hdGUgbGlrZSB0aGlzOgorICAgICAgICAwLjAwMHMgLT4gMAorICAgICAgICAwLjUw
MHMgLT4gMTUKKyAgICAgICAgMS4wMDBzIC0+IDMwCisgICAgICAgIDEuNTAwcyAtPiAyNQorICAg
ICAgICAxLjk5OXMgLT4gMjAKKyAgICAgICAgMi4wMDBzIC0+IDIwIChmaXJzdCBhY2N1bXVsYXRp
b24sIHN0YXJ0cyBhY2N1bXVsYXRpbmcgZnJvbSB0aGUgbGFzdCBzZXQgdmFsdWUsIGhlcmUgJzIw
JykuCisgICAgICAgIDIuNTAwcyAtPiA0NQorICAgICAgICAzLjAwMHMgLT4gNTAKKyAgICAgICAg
My41MDBzIC0+IDQ1CisgICAgICAgIDMuOTk5cyAtPiA0MAorICAgICAgICA0LjAwMHMgLT4gNDAg
KHNlY29uZCBhY2N1bXVsYXRpb24pCisgICAgICAgIGV0Yy4KKworICAgICAgICBUaGlzIGlzIGN1
cnJlbnRseSBicm9rZW4gZm9yIHZhbHVlcy1hbmltYXRpb24uIFRoZSBhY2N1bXVsYXRpb24gc2hv
dWxkIGhhcHBlbiBhZnRlciBhIGZ1bGwgY3ljbGUgb2YgdGhlIHZhbHVlcyBhbmltYXRpb24gcmFu
IChha2EuIGF0IHRoZSBlbmQgb2YgdGhlIGR1cmF0aW9uKS4KKyAgICAgICAgQSB2YWx1ZXMgYW5p
bWF0aW9uIHdvcmtzIGxpa2UgdGhpczogaXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIHZhbHVlcywg
YW5kIGNhbGN1bGF0ZSBhICdmcm9tJyBhbmQgJ3RvJyB2YWx1ZSBmb3IgYSBnaXZlbiB0aW1lLiBF
eGFtcGxlIGZvciB2YWx1ZXM9IjA7IDMwOyAyMCIgZHVyPSIycyI6CisgICAgICAgICAgICAtIDAu
MHMgLi4gMS4wcyAtPiBmcm9tPTAsIHRvPTMwCisgICAgICAgICAgICAtIDEuMHMgLi4gMi4wcyAt
PiBmcm9tPTMwLCB0bz0yMAorCisgICAgICAgIEFjY3VtdWxhdGlvbiBjdXJyZW50bHkgaXMgdGFr
ZW4gaW50byBhY2NvdW50IGF0IGVhY2ggaW50ZXJ2YWwgZm9yIGEgdmFsdWVzLWFuaW1hdGlvbiBp
bnN0ZWFkIG9mIHRoZSBlbmQgb2YgdGhlIGN5Y2xlLiBGaXggdGhhdAorICAgICAgICBieSBwYXNz
aW5nIGFuIGFkZGl0aW9uYWwgJ3RvQXRFbmRPZkR1cmF0aW9uJyB0eXBlIHRvIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoKSB3aGljaCBpcyB1c2VkIGZvciBhY2N1bXVsYXRpb24gaW5zdGVhZCBvZiB0
aGUKKyAgICAgICAgY3VycmVudCAndG8nIHZhbHVlLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmlt
YXRpb25zL2FjY3VtdWxhdGUtdmFsdWVzLXdpZHRoLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlRWxlbWVudC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lmg6CisgICAgICAgIChTVkdBbmltYXRlTW90aW9uRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRB
bmdsZUFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmg6CisgICAgICAg
IChTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
Q29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5o
OgorICAgICAgICAoU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEVu
dW1lcmF0aW9uQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChTVkdBbmltYXRlZEVudW1lcmF0
aW9uQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXIuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFu
aW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmg6CisgICAgICAgIChTVkdBbmlt
YXRlZExlbmd0aEFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0Lmg6CisgICAgICAgIChTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcik6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZE51bWJlci5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRv
cik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oOgorICAgICAgICAo
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaDoKKyAgICAgICAg
KFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcik6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkUGF0aC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpb0FuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0Lmg6CisgICAgICAgIChT
VkdBbmltYXRlZFJlY3RBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5oOgor
ICAgICAgICAoU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0QW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxl
bWVudDo6YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKToKKyAgICAgICAgKFNWR0FuaW1hdGlvbkVsZW1l
bnQpOgorCiAyMDEyLTA0LTI5ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tp
YS5jb20+CiAKICAgICAgICAgW1RleG1hcF0gTGVhdmVzIGRlbW86IHdyb25nIGdlb21ldHJ5IHdo
ZW4gb3BhY2l0eSBhbmltYXRpb24ga2lja3MgaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnQuY3BwCmluZGV4IDEwNjk4NmQ2OGEwY2I1NTI3NGU5NmFhZGE4ODJkNDc1YmM2MDNl
NDQuLjExOWQzYmUyMTczMmJlNWM5OTJiMGM3MTllMTZiNGRhNmE2NjMwZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBBbmltYXRl
ZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUoU1ZHRWxlbWVudAogICAgIHJldHVybiB0eXBlOwogfQogCi12b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpCit2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50LCBjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLCBTVkdT
TUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkKIHsKICAgICBBU1NFUlQocmVzdWx0RWxlbWVudCk7
CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsK
QEAgLTEzMSw3ICsxMzEsMTUgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXQKICAgICAvLyB3aGls
ZSBkZXRhY2hpbmcuIFRoaXMgaXMgY292ZXJlZCBieSBhc3NlcnRpb25zLCBtb3ZpbmcgdGhpcyBk
b3duIHdvdWxkIGZpcmUgdGhlbS4KICAgICBpZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1w
dHkoKSkKICAgICAgICAgbV9hbmltYXRvci0+YW5pbVZhbFdpbGxDaGFuZ2UobV9hbmltYXRlZFBy
b3BlcnRpZXMpOwotICAgIG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUocGVyY2Vu
dGFnZSwgcmVwZWF0LCBtX2Zyb21UeXBlLCBtX3RvVHlwZSwgcmVzdWx0QW5pbWF0aW9uRWxlbWVu
dC0+bV9hbmltYXRlZFR5cGUpOworCisgICAgaWYgKHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLmlz
RW1wdHkoKSkgeworICAgICAgICBtX2FuaW1hdG9yLT5jYWxjdWxhdGVBbmltYXRlZFZhbHVlKHBl
cmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2Zyb21UeXBlLmdldCgpLCBtX3RvVHlwZS5nZXQoKSwg
bV90b1R5cGUuZ2V0KCksIHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQtPm1fYW5pbWF0ZWRUeXBlLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFZhbHVlcy1hbmltYXRpb24g
YWNjdW11bGF0ZXMgdXNpbmcgdGhlIGxhc3QgdmFsdWVzIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8g
dGhlIGVuZCBvZiBkdXJhdGlvbiB0aW1lLgorICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IHRv
QXRFbmRPZkR1cmF0aW9uVHlwZSA9IG1fYW5pbWF0b3ItPmNvbnN0cnVjdEZyb21TdHJpbmcodG9B
dEVuZE9mRHVyYXRpb25TdHJpbmcpOworICAgIG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fZnJvbVR5cGUuZ2V0KCksIG1fdG9UeXBl
LmdldCgpLCB0b0F0RW5kT2ZEdXJhdGlvblR5cGUuZ2V0KCksIHJlc3VsdEFuaW1hdGlvbkVsZW1l
bnQtPm1fYW5pbWF0ZWRUeXBlLmdldCgpKTsKIH0KIAogYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6
Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKaW5k
ZXggNjVmOWM5ZDNjYjA3MGU1Mjk0ZjM3NDdmNWMxNTc5OWRmZmM1OTU3MS4uNjE3MTg2ZWY3Nzli
NjViZGZjYmE1YTM5MTRmMDhjMGUyNDY3MjM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCByZXNldFRvQmFzZVZhbHVlKCk7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRU
b1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
OwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXQs
IFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwg
Y29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZywgU1ZHU01JTEVsZW1lbnQqIHJl
c3VsdEVsZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpOwog
ICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBZGRpdGl2
ZSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAKaW5kZXggMTA3ZDBmOTVjNWE3ZjE2ZDhhN2NmODQzNjNhMjZkMmQyZTgw
MDg3ZS4uOWNmZjNjMWYwMDA5ZTI2NDgxYjMwZTI3YzM2YWRjMzFkYTUyYjAxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YnVpbGRUcmFuc2Zvcm1Gb3JQ
cm9ncmVzcyhBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm8KICAgICB0cmFuc2Zvcm0tPnJvdGF0ZShh
bmdsZSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxF
bGVtZW50KikKK3ZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0cmlu
ZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KikKIHsKICAgICBTVkdF
bGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICgh
dGFyZ2V0RWxlbWVudCkKQEAgLTIyNywxMSArMjI3LDE1IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQKICAgICAgICAgdHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKIAogICAgIGlmIChhbmltYXRp
b25Nb2RlKCkgIT0gUGF0aEFuaW1hdGlvbikgeworICAgICAgICBGbG9hdFBvaW50IHRvUG9pbnRB
dEVuZE9mRHVyYXRpb24gPSBtX3RvUG9pbnQ7CisgICAgICAgIGlmIChpc0FjY3VtdWxhdGVkKCkg
JiYgcmVwZWF0Q291bnQgJiYgIXRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIHRvUG9pbnRBdEVu
ZE9mRHVyYXRpb24pOworCiAgICAgICAgIGZsb2F0IGFuaW1hdGVkWCA9IDA7Ci0gICAgICAgIGFu
aW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgbV9mcm9tUG9pbnQu
eCgpLCBtX3RvUG9pbnQueCgpLCBhbmltYXRlZFgpOworICAgICAgICBhbmltYXRlQWRkaXRpdmVO
dW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fZnJvbVBvaW50LngoKSwgbV90b1BvaW50
LngoKSwgdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbi54KCksIGFuaW1hdGVkWCk7CiAKICAgICAgICAg
ZmxvYXQgYW5pbWF0ZWRZID0gMDsKLSAgICAgICAgYW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNl
bnRhZ2UsIHJlcGVhdENvdW50LCBtX2Zyb21Qb2ludC55KCksIG1fdG9Qb2ludC55KCksIGFuaW1h
dGVkWSk7CisgICAgICAgIGFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRD
b3VudCwgbV9mcm9tUG9pbnQueSgpLCBtX3RvUG9pbnQueSgpLCB0b1BvaW50QXRFbmRPZkR1cmF0
aW9uLnkoKSwgYW5pbWF0ZWRZKTsKIAogICAgICAgICB0cmFuc2Zvcm0tPnRyYW5zbGF0ZShhbmlt
YXRlZFgsIGFuaW1hdGVkWSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKaW5kZXggMDQxZDg5ZTM2OTEyMmZmNjRiNTNjMDg5
ZWRmOGUwMzQ3ZjdmN2Q0Zi4uNzFlNGRlMWUyZGYzYTI3YjkzNzdiMzU1NTVlNzgyZTY3MTZkNzMy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRUb0Jhc2VWYWx1
ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJv
b2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiBieVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVudCog
cmVzdWx0RWxlbWVudCk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
ZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0cmluZyYgdG9B
dEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsKICAgICB2aXJ0dWFsIGZsb2F0
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCBQYXRoIGFuaW1hdGlvblBhdGgoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAppbmRleCA4YmY3NGFjNjExZWIyNjRl
ZTA0OGExMjlkNjBmMzQxNzY5N2JkNzJhLi4wOTFjM2M1OWZhMTljYzNmMjg2ZWM1M2QzY2RhOTMx
MzcxYmI1NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmds
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCkBAIC05
NCwxMyArOTQsMTQgQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFkZEFuaW1hdGVk
VHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXQKICAgICB0b0FuZ2xlLnNldFZh
bHVlKHRvQW5nbGUudmFsdWUoKSArIGZyb21BbmdsZS52YWx1ZSgpKTsKIH0KIAotdm9pZCBTVkdB
bmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBh
bmltYXRlZCkKK3ZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRl
ZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVu
ZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCiB7CiAgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogICAgIAog
ICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSBm
cm9tLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+
JiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0by0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAg
IHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1l
cmF0aW9uID0gdG9BdEVuZE9mRHVyYXRpb24tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKICAgICBw
YWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGFu
aW1hdGVkLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5h
ZGp1c3RGcm9tVG9WYWx1ZXM8cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+ID4oMCwgZnJvbUFuZ2xl
QW5kRW51bWVyYXRpb24sIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiwgYW5pbWF0ZWRBbmdsZUFuZEVu
dW1lcmF0aW9uLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIApAQCAtMTQyLDggKzE0
Myw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAgICAgYW5pbWF0ZWRBbmdsZUFuZEVudW1l
cmF0aW9uLnNlY29uZCA9IFNWR01hcmtlck9yaWVudEFuZ2xlOwogCiAgICAgU1ZHQW5nbGUmIGFu
aW1hdGVkU1ZHQW5nbGUgPSBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7CisgICAg
U1ZHQW5nbGUmIHRvQXRFbmRPZkR1cmF0aW9uU1ZHQW5nbGUgPSB0b0F0RW5kT2ZEdXJhdGlvbkFu
Z2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7CiAgICAgZmxvYXQgYW5pbWF0ZWRBbmdsZSA9IGFuaW1h
dGVkU1ZHQW5nbGUudmFsdWUoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRp
dGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUFuZ2xlQW5kRW51bWVyYXRp
b24uZmlyc3QudmFsdWUoKSwgdG9BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0LnZhbHVlKCksIGFu
aW1hdGVkQW5nbGUpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVt
YmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJz
dC52YWx1ZSgpLCB0b0FuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3QudmFsdWUoKSwgdG9BdEVuZE9m
RHVyYXRpb25TVkdBbmdsZS52YWx1ZSgpLCBhbmltYXRlZEFuZ2xlKTsKICAgICBhbmltYXRlZFNW
R0FuZ2xlLnNldFZhbHVlKGFuaW1hdGVkQW5nbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQW5nbGUuaAppbmRleCBmNmE5ZTNkZWFkZTg0ODFjNTIyMzZlMzFjMzNkZjVkMjc2YjYy
YmQ1Li41MDcyNGIwMzY0ZWYyN2FiMWUwNTE1MzdjMzgzYTQxMDE0NjE1YTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKQEAgLTUyLDggKzUyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAppbmRleCBiMGZkOWZjM2Fi
ZDU1NjRhNDg0MDAzNDVlY2Q2OTY1ZmI1MjE4NjViLi4wNzIzNjZiMWJkNGNmNWRjOTNiNmRmMzZl
Y2Q5YzU4OGMxODEwODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRCb29sZWFuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFu
LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjph
ZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit2b2lkIFNWR0FuaW1hdGVkQm9vbGVhbkFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCiB7CiAgICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCmluZGV4IDYyOWM0MDhkM2YxYzg2Mjg5ZjFjZjM1NTU0
YzhlYzlmNWNhNzdmMWQuLmQ2ZDQ4ZmFiNzI4ZDgzOTQ5YTZjOWVhODIwMmQ2NDQ3N2M2ZmJhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKQEAgLTUwLDggKzUwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1h
dGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZH
QW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
Q29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCmluZGV4
IDEyNTc3NGQ5NjRkYWM3MDAwYjEyZWMxY2Q5Y2E3MjU1ZDVkZWJmMDIuLjdlN2NkMTI2OWJiNjg5
OTkzMjNjM2JiYTI4MDVmODMwZTQ1NWZhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRDb2xvci5jcHAKQEAgLTYzLDEzICs2MywxNCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZy
b21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IHJldHVybiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoc3RyaW5nKTsKIH0KIAot
dm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBhbmltYXRlZCkKK3ZvaWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlw
ZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCiB7CiAgICAg
QVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OwogCiAgICAgQ29sb3ImIGZyb21Db2xvciA9IGZyb20tPmNvbG9yKCk7CiAgICAgQ29sb3ImIHRv
Q29sb3IgPSB0by0+Y29sb3IoKTsKKyAgICBDb2xvciYgdG9BdEVuZE9mRHVyYXRpb25Db2xvciA9
IHRvQXRFbmRPZkR1cmF0aW9uLT5jb2xvcigpOwogICAgIENvbG9yJiBhbmltYXRlZENvbG9yID0g
YW5pbWF0ZWQtPmNvbG9yKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9W
YWx1ZXM8Q29sb3I+KHBhcnNlQ29sb3JGcm9tU3RyaW5nLCBmcm9tQ29sb3IsIHRvQ29sb3IsIGFu
aW1hdGVkQ29sb3IsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwogCkBAIC04MCwxNiAr
ODEsMTYgQEAgdm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICAgICAgYWRqdXN0Rm9yQ3VycmVu
dENvbG9yKG1fY29udGV4dEVsZW1lbnQsIHRvQ29sb3IpOwogCiAgICAgZmxvYXQgYW5pbWF0ZWRS
ZWQgPSBhbmltYXRlZENvbG9yLnJlZCgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3IucmVkKCks
IHRvQ29sb3IucmVkKCksIGFuaW1hdGVkUmVkKTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFu
aW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUNvbG9yLnJl
ZCgpLCB0b0NvbG9yLnJlZCgpLCB0b0F0RW5kT2ZEdXJhdGlvbkNvbG9yLnJlZCgpLCBhbmltYXRl
ZFJlZCk7CiAKICAgICBmbG9hdCBhbmltYXRlZEdyZWVuID0gYW5pbWF0ZWRDb2xvci5ncmVlbigp
OwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRh
Z2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3IuZ3JlZW4oKSwgdG9Db2xvci5ncmVlbigpLCBhbmlt
YXRlZEdyZWVuKTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJl
cihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUNvbG9yLmdyZWVuKCksIHRvQ29sb3IuZ3Jl
ZW4oKSwgdG9BdEVuZE9mRHVyYXRpb25Db2xvci5ncmVlbigpLCBhbmltYXRlZEdyZWVuKTsKIAog
ICAgIGZsb2F0IGFuaW1hdGVkQmx1ZSA9IGFuaW1hdGVkQ29sb3IuYmx1ZSgpOwotICAgIG1fYW5p
bWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBmcm9tQ29sb3IuYmx1ZSgpLCB0b0NvbG9yLmJsdWUoKSwgYW5pbWF0ZWRCbHVlKTsKKyAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCBy
ZXBlYXRDb3VudCwgZnJvbUNvbG9yLmJsdWUoKSwgdG9Db2xvci5ibHVlKCksIHRvQXRFbmRPZkR1
cmF0aW9uQ29sb3IuYmx1ZSgpLCBhbmltYXRlZEJsdWUpOwogCiAgICAgZmxvYXQgYW5pbWF0ZWRB
bHBoYSA9IGFuaW1hdGVkQ29sb3IuYWxwaGEoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFu
aW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUNvbG9yLmFs
cGhhKCksIHRvQ29sb3IuYWxwaGEoKSwgYW5pbWF0ZWRBbHBoYSk7CisgICAgbV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZy
b21Db2xvci5hbHBoYSgpLCB0b0NvbG9yLmFscGhhKCksIHRvQXRFbmRPZkR1cmF0aW9uQ29sb3Iu
YWxwaGEoKSwgYW5pbWF0ZWRBbHBoYSk7CiAKICAgICBhbmltYXRlZENvbG9yID0gQ29sb3JEaXN0
YW5jZTo6Y2xhbXBDb2xvcihzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihhbmltYXRlZFJlZCkpLCBz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihhbmltYXRlZEdyZWVuKSksIHN0YXRpY19jYXN0PGludD4o
cm91bmRmKGFuaW1hdGVkQmx1ZSkpLCBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihhbmltYXRlZEFs
cGhhKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29s
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmgKaW5kZXggYTUwYjBi
Mjk0OTI1MjVlZmIzMWM2NzMzMzcxZGVlYzU2NDY2MDgzYS4uYmI4YjJmZGQ1MGFkNDBiMDM3NTVj
ZmUxNjM3ZWRiMjA2ZDc2OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5o
CkBAIC00MCw4ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENo
YW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5p
bWF0ZWRWYWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAKaW5kZXggNDRj
YzQ5OTg3NWE0ZDIxMDliNzFkZmNmNDVjYzYwNmUwMmNjNDE3MC4uYzViNmQzZjdlMDAzZDdkNGY5
YjA3ZjRhMGJmM2I2OWM4NzdjZDc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkRW51bWVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit2b2lk
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmlt
YXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVk
KQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRl
eHRFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5o
CmluZGV4IDdlYTc0M2ExMGZlYmExMTc5OTE3OTNkNTAyZGIyNGQ4YTA2MjlkODkuLjg0NDc2MDIy
YmJkN2MzMWIyN2FmZmFlNzdkYjcyZjQ2ZDRhYTM3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaApAQCAtNDksOCArNDksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmlt
YXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBT
VkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwCmluZGV4IDZlMTM0MDdiYzNm
YmI0ZDc1MWUyOTIzMzEzM2EzZDVkMGIwNjhhNmQuLmNkMzZiNjdkYzQ5NGQ1Yzg4ZDE0NjIyNmQ0
MjY2NjVlNDdlMzY3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIu
Y3BwCkBAIC03MywyNCArNzMsMjUgQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6
YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW0KICAgICB0by0+
aW50ZWdlcigpICs9IGZyb20tPmludGVnZXIoKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZEludGVn
ZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBpbnQgZnJvbUludGVnZXIsIGludCB0b0ludGVnZXIsIGludCYgYW5pbWF0ZWRJbnRlZ2VyKQor
dm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2Vy
KFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50LCBpbnQgZnJvbUludGVnZXIsIGludCB0b0ludGVnZXIsIGlu
dCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXIsIGludCYgYW5pbWF0ZWRJbnRlZ2VyKQogewogICAg
IGZsb2F0IGFuaW1hdGVkTnVtYmVyID0gYW5pbWF0ZWRJbnRlZ2VyOwotICAgIGFuaW1hdGlvbkVs
ZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJv
bUludGVnZXIsIHRvSW50ZWdlciwgYW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUlu
dGVnZXIsIHRvSW50ZWdlciwgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyLCBhbmltYXRlZE51bWJl
cik7CiAgICAgYW5pbWF0ZWRJbnRlZ2VyID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoYW5pbWF0
ZWROdW1iZXIpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQordm9pZCBTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5
cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5
cGUqIGFuaW1hdGVkKQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFT
U0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIGludCYgZnJvbUludGVnZXIgPSBmcm9tLT5p
bnRlZ2VyKCk7CiAgICAgaW50JiB0b0ludGVnZXIgPSB0by0+aW50ZWdlcigpOworICAgIGludCYg
dG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyID0gdG9BdEVuZE9mRHVyYXRpb24tPmludGVnZXIoKTsK
ICAgICBpbnQmIGFuaW1hdGVkSW50ZWdlciA9IGFuaW1hdGVkLT5pbnRlZ2VyKCk7CiAgICAgbV9h
bmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8aW50PigwLCBmcm9tSW50ZWdlciwg
dG9JbnRlZ2VyLCBhbmltYXRlZEludGVnZXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQp
OwogCi0gICAgY2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKG1fYW5pbWF0aW9uRWxlbWVudCwgcGVy
Y2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21JbnRlZ2VyLCB0b0ludGVnZXIsIGFuaW1hdGVkSW50
ZWdlcik7CisgICAgY2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKG1fYW5pbWF0aW9uRWxlbWVudCwg
cGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21JbnRlZ2VyLCB0b0ludGVnZXIsIHRvQXRFbmRP
ZkR1cmF0aW9uSW50ZWdlciwgYW5pbWF0ZWRJbnRlZ2VyKTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuaAppbmRleCAzZThiNDM4ZDUxMDg5Zjk3MTA1MzAxOWY2ZTQzNjYyNjkyZTcyZDlh
Li4wYjU1YzEwZTkzYmE3ODM4ZGJkYjNjNmFkYmMxZDM1NDU1NjJmNDQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxl
bWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKCkgeyB9CiAK
LSAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVBbmltYXRlZEludGVnZXIoU1ZHQW5pbWF0aW9uRWxl
bWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBpbnQgZnJvbUlu
dGVnZXIsIGludCB0b0ludGVnZXIsIGludCYgYW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVBbmltYXRlZEludGVnZXIoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBpbnQgZnJvbUludGVnZXIsIGludCB0
b0ludGVnZXIsIGludCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXIsIGludCYgYW5pbWF0ZWRJbnRl
Z2VyKTsKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpOwpAQCAtNTYsOCArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUq
LCBTVkdBbmltYXRlZFR5cGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJv
bVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmlt
YXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqKTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIu
Y3BwCmluZGV4IDdkMmRmZDMyYjUxZGQ4ZTc4NjU3ZDRlODFjNDBjOGRlYmM0N2UzZWIuLmUxM2Ix
Y2Y2MzkyYjJlOGFjYmQzYTdhOGY2ZjUyYjdjNzYxNjg2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCkBA
IC04NiwxOCArODYsMTkgQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJB
bmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUKICAgICB0b0ludGVnZXJQ
YWlyLnNlY29uZCArPSBmcm9tSW50ZWdlclBhaXIuc2Vjb25kOwogfQogCi12b2lkIFNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlw
ZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlw
ZSogYW5pbWF0ZWQpCiB7CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNT
RVJUKG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgcGFpcjxpbnQsIGludD4mIGZyb21JbnRlZ2Vy
UGFpciA9IGZyb20tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKICAgICBwYWlyPGludCwgaW50
PiYgdG9JbnRlZ2VyUGFpciA9IHRvLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgcGFp
cjxpbnQsIGludD4mIHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlclBhaXIgPSB0b0F0RW5kT2ZEdXJh
dGlvbi0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwogICAgIHBhaXI8aW50LCBpbnQ+JiBhbmlt
YXRlZEludGVnZXJQYWlyID0gYW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKICAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxwYWlyPGludCwgaW50PiA+
KDAsIGZyb21JbnRlZ2VyUGFpciwgdG9JbnRlZ2VyUGFpciwgYW5pbWF0ZWRJbnRlZ2VyUGFpciwg
cGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKG1fYW5pbWF0aW9uRWxlbWVudCwgcGVy
Y2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21JbnRlZ2VyUGFpci5maXJzdCwgdG9JbnRlZ2VyUGFp
ci5maXJzdCwgYW5pbWF0ZWRJbnRlZ2VyUGFpci5maXJzdCk7Ci0gICAgU1ZHQW5pbWF0ZWRJbnRl
Z2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkSW50ZWdlcihtX2FuaW1hdGlvbkVsZW1lbnQs
IHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tSW50ZWdlclBhaXIuc2Vjb25kLCB0b0ludGVn
ZXJQYWlyLnNlY29uZCwgYW5pbWF0ZWRJbnRlZ2VyUGFpci5zZWNvbmQpOworICAgIFNWR0FuaW1h
dGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZEludGVnZXIobV9hbmltYXRpb25F
bGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUludGVnZXJQYWlyLmZpcnN0LCB0
b0ludGVnZXJQYWlyLmZpcnN0LCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXJQYWlyLmZpcnN0LCBh
bmltYXRlZEludGVnZXJQYWlyLmZpcnN0KTsKKyAgICBTVkdBbmltYXRlZEludGVnZXJBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKG1fYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFn
ZSwgcmVwZWF0Q291bnQsIGZyb21JbnRlZ2VyUGFpci5zZWNvbmQsIHRvSW50ZWdlclBhaXIuc2Vj
b25kLCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXJQYWlyLnNlY29uZCwgYW5pbWF0ZWRJbnRlZ2Vy
UGFpci5zZWNvbmQpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIuaAppbmRleCBjZWQ0NDUyNjBkZTI4NTJkOGZhZGNmMzExNGYxNzU1MzlkZDZj
ZGRiLi5kODEwYmQzOGYzYzYwM2JmOThlYTk2OTNmYzc2MDMzZGNhMWMxYjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdl
ci5oCkBAIC00MCw4ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERp
ZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5p
bWF0ZWRWYWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRMZW5ndGguY3BwCmluZGV4IGUzNGY0OGM3M2ZiOTQ5YzZlNGU4NzRkNjM2NWY4ODlmNTFm
MjU4ZjIuLmNhNmJhZTgzZGE4N2NmN2Y5MGYxYmFjNzlhOGMwODRkNGY5NTZmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtOTEsMjAgKzkxLDIxIEBAIHN0
YXRpYyBTVkdMZW5ndGggcGFyc2VMZW5ndGhGcm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIGNvCiAgICAgcmV0dXJuIHNoYXJlZFNWR0xlbmd0aChTVkdMZW5n
dGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhbmltYXRpb25FbGVtZW50
LT5hdHRyaWJ1dGVOYW1lKCkpLCBzdHJpbmcpOwogfQogCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3Ro
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKK3Zv
aWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9t
LCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9u
LCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVs
ZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIFNWR0xlbmd0aCYg
ZnJvbVNWR0xlbmd0aCA9IGZyb20tPmxlbmd0aCgpOwogICAgIFNWR0xlbmd0aCYgdG9TVkdMZW5n
dGggPSB0by0+bGVuZ3RoKCk7CisgICAgU1ZHTGVuZ3RoJiB0b0F0RW5kT2ZEdXJhdGlvblNWR0xl
bmd0aCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5sZW5ndGgoKTsKICAgICBTVkdMZW5ndGgmIGFuaW1h
dGVkU1ZHTGVuZ3RoID0gYW5pbWF0ZWQtPmxlbmd0aCgpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVu
dC0+YWRqdXN0RnJvbVRvVmFsdWVzPFNWR0xlbmd0aD4ocGFyc2VMZW5ndGhGcm9tU3RyaW5nLCBm
cm9tU1ZHTGVuZ3RoLCB0b1NWR0xlbmd0aCwgYW5pbWF0ZWRTVkdMZW5ndGgsIHBlcmNlbnRhZ2Us
IG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0
KG1fY29udGV4dEVsZW1lbnQpOwogICAgIGZsb2F0IGFuaW1hdGVkTnVtYmVyID0gYW5pbWF0ZWRT
VkdMZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlw
ZSA9IHBlcmNlbnRhZ2UgPCAwLjUgPyBmcm9tU1ZHTGVuZ3RoLnVuaXRUeXBlKCkgOiB0b1NWR0xl
bmd0aC51bml0VHlwZSgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZl
TnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0
aENvbnRleHQpLCB0b1NWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgYW5pbWF0ZWROdW1i
ZXIpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNl
bnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpLCB0
b1NWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgdG9BdEVuZE9mRHVyYXRpb25TVkdMZW5n
dGgudmFsdWUobGVuZ3RoQ29udGV4dCksIGFuaW1hdGVkTnVtYmVyKTsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGFuaW1hdGVkU1ZHTGVuZ3RoLnNldFZhbHVlKGxlbmd0aENvbnRl
eHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBlLCBlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCmluZGV4IDE1MTA4Mjk1ZjBlMGRmMGYyZmFkY2Yy
Nzc5N2M0NWE0MTJmODM4OGUuLjYyYTExMTk5NzdkMDQ1NTQxZjg5YWNiNmY1MjRiYjk3ZTMwNDc0
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCkBAIC01MSw4ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRBbmlt
YXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1
YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CisgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgZmxvYXQgY2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZExlbmd0aExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVu
Z3RoTGlzdC5jcHAKaW5kZXggZWE3YzZiODNkMzNhYjhmNjkzMDNkZjllZTY3YjA2MTNkYmM5YTMx
MS4uZGE5NmFjZTMwY2JlZGJkM2U4ZmQzZTZmOTRkMTQ2MDhkZjNkMzc5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKQEAgLTkyLDEzICs5MiwxNCBA
QCBzdGF0aWMgU1ZHTGVuZ3RoTGlzdCBwYXJzZUxlbmd0aExpc3RGcm9tU3RyaW5nKFNWR0FuaW1h
dGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZQogICAgIHJldHVybiBsZW5ndGhMaXN0OwogfQogCi12
b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9y
OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVh
dENvdW50LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0Fu
aW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQp
CiB7CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOwogCiAgICAgU1ZHTGVuZ3RoTGlzdCYgZnJvbUxlbmd0aExpc3QgPSBmcm9tLT5s
ZW5ndGhMaXN0KCk7CiAgICAgU1ZHTGVuZ3RoTGlzdCYgdG9MZW5ndGhMaXN0ID0gdG8tPmxlbmd0
aExpc3QoKTsKKyAgICBTVkdMZW5ndGhMaXN0JiB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3Qg
PSB0b0F0RW5kT2ZEdXJhdGlvbi0+bGVuZ3RoTGlzdCgpOwogICAgIFNWR0xlbmd0aExpc3QmIGFu
aW1hdGVkTGVuZ3RoTGlzdCA9IGFuaW1hdGVkLT5sZW5ndGhMaXN0KCk7CiAgICAgaWYgKCFtX2Fu
aW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTGVuZ3RoTGlzdD4ocGFy
c2VMZW5ndGhMaXN0RnJvbVN0cmluZywgZnJvbUxlbmd0aExpc3QsIHRvTGVuZ3RoTGlzdCwgYW5p
bWF0ZWRMZW5ndGhMaXN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5p
bWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zCiAgICAg
ICAgICAgICBlZmZlY3RpdmVGcm9tID0gZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29u
dGV4dCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVB
ZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbSwgdG9M
ZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBhbmltYXRlZE51bWJlcik7CisgICAg
ICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2Us
IHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLCB0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3Ro
Q29udGV4dCksIHRvQXRFbmRPZkR1cmF0aW9uTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250
ZXh0KSwgYW5pbWF0ZWROdW1iZXIpOwogICAgICAgICBhbmltYXRlZExlbmd0aExpc3RbaV0uc2V0
VmFsdWUobGVuZ3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5
cGUsIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCmluZGV4IDJmMTc0YWNjNjRiNDBjZmU0ZmUzOTM3MTky
OTlhNDRhMGM2MDU5NjguLjg2ZmZhZmU3ZDIyZTc0NDliNGMzNzM4M2VhMWJiODliNDEwNDhlY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKQEAgLTUxLDgg
KzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFk
ZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCBmbG9h
dCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdG9TdHJpbmcpOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCmluZGV4IGZiZTU3MDZiMDIwOTljMTlkYWY5NWRiZTQxZWIzZjJiNjdmMDdj
NGYuLmM3NzVhNDRjZWZlMjkyOTJjYmQwYTk4ZTIyMzc4YjUxZjhhODQ1ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcApAQCAtODMsMTcgKzgzLDE4IEBAIHN0YXRp
YyBmbG9hdCBwYXJzZU51bWJlckZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBudW1iZXI7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1h
dGVkKQordm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9m
RHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCiB7CiAgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgZmxv
YXQmIGZyb21OdW1iZXIgPSBmcm9tLT5udW1iZXIoKTsKICAgICBmbG9hdCYgdG9OdW1iZXIgPSB0
by0+bnVtYmVyKCk7CisgICAgZmxvYXQmIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyID0gdG9BdEVu
ZE9mRHVyYXRpb24tPm51bWJlcigpOwogICAgIGZsb2F0JiBhbmltYXRlZE51bWJlciA9IGFuaW1h
dGVkLT5udW1iZXIoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVl
czxmbG9hdD4ocGFyc2VOdW1iZXJGcm9tU3RyaW5nLCBmcm9tTnVtYmVyLCB0b051bWJlciwgYW5p
bWF0ZWROdW1iZXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgbV9hbmlt
YXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291
bnQsIGZyb21OdW1iZXIsIHRvTnVtYmVyLCBhbmltYXRlZE51bWJlcik7CisgICAgbV9hbmltYXRp
b25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQs
IGZyb21OdW1iZXIsIHRvTnVtYmVyLCB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlciwgYW5pbWF0ZWRO
dW1iZXIpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVE
aXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCmluZGV4IDg5YWU5YTcxNmIyNTRh
MGVmMjA5ZTRiMzliOGI2NWVmYzhjMjkxNjEuLjk0MmQ2NDFjMzlkODZhZDA2MTVlYmM4OTIzNThi
NmIwMWYwNzVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCkBAIC01
NCw4ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwot
ICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1
ZSk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwg
ZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyTGlzdC5jcHAKaW5kZXggZmEyMzFiZGIzYWJjZGRmMWQzNTJiMjI1Y2I5YTcyOTUwYjA2
ZDQ0NS4uMmYzZTNhYzYzZWNkNGM2OGM4ZDE5NjE0NTU5MTJlOGEyMWY1NmUzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKQEAgLTgwLDEzICs4MCwx
NCBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVz
KFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQQogICAgICAgICB0b051bWJlckxpc3RbaV0gKz0g
ZnJvbU51bWJlckxpc3RbaV07CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0
b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKK3ZvaWQgU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwg
U1ZHQW5pbWF0ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwg
U1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKIHsKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVt
ZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBTVkdOdW1iZXJMaXN0
JiBmcm9tTnVtYmVyTGlzdCA9IGZyb20tPm51bWJlckxpc3QoKTsKICAgICBTVkdOdW1iZXJMaXN0
JiB0b051bWJlckxpc3QgPSB0by0+bnVtYmVyTGlzdCgpOworICAgIFNWR051bWJlckxpc3QmIHRv
QXRFbmRPZkR1cmF0aW9uTnVtYmVyTGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5udW1iZXJMaXN0
KCk7CiAgICAgU1ZHTnVtYmVyTGlzdCYgYW5pbWF0ZWROdW1iZXJMaXN0ID0gYW5pbWF0ZWQtPm51
bWJlckxpc3QoKTsKICAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlz
dFZhbHVlczxTVkdOdW1iZXJMaXN0PigwLCBmcm9tTnVtYmVyTGlzdCwgdG9OdW1iZXJMaXN0LCBh
bmltYXRlZE51bWJlckxpc3QsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5p
bWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zCiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9OdW1iZXJMaXN0U2l6ZTsgKytpKSB7CiAgICAg
ICAgIGZsb2F0IGVmZmVjdGl2ZUZyb20gPSBmcm9tTnVtYmVyTGlzdFNpemUgPyBmcm9tTnVtYmVy
TGlzdFtpXSA6IDA7Ci0gICAgICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZl
TnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLCB0b051bWJlckxp
c3RbaV0sIGFuaW1hdGVkTnVtYmVyTGlzdFtpXSk7CisgICAgICAgIG1fYW5pbWF0aW9uRWxlbWVu
dC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZlY3Rp
dmVGcm9tLCB0b051bWJlckxpc3RbaV0sIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyTGlzdFtpXSwg
YW5pbWF0ZWROdW1iZXJMaXN0W2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlckxpc3QuaAppbmRleCAyN2E0YjY1Yjg1ZDE2MTQxMmE0ZDJmYjA3ZDJi
ZDIzZDczNjVlN2NhLi5iNjQ0NTk5ZmQ0ZDkxOTkxYzMzN2RlNWVlZmVmMmMwMDc0MTY4YTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCkBAIC01MSw4ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRB
bmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZp
cnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSos
IFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgZmxvYXQg
Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcAppbmRleCBjMGI1ZDdiNzBkYjM5NzNiNmIxNDYx
M2I0NjQ3YTBkYmUwOGRiMzY5Li5mMzRkNzYzYTg4MzlkY2NjYjdiMmQ3NjE5Y2Y1MGE0NWYwYTIw
YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIuY3BwCkBAIC04MywxOCArODMsMTkgQEAgdm9pZCBTVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRU
eXBlKgogICAgIHRvTnVtYmVyUGFpci5zZWNvbmQgKz0gZnJvbU51bWJlclBhaXIuc2Vjb25kOwog
fQogCi12b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQordm9pZCBTVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwg
U1ZHQW5pbWF0ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwg
U1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKIHsKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVt
ZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBwYWlyPGZsb2F0LCBm
bG9hdD4mIGZyb21OdW1iZXJQYWlyID0gZnJvbS0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKICAg
ICBwYWlyPGZsb2F0LCBmbG9hdD4mIHRvTnVtYmVyUGFpciA9IHRvLT5udW1iZXJPcHRpb25hbE51
bWJlcigpOworICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJQ
YWlyID0gdG9BdEVuZE9mRHVyYXRpb24tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CiAgICAgcGFp
cjxmbG9hdCwgZmxvYXQ+JiBhbmltYXRlZE51bWJlclBhaXIgPSBhbmltYXRlZC0+bnVtYmVyT3B0
aW9uYWxOdW1iZXIoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVl
czxwYWlyPGZsb2F0LCBmbG9hdD4gPigwLCBmcm9tTnVtYmVyUGFpciwgdG9OdW1iZXJQYWlyLCBh
bmltYXRlZE51bWJlclBhaXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIGZyb21OdW1iZXJQYWlyLmZpcnN0LCB0b051bWJlclBhaXIuZmlyc3QsIGFuaW1h
dGVkTnVtYmVyUGFpci5maXJzdCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRk
aXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21OdW1iZXJQYWlyLnNlY29u
ZCwgdG9OdW1iZXJQYWlyLnNlY29uZCwgYW5pbWF0ZWROdW1iZXJQYWlyLnNlY29uZCk7CisgICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIGZyb21OdW1iZXJQYWlyLmZpcnN0LCB0b051bWJlclBhaXIuZmlyc3QsIHRvQXRF
bmRPZkR1cmF0aW9uTnVtYmVyUGFpci5maXJzdCwgYW5pbWF0ZWROdW1iZXJQYWlyLmZpcnN0KTsK
KyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdl
LCByZXBlYXRDb3VudCwgZnJvbU51bWJlclBhaXIuc2Vjb25kLCB0b051bWJlclBhaXIuc2Vjb25k
LCB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlclBhaXIuc2Vjb25kLCBhbmltYXRlZE51bWJlclBhaXIu
c2Vjb25kKTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1h
dG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmgKaW5kZXggYWRiNGUzNDFjYTBiMWRiN2RmMTlmYWZjOTE3Njg2NDVkOGRjNzMxYi4uNjQ3MzRi
YzgxODk2YmI0YzE4ODg4ZGMwODIwNzE5ZWY0OGI2ZDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oCkBAIC00MCw4ICs0
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRB
bmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZp
cnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSos
IFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgZmxvYXQg
Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKaW5k
ZXggMDI2YjUyYWU5ODAwZDRjYTBjYTMyNzYzOGFkMWUxNjI1ZDUwNGViYi4uMWMxODY1YWZiN2Y1
MDEyM2Q5ZWM1NjJkMTg1NDI4ZTk1NjFhMzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUGF0aC5jcHAKQEAgLTEwMiwxOSArMTAyLDE1IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5p
bWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRl
CiAgICAgYWRkVG9TVkdQYXRoQnl0ZVN0cmVhbSh0b1BhdGgsIGZyb21QYXRoKTsKIH0KIAotdm9p
ZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGFuaW1hdGVkKQordm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5p
bWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRv
QXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQogewogICAgIEFTU0VS
VChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAog
ICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBmcm9tUGF0aCA9IGZyb20tPnBhdGgoKTsKLSAgICBBU1NF
UlQoZnJvbVBhdGgpOwotCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIHRvUGF0aCA9IHRvLT5wYXRo
KCk7Ci0gICAgQVNTRVJUKHRvUGF0aCk7Ci0KKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSogdG9BdEVu
ZE9mRHVyYXRpb25QYXRoID0gdG9BdEVuZE9mRHVyYXRpb24tPnBhdGgoKTsKICAgICBTVkdQYXRo
Qnl0ZVN0cmVhbSogYW5pbWF0ZWRQYXRoID0gYW5pbWF0ZWQtPnBhdGgoKTsKLSAgICBBU1NFUlQo
YW5pbWF0ZWRQYXRoKTsKIAogICAgIC8vIFBhc3MgZmFsc2UgdG8gJ3Jlc2l6ZUFuaW1hdGVkTGlz
dElmTmVlZGVkJyBoZXJlLCBhcyB0aGUgcGF0aCBhbmltYXRpb24gaXMgbm90IGEgcmVndWxhciBW
ZWN0b3I8U1ZHWFhYPiB0eXBlLCBidXQgYSBTVkdQYXRoQnl0ZVN0cmVhbSwgdGhhdCB3b3JrcyBk
aWZmZXJlbnRseS4KICAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlz
dFZhbHVlczxTVkdQYXRoQnl0ZVN0cmVhbT4oMCwgKmZyb21QYXRoLCAqdG9QYXRoLCAqYW5pbWF0
ZWRQYXRoLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50LCBmYWxzZSkpCkBAIC0xMzMsNyAr
MTI5LDcgQEAgdm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogCiAgICAgLy8gSGFuZGxlIGFjY3VtdWxh
dGU9J3N1bScuCiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYm
IHJlcGVhdENvdW50KQotICAgICAgICBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKGFuaW1hdGVkUGF0
aCwgdG9QYXRoLCByZXBlYXRDb3VudCk7CisgICAgICAgIGFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0o
YW5pbWF0ZWRQYXRoLCB0b0F0RW5kT2ZEdXJhdGlvblBhdGgsIHJlcGVhdENvdW50KTsKIH0KICAg
IAogZmxvYXQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmgK
aW5kZXggNDc0YzFlZmU1ZjRiY2M5Y2U4ODViNWZmZDJiMDQ5NDgwMTc3NWVmZC4uYWM3NzlkYTQ5
YTAzOTZmYTg3Mzg3Nzc2YjBkZjRhYTFjNzA4YmNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGguaApAQCAtNDAsOCArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFu
aW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUq
KTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAppbmRleCA1Nzc1N2IxNjQ0NmI0YmJhOWEwNDAz
ZTJjMzI5NGIwY2YwNWU1MDZjLi5jMjY0OWZjM2Q1YjUxYTZmMWJiODBhNzBlMmU3MzA3MDM4N2Rh
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKQEAg
LTgxLDEzICs4MSwxNCBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFkZEFu
aW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbgogICAgICAgICB0b1BvaW50
TGlzdFtpXSArPSBmcm9tUG9pbnRMaXN0W2ldOwogfQogCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkK
K3ZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBl
KiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1
cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQogewogICAgIEFTU0VSVChtX2FuaW1h
dGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIFNWR1Bv
aW50TGlzdCYgZnJvbVBvaW50TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOwogICAgIFNWR1BvaW50
TGlzdCYgdG9Qb2ludExpc3QgPSB0by0+cG9pbnRMaXN0KCk7CisgICAgU1ZHUG9pbnRMaXN0JiB0
b0F0RW5kT2ZEdXJhdGlvblBvaW50TGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5wb2ludExpc3Qo
KTsKICAgICBTVkdQb2ludExpc3QmIGFuaW1hdGVkUG9pbnRMaXN0ID0gYW5pbWF0ZWQtPnBvaW50
TGlzdCgpOwogICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFs
dWVzPFNWR1BvaW50TGlzdD4oMCwgZnJvbVBvaW50TGlzdCwgdG9Qb2ludExpc3QsIGFuaW1hdGVk
UG9pbnRMaXN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTAyLDggKzEwMyw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpCiAKICAgICAgICAg
ZmxvYXQgYW5pbWF0ZWRYID0gYW5pbWF0ZWRQb2ludExpc3RbaV0ueCgpOwogICAgICAgICBmbG9h
dCBhbmltYXRlZFkgPSBhbmltYXRlZFBvaW50TGlzdFtpXS55KCk7Ci0gICAgICAgIG1fYW5pbWF0
aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50
LCBlZmZlY3RpdmVGcm9tLngoKSwgdG9Qb2ludExpc3RbaV0ueCgpLCBhbmltYXRlZFgpOwotICAg
ICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdl
LCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbS55KCksIHRvUG9pbnRMaXN0W2ldLnkoKSwgYW5p
bWF0ZWRZKTsKKyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1i
ZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueCgpLCB0b1BvaW50TGlz
dFtpXS54KCksIHRvQXRFbmRPZkR1cmF0aW9uUG9pbnRMaXN0W2ldLngoKSwgYW5pbWF0ZWRYKTsK
KyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2Vu
dGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueSgpLCB0b1BvaW50TGlzdFtpXS55KCks
IHRvQXRFbmRPZkR1cmF0aW9uUG9pbnRMaXN0W2ldLnkoKSwgYW5pbWF0ZWRZKTsKICAgICAgICAg
YW5pbWF0ZWRQb2ludExpc3RbaV0gPSBGbG9hdFBvaW50KGFuaW1hdGVkWCwgYW5pbWF0ZWRZKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2lu
dExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCmluZGV4
IDkwNjkyZjE4NTNmOWMwYjYyZDBkMjczYWFhMDY0ZjgzOGNmM2NmODguLjRjOGIxODVhYzBiNDY5
YmJhMjJmZDI4MTZjZTk0NzA1YTYyYTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5oCkBAIC00NCw4ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSos
IFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKaW5k
ZXggNGY1YmIxOWRjMDYwMTU0YjRhNTU0MTNmOWMzNWIxMDg2ZDljYTUzOS4uNzNhN2YyNzBjOTNk
MmZhNWQ3ZGZjZmQ3ZmVmOGNlNTJkZDViMTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKQEAgLTY4LDcgKzY4LDcg
QEAgdm9pZCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6YWRkQW5pbWF0
ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit2b2lkIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
b0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkLCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCiB7CiAgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oCmluZGV4
IGIzNGYxYjUyYmYwNzIwYzY0MjhiMjZiMWY3ODBlNDNjODg1NzI0MWQuLjVjOWI3NWU0OTY4MjE4
NDI2MGVhOTBmZmI3M2Q4MmIzMzMwYzlmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKQEAgLTUxLDggKzUxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlw
ZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFs
dWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0
ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVE
aXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcAppbmRleCA4NjQzNGUz
ZTY2ZmE5MmM1OWJjZDBkMzA0YjY5MjgwMDUyM2Q1MjcwLi5hZDQyODZkYmVjYWY4NTczNjVjOWNk
ZjMyMmEzZjZiMTZkYTJlYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmNw
cApAQCAtNzIsMTMgKzcyLDE0IEBAIHZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmFkZEFu
aW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlCiAgICAgdG8tPnJl
Y3QoKSArPSBmcm9tLT5yZWN0KCk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKK3ZvaWQgU1ZHQW5p
bWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0
ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0
ZWRUeXBlKiBhbmltYXRlZCkKIHsKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAg
ICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBGbG9hdFJlY3QmIGZyb21SZWN0ID0g
ZnJvbS0+cmVjdCgpOwogICAgIEZsb2F0UmVjdCYgdG9SZWN0ID0gdG8tPnJlY3QoKTsKKyAgICBG
bG9hdFJlY3QmIHRvQXRFbmRPZkR1cmF0aW9uUmVjdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5yZWN0
KCk7CiAgICAgRmxvYXRSZWN0JiBhbmltYXRlZFJlY3QgPSBhbmltYXRlZC0+cmVjdCgpOwogICAg
IG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVzPEZsb2F0UmVjdD4oMCwgZnJv
bVJlY3QsIHRvUmVjdCwgYW5pbWF0ZWRSZWN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50
KTsKIApAQCAtODYsMTAgKzg3LDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICBmbG9h
dCBhbmltYXRlZFkgPSBhbmltYXRlZFJlY3QueSgpOwogICAgIGZsb2F0IGFuaW1hdGVkV2lkdGgg
PSBhbmltYXRlZFJlY3Qud2lkdGgoKTsKICAgICBmbG9hdCBhbmltYXRlZEhlaWdodCA9IGFuaW1h
dGVkUmVjdC5oZWlnaHQoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2
ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbVJlY3QueCgpLCB0b1JlY3QueCgp
LCBhbmltYXRlZFgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVt
YmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tUmVjdC55KCksIHRvUmVjdC55KCksIGFu
aW1hdGVkWSk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIo
cGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21SZWN0LndpZHRoKCksIHRvUmVjdC53aWR0aCgp
LCBhbmltYXRlZFdpZHRoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2
ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbVJlY3QuaGVpZ2h0KCksIHRvUmVj
dC5oZWlnaHQoKSwgYW5pbWF0ZWRIZWlnaHQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tUmVjdC54KCks
IHRvUmVjdC54KCksIHRvQXRFbmRPZkR1cmF0aW9uUmVjdC54KCksIGFuaW1hdGVkWCk7CisgICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIGZyb21SZWN0LnkoKSwgdG9SZWN0LnkoKSwgdG9BdEVuZE9mRHVyYXRpb25SZWN0
LnkoKSwgYW5pbWF0ZWRZKTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2
ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbVJlY3Qud2lkdGgoKSwgdG9SZWN0
LndpZHRoKCksIHRvQXRFbmRPZkR1cmF0aW9uUmVjdC53aWR0aCgpLCBhbmltYXRlZFdpZHRoKTsK
KyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdl
LCByZXBlYXRDb3VudCwgZnJvbVJlY3QuaGVpZ2h0KCksIHRvUmVjdC5oZWlnaHQoKSwgdG9BdEVu
ZE9mRHVyYXRpb25SZWN0LmhlaWdodCgpLCBhbmltYXRlZEhlaWdodCk7CiAKICAgICBhbmltYXRl
ZFJlY3QgPSBGbG9hdFJlY3QoYW5pbWF0ZWRYLCBhbmltYXRlZFksIGFuaW1hdGVkV2lkdGgsIGFu
aW1hdGVkSGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAppbmRleCBh
MjdkOTE1MTE3NjQwYTZhZjRmOTBmZGE4NWRhNzA2ZGRhZGRkOTk4Li41MWI5NDdhN2Q1OTJlMWRi
M2Y1OGViYWEwOGFiNGQxYTM4N2QyNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVj
dC5oCkBAIC01Miw4ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERp
ZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5p
bWF0ZWRWYWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKIAogICAgIHN0YXRpYyBib29sIHBhcnNlU1ZHUmVj
dChjb25zdCBTdHJpbmcmLCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuY3BwCmluZGV4IDE5ZmNjMzAxMmZlNDExNzZmODU1MjJkNzg5YTkzMDZjOGUxZDVj
MTEuLmFiOTExMGIzOGI5YzBhOGVjYTdhY2RkODFlZTMyY2JhMjcxNWY4MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMg
U3RyaW5nIHBhcnNlU3RyaW5nRnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAotdm9pZCBTVkdBbmltYXRl
ZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit2b2lkIFNW
R0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBl
KiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKIHsKICAg
ICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5oCmluZGV4IGY4MmVkNWYwNTRm
YWZlYjAwYjI2OTk0MDAxNDc4ZTE0MjQzYzBiYTEuLjg5Yzg2YTAyNzYzOWVkODg5YzdhZDM4YjM4
MDJhNTg2ZjdjODZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5oCkBA
IC01MSw4ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5n
ZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSop
OwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRW
YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1
YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKaW5kZXggZWM4ZDlhNjA3ZTdhY2UxNTE2OGZlODBlMzNl
YzQ0NWM4NmVlNTBkYi4uNTBkMmQ1NzY0NTg5Yjc2ODQ3MmM3N2RjZWRkOTM4MmFhODk0Y2EyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6
YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFMKICAgICB0b1RyYW5zZm9y
bSA9IFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVkdUcmFuc2Zvcm1zKGZyb21UcmFuc2Zvcm0s
IHRvVHJhbnNmb3JtKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBl
YXRDb3VudCwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQordm9pZCBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9t
LCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9u
LCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVs
ZW1lbnQpOwogCkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLAogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgeWV0LgogICAgIFNWR1Ry
YW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJvbS0+dHJhbnNmb3JtTGlzdCgpOwog
ICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRvVHJhbnNmb3JtTGlzdCA9IHRvLT50cmFuc2Zvcm1MaXN0
KCk7CisgICAgU1ZHVHJhbnNmb3JtTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0
ID0gdG9BdEVuZE9mRHVyYXRpb24tPnRyYW5zZm9ybUxpc3QoKTsKICAgICBTVkdUcmFuc2Zvcm1M
aXN0JiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBhbmltYXRlZC0+dHJhbnNmb3JtTGlzdCgpOwog
CiAgICAgLy8gUGFzcyBmYWxzZSB0byAncmVzaXplQW5pbWF0ZWRMaXN0SWZOZWVkZWQnIGhlcmUs
IGFzIHRoZSBzcGVjaWFsIHBvc3QtbXVsdGlwbGljYXRpb24gYmVoYXZpb3Igb2YgPGFuaW1hdGVU
cmFuc2Zvcm0+IG5lZWRzIHRvIGJlIHJlc3BlY3RlZCBiZWxvdy4KQEAgLTExNyw5ICsxMTgsMTAg
QEAgdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLAogICAgIFNWR1RyYW5zZm9ybSYgdG9UcmFuc2Zvcm0g
PSB0b1RyYW5zZm9ybUxpc3RbMF07CiAgICAgU1ZHVHJhbnNmb3JtIGVmZmVjdGl2ZUZyb20gPSBm
cm9tVHJhbnNmb3JtTGlzdFNpemUgPyBmcm9tVHJhbnNmb3JtTGlzdFswXSA6IFNWR1RyYW5zZm9y
bSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5zZm9ybTo6Q29uc3RydWN0WmVyb1RyYW5zZm9y
bSk7CiAgICAgU1ZHVHJhbnNmb3JtIGN1cnJlbnRUcmFuc2Zvcm0gPSBTVkdUcmFuc2Zvcm1EaXN0
YW5jZShlZmZlY3RpdmVGcm9tLCB0b1RyYW5zZm9ybSkuc2NhbGVkRGlzdGFuY2UocGVyY2VudGFn
ZSkuYWRkVG9TVkdUcmFuc2Zvcm0oZWZmZWN0aXZlRnJvbSk7Ci0gICAgaWYgKG1fYW5pbWF0aW9u
RWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50KQotICAgICAgICBhbmltYXRl
ZFRyYW5zZm9ybUxpc3QuYXBwZW5kKFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVkdUcmFuc2Zv
cm1zKGN1cnJlbnRUcmFuc2Zvcm0sIHRvVHJhbnNmb3JtLCByZXBlYXRDb3VudCkpOwotICAgIGVs
c2UKKyAgICBpZiAobV9hbmltYXRpb25FbGVtZW50LT5pc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0
Q291bnQpIHsKKyAgICAgICAgU1ZHVHJhbnNmb3JtJiB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9y
bSA9IHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlzdFswXTsKKyAgICAgICAgYW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3Jt
cyhjdXJyZW50VHJhbnNmb3JtLCB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybSwgcmVwZWF0Q291
bnQpKTsKKyAgICB9IGVsc2UKICAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChj
dXJyZW50VHJhbnNmb3JtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5oCmluZGV4IDI2YTc5ODMzMmI5OWMzZWVmODkzZjA2NjlhOTA0NDcxNDNh
ODQ2ODUuLmEyYmI0NzNkYWIzODdiNjUwZGI2ZmYwZjI5Njk2MzZiZWFhMzY2ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKQEAgLTUwLDggKzUw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZEFu
aW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCBmbG9hdCBj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlQW5pbWF0b3IuaAppbmRleCBjNGUwNTBlZTA1NWJlMTM0OWJhNzdmZTg2YTQ1OTk4ZTI3OWY4
ZmNiLi5hYWEwM2MzYjgwZTNiNjdlOWQyN2E4MWZlMDc1NjUxNDMyNDEzMTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaApAQCAtNTksOCArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRBbmlt
YXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSA9IDA7CiAgICAgdmly
dHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKIAogICAgIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRv
VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCAxMjgy
NzRmMmRkYzUyZTA4MmFlNWEzMjA3NGM3Nzg5Nzg3MjYxMDg1Li40YzZiNDI3ZGJjYjQyZWRkNDI2
Y2YwZjc5YWZkOWNkZmUyZmMzYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCkBAIC00OTMsMTIgKzQ5MywxMyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1l
bnQ6OmN1cnJlbnRWYWx1ZXNGcm9tS2V5UG9pbnRzKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZl
YwogICAgIHRvID0gbV92YWx1ZXNbaW5kZXggKyAxXTsKIH0KICAgICAKLXZvaWQgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6Y3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJjZW50
LCBmbG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvKQordm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50OjpjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZs
b2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmlu
ZyYgdG8sIFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pCiB7CiAgICAgdW5zaWduZWQgdmFsdWVz
Q291bnQgPSBtX3ZhbHVlcy5zaXplKCk7CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uVmFsaWQpOwog
ICAgIEFTU0VSVCh2YWx1ZXNDb3VudCA+PSAxKTsKIAorICAgIHRvQXRFbmRPZkR1cmF0aW9uID0g
bV92YWx1ZXMubGFzdCgpOwogICAgIGlmIChwZXJjZW50ID09IDEgfHwgdmFsdWVzQ291bnQgPT0g
MSkgewogICAgICAgICBmcm9tID0gbV92YWx1ZXNbdmFsdWVzQ291bnQgLSAxXTsKICAgICAgICAg
dG8gPSBtX3ZhbHVlc1t2YWx1ZXNDb3VudCAtIDFdOwpAQCAtNTQwLDcgKzU0MSw3IEBAIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9h
dCBwZXJjZW50LCBmbG9hdCYKICAgICAgICAgZnJvbVBlcmNlbnQgPSBtX2tleVRpbWVzW2luZGV4
XTsKICAgICAgICAgdG9QZXJjZW50ID0gbV9rZXlUaW1lc1tpbmRleCArIDFdOwogICAgIH0gZWxz
ZSB7ICAgICAgICAKLSAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGVyY2Vu
dCAqICh2YWx1ZXNDb3VudCAtIDEpKTsKKyAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZmxvb3JmKHBlcmNlbnQgKiAodmFsdWVzQ291bnQgLSAxKSkpOwogICAgICAgICBmcm9t
UGVyY2VudCA9ICBzdGF0aWNfY2FzdDxmbG9hdD4oaW5kZXgpIC8gKHZhbHVlc0NvdW50IC0gMSk7
CiAgICAgICAgIHRvUGVyY2VudCA9ICBzdGF0aWNfY2FzdDxmbG9hdD4oaW5kZXggKyAxKSAvICh2
YWx1ZXNDb3VudCAtIDEpOwogICAgIH0KQEAgLTU1MSw3ICs1NTIsNyBAQCB2b2lkIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24oZmxvYXQgcGVyY2Vu
dCwgZmxvYXQmCiAgICAgdG8gPSBtX3ZhbHVlc1tpbmRleCArIDFdOwogICAgIEFTU0VSVCh0b1Bl
cmNlbnQgPiBmcm9tUGVyY2VudCk7CiAgICAgZWZmZWN0aXZlUGVyY2VudCA9IChwZXJjZW50IC0g
ZnJvbVBlcmNlbnQpIC8gKHRvUGVyY2VudCAtIGZyb21QZXJjZW50KTsKLSAgICAKKwogICAgIGlm
IChjYWxjTW9kZSA9PSBDYWxjTW9kZVNwbGluZSkgewogICAgICAgICBBU1NFUlQobV9rZXlTcGxp
bmVzLnNpemUoKSA9PSBtX3ZhbHVlcy5zaXplKCkgLSAxKTsKICAgICAgICAgZWZmZWN0aXZlUGVy
Y2VudCA9IGNhbGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZWZmZWN0aXZlUGVyY2VudCwgaW5kZXgp
OwpAQCAtNjA2LDE3ICs2MDcsMTggQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzdGFydGVk
QWN0aXZlSW50ZXJ2YWwoKQogICAgICAgICBtX2FuaW1hdGlvblZhbGlkID0gY2FsY01vZGUgPT0g
Q2FsY01vZGVQYWNlZCB8fCAhZmFzdEhhc0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5UG9pbnRzQXR0
cikgfHwgKG1fa2V5VGltZXMuc2l6ZSgpID4gMSAmJiBtX2tleVRpbWVzLnNpemUoKSA9PSBtX2tl
eVBvaW50cy5zaXplKCkpOwogfQogCi12b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnVwZGF0ZUFu
aW1hdGlvbihmbG9hdCBwZXJjZW50LCB1bnNpZ25lZCByZXBlYXQsIFNWR1NNSUxFbGVtZW50KiBy
ZXN1bHRFbGVtZW50KQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24o
ZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiByZXN1
bHRFbGVtZW50KQogeyAgICAKICAgICBpZiAoIW1fYW5pbWF0aW9uVmFsaWQpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKworICAgIFN0cmluZyB0b0F0RW5kT2ZEdXJhdGlvbjsKICAgICBmbG9hdCBl
ZmZlY3RpdmVQZXJjZW50OwogICAgIENhbGNNb2RlIG1vZGUgPSBjYWxjTW9kZSgpOwogICAgIGlm
IChhbmltYXRpb25Nb2RlKCkgPT0gVmFsdWVzQW5pbWF0aW9uKSB7CiAgICAgICAgIFN0cmluZyBm
cm9tOwogICAgICAgICBTdHJpbmcgdG87Ci0gICAgICAgIGN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNB
bmltYXRpb24ocGVyY2VudCwgZWZmZWN0aXZlUGVyY2VudCwgZnJvbSwgdG8pOworICAgICAgICBj
dXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKHBlcmNlbnQsIGVmZmVjdGl2ZVBlcmNlbnQs
IGZyb20sIHRvLCB0b0F0RW5kT2ZEdXJhdGlvbik7CiAgICAgICAgIGlmIChmcm9tICE9IG1fbGFz
dFZhbHVlc0FuaW1hdGlvbkZyb20gfHwgdG8gIT0gbV9sYXN0VmFsdWVzQW5pbWF0aW9uVG8pIHsK
ICAgICAgICAgICAgIG1fYW5pbWF0aW9uVmFsaWQgPSBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMo
ZnJvbSwgdG8pOwogICAgICAgICAgICAgaWYgKCFtX2FuaW1hdGlvblZhbGlkKQpAQCAtNjMzLDcg
KzYzNSw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uKGZsb2F0
IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JCiAgICAgZWxzZQogICAgICAgICBlZmZl
Y3RpdmVQZXJjZW50ID0gcGVyY2VudDsKIAotICAgIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZWZm
ZWN0aXZlUGVyY2VudCwgcmVwZWF0LCByZXN1bHRFbGVtZW50KTsKKyAgICBjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGVmZmVjdGl2ZVBlcmNlbnQsIHJlcGVhdENvdW50LCB0b0F0RW5kT2ZEdXJhdGlv
biwgcmVzdWx0RWxlbWVudCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y29tcHV0
ZUNTU1Byb3BlcnR5VmFsdWUoU1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwg
U3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCmlu
ZGV4IDU3MjVlNDdkYmM5ODRlY2ZhYjMzZTNiMmJjMDRmYWVjMDY1ZTVhZDMuLmZjNzRlYmJkYjA3
MTAyYmQ3Yjk3MDUwMDA3ZjI0YTIyMGU1ODQ2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgYW5p
bWF0ZWRUeXBlID0gQW5pbWF0ZWRUeXBlKGZyb21UeXBlKTsKICAgICB9CiAKLSAgICB2b2lkIGFu
aW1hdGVBZGRpdGl2ZU51bWJlcihmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgZmxvYXQgZnJvbU51bWJlciwgZmxvYXQgdG9OdW1iZXIsIGZsb2F0JiBhbmltYXRlZE51bWJl
cikKKyAgICB2b2lkIGFuaW1hdGVBZGRpdGl2ZU51bWJlcihmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgZmxvYXQgZnJvbU51bWJlciwgZmxvYXQgdG9OdW1iZXIsIGZsb2F0
IHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyLCBmbG9hdCYgYW5pbWF0ZWROdW1iZXIpCiAgICAgewog
ICAgICAgICBmbG9hdCBudW1iZXI7CiAgICAgICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2Rl
RGlzY3JldGUpCkBAIC0xNzksMTEgKzE3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbnVtYmVyID0gKHRvTnVtYmVyIC0gZnJvbU51bWJlcikgKiBwZXJjZW50YWdlICsg
ZnJvbU51bWJlcjsKIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBmb3Ig
dmFsdWVzIGFuaW1hdGlvbi4gUmlnaHQgbm93IHdlIHRyYW5zZm9ybSB2YWx1ZXMtYW5pbWF0aW9u
IHRvIG11bHRpcGxlIGZyb20tdG8tYW5pbWF0aW9ucyBhbmQKLSAgICAgICAgLy8gYWNjdW11bGF0
ZSBldmVyeSBzaW5nbGUgdmFsdWUgdG8gdGhlIHByZXZpb3VzIG9uZS4gQnV0IGFjY3VtdWxhdGlv
biBzaG91bGQganVzdCB0YWtlIGludG8gYWNjb3VudCBhZnRlciBhIGNvbXBsZXRlIGN5Y2xlCi0g
ICAgICAgIC8vIG9mIHZhbHVlcy1hbmltYWl0b24uIFNlZSBleGFtcGxlIGF0OiBodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDAxL1JFQy1zbWlsLWFuaW1hdGlvbi0yMDAxMDkwNC8jUmVwZWF0aW5nQW5p
bQogICAgICAgICBpZiAoaXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50KQotICAgICAgICAg
ICAgbnVtYmVyICs9IHRvTnVtYmVyICogcmVwZWF0Q291bnQ7CisgICAgICAgICAgICBudW1iZXIg
Kz0gdG9BdEVuZE9mRHVyYXRpb25OdW1iZXIgKiByZXBlYXRDb3VudDsKIAogICAgICAgICBpZiAo
aXNBZGRpdGl2ZSgpICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBUb0FuaW1hdGlvbikKICAgICAgICAg
ICAgIGFuaW1hdGVkTnVtYmVyICs9IG51bWJlcjsKQEAgLTIyNywxMSArMjI0LDExIEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlM
RWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBjb25zdCBT
dHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxl
bWVudCkgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3Ry
aW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5nKi8pIHsgcmV0dXJu
IC0xLmY7IH0KICAgICB2aXJ0dWFsIFBhdGggYW5pbWF0aW9uUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IFBhdGgoKTsgfQogCi0gICAgdm9pZCBjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZs
b2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmlu
ZyYgdG8pOworICAgIHZvaWQgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBw
ZXJjZW50LCBmbG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRv
LCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uKTsKICAgICB2b2lkIGNhbGN1bGF0ZUtleVRpbWVz
Rm9yQ2FsY01vZGVQYWNlZCgpOwogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGcm9tS2V5UG9p
bnRzKGZsb2F0IHBlcmNlbnQpIGNvbnN0OwogICAgIHZvaWQgY3VycmVudFZhbHVlc0Zyb21LZXlQ
b2ludHMoZmxvYXQgcGVyY2VudCwgZmxvYXQmIGVmZmVjdGl2ZVBlcmNlbnQsIFN0cmluZyYgZnJv
bSwgU3RyaW5nJiB0bykgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTQyZDg0ZTNlZDQ0ZTA1YWJmYjExNDEwZjI1
ZDZkZWQ4ZDZlMDc0Zi4uYTMxOWJhNzEyM2Y0YjgyMWYzYjliYmQ0MGU1YmE5ZWUwNThmOTlmYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTI5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFjY3VtdWxhdGlvbiBmb3IgdmFsdWVzLWFu
aW1hdGlvbiBpcyBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1MTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9hY2N1bXVsYXRlLXZhbHVlcy13aWR0aC1hbmltYXRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9hY2N1bXVs
YXRlLXZhbHVlcy13aWR0aC1hbmltYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2Fu
aW1hdGlvbnMvcmVzb3VyY2VzL2FjY3VtdWxhdGUtdmFsdWVzLXdpZHRoLWFuaW1hdGlvbi5zdmc6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hY2N1bXVsYXRl
LXZhbHVlcy13aWR0aC1hbmltYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc2FtcGxlMSk6Cisg
ICAgICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAoc2FtcGxlNCk6
CisgICAgICAgIChzYW1wbGU1KToKKyAgICAgICAgKHNhbXBsZTYpOgorICAgICAgICAoc2FtcGxl
Nyk6CisgICAgICAgIChzYW1wbGU4KToKKyAgICAgICAgKHNhbXBsZTkpOgorICAgICAgICAoc2Ft
cGxlMTApOgorICAgICAgICAoc2FtcGxlMTEpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorCiAy
MDEyLTA0LTI5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXgu
aW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdIERSVCBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hY2N1bXVsYXRl
LXZhbHVlcy13aWR0aC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvYWNjdW11bGF0ZS12YWx1ZXMtd2lkdGgtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNGZkZGI2ZjUyY2UzYmZhNjdhMTRjMGNjZTg4ODkzMTZlMWZjNWY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYWNjdW11bGF0ZS12YWx1
ZXMtd2lkdGgtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ4IEBACitTVkcgMS4x
IGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzCisKKworVGhpcyB0ZXN0cyB2YWx1ZXMgYW5pbWF0aW9u
IGFuZCBhY2N1bXVsYXRlPSdzdW0nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSBpcyAwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZh
bC52YWx1ZSBpcyAyMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgMzAKK1BBU1Mg
cmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlIGlzIDIwCitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52
YWx1ZSBpcyAyMAorUEFTUyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMjAKK1BBU1MgcmVj
dC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIDIwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1
ZSBpcyAyMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgNTAKK1BBU1MgcmVjdC53
aWR0aC5iYXNlVmFsLnZhbHVlIGlzIDIwCitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSBp
cyA0MAorUEFTUyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMjAKK1BBU1MgcmVjdC53aWR0
aC5hbmltVmFsLnZhbHVlIGlzIDQwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyAy
MAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgNzAKK1BBU1MgcmVjdC53aWR0aC5i
YXNlVmFsLnZhbHVlIGlzIDIwCitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSBpcyA2MAor
UEFTUyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMjAKK1BBU1MgcmVjdC53aWR0aC5hbmlt
VmFsLnZhbHVlIGlzIDYwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyAyMAorUEFT
UyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgOTAKK1BBU1MgcmVjdC53aWR0aC5iYXNlVmFs
LnZhbHVlIGlzIDIwCitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSBpcyA4MAorUEFTUyBy
ZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMjAKK1BBU1MgcmVjdC53aWR0aC5hbmltVmFsLnZh
bHVlIGlzIDgwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyAyMAorUEFTUyByZWN0
LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgMTEwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1
ZSBpcyAyMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgMTAwCitQQVNTIHJlY3Qu
d2lkdGguYmFzZVZhbC52YWx1ZSBpcyAyMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUg
aXMgMTAwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyAyMAorUEFTUyByZWN0Lndp
ZHRoLmFuaW1WYWwudmFsdWUgaXMgMTAwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBp
cyAyMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgMTAwCitQQVNTIHJlY3Qud2lk
dGguYmFzZVZhbC52YWx1ZSBpcyAyMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L2FjY3VtdWxhdGUtdmFsdWVzLXdpZHRoLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvYWNjdW11bGF0ZS12YWx1ZXMtd2lkdGgtYW5pbWF0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWRiMTc1OWQ0NTYwOTA1NTVmYjg4Nzg0MTM5ZGUyNDViOTNkNDM3NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FjY3VtdWxhdGUtdmFsdWVzLXdp
ZHRoLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blNNSUxUZXN0KCkiPgorPGgxPlNWRyAx
LjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYWNj
dW11bGF0ZS12YWx1ZXMtd2lkdGgtYW5pbWF0aW9uLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Jlc291cmNlcy9h
Y2N1bXVsYXRlLXZhbHVlcy13aWR0aC1hbmltYXRpb24uc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvcmVzb3VyY2VzL2FjY3VtdWxhdGUtdmFsdWVzLXdpZHRoLWFuaW1hdGlvbi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWY0NTZiOTYwNTkxYjkyZDlkYWVmZDkwYTkyZTI3ODJjNWQ4YTZhOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Jlc291cmNlcy9hY2N1
bXVsYXRlLXZhbHVlcy13aWR0aC1hbmltYXRpb24uc3ZnCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAi
LS8vVzNDLy9EVEQgU1ZHIDEuMSBUaW55Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNz
L1NWRy8xLjEvRFREL3N2ZzExLXRpbnkuZHRkIj4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+
CisKKzwhLS0gYW4xOiBDaGFuZ2Ugd2lkdGggdG8gMTAwIGluIDEwcyB3aXRoIGEgd29iYmxpbmcg
YW5pbWF0aW9uIC0tPgorPHJlY3Qgd2lkdGg9IjIwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4i
PgorICAgIDxhbmltYXRlIGlkPSJhbjEiIGF0dHJpYnV0ZU5hbWU9IndpZHRoIiBkdXI9IjJzIiB2
YWx1ZXM9IjA7IDMwOyAyMCIgYWNjdW11bGF0ZT0ic3VtIiByZXBlYXRDb3VudD0iNSIgZmlsbD0i
ZnJlZXplIi8+Cis8L3JlY3Q+CisKKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FjY3VtdWxhdGUtdmFsdWVzLXdpZHRoLWFuaW1hdGlv
bi5qcyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hY2N1bXVsYXRl
LXZhbHVlcy13aWR0aC1hbmltYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE1OWZiOTI3OGMzMmE1NmIz
NzQ4OTYzZDM4NzUyOTA1MGEzMTk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hY2N1bXVsYXRlLXZhbHVlcy13aWR0aC1hbmltYXRp
b24uanMKQEAgLTAsMCArMSw4OSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdmFsdWVzIGFu
aW1hdGlvbiBhbmQgYWNjdW11bGF0ZT0nc3VtJyIpOworZW1iZWRTVkdUZXN0Q2FzZSgicmVzb3Vy
Y2VzL2FjY3VtdWxhdGUtdmFsdWVzLXdpZHRoLWFuaW1hdGlvbi5zdmciKTsKKworLy8gU2V0dXAg
YW5pbWF0aW9uIHRlc3QKK2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVu
b3VnaCgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjAiKTsKKyAgICBzaG91bGRCZSgicmVj
dC53aWR0aC5iYXNlVmFsLnZhbHVlIiwgIjIwIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIoKSB7
CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjMw
Iik7CisgICAgc2hvdWxkQmUoInJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSIsICIyMCIpOworfQor
CitmdW5jdGlvbiBzYW1wbGUzKCkgeworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goInJlY3Qud2lk
dGguYW5pbVZhbC52YWx1ZSIsICIyMCIpOworICAgIHNob3VsZEJlKCJyZWN0LndpZHRoLmJhc2VW
YWwudmFsdWUiLCAiMjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlNCgpIHsKKyAgICBzaG91bGRC
ZUNsb3NlRW5vdWdoKCJyZWN0LndpZHRoLmFuaW1WYWwudmFsdWUiLCAiNTAiKTsKKyAgICBzaG91
bGRCZSgicmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlIiwgIjIwIik7Cit9CisKK2Z1bmN0aW9uIHNh
bXBsZTUoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicmVjdC53aWR0aC5hbmltVmFsLnZh
bHVlIiwgIjQwIik7CisgICAgc2hvdWxkQmUoInJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSIsICIy
MCIpOworfQorCitmdW5jdGlvbiBzYW1wbGU2KCkgeworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2go
InJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSIsICI3MCIpOworICAgIHNob3VsZEJlKCJyZWN0Lndp
ZHRoLmJhc2VWYWwudmFsdWUiLCAiMjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlNygpIHsKKyAg
ICBzaG91bGRCZUNsb3NlRW5vdWdoKCJyZWN0LndpZHRoLmFuaW1WYWwudmFsdWUiLCAiNjAiKTsK
KyAgICBzaG91bGRCZSgicmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlIiwgIjIwIik7Cit9CisKK2Z1
bmN0aW9uIHNhbXBsZTgoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicmVjdC53aWR0aC5h
bmltVmFsLnZhbHVlIiwgIjkwIik7CisgICAgc2hvdWxkQmUoInJlY3Qud2lkdGguYmFzZVZhbC52
YWx1ZSIsICIyMCIpOworfQorCitmdW5jdGlvbiBzYW1wbGU5KCkgeworICAgIHNob3VsZEJlQ2xv
c2VFbm91Z2goInJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSIsICI4MCIpOworICAgIHNob3VsZEJl
KCJyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUiLCAiMjAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxl
MTAoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVl
IiwgIjExMCIpOworICAgIHNob3VsZEJlKCJyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUiLCAiMjAi
KTsKK30KKworZnVuY3Rpb24gc2FtcGxlMTEoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgi
cmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjEwMCIpOworICAgIHNob3VsZEJlKCJyZWN0Lndp
ZHRoLmJhc2VWYWwudmFsdWUiLCAiMjAiKTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7
CisgICAgcmVjdCA9IHJvb3RTVkdFbGVtZW50Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInJlY3QiKVswXTsKKworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAg
ICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIHNhbXBsZUNhbGxiYWNrXQorICAgICAgICBbImFuMSIs
IDAuMCwgICAgc2FtcGxlMV0sCisgICAgICAgIFsiYW4xIiwgMS4wLCAgICBzYW1wbGUyXSwKKyAg
ICAgICAgWyJhbjEiLCAxLjk5OSwgIHNhbXBsZTNdLAorICAgICAgICBbImFuMSIsIDIuMDAxLCAg
c2FtcGxlM10sCisgICAgICAgIFsiYW4xIiwgMy4wLCAgICBzYW1wbGU0XSwKKyAgICAgICAgWyJh
bjEiLCAzLjk5OSwgIHNhbXBsZTVdLAorICAgICAgICBbImFuMSIsIDQuMDAxLCAgc2FtcGxlNV0s
CisgICAgICAgIFsiYW4xIiwgNS4wLCAgICBzYW1wbGU2XSwKKyAgICAgICAgWyJhbjEiLCA1Ljk5
OSwgIHNhbXBsZTddLAorICAgICAgICBbImFuMSIsIDYuMDAxLCAgc2FtcGxlN10sCisgICAgICAg
IFsiYW4xIiwgNy4wLCAgICBzYW1wbGU4XSwKKyAgICAgICAgWyJhbjEiLCA3Ljk5OSwgIHNhbXBs
ZTldLAorICAgICAgICBbImFuMSIsIDguMDAxLCAgc2FtcGxlOV0sCisgICAgICAgIFsiYW4xIiwg
OS4wLCAgICBzYW1wbGUxMF0sCisgICAgICAgIFsiYW4xIiwgOS45OTksICBzYW1wbGUxMV0sCisg
ICAgICAgIFsiYW4xIiwgMTAuMDAxLCBzYW1wbGUxMV0sCisgICAgICAgIFsiYW4xIiwgMTEuMCwg
ICBzYW1wbGUxMV0sCisgICAgICAgIFsiYW4xIiwgNjAuMCwgICBzYW1wbGUxMV0KKyAgICBdOwor
CisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cit9CisKK3dpbmRvdy5hbmlt
YXRpb25TdGFydHNJbW1lZGlhdGVseSA9IHRydWU7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139759</attachid>
            <date>2012-05-02 00:29:18 -0700</date>
            <delta_ts>2012-05-03 00:32:46 -0700</delta_ts>
            <desc>Follow-up patch</desc>
            <filename>bug-85158-20120502092931.patch</filename>
            <type>text/plain</type>
            <size>50422</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRlNTdlMWY0NmVlM2Rk
NGI0YjRhOTJlNWM0Njc3MTliMzdhZGVhOC4uZDg0NDExOGVhMTlkNWMzZGYyNzE5OTY3ZjY4Yzg1
ZjAyY2JjMjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0wNS0wMSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBBY2N1bXVs
YXRpb24gZm9yIHZhbHVlcy1hbmltYXRpb24gaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBwYXRjaDogQWRkIGNvbnN0IEZv
byYgZm9vKCkgY29uc3QgYWNjZXNzb3JzIHRvIFNWR0FuaW1hdGVkVHlwZSwKKyAgICAgICAgdG8g
YXZvaWQgdGhlICJGb28mIGZvbyA9IGFuaW1hdGVkLT5mb28oKSIgaWRpb20gaW4gYWxsIGNhc2Vz
IHdoZXJlIHdlCisgICAgICAgIGRvbid0IG5lZWQgdG8gbXV0YXRlICdmb28nLiBVc2UgImNvbnN0
IEZvbyYgZm9vID0gYW5pbWF0ZWQtPmZvbygpIiBpbnN0ZWFkLgorCisgICAgICAgIENhY2hlIHRv
QXRFbmRPZkR1cmF0aW9uVHlwZSBqdXN0IGxpa2UgbV90b1R5cGUvbV9mcm9tVHlwZSBpbiBTVkdB
bmltYXRlRWxlbWVudCwKKyAgICAgICAgdG8gYXZvaWQgcmVjb25zdHJ1Y3RpbmcgaXQgb24gZXZl
cnkgYW5pbWF0aW9uIHN0ZXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBwZXJmb3JtYW5jZS9j
b3JyZWN0bmVzcyBmaXhlcyBvbmx5LgorCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxh
dGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVF
bGVtZW50Ojp0YXJnZXRFbGVtZW50V2lsbENoYW5nZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVFbGVtZW50Lmg6CisgICAgICAgIChTVkdBbmltYXRlRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpTVkdBbmltYXRlTW90aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3Vs
YXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZENvbG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5p
bWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmlt
YXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6
OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckxp
c3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFkZEFuaW1h
dGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFJlY3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFJlY3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
U3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVudW1lcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Ym9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFR5cGU6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
ZW51bWVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6aW50ZWdlck9wdGlvbmFsSW50
ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6Omxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6Omxlbmd0aExpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRUeXBlOjpudW1iZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlw
ZTo6bnVtYmVyT3B0aW9uYWxOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRU
eXBlOjpwb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6cmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnRyYW5zZm9ybUxpc3QpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uRWxlbWVudDo6Y3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzdGFydGVkQWN0aXZlSW50ZXJ2YWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRqdXN0RnJvbVRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZyb21Ub0xpc3RWYWx1ZXMpOgorICAgICAg
ICAoU1ZHQW5pbWF0aW9uRWxlbWVudCk6CisKIDIwMTItMDUtMDEgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQWRkIGFuIElzb2xhdGUgcGFyYW1l
dGVyIHRvIHNldEpTV3JhcHBlckZvclhYWCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcAppbmRleCAxMTlkM2JlMjE3MzJiZTVjOTkyYjBjNzE5ZTE2YjRkYTZhNjYzMGRj
Li4yNjQxOTc1ZmYwNDVkNGJmZjgyOTI1N2E4N2I3OTBkMTY3MTI3ODc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlU
eXBlKFNWR0VsZW1lbnQKICAgICByZXR1cm4gdHlwZTsKIH0KIAotdm9pZCBTVkdBbmltYXRlRWxl
bWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwgY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZywgU1ZHU01J
TEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpCit2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkKIHsKICAgICBBU1NFUlQocmVzdWx0RWxlbWVu
dCk7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKQEAgLTEzMiwxNCArMTMyLDE3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0CiAgICAgaWYg
KCFtX2FuaW1hdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fYW5pbWF0b3ItPmFu
aW1WYWxXaWxsQ2hhbmdlKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKIAotICAgIGlmICh0b0F0RW5k
T2ZEdXJhdGlvblN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9hbmltYXRvci0+Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgbV9mcm9tVHlwZS5nZXQo
KSwgbV90b1R5cGUuZ2V0KCksIG1fdG9UeXBlLmdldCgpLCByZXN1bHRBbmltYXRpb25FbGVtZW50
LT5tX2FuaW1hdGVkVHlwZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICAv
LyBWYWx1ZXMtYW5pbWF0aW9uIGFjY3VtdWxhdGVzIHVzaW5nIHRoZSBsYXN0IHZhbHVlcyBlbnRy
eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbmQgb2YgZHVyYXRpb24gdGltZS4KLSAgICBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiB0b0F0RW5kT2ZEdXJhdGlvblR5cGUgPSBtX2FuaW1hdG9yLT5jb25z
dHJ1Y3RGcm9tU3RyaW5nKHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKTsKLSAgICBtX2FuaW1hdG9y
LT5jYWxjdWxhdGVBbmltYXRlZFZhbHVlKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2Zyb21U
eXBlLmdldCgpLCBtX3RvVHlwZS5nZXQoKSwgdG9BdEVuZE9mRHVyYXRpb25UeXBlLmdldCgpLCBy
ZXN1bHRBbmltYXRpb25FbGVtZW50LT5tX2FuaW1hdGVkVHlwZS5nZXQoKSk7CisgICAgU1ZHQW5p
bWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvblR5cGUgPSBtX3RvQXRFbmRPZkR1cmF0aW9uVHlw
ZSA/IG1fdG9BdEVuZE9mRHVyYXRpb25UeXBlLmdldCgpIDogbV90b1R5cGUuZ2V0KCk7CisgICAg
bV9hbmltYXRvci0+Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShwZXJjZW50YWdlLCByZXBlYXRDb3Vu
dCwgbV9mcm9tVHlwZS5nZXQoKSwgbV90b1R5cGUuZ2V0KCksIHRvQXRFbmRPZkR1cmF0aW9uVHlw
ZSwgcmVzdWx0QW5pbWF0aW9uRWxlbWVudC0+bV9hbmltYXRlZFR5cGUuZ2V0KCkpOworfQorCiti
b29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNv
bnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpCit7CisgICAgaWYgKHRvQXRFbmRP
ZkR1cmF0aW9uU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1f
dG9BdEVuZE9mRHVyYXRpb25UeXBlID0gZW5zdXJlQW5pbWF0b3IoKS0+Y29uc3RydWN0RnJvbVN0
cmluZyh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCkBAIC0yODQsNiArMjg3LDcg
QEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6dGFyZ2V0RWxlbWVudFdpbGxDaGFuZ2UoU1ZHRWxl
bWVudCogY3VycmVudFRhcmdldCwgU1ZHRWwKICAgICBtX2FuaW1hdGVkVHlwZS5jbGVhcigpOwog
ICAgIG1fZnJvbVR5cGUuY2xlYXIoKTsKICAgICBtX3RvVHlwZS5jbGVhcigpOworICAgIG1fdG9B
dEVuZE9mRHVyYXRpb25UeXBlLmNsZWFyKCk7CiAgICAgbV9hbmltYXRvci5jbGVhcigpOwogICAg
IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBuZXdUYXJnZXQgPyBkZXRlcm1pbmVBbmltYXRlZFBy
b3BlcnR5VHlwZShuZXdUYXJnZXQpIDogQW5pbWF0ZWRTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudC5oCmluZGV4IDYxNzE4NmVmNzc5YjY1YmRmY2JhNWEzOTE0ZjA4
YzBlMjQ2NzIzODkuLjJjMTQxMDUyYmNiNjJjNjdkY2QxZmI4NTE0NGFkMDJkM2U2NWUxZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCkBAIC00NCw5ICs0NCwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRUb0Jhc2VWYWx1ZSgpOworICAgIHZp
cnR1YWwgYm9vbCBjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYg
dG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7Ci0gICAgdmlydHVhbCB2
b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsIGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxF
bGVtZW50KiByZXN1bHRFbGVtZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVs
ZW1lbnQqIHJlc3VsdEVsZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1Rh
cmdldCgpOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNBZGRpdGl2ZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtNjEsNiArNjIsNyBAQCBwcml2YXRlOgog
CiAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9mcm9tVHlwZTsKICAgICBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBtX3RvVHlwZTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3Rv
QXRFbmRPZkR1cmF0aW9uVHlwZTsKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2FuaW1h
dGVkVHlwZTsKIAogICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCBtX2FuaW1hdGVk
UHJvcGVydGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCmluZGV4IDljZmYzYzFmMDAwOWUyNjQ4MWIzMGUyN2MzNmFkYzMxZGE1MmIwMWQuLmI3
NGQyZTE1ZTA5OGVjNzMyY2Y1N2Q5MzQ4ODk3OTFjNThkNTZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtNDQsNiArNDQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKIGlubGluZSBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dDo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKKyAgICAsIG1faGFzVG9Qb2ludEF0RW5kT2ZEdXJhdGlvbihmYWxzZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShhbmltYXRlTW90aW9uVGFnKSk7CiB9CkBAIC0xNzMsOCArMTc0
LDE2IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUoKQog
ICAgIHRyYW5zZm9ybS0+bWFrZUlkZW50aXR5KCk7CiB9CiAKK2Jvb2wgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0
b0F0RW5kT2ZEdXJhdGlvblN0cmluZykKK3sKKyAgICBwYXJzZVBvaW50KHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nLCBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24pOworICAgIG1faGFzVG9Qb2ludEF0
RW5kT2ZEdXJhdGlvbiA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CisgICAgbV9oYXNUb1BvaW50
QXRFbmRPZkR1cmF0aW9uID0gZmFsc2U7CiAgICAgcGFyc2VQb2ludChmcm9tU3RyaW5nLCBtX2Zy
b21Qb2ludCk7CiAgICAgcGFyc2VQb2ludCh0b1N0cmluZywgbV90b1BvaW50KTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE4Miw2ICsxOTEsNyBAQCBib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLAogICAg
IAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVz
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKIHsKKyAg
ICBtX2hhc1RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBmYWxzZTsKICAgICBpZiAoYW5pbWF0aW9u
TW9kZSgpID09IEJ5QW5pbWF0aW9uICYmICFpc0FkZGl0aXZlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBwYXJzZVBvaW50KGZyb21TdHJpbmcsIG1fZnJvbVBvaW50KTsKQEAgLTIxMSw3
ICsyMjEsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZv
clByb2dyZXNzKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmbwogICAgIHRyYW5zZm9ybS0+cm90YXRl
KGFuZ2xlKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgY29uc3Qg
U3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZywgU1ZHU01JTEVsZW1lbnQqKQordm9pZCBT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQqKQogewogICAgIFNW
R0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYg
KCF0YXJnZXRFbGVtZW50KQpAQCAtMjI4LDggKzIzOCw4IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQKIAogICAgIGlmIChhbmltYXRpb25Nb2RlKCkgIT0gUGF0aEFuaW1hdGlvbikgewogICAgICAg
ICBGbG9hdFBvaW50IHRvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBtX3RvUG9pbnQ7Ci0gICAgICAg
IGlmIChpc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0Q291bnQgJiYgIXRvQXRFbmRPZkR1cmF0aW9u
U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRp
b25TdHJpbmcsIHRvUG9pbnRBdEVuZE9mRHVyYXRpb24pOworICAgICAgICBpZiAoaXNBY2N1bXVs
YXRlZCgpICYmIHJlcGVhdENvdW50ICYmIG1faGFzVG9Qb2ludEF0RW5kT2ZEdXJhdGlvbikKKyAg
ICAgICAgICAgIHRvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBtX3RvUG9pbnRBdEVuZE9mRHVyYXRp
b247CiAKICAgICAgICAgZmxvYXQgYW5pbWF0ZWRYID0gMDsKICAgICAgICAgYW5pbWF0ZUFkZGl0
aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2Zyb21Qb2ludC54KCksIG1fdG9Q
b2ludC54KCksIHRvUG9pbnRBdEVuZE9mRHVyYXRpb24ueCgpLCBhbmltYXRlZFgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAppbmRleCA3MWU0ZGUxZTJk
ZjNhMjdiOTM3N2IzNTU1NWU3ODJlNjcxNmQ3MzI2Li5lNTdlOGI3MWE0NzZjN2ZiMzhjMGEwYTVh
NTYwNWNkMmYzYjhiM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuaApAQCAtNDAsOSArNDAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRUb0Jhc2VWYWx1ZSgpOworICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVUb0F0RW5kT2ZE
dXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpOwogICAg
IHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiBieVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0cmluZyYgdG9BdEVu
ZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpOwogICAgIHZp
cnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpOwogICAgIHZpcnR1YWwgZmxvYXQgY2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKTsKICAgICB2aXJ0dWFsIFBhdGggYW5pbWF0aW9uUGF0aCgpIGNvbnN0OwpAQCAtNTUs
OSArNTYsMTIgQEAgcHJpdmF0ZToKICAgICBSb3RhdGVNb2RlIHJvdGF0ZU1vZGUoKSBjb25zdDsK
ICAgICB2b2lkIGJ1aWxkVHJhbnNmb3JtRm9yUHJvZ3Jlc3MoQWZmaW5lVHJhbnNmb3JtKiwgZmxv
YXQgcGVyY2VudGFnZSk7CiAKKyAgICBib29sIG1faGFzVG9Qb2ludEF0RW5kT2ZEdXJhdGlvbjsK
KwogICAgIC8vIE5vdGU6IHdlIGRvIG5vdCBzdXBwb3J0IHBlcmNlbnRhZ2UgdmFsdWVzIGZvciB0
by9mcm9tIGNvb3JkcyBhcyB0aGUgc3BlYyBpbXBsaWVzIHdlIHNob3VsZCAob3BlcmEgZG9lc24n
dCBlaXRoZXIpCiAgICAgRmxvYXRQb2ludCBtX2Zyb21Qb2ludDsKICAgICBGbG9hdFBvaW50IG1f
dG9Qb2ludDsKKyAgICBGbG9hdFBvaW50IG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbjsKIAogICAg
IFBhdGggbV9wYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEFuZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcApp
bmRleCAwOTFjM2M1OWZhMTljYzNmMjg2ZWM1M2QzY2RhOTMxMzcxYmI1NWRlLi43MGRkOTdmYjQy
M2MxNTc3ODBiNGY3NDNlNTA0MmRkNTZjZDMyNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQW5nbGUuY3BwCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmlt
YXQKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkQW5nbGUpOwogICAgIEFTU0VS
VChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBwYWlyPFNWR0FuZ2xlLCB1bnNp
Z25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVBbmRFbnVtZXJhdGlv
bigpOworICAgIGNvbnN0IHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFuZ2xlQW5kRW51
bWVyYXRpb24gPSBmcm9tLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAgcGFpcjxTVkdBbmds
ZSwgdW5zaWduZWQ+JiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0by0+YW5nbGVBbmRFbnVtZXJh
dGlvbigpOwogICAgIC8vIE9ubHkgcmVzcGVjdCBieSBhbmltYXRpb25zLCBpZiBmcm9tIGFuZCBi
eSBhcmUgYm90aCBzcGVjaWZpZWQgaW4gYW5nbGVzIChhbmQgbm90IGVnLiAnYXV0bycpLgogICAg
IGlmIChmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gdG9BbmdsZUFuZEVudW1lcmF0
aW9uLnNlY29uZCB8fCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gU1ZHTWFya2Vy
T3JpZW50QW5nbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBTVkdBbmdsZSYgZnJvbUFuZ2xlID0g
ZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7CisgICAgY29uc3QgU1ZHQW5nbGUmIGZyb21B
bmdsZSA9IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAgIFNWR0FuZ2xlJiB0b0Fu
Z2xlID0gdG9BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAgIHRvQW5nbGUuc2V0VmFsdWUo
dG9BbmdsZS52YWx1ZSgpICsgZnJvbUFuZ2xlLnZhbHVlKCkpOwogfQpAQCAtOTgsMTAgKzk4LDkg
QEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
ZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKIHsKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVt
ZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgCi0gICAgcGFpcjxTVkdB
bmdsZSwgdW5zaWduZWQ+JiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGZyb20tPmFuZ2xlQW5k
RW51bWVyYXRpb24oKTsKLSAgICBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIHRvQW5nbGVBbmRF
bnVtZXJhdGlvbiA9IHRvLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7Ci0gICAgcGFpcjxTVkdBbmds
ZSwgdW5zaWduZWQ+JiB0b0F0RW5kT2ZEdXJhdGlvbkFuZ2xlQW5kRW51bWVyYXRpb24gPSB0b0F0
RW5kT2ZEdXJhdGlvbi0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIHBhaXI8U1ZHQW5nbGUs
IHVuc2lnbmVkPiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGZyb20tPmFuZ2xlQW5kRW51bWVy
YXRpb24oKTsKKyAgICBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4gdG9BbmdsZUFuZEVudW1lcmF0
aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKyAgICBjb25zdCBwYWlyPFNWR0FuZ2xl
LCB1bnNpZ25lZD4mIHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRF
bmRPZkR1cmF0aW9uLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAgcGFpcjxTVkdBbmdsZSwg
dW5zaWduZWQ+JiBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24gPSBhbmltYXRlZC0+YW5nbGVB
bmRFbnVtZXJhdGlvbigpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFs
dWVzPHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiA+KDAsIGZyb21BbmdsZUFuZEVudW1lcmF0aW9u
LCB0b0FuZ2xlQW5kRW51bWVyYXRpb24sIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbiwgcGVy
Y2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKQEAgLTE0Myw3ICsxNDIsNyBAQCB2b2lkIFNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZAogICAgIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQg
PSBTVkdNYXJrZXJPcmllbnRBbmdsZTsKIAogICAgIFNWR0FuZ2xlJiBhbmltYXRlZFNWR0FuZ2xl
ID0gYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwotICAgIFNWR0FuZ2xlJiB0b0F0
RW5kT2ZEdXJhdGlvblNWR0FuZ2xlID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0
aW9uLmZpcnN0OworICAgIGNvbnN0IFNWR0FuZ2xlJiB0b0F0RW5kT2ZEdXJhdGlvblNWR0FuZ2xl
ID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAgIGZsb2F0
IGFuaW1hdGVkQW5nbGUgPSBhbmltYXRlZFNWR0FuZ2xlLnZhbHVlKCk7CiAgICAgbV9hbmltYXRp
b25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQs
IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0LnZhbHVlKCksIHRvQW5nbGVBbmRFbnVtZXJh
dGlvbi5maXJzdC52YWx1ZSgpLCB0b0F0RW5kT2ZEdXJhdGlvblNWR0FuZ2xlLnZhbHVlKCksIGFu
aW1hdGVkQW5nbGUpOwogICAgIGFuaW1hdGVkU1ZHQW5nbGUuc2V0VmFsdWUoYW5pbWF0ZWRBbmds
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCmluZGV4IDA3MjM2
NmIxYmQ0Y2Y1ZGM5M2I2ZGYzNmVjZDljNTg4YzE4MTA4OWQuLjg5YTU3M2Q1NjYyMDA5ZWZhMmQx
NjA5ODIxZTFmNTlkYmI5NjY4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEJvb2xlYW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0
b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduCiAgICAg
QVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OwogCi0gICAgYm9vbCYgZnJvbUJvb2xlYW4gPSBmcm9tLT5ib29sZWFuKCk7Ci0gICAgYm9vbCYg
dG9Cb29sZWFuID0gdG8tPmJvb2xlYW4oKTsKKyAgICBib29sIGZyb21Cb29sZWFuID0gZnJvbS0+
Ym9vbGVhbigpOworICAgIGJvb2wgdG9Cb29sZWFuID0gdG8tPmJvb2xlYW4oKTsKICAgICBib29s
JiBhbmltYXRlZEJvb2xlYW4gPSBhbmltYXRlZC0+Ym9vbGVhbigpOwogICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVzPGJvb2w+KDAsIGZyb21Cb29sZWFuLCB0b0Jvb2xl
YW4sIGFuaW1hdGVkQm9vbGVhbiwgcGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAppbmRleCA3ZTdjZDEyNjliYjY4OTk5
MzIzYzNiYmEyODA1ZjgzMGU0NTVmYTZhLi5lNGU0Yzc2NDM2ZmM4NzM3ZDNmZjRiNWFkZjA1ODYw
ODMwOTViYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCkBAIC00
NSw3ICs0NSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6YWRkQW5pbWF0ZWRU
eXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdAogewogICAgIEFTU0VSVChmcm9t
LT50eXBlKCkgPT0gQW5pbWF0ZWRDb2xvcik7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0
by0+dHlwZSgpKTsKLSAgICB0by0+Y29sb3IoKSA9IENvbG9yRGlzdGFuY2U6OmFkZENvbG9ycyhm
cm9tLT5jb2xvcigpLCB0by0+Y29sb3IoKSk7CisKKyAgICBjb25zdCBDb2xvciYgZnJvbUNvbG9y
ID0gZnJvbS0+Y29sb3IoKTsKKyAgICBDb2xvciYgdG9Db2xvciA9IHRvLT5jb2xvcigpOworICAg
IHRvQ29sb3IgPSBDb2xvckRpc3RhbmNlOjphZGRDb2xvcnMoZnJvbUNvbG9yLCB0b0NvbG9yKTsK
IH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFkanVzdEZvckN1cnJlbnRDb2xvcihTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50LCBDb2xvciYgY29sb3IpCkBAIC02OCw5ICs3MSw5IEBAIHZvaWQgU1ZH
QW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNT
RVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgQ29sb3ImIGZyb21Db2xvciA9IGZyb20tPmNv
bG9yKCk7Ci0gICAgQ29sb3ImIHRvQ29sb3IgPSB0by0+Y29sb3IoKTsKLSAgICBDb2xvciYgdG9B
dEVuZE9mRHVyYXRpb25Db2xvciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5jb2xvcigpOworICAgIENv
bG9yIGZyb21Db2xvciA9IGZyb20tPmNvbG9yKCk7CisgICAgQ29sb3IgdG9Db2xvciA9IHRvLT5j
b2xvcigpOworICAgIGNvbnN0IENvbG9yJiB0b0F0RW5kT2ZEdXJhdGlvbkNvbG9yID0gdG9BdEVu
ZE9mRHVyYXRpb24tPmNvbG9yKCk7CiAgICAgQ29sb3ImIGFuaW1hdGVkQ29sb3IgPSBhbmltYXRl
ZC0+Y29sb3IoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxD
b2xvcj4ocGFyc2VDb2xvckZyb21TdHJpbmcsIGZyb21Db2xvciwgdG9Db2xvciwgYW5pbWF0ZWRD
b2xvciwgcGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAppbmRleCBjNWI2ZDNmN2UwMDNkN2Q0Zjli
MDdmNGEwYmYzYjY5Yzg3N2NkNzVkLi5hMzQ2YjJjMTBmOTc4ZWIyOTA3YTYzMmYzYTc3OTIwMzBi
NjUxMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24u
Y3BwCkBAIC0xNTAsOCArMTUwLDggQEAgdm9pZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0
b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW4KICAgICBBU1NF
UlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAK
LSAgICB1bnNpZ25lZCYgZnJvbUVudW1lcmF0aW9uID0gZnJvbS0+ZW51bWVyYXRpb24oKTsKLSAg
ICB1bnNpZ25lZCYgdG9FbnVtZXJhdGlvbiA9IHRvLT5lbnVtZXJhdGlvbigpOworICAgIHVuc2ln
bmVkIGZyb21FbnVtZXJhdGlvbiA9IGZyb20tPmVudW1lcmF0aW9uKCk7CisgICAgdW5zaWduZWQg
dG9FbnVtZXJhdGlvbiA9IHRvLT5lbnVtZXJhdGlvbigpOwogICAgIHVuc2lnbmVkJiBhbmltYXRl
ZEVudW1lcmF0aW9uID0gYW5pbWF0ZWQtPmVudW1lcmF0aW9uKCk7CiAgICAgbV9hbmltYXRpb25F
bGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8dW5zaWduZWQ+KDAsIGZyb21FbnVtZXJhdGlvbiwg
dG9FbnVtZXJhdGlvbiwgYW5pbWF0ZWRFbnVtZXJhdGlvbiwgcGVyY2VudGFnZSwgbV9jb250ZXh0
RWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZElu
dGVnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKaW5k
ZXggY2QzNmI2N2RjNDk0ZDVjODhkMTQ2MjI2ZDQyNjY2NWU0N2UzNjczOS4uMzg3ZTYxZTJmZjcz
ZDRjOTFiNjdjYzlmMDUyZGYyZDUzMjJmZDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlci5jcHAKQEAgLTcwLDcgKzcwLDkgQEAgdm9pZCBTVkdBbmltYXRlZEludGVn
ZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0Fu
aW0KICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkSW50ZWdlcik7CiAgICAgQVNT
RVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIHRvLT5pbnRlZ2VyKCkgKz0g
ZnJvbS0+aW50ZWdlcigpOworICAgIGNvbnN0IGludCYgZnJvbUludGVnZXIgPSBmcm9tLT5pbnRl
Z2VyKCk7CisgICAgaW50JiB0b0ludGVnZXIgPSB0by0+aW50ZWdlcigpOworICAgIHRvSW50ZWdl
ciArPSBmcm9tSW50ZWdlcjsKIH0KIAogdm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVs
ZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBpbnQgZnJvbUlu
dGVnZXIsIGludCB0b0ludGVnZXIsIGludCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXIsIGludCYg
YW5pbWF0ZWRJbnRlZ2VyKQpAQCAtODUsOSArODcsOSBAQCB2b2lkIFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bgogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRF
bGVtZW50KTsKIAotICAgIGludCYgZnJvbUludGVnZXIgPSBmcm9tLT5pbnRlZ2VyKCk7Ci0gICAg
aW50JiB0b0ludGVnZXIgPSB0by0+aW50ZWdlcigpOwotICAgIGludCYgdG9BdEVuZE9mRHVyYXRp
b25JbnRlZ2VyID0gdG9BdEVuZE9mRHVyYXRpb24tPmludGVnZXIoKTsKKyAgICBpbnQgZnJvbUlu
dGVnZXIgPSBmcm9tLT5pbnRlZ2VyKCk7CisgICAgaW50IHRvSW50ZWdlciA9IHRvLT5pbnRlZ2Vy
KCk7CisgICAgY29uc3QgaW50JiB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXIgPSB0b0F0RW5kT2ZE
dXJhdGlvbi0+aW50ZWdlcigpOwogICAgIGludCYgYW5pbWF0ZWRJbnRlZ2VyID0gYW5pbWF0ZWQt
PmludGVnZXIoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxp
bnQ+KDAsIGZyb21JbnRlZ2VyLCB0b0ludGVnZXIsIGFuaW1hdGVkSW50ZWdlciwgcGVyY2VudGFn
ZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAKaW5kZXggZTEzYjFjZjYzOTJi
MmU4YWNiZDNhN2E4ZjZmNTJiN2M3NjE2ODY1Yi4uNzBjNTc1MzQxY2RkODU2Njg4ZDNlNmNhMzE2
ZmFiYWJhNWY4ZTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
SW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBT
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlcik7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlw
ZSgpKTsKIAotICAgIHBhaXI8aW50LCBpbnQ+JiBmcm9tSW50ZWdlclBhaXIgPSBmcm9tLT5pbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgY29uc3QgcGFpcjxpbnQsIGludD4mIGZyb21JbnRl
Z2VyUGFpciA9IGZyb20tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKICAgICBwYWlyPGludCwg
aW50PiYgdG9JbnRlZ2VyUGFpciA9IHRvLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CiAKICAg
ICB0b0ludGVnZXJQYWlyLmZpcnN0ICs9IGZyb21JbnRlZ2VyUGFpci5maXJzdDsKQEAgLTkxLDkg
KzkxLDkgQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXIKICAgICBBU1NFUlQobV9hbmltYXRpb25F
bGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBwYWlyPGludCwg
aW50PiYgZnJvbUludGVnZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwot
ICAgIHBhaXI8aW50LCBpbnQ+JiB0b0ludGVnZXJQYWlyID0gdG8tPmludGVnZXJPcHRpb25hbElu
dGVnZXIoKTsKLSAgICBwYWlyPGludCwgaW50PiYgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyUGFp
ciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgcGFp
cjxpbnQsIGludD4gZnJvbUludGVnZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdl
cigpOworICAgIHBhaXI8aW50LCBpbnQ+IHRvSW50ZWdlclBhaXIgPSB0by0+aW50ZWdlck9wdGlv
bmFsSW50ZWdlcigpOworICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiB0b0F0RW5kT2ZEdXJhdGlv
bkludGVnZXJQYWlyID0gdG9BdEVuZE9mRHVyYXRpb24tPmludGVnZXJPcHRpb25hbEludGVnZXIo
KTsKICAgICBwYWlyPGludCwgaW50PiYgYW5pbWF0ZWRJbnRlZ2VyUGFpciA9IGFuaW1hdGVkLT5p
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RG
cm9tVG9WYWx1ZXM8cGFpcjxpbnQsIGludD4gPigwLCBmcm9tSW50ZWdlclBhaXIsIHRvSW50ZWdl
clBhaXIsIGFuaW1hdGVkSW50ZWdlclBhaXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAppbmRleCBjYTZiYWU4
M2RhODdjZjdmOTBmMWJhYzc5YThjMDg0ZDRmOTU2ZjcwLi5jYzQxZTM2ZmY4ZWJiMzlkNzVjYmM0
OTVkYzY4MzlkNjA3ZWM0OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRMZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0
aC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjph
ZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWEKICAgICBBU1NF
UlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIFNWR0xlbmd0aCYgZnJvbUxlbmd0
aCA9IGZyb20tPmxlbmd0aCgpOworICAgIGNvbnN0IFNWR0xlbmd0aCYgZnJvbUxlbmd0aCA9IGZy
b20tPmxlbmd0aCgpOwogICAgIFNWR0xlbmd0aCYgdG9MZW5ndGggPSB0by0+bGVuZ3RoKCk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBTVkdBbmlt
YXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmUKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQo
bV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBTVkdMZW5ndGgmIGZyb21TVkdMZW5ndGggPSBmcm9t
LT5sZW5ndGgoKTsKLSAgICBTVkdMZW5ndGgmIHRvU1ZHTGVuZ3RoID0gdG8tPmxlbmd0aCgpOwot
ICAgIFNWR0xlbmd0aCYgdG9BdEVuZE9mRHVyYXRpb25TVkdMZW5ndGggPSB0b0F0RW5kT2ZEdXJh
dGlvbi0+bGVuZ3RoKCk7CisgICAgU1ZHTGVuZ3RoIGZyb21TVkdMZW5ndGggPSBmcm9tLT5sZW5n
dGgoKTsKKyAgICBTVkdMZW5ndGggdG9TVkdMZW5ndGggPSB0by0+bGVuZ3RoKCk7CisgICAgY29u
c3QgU1ZHTGVuZ3RoJiB0b0F0RW5kT2ZEdXJhdGlvblNWR0xlbmd0aCA9IHRvQXRFbmRPZkR1cmF0
aW9uLT5sZW5ndGgoKTsKICAgICBTVkdMZW5ndGgmIGFuaW1hdGVkU1ZHTGVuZ3RoID0gYW5pbWF0
ZWQtPmxlbmd0aCgpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVz
PFNWR0xlbmd0aD4ocGFyc2VMZW5ndGhGcm9tU3RyaW5nLCBmcm9tU1ZHTGVuZ3RoLCB0b1NWR0xl
bmd0aCwgYW5pbWF0ZWRTVkdMZW5ndGgsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCmluZGV4IGRh
OTZhY2UzMGNiZWRiZDNlOGZkM2U2Zjk0ZDE0NjA4ZGYzZDM3OTQuLmJjN2ZlZjExNGJiNDRlZmFi
NzUzZmZiNWJlYWNlNDUzMjBhOGMwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aExpc3QuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBT
VkdBCiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZExlbmd0aExpc3QpOwogICAg
IEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBTVkdMZW5ndGhMaXN0
JiBmcm9tTGVuZ3RoTGlzdCA9IGZyb20tPmxlbmd0aExpc3QoKTsKKyAgICBjb25zdCBTVkdMZW5n
dGhMaXN0JiBmcm9tTGVuZ3RoTGlzdCA9IGZyb20tPmxlbmd0aExpc3QoKTsKICAgICBTVkdMZW5n
dGhMaXN0JiB0b0xlbmd0aExpc3QgPSB0by0+bGVuZ3RoTGlzdCgpOwogCiAgICAgdW5zaWduZWQg
ZnJvbUxlbmd0aExpc3RTaXplID0gZnJvbUxlbmd0aExpc3Quc2l6ZSgpOwpAQCAtOTcsOSArOTcs
OSBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVucwogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1l
bnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIFNWR0xlbmd0aExpc3Qm
IGZyb21MZW5ndGhMaXN0ID0gZnJvbS0+bGVuZ3RoTGlzdCgpOwotICAgIFNWR0xlbmd0aExpc3Qm
IHRvTGVuZ3RoTGlzdCA9IHRvLT5sZW5ndGhMaXN0KCk7Ci0gICAgU1ZHTGVuZ3RoTGlzdCYgdG9B
dEVuZE9mRHVyYXRpb25MZW5ndGhMaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPmxlbmd0aExpc3Qo
KTsKKyAgICBTVkdMZW5ndGhMaXN0IGZyb21MZW5ndGhMaXN0ID0gZnJvbS0+bGVuZ3RoTGlzdCgp
OworICAgIFNWR0xlbmd0aExpc3QgdG9MZW5ndGhMaXN0ID0gdG8tPmxlbmd0aExpc3QoKTsKKyAg
ICBjb25zdCBTVkdMZW5ndGhMaXN0JiB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3QgPSB0b0F0
RW5kT2ZEdXJhdGlvbi0+bGVuZ3RoTGlzdCgpOwogICAgIFNWR0xlbmd0aExpc3QmIGFuaW1hdGVk
TGVuZ3RoTGlzdCA9IGFuaW1hdGVkLT5sZW5ndGhMaXN0KCk7CiAgICAgaWYgKCFtX2FuaW1hdGlv
bkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTGVuZ3RoTGlzdD4ocGFyc2VMZW5n
dGhMaXN0RnJvbVN0cmluZywgZnJvbUxlbmd0aExpc3QsIHRvTGVuZ3RoTGlzdCwgYW5pbWF0ZWRM
ZW5ndGhMaXN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKaW5kZXggYzc3NWE0NGNl
ZmUyOTI5MmNiZDBhOThlMjIzNzhiNTFmOGE4NDU4NC4uYmJjODkxZGNmODU3NDAxY2ZkNmMxODI4
ODI4OTBkMmU4N2FmOTNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIu
Y3BwCkBAIC03Myw3ICs3Myw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6YWRk
QW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hCiAgICAgQVNTRVJU
KGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZE51bWJlcik7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUo
KSA9PSB0by0+dHlwZSgpKTsKIAotICAgIHRvLT5udW1iZXIoKSArPSBmcm9tLT5udW1iZXIoKTsK
KyAgICBjb25zdCBmbG9hdCYgZnJvbU51bWJlciA9IGZyb20tPm51bWJlcigpOworICAgIGZsb2F0
JiB0b051bWJlciA9IHRvLT5udW1iZXIoKTsKKyAgICB0b051bWJlciArPSBmcm9tTnVtYmVyOwog
fQogCiBzdGF0aWMgZmxvYXQgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTg4LDkgKzkwLDkgQEAgdm9pZCBTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmUKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQo
bV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBmbG9hdCYgZnJvbU51bWJlciA9IGZyb20tPm51bWJl
cigpOwotICAgIGZsb2F0JiB0b051bWJlciA9IHRvLT5udW1iZXIoKTsKLSAgICBmbG9hdCYgdG9B
dEVuZE9mRHVyYXRpb25OdW1iZXIgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+bnVtYmVyKCk7CisgICAg
ZmxvYXQgZnJvbU51bWJlciA9IGZyb20tPm51bWJlcigpOworICAgIGZsb2F0IHRvTnVtYmVyID0g
dG8tPm51bWJlcigpOworICAgIGNvbnN0IGZsb2F0JiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlciA9
IHRvQXRFbmRPZkR1cmF0aW9uLT5udW1iZXIoKTsKICAgICBmbG9hdCYgYW5pbWF0ZWROdW1iZXIg
PSBhbmltYXRlZC0+bnVtYmVyKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9t
VG9WYWx1ZXM8ZmxvYXQ+KHBhcnNlTnVtYmVyRnJvbVN0cmluZywgZnJvbU51bWJlciwgdG9OdW1i
ZXIsIGFuaW1hdGVkTnVtYmVyLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAppbmRleCAyZjNlM2Fj
NjNlY2Q0YzY4YzhkMTk2MTQ1NTkxMmU4YTIxZjU2ZTM2Li4wZGRjNzk2N2FmMDhhM2Y4ZjUxZDIx
M2YyZmJjZjQxYmZmMzE2MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0LmNwcApAQCAtODUsOSArODUsOSBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlz
dEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVucwog
ICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKIAotICAgIFNWR051bWJlckxpc3QmIGZyb21OdW1iZXJMaXN0ID0gZnJvbS0+bnVtYmVy
TGlzdCgpOwotICAgIFNWR051bWJlckxpc3QmIHRvTnVtYmVyTGlzdCA9IHRvLT5udW1iZXJMaXN0
KCk7Ci0gICAgU1ZHTnVtYmVyTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJMaXN0ID0gdG9B
dEVuZE9mRHVyYXRpb24tPm51bWJlckxpc3QoKTsKKyAgICBTVkdOdW1iZXJMaXN0IGZyb21OdW1i
ZXJMaXN0ID0gZnJvbS0+bnVtYmVyTGlzdCgpOworICAgIFNWR051bWJlckxpc3QgdG9OdW1iZXJM
aXN0ID0gdG8tPm51bWJlckxpc3QoKTsKKyAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiB0b0F0RW5k
T2ZEdXJhdGlvbk51bWJlckxpc3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+bnVtYmVyTGlzdCgpOwog
ICAgIFNWR051bWJlckxpc3QmIGFuaW1hdGVkTnVtYmVyTGlzdCA9IGFuaW1hdGVkLT5udW1iZXJM
aXN0KCk7CiAgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1
ZXM8U1ZHTnVtYmVyTGlzdD4oMCwgZnJvbU51bWJlckxpc3QsIHRvTnVtYmVyTGlzdCwgYW5pbWF0
ZWROdW1iZXJMaXN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwCmluZGV4IGYzNGQ3NjNhODgzOWRjY2NiN2IyZDc2MTljZjUwYTQ1ZjBh
MjBhODkuLmNjZTgwMWMxMGQ0YzQ2NDhjOTY3OGY4OWYwYTk3YzFkZGU5YjhlODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJl
ci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKgogICAgIEFTU0VS
VChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7CiAgICAgQVNT
RVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIHBhaXI8ZmxvYXQsIGZsb2F0
PiYgZnJvbU51bWJlclBhaXIgPSBmcm9tLT5udW1iZXJPcHRpb25hbE51bWJlcigpOworICAgIGNv
bnN0IHBhaXI8ZmxvYXQsIGZsb2F0PiYgZnJvbU51bWJlclBhaXIgPSBmcm9tLT5udW1iZXJPcHRp
b25hbE51bWJlcigpOwogICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiYgdG9OdW1iZXJQYWlyID0gdG8t
Pm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CiAKICAgICB0b051bWJlclBhaXIuZmlyc3QgKz0gZnJv
bU51bWJlclBhaXIuZmlyc3Q7CkBAIC04OCw5ICs4OCw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOwogCi0gICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiBmcm9tTnVtYmVyUGFpciA9IGZy
b20tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7Ci0gICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiB0b051
bWJlclBhaXIgPSB0by0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKLSAgICBwYWlyPGZsb2F0LCBm
bG9hdD4mIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyUGFpciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5u
dW1iZXJPcHRpb25hbE51bWJlcigpOworICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiBmcm9tTnVtYmVy
UGFpciA9IGZyb20tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgcGFpcjxmbG9hdCwgZmxv
YXQ+IHRvTnVtYmVyUGFpciA9IHRvLT5udW1iZXJPcHRpb25hbE51bWJlcigpOworICAgIGNvbnN0
IHBhaXI8ZmxvYXQsIGZsb2F0PiYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJQYWlyID0gdG9BdEVu
ZE9mRHVyYXRpb24tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CiAgICAgcGFpcjxmbG9hdCwgZmxv
YXQ+JiBhbmltYXRlZE51bWJlclBhaXIgPSBhbmltYXRlZC0+bnVtYmVyT3B0aW9uYWxOdW1iZXIo
KTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxwYWlyPGZsb2F0
LCBmbG9hdD4gPigwLCBmcm9tTnVtYmVyUGFpciwgdG9OdW1iZXJQYWlyLCBhbmltYXRlZE51bWJl
clBhaXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFBhdGguY3BwCmluZGV4IDFjMTg2NWFmYjdmNTAxMjNkOWVjNTYyZDE4NTQyOGU5
NTYxYTM1NGEuLjg2YzcxYjFhYTVjZmI5M2I3YjkzMjM3MDFlOGY3NzBiMjk0NjM5MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBAIC0xMDcsMjEgKzEwNywyMSBAQCB2
b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAg
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIGZy
b21QYXRoID0gZnJvbS0+cGF0aCgpOwotICAgIFNWR1BhdGhCeXRlU3RyZWFtKiB0b1BhdGggPSB0
by0+cGF0aCgpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtIGZyb21QYXRoID0gKmZyb20tPnBhdGgo
KTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSB0b1BhdGggPSAqdG8tPnBhdGgoKTsKICAgICBTVkdQ
YXRoQnl0ZVN0cmVhbSogdG9BdEVuZE9mRHVyYXRpb25QYXRoID0gdG9BdEVuZE9mRHVyYXRpb24t
PnBhdGgoKTsKICAgICBTVkdQYXRoQnl0ZVN0cmVhbSogYW5pbWF0ZWRQYXRoID0gYW5pbWF0ZWQt
PnBhdGgoKTsKIAogICAgIC8vIFBhc3MgZmFsc2UgdG8gJ3Jlc2l6ZUFuaW1hdGVkTGlzdElmTmVl
ZGVkJyBoZXJlLCBhcyB0aGUgcGF0aCBhbmltYXRpb24gaXMgbm90IGEgcmVndWxhciBWZWN0b3I8
U1ZHWFhYPiB0eXBlLCBidXQgYSBTVkdQYXRoQnl0ZVN0cmVhbSwgdGhhdCB3b3JrcyBkaWZmZXJl
bnRseS4KLSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVl
czxTVkdQYXRoQnl0ZVN0cmVhbT4oMCwgKmZyb21QYXRoLCAqdG9QYXRoLCAqYW5pbWF0ZWRQYXRo
LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50LCBmYWxzZSkpCisgICAgaWYgKCFtX2FuaW1h
dGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUGF0aEJ5dGVTdHJlYW0+KDAs
IGZyb21QYXRoLCB0b1BhdGgsICphbmltYXRlZFBhdGgsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVs
ZW1lbnQsIGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2FjaGUgdGhlIGN1cnJl
bnQgYW5pbWF0ZWQgdmFsdWUgYmVmb3JlIHRoZSBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJl
YW0oKSBjbGVhcnMgYW5pbWF0ZWRQYXRoLgogICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4g
bGFzdEFuaW1hdGVkUGF0aDsKLSAgICBpZiAoIWZyb21QYXRoLT5zaXplKCkgfHwgKG1fYW5pbWF0
aW9uRWxlbWVudC0+aXNBZGRpdGl2ZSgpICYmIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9u
TW9kZSgpICE9IFRvQW5pbWF0aW9uKSkKKyAgICBpZiAoIWZyb21QYXRoLnNpemUoKSB8fCAobV9h
bmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZlKCkgJiYgbV9hbmltYXRpb25FbGVtZW50LT5hbmlt
YXRpb25Nb2RlKCkgIT0gVG9BbmltYXRpb24pKQogICAgICAgICBsYXN0QW5pbWF0ZWRQYXRoID0g
YW5pbWF0ZWRQYXRoLT5jb3B5KCk7CiAKLSAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJl
YW0oZnJvbVBhdGgsIHRvUGF0aCwgYW5pbWF0ZWRQYXRoLCBwZXJjZW50YWdlKTsKKyAgICBidWls
ZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oJmZyb21QYXRoLCAmdG9QYXRoLCBhbmltYXRlZFBh
dGgsIHBlcmNlbnRhZ2UpOwogCiAgICAgLy8gSGFuZGxlIGFkZGl0aXZlPSdzdW0nLgogICAgIGlm
IChsYXN0QW5pbWF0ZWRQYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkUG9pbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50
TGlzdC5jcHAKaW5kZXggYzI2NDlmYzNkNWI1MWE2ZjFiYjgwYTcwZTJlNzMwNzAzODdkYTljYi4u
OTljYmJkYTFlOGQ3Yzg3ODNhYzU2YTk1MzRlYjhiNzZiYjQwMGYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRl
ZFR5cGUqIGZyb20sIFNWR0FuCiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZFBv
aW50cyk7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIFNW
R1BvaW50TGlzdCYgZnJvbVBvaW50TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOworICAgIGNvbnN0
IFNWR1BvaW50TGlzdCYgZnJvbVBvaW50TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOwogICAgIFNW
R1BvaW50TGlzdCYgdG9Qb2ludExpc3QgPSB0by0+cG9pbnRMaXN0KCk7CiAKICAgICB1bnNpZ25l
ZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZyb21Qb2ludExpc3Quc2l6ZSgpOwpAQCAtODYsOSArODYs
OSBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaQogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1l
bnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIFNWR1BvaW50TGlzdCYg
ZnJvbVBvaW50TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOwotICAgIFNWR1BvaW50TGlzdCYgdG9Q
b2ludExpc3QgPSB0by0+cG9pbnRMaXN0KCk7Ci0gICAgU1ZHUG9pbnRMaXN0JiB0b0F0RW5kT2ZE
dXJhdGlvblBvaW50TGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5wb2ludExpc3QoKTsKKyAgICBT
VkdQb2ludExpc3QgZnJvbVBvaW50TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOworICAgIFNWR1Bv
aW50TGlzdCB0b1BvaW50TGlzdCA9IHRvLT5wb2ludExpc3QoKTsKKyAgICBjb25zdCBTVkdQb2lu
dExpc3QmIHRvQXRFbmRPZkR1cmF0aW9uUG9pbnRMaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPnBv
aW50TGlzdCgpOwogICAgIFNWR1BvaW50TGlzdCYgYW5pbWF0ZWRQb2ludExpc3QgPSBhbmltYXRl
ZC0+cG9pbnRMaXN0KCk7CiAgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21U
b0xpc3RWYWx1ZXM8U1ZHUG9pbnRMaXN0PigwLCBmcm9tUG9pbnRMaXN0LCB0b1BvaW50TGlzdCwg
YW5pbWF0ZWRQb2ludExpc3QsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8uY3BwCmluZGV4IDczYTdmMjcwYzkzZDJmYTVkN2RmY2ZkN2ZlZjhjZTUy
ZGQ1YjEwOTUuLmE2ZTU0MDNkNjcwZDhjZjYxMGIwNjc0ZmIwMWVmNzZhN2VlMGYxYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwCkBAIC03Myw4ICs3Myw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VuCiAgICAgQVNT
RVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwog
Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgZnJvbVByZXNlcnZlQXNwZWN0UmF0aW8gPSBm
cm9tLT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYg
dG9QcmVzZXJ2ZUFzcGVjdFJhdGlvID0gdG8tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIGZyb21QcmVzZXJ2ZUFzcGVjdFJhdGlvID0gZnJvbS0+cHJl
c2VydmVBc3BlY3RSYXRpbygpOworICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gdG9QcmVzZXJ2
ZUFzcGVjdFJhdGlvID0gdG8tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKICAgICBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvJiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBhbmltYXRlZC0+cHJl
c2VydmVBc3BlY3RSYXRpbygpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRv
VmFsdWVzPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+KDAsIGZyb21QcmVzZXJ2ZUFzcGVjdFJhdGlv
LCB0b1ByZXNlcnZlQXNwZWN0UmF0aW8sIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgcGVy
Y2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UmVjdC5jcHAKaW5kZXggYWQ0Mjg2ZGJlY2FmODU3MzY1YzljZGYzMjJhM2Y2YjE2ZGEyZWEyNy4u
Njk5ZDJkODk2YjRjNjA3MDhiZmE3OGYxOGJlNDRhMmYzYTFlOWVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKQEAgLTY5LDcgKzY5LDkgQEAgdm9pZCBTVkdBbmltYXRl
ZFJlY3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNW
R0FuaW1hdGUKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkUmVjdCk7CiAgICAg
QVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIHRvLT5yZWN0KCkgKz0g
ZnJvbS0+cmVjdCgpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QgPSBmcm9tLT5yZWN0
KCk7CisgICAgRmxvYXRSZWN0JiB0b1JlY3QgPSB0by0+cmVjdCgpOworICAgIHRvUmVjdCArPSBm
cm9tUmVjdDsKIH0KIAogdm9pZCBTVkdBbmltYXRlZFJlY3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5p
bWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRv
QXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQpAQCAtNzcsOSArNzks
OSBAQCB2b2lkIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVu
dCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgRmxvYXRSZWN0JiBmcm9t
UmVjdCA9IGZyb20tPnJlY3QoKTsKLSAgICBGbG9hdFJlY3QmIHRvUmVjdCA9IHRvLT5yZWN0KCk7
Ci0gICAgRmxvYXRSZWN0JiB0b0F0RW5kT2ZEdXJhdGlvblJlY3QgPSB0b0F0RW5kT2ZEdXJhdGlv
bi0+cmVjdCgpOworICAgIEZsb2F0UmVjdCBmcm9tUmVjdCA9IGZyb20tPnJlY3QoKTsKKyAgICBG
bG9hdFJlY3QgdG9SZWN0ID0gdG8tPnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHRvQXRF
bmRPZkR1cmF0aW9uUmVjdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5yZWN0KCk7CiAgICAgRmxvYXRS
ZWN0JiBhbmltYXRlZFJlY3QgPSBhbmltYXRlZC0+cmVjdCgpOwogICAgIG1fYW5pbWF0aW9uRWxl
bWVudC0+YWRqdXN0RnJvbVRvVmFsdWVzPEZsb2F0UmVjdD4oMCwgZnJvbVJlY3QsIHRvUmVjdCwg
YW5pbWF0ZWRSZWN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKaW5kZXggYWI5MTEwYjM4YjljMGE4ZWNhN2Fj
ZGQ4MWVlMzJjYmEyNzE1ZjgxMi4uZDEyZWViNjgyYzNhNGUyNjhhZTc4MTFhNzNjMmEyZjNmOGEx
YzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwCkBAIC03OCw4
ICs3OCw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9u
RWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgU3RyaW5nJiBm
cm9tU3RyaW5nID0gZnJvbS0+c3RyaW5nKCk7Ci0gICAgU3RyaW5nJiB0b1N0cmluZyA9IHRvLT5z
dHJpbmcoKTsKKyAgICBTdHJpbmcgZnJvbVN0cmluZyA9IGZyb20tPnN0cmluZygpOworICAgIFN0
cmluZyB0b1N0cmluZyA9IHRvLT5zdHJpbmcoKTsKICAgICBTdHJpbmcmIGFuaW1hdGVkU3RyaW5n
ID0gYW5pbWF0ZWQtPnN0cmluZygpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJv
bVRvVmFsdWVzPFN0cmluZz4ocGFyc2VTdHJpbmdGcm9tU3RyaW5nLCBmcm9tU3RyaW5nLCB0b1N0
cmluZywgYW5pbWF0ZWRTdHJpbmcsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCmluZGV4
IDUwZDJkNTc2NDU4OWI3Njg0NzJjNzdkY2VkZDkzODJhYTg5NGNhMjYuLjQzZTczYThmOTA2N2M2
ZjNkZWRiYTMxNTM2NTFmMGVlMGRjOWFhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCkBAIC03OSwxNCArNzksMTQgQEAgdm9pZCBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRl
ZFR5cGUqIGZyb20sIFMKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkVHJhbnNm
b3JtTGlzdCk7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAg
IFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJvbS0+dHJhbnNmb3JtTGlz
dCgpOworICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJv
bS0+dHJhbnNmb3JtTGlzdCgpOwogICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRvVHJhbnNmb3JtTGlz
dCA9IHRvLT50cmFuc2Zvcm1MaXN0KCk7CiAgICAgdW5zaWduZWQgZnJvbVRyYW5zZm9ybUxpc3RT
aXplID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwogICAgIGlmICghZnJvbVRyYW5zZm9ybUxp
c3RTaXplIHx8IGZyb21UcmFuc2Zvcm1MaXN0U2l6ZSAhPSB0b1RyYW5zZm9ybUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZnJvbVRyYW5zZm9ybUxpc3RTaXplID09
IDEpOwotICAgIFNWR1RyYW5zZm9ybSYgZnJvbVRyYW5zZm9ybSA9IGZyb21UcmFuc2Zvcm1MaXN0
WzBdOworICAgIGNvbnN0IFNWR1RyYW5zZm9ybSYgZnJvbVRyYW5zZm9ybSA9IGZyb21UcmFuc2Zv
cm1MaXN0WzBdOwogICAgIFNWR1RyYW5zZm9ybSYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxp
c3RbMF07CiAKICAgICBBU1NFUlQoZnJvbVRyYW5zZm9ybS50eXBlKCkgPT0gdG9UcmFuc2Zvcm0u
dHlwZSgpKTsKQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsCiAgICAg
Ly8g4oCYdG/igJkgYXR0cmlidXRlIHZhbHVlLCB3aGljaCBjb25mbGljdHMgbWF0aGVtYXRpY2Fs
bHkgd2l0aCB0aGUgcmVxdWlyZW1lbnQgZm9yIGFkZGl0aXZlIHRyYW5zZm9ybSBhbmltYXRpb25z
CiAgICAgLy8gdG8gYmUgcG9zdC1tdWx0aXBsaWVkLiBBcyBhIGNvbnNlcXVlbmNlLCBpbiBTVkcg
MS4xIHRoZSBiZWhhdmlvciBvZiB0byBhbmltYXRpb25zIGZvciDigJhhbmltYXRlVHJhbnNmb3Jt
4oCZIGlzIHVuZGVmaW5lZC4KICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgdGFrZW4gaW50byBh
Y2NvdW50IHlldC4KLSAgICBTVkdUcmFuc2Zvcm1MaXN0JiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZy
b20tPnRyYW5zZm9ybUxpc3QoKTsKLSAgICBTVkdUcmFuc2Zvcm1MaXN0JiB0b1RyYW5zZm9ybUxp
c3QgPSB0by0+dHJhbnNmb3JtTGlzdCgpOwotICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRvQXRFbmRP
ZkR1cmF0aW9uVHJhbnNmb3JtTGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT50cmFuc2Zvcm1MaXN0
KCk7CisgICAgU1ZHVHJhbnNmb3JtTGlzdCBmcm9tVHJhbnNmb3JtTGlzdCA9IGZyb20tPnRyYW5z
Zm9ybUxpc3QoKTsKKyAgICBTVkdUcmFuc2Zvcm1MaXN0IHRvVHJhbnNmb3JtTGlzdCA9IHRvLT50
cmFuc2Zvcm1MaXN0KCk7CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgdG9BdEVuZE9mRHVy
YXRpb25UcmFuc2Zvcm1MaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPnRyYW5zZm9ybUxpc3QoKTsK
ICAgICBTVkdUcmFuc2Zvcm1MaXN0JiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBhbmltYXRlZC0+
dHJhbnNmb3JtTGlzdCgpOwogCiAgICAgLy8gUGFzcyBmYWxzZSB0byAncmVzaXplQW5pbWF0ZWRM
aXN0SWZOZWVkZWQnIGhlcmUsIGFzIHRoZSBzcGVjaWFsIHBvc3QtbXVsdGlwbGljYXRpb24gYmVo
YXZpb3Igb2YgPGFuaW1hdGVUcmFuc2Zvcm0+IG5lZWRzIHRvIGJlIHJlc3BlY3RlZCBiZWxvdy4K
QEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9y
OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsCiAgICAgU1ZHVHJhbnNm
b3JtIGVmZmVjdGl2ZUZyb20gPSBmcm9tVHJhbnNmb3JtTGlzdFNpemUgPyBmcm9tVHJhbnNmb3Jt
TGlzdFswXSA6IFNWR1RyYW5zZm9ybSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5zZm9ybTo6
Q29uc3RydWN0WmVyb1RyYW5zZm9ybSk7CiAgICAgU1ZHVHJhbnNmb3JtIGN1cnJlbnRUcmFuc2Zv
cm0gPSBTVkdUcmFuc2Zvcm1EaXN0YW5jZShlZmZlY3RpdmVGcm9tLCB0b1RyYW5zZm9ybSkuc2Nh
bGVkRGlzdGFuY2UocGVyY2VudGFnZSkuYWRkVG9TVkdUcmFuc2Zvcm0oZWZmZWN0aXZlRnJvbSk7
CiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENv
dW50KSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybSYgdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm0g
PSB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybUxpc3RbMF07CisgICAgICAgIGNvbnN0IFNWR1Ry
YW5zZm9ybSYgdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm0gPSB0b0F0RW5kT2ZEdXJhdGlvblRy
YW5zZm9ybUxpc3RbMF07CiAgICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBlbmQoU1ZH
VHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9ybSwgdG9B
dEVuZE9mRHVyYXRpb25UcmFuc2Zvcm0sIHJlcGVhdENvdW50KSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBlbmQoY3VycmVudFRyYW5zZm9ybSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCmluZGV4IDFlMTI4Y2MwMDFlZTEzYmJkZWNi
YzE0ZTY4MzQ2ODZlNzYxZmUyODkuLjZhNzFhMDdmNzM3MDJhZDJlZWEzOGFmMjUyZjMyYWYxNmFj
Yjc4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCkBAIC0yMzcsNiAr
MjM3LDEwMiBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVUcmFuc2Zvcm1MaXN0KFNWR1RyYW5zZm9ybUxpcwogICAgIHJldHVybiBhbmltYXRlZFR5
cGUucmVsZWFzZSgpOwogfQogCitjb25zdCBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYg
U1ZHQW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVudW1lcmF0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOworICAgIHJldHVybiAqbV9kYXRhLmFuZ2xlQW5k
RW51bWVyYXRpb247Cit9CisKK2NvbnN0IGJvb2wmIFNWR0FuaW1hdGVkVHlwZTo6Ym9vbGVhbigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZEJvb2xlYW4pOworICAgIHJl
dHVybiAqbV9kYXRhLmJvb2xlYW47Cit9CisKK2NvbnN0IENvbG9yJiBTVkdBbmltYXRlZFR5cGU6
OmNvbG9yKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQ29sb3IpOwor
ICAgIHJldHVybiAqbV9kYXRhLmNvbG9yOworfQorCitjb25zdCB1bnNpZ25lZCYgU1ZHQW5pbWF0
ZWRUeXBlOjplbnVtZXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKKyAgICByZXR1cm4gKm1fZGF0YS5lbnVtZXJhdGlvbjsKK30KKwor
Y29uc3QgaW50JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXIoKSBjb25zdAoreworICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2Vy
OworfQorCitjb25zdCBwYWlyPGludCwgaW50PiYgU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlcik7CisgICAgcmV0dXJuICptX2RhdGEuaW50ZWdlck9wdGlvbmFs
SW50ZWdlcjsKK30KKworY29uc3QgU1ZHTGVuZ3RoJiBTVkdBbmltYXRlZFR5cGU6Omxlbmd0aCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZExlbmd0aCk7CisgICAgcmV0
dXJuICptX2RhdGEubGVuZ3RoOworfQorCitjb25zdCBTVkdMZW5ndGhMaXN0JiBTVkdBbmltYXRl
ZFR5cGU6Omxlbmd0aExpc3QoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0
ZWRMZW5ndGhMaXN0KTsKKyAgICByZXR1cm4gKm1fZGF0YS5sZW5ndGhMaXN0OworfQorCitjb25z
dCBmbG9hdCYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIoKSBjb25zdAoreworICAgIEFTU0VSVCht
X3R5cGUgPT0gQW5pbWF0ZWROdW1iZXIpOworICAgIHJldHVybiAqbV9kYXRhLm51bWJlcjsKK30K
KworY29uc3QgU1ZHTnVtYmVyTGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXJMaXN0KCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgcmV0
dXJuICptX2RhdGEubnVtYmVyTGlzdDsKK30KKworY29uc3QgcGFpcjxmbG9hdCwgZmxvYXQ+JiBT
VkdBbmltYXRlZFR5cGU6Om51bWJlck9wdGlvbmFsTnVtYmVyKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIHJldHVybiAq
bV9kYXRhLm51bWJlck9wdGlvbmFsTnVtYmVyOworfQorCitjb25zdCBTVkdQb2ludExpc3QmIFNW
R0FuaW1hdGVkVHlwZTo6cG9pbnRMaXN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09
IEFuaW1hdGVkUG9pbnRzKTsKKyAgICByZXR1cm4gKm1fZGF0YS5wb2ludExpc3Q7Cit9CisKK2Nv
bnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIFNWR0FuaW1hdGVkVHlwZTo6cHJlc2VydmVBc3Bl
Y3RSYXRpbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8pOworICAgIHJldHVybiAqbV9kYXRhLnByZXNlcnZlQXNwZWN0UmF0aW87Cit9
CisKK2NvbnN0IEZsb2F0UmVjdCYgU1ZHQW5pbWF0ZWRUeXBlOjpyZWN0KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUmVjdCk7CisgICAgcmV0dXJuICptX2RhdGEucmVj
dDsKK30KKworY29uc3QgU3RyaW5nJiBTVkdBbmltYXRlZFR5cGU6OnN0cmluZygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFN0cmluZyk7CisgICAgcmV0dXJuICptX2Rh
dGEuc3RyaW5nOworfQorCitjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiBTVkdBbmltYXRlZFR5cGU6
OnRyYW5zZm9ybUxpc3QoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0KTsKKyAgICByZXR1cm4gKm1fZGF0YS50cmFuc2Zvcm1MaXN0OworfQorCiBz
dGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgU1ZHQW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVu
dW1lcmF0aW9uKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwpAQCAt
MjcwLDcgKzM2Niw3IEBAIGludCYgU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyKCkKIHBhaXI8aW50
LCBpbnQ+JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXJPcHRpb25hbEludGVnZXIoKQogewogICAg
IEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKTsKLSAgICBy
ZXR1cm4gKm1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOyAgICAgICAgCisgICAgcmV0dXJu
ICptX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsKIH0KIAogU1ZHTGVuZ3RoJiBTVkdBbmlt
YXRlZFR5cGU6Omxlbmd0aCgpCkBAIC0zMDAsNyArMzk2LDcgQEAgU1ZHTnVtYmVyTGlzdCYgU1ZH
QW5pbWF0ZWRUeXBlOjpudW1iZXJMaXN0KCkKIHBhaXI8ZmxvYXQsIGZsb2F0PiYgU1ZHQW5pbWF0
ZWRUeXBlOjpudW1iZXJPcHRpb25hbE51bWJlcigpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJP
cHRpb25hbE51bWJlcjsgICAgICAgIAorICAgIHJldHVybiAqbV9kYXRhLm51bWJlck9wdGlvbmFs
TnVtYmVyOwogfQogCiBTVkdQYXRoQnl0ZVN0cmVhbSogU1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAppbmRleCBkNjA5ZjhjNTI1ZmQ0MGJjZGE1
MzAzOGIxZjQ3ZTFkMmVlZTY2OGYyLi43ZmUxYmEzYzU4ODA4MjFiNWM4MjIxOTM2OTRlNzEwY2Mz
Y2FiNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCkBAIC02Miw2ICs2Miwy
NSBAQCBwdWJsaWM6CiAKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKKyAgICAvLyBOb24tbXV0YWJsZSBhY2Nlc3NvcnMuCisgICAgY29u
c3Qgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGFuZ2xlQW5kRW51bWVyYXRpb24oKSBj
b25zdDsKKyAgICBjb25zdCBib29sJiBib29sZWFuKCkgY29uc3Q7CisgICAgY29uc3QgQ29sb3Im
IGNvbG9yKCkgY29uc3Q7CisgICAgY29uc3QgdW5zaWduZWQmIGVudW1lcmF0aW9uKCkgY29uc3Q7
CisgICAgY29uc3QgaW50JiBpbnRlZ2VyKCkgY29uc3Q7CisgICAgY29uc3Qgc3RkOjpwYWlyPGlu
dCwgaW50PiYgaW50ZWdlck9wdGlvbmFsSW50ZWdlcigpIGNvbnN0OworICAgIGNvbnN0IFNWR0xl
bmd0aCYgbGVuZ3RoKCkgY29uc3Q7CisgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgbGVuZ3RoTGlz
dCgpIGNvbnN0OworICAgIGNvbnN0IGZsb2F0JiBudW1iZXIoKSBjb25zdDsKKyAgICBjb25zdCBT
VkdOdW1iZXJMaXN0JiBudW1iZXJMaXN0KCkgY29uc3Q7CisgICAgY29uc3Qgc3RkOjpwYWlyPGZs
b2F0LCBmbG9hdD4mIG51bWJlck9wdGlvbmFsTnVtYmVyKCkgY29uc3Q7CisgICAgY29uc3QgU1ZH
UG9pbnRMaXN0JiBwb2ludExpc3QoKSBjb25zdDsKKyAgICBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgY29uc3QgRmxvYXRSZWN0
JiByZWN0KCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdDsKKyAgICBj
b25zdCBTVkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1MaXN0KCkgY29uc3Q7CisKKyAgICAvLyBN
dXRhYmxlIGFjY2Vzc29ycy4KICAgICBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5n
bGVBbmRFbnVtZXJhdGlvbigpOwogICAgIGJvb2wmIGJvb2xlYW4oKTsKICAgICBDb2xvciYgY29s
b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCA0
YzZiNDI3ZGJjYjQyZWRkNDI2Y2YwZjc5YWZkOWNkZmUyZmMzYzE0Li4wN2U0YTk0NDk1NzY5NjI0
MDA4ZmQzZTM2MjA4ZDI4Y2RjNjJjYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuY3BwCkBAIC00OTMsMTMgKzQ5MywxMiBAQCB2b2lkIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGcm9tS2V5UG9pbnRzKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBl
ZmZlYwogICAgIHRvID0gbV92YWx1ZXNbaW5kZXggKyAxXTsKIH0KICAgICAKLXZvaWQgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6Y3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJj
ZW50LCBmbG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvLCBT
dHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uKQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpjdXJy
ZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3Rp
dmVQZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmluZyYgdG8pCiB7CiAgICAgdW5zaWduZWQgdmFs
dWVzQ291bnQgPSBtX3ZhbHVlcy5zaXplKCk7CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uVmFsaWQp
OwogICAgIEFTU0VSVCh2YWx1ZXNDb3VudCA+PSAxKTsKIAotICAgIHRvQXRFbmRPZkR1cmF0aW9u
ID0gbV92YWx1ZXMubGFzdCgpOwogICAgIGlmIChwZXJjZW50ID09IDEgfHwgdmFsdWVzQ291bnQg
PT0gMSkgewogICAgICAgICBmcm9tID0gbV92YWx1ZXNbdmFsdWVzQ291bnQgLSAxXTsKICAgICAg
ICAgdG8gPSBtX3ZhbHVlc1t2YWx1ZXNDb3VudCAtIDFdOwpAQCAtNjAxLDYgKzYwMCw4IEBAIHZv
aWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c3RhcnRlZEFjdGl2ZUludGVydmFsKCkKICAgICAgICAg
ICAgICYmIChjYWxjTW9kZSA9PSBDYWxjTW9kZURpc2NyZXRlIHx8ICFtX2tleVRpbWVzLnNpemUo
KSB8fCBtX2tleVRpbWVzLmxhc3QoKSA9PSAxKQogICAgICAgICAgICAgJiYgKGNhbGNNb2RlICE9
IENhbGNNb2RlU3BsaW5lIHx8ICgobV9rZXlTcGxpbmVzLnNpemUoKSAmJiAobV9rZXlTcGxpbmVz
LnNpemUoKSA9PSBtX3ZhbHVlcy5zaXplKCkgLSAxKSkgfHwgbV9rZXlTcGxpbmVzLnNpemUoKSA9
PSBtX2tleVBvaW50cy5zaXplKCkgLSAxKSkKICAgICAgICAgICAgICYmICghZmFzdEhhc0F0dHJp
YnV0ZShTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikgfHwgKG1fa2V5VGltZXMuc2l6ZSgpID4gMSAm
JiBtX2tleVRpbWVzLnNpemUoKSA9PSBtX2tleVBvaW50cy5zaXplKCkpKTsKKyAgICAgICAgaWYg
KG1fYW5pbWF0aW9uVmFsaWQpCisgICAgICAgICAgICBtX2FuaW1hdGlvblZhbGlkID0gY2FsY3Vs
YXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShtX3ZhbHVlcy5sYXN0KCkpOwogICAgICAgICBpZiAo
Y2FsY01vZGUgPT0gQ2FsY01vZGVQYWNlZCAmJiBtX2FuaW1hdGlvblZhbGlkKQogICAgICAgICAg
ICAgY2FsY3VsYXRlS2V5VGltZXNGb3JDYWxjTW9kZVBhY2VkKCk7CiAgICAgfSBlbHNlIGlmIChh
bmltYXRpb25Nb2RlID09IFBhdGhBbmltYXRpb24pCkBAIC02MTIsMTMgKzYxMywxMiBAQCB2b2lk
IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGlvbihmbG9hdCBwZXJjZW50LCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgUwogICAgIGlmICghbV9hbmltYXRpb25WYWxpZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3RyaW5nIHRvQXRFbmRPZkR1cmF0aW9uOwogICAgIGZsb2F0IGVmZmVj
dGl2ZVBlcmNlbnQ7CiAgICAgQ2FsY01vZGUgbW9kZSA9IGNhbGNNb2RlKCk7CiAgICAgaWYgKGFu
aW1hdGlvbk1vZGUoKSA9PSBWYWx1ZXNBbmltYXRpb24pIHsKICAgICAgICAgU3RyaW5nIGZyb207
CiAgICAgICAgIFN0cmluZyB0bzsKLSAgICAgICAgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1h
dGlvbihwZXJjZW50LCBlZmZlY3RpdmVQZXJjZW50LCBmcm9tLCB0bywgdG9BdEVuZE9mRHVyYXRp
b24pOworICAgICAgICBjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKHBlcmNlbnQsIGVm
ZmVjdGl2ZVBlcmNlbnQsIGZyb20sIHRvKTsKICAgICAgICAgaWYgKGZyb20gIT0gbV9sYXN0VmFs
dWVzQW5pbWF0aW9uRnJvbSB8fCB0byAhPSBtX2xhc3RWYWx1ZXNBbmltYXRpb25UbykgewogICAg
ICAgICAgICAgbV9hbmltYXRpb25WYWxpZCA9IGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhmcm9t
LCB0byk7CiAgICAgICAgICAgICBpZiAoIW1fYW5pbWF0aW9uVmFsaWQpCkBAIC02MzUsNyArNjM1
LDcgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVy
Y2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFMKICAgICBlbHNlCiAgICAgICAgIGVmZmVjdGl2
ZVBlcmNlbnQgPSBwZXJjZW50OwogCi0gICAgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3Rp
dmVQZXJjZW50LCByZXBlYXRDb3VudCwgdG9BdEVuZE9mRHVyYXRpb24sIHJlc3VsdEVsZW1lbnQp
OworICAgIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZWZmZWN0aXZlUGVyY2VudCwgcmVwZWF0Q291
bnQsIHJlc3VsdEVsZW1lbnQpOwogfQogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNvbXB1
dGVDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQqIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQs
IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaApp
bmRleCBmYzc0ZWJiZGIwNzEwMmJkN2I5NzA1MDAwN2YyNGEyMjBlNTg0NjYwLi44YzkwOWVlMWQ5
NzFmY2MzZWQxMzE1ZjM1MzZhYTc3ZDc5NjYxYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+CiAgICAgdm9pZCBhZGp1c3RGcm9tVG9WYWx1ZXMo
QW5pbWF0ZWRUeXBlICgqcGFyc2VUeXBlRnJvbVN0cmluZykoU1ZHQW5pbWF0aW9uRWxlbWVudCos
IGNvbnN0IFN0cmluZyYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGVkVHlw
ZSYgZnJvbVR5cGUsIEFuaW1hdGVkVHlwZSYgdG9UeXBlLCBBbmltYXRlZFR5cGUmIGFuaW1hdGVk
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRlZFR5cGUmIGZyb21UeXBl
LCBBbmltYXRlZFR5cGUmIHRvVHlwZSwgY29uc3QgQW5pbWF0ZWRUeXBlJiBhbmltYXRlZFR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIHBlcmNlbnRhZ2UsIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKICAgICAgICAgLy8gVG8tYW5pbWF0aW9uIHVzZXMg
Y29udHJpYnV0aW9ucyBmcm9tIHRoZSBsb3dlciBwcmlvcml0eSBhbmltYXRpb25zIGFzIHRoZSBi
YXNlIHZhbHVlLgpAQCAtMTQ3LDkgKzE0Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGZyb21M
aXN0U2l6ZSAhPSB0b0xpc3RTaXplICYmIGZyb21MaXN0U2l6ZSkgewogICAgICAgICAgICAgaWYg
KHBlcmNlbnRhZ2UgPCAwLjUpIHsKICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSgp
ICE9IFRvQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgICAgICBhbmltYXRlZExpc3QgPSBmcm9t
TGlzdDsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWRMaXN0ID0gQW5pbWF0ZWRUeXBlKGZy
b21MaXN0KTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGFuaW1hdGVkTGlz
dCA9IHRvTGlzdDsKKyAgICAgICAgICAgICAgICBhbmltYXRlZExpc3QgPSBBbmltYXRlZFR5cGUo
dG9MaXN0KTsKIAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yMjIs
MTMgKzIyMiwxNCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRpb25BdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2Fs
Y3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENv
dW50LCBjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLCBTVkdTTUlMRWxlbWVu
dCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVu
dCogcmVzdWx0RWxlbWVudCkgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFu
Y2UoY29uc3QgU3RyaW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5n
Ki8pIHsgcmV0dXJuIC0xLmY7IH0KICAgICB2aXJ0dWFsIFBhdGggYW5pbWF0aW9uUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIFBhdGgoKTsgfQogCi0gICAgdm9pZCBjdXJyZW50VmFsdWVzRm9yVmFsdWVz
QW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJjZW50LCBTdHJpbmcm
IGZyb20sIFN0cmluZyYgdG8sIFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pOworICAgIHZvaWQg
Y3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJjZW50LCBmbG9hdCYgZWZm
ZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvKTsKICAgICB2b2lkIGNhbGN1
bGF0ZUtleVRpbWVzRm9yQ2FsY01vZGVQYWNlZCgpOwogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNl
bnRGcm9tS2V5UG9pbnRzKGZsb2F0IHBlcmNlbnQpIGNvbnN0OwogICAgIHZvaWQgY3VycmVudFZh
bHVlc0Zyb21LZXlQb2ludHMoZmxvYXQgcGVyY2VudCwgZmxvYXQmIGVmZmVjdGl2ZVBlcmNlbnQs
IFN0cmluZyYgZnJvbSwgU3RyaW5nJiB0bykgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139967</attachid>
            <date>2012-05-03 00:08:19 -0700</date>
            <delta_ts>2012-05-03 01:12:28 -0700</delta_ts>
            <desc>Follow-up patch v2</desc>
            <filename>bug-85158-20120503090835.patch</filename>
            <type>text/plain</type>
            <size>58009</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmMjRkNzZjNjJiZjIz
ZjI5NDFmNTYzMWRhZDk4YjU1YzZiNTY1OC4uNGI5NThkY2U3ZGVlOTA1OTU2ZTQxMmI2OTQyYTI2
OGViZjc2YjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0wNS0wMiAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBBY2N1bXVs
YXRpb24gZm9yIHZhbHVlcy1hbmltYXRpb24gaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBwYXRjaDogQWRkIGNvbnN0IEZv
byYgZm9vKCkgY29uc3QgYWNjZXNzb3JzIHRvIFNWR0FuaW1hdGVkVHlwZSwKKyAgICAgICAgdG8g
YXZvaWQgdGhlICJGb28mIGZvbyA9IGFuaW1hdGVkLT5mb28oKSIgaWRpb20gaW4gYWxsIGNhc2Vz
IHdoZXJlIHdlCisgICAgICAgIGRvbid0IG5lZWQgdG8gbXV0YXRlICdmb28nLiBVc2UgImNvbnN0
IEZvbyYgZm9vID0gYW5pbWF0ZWQtPmZvbygpIiBpbnN0ZWFkLgorCisgICAgICAgIEZvciB0by1h
bmltYXRpb25zIHdlIGFjdHVhbGx5IG11dGF0ZWQgdGhlIGZyb20gdmFsdWUgYmVmb3JlLCBidXQg
aXQgd2Fzbid0IGEKKyAgICAgICAgcmVhbCBwcm9ibGVtLCBhcyB3ZSBkaWQgdGhhdCBvbiBldmVy
eSBhbmltYXRpb24gc3RlcC4gRnVsbHkgYXZvaWQgdGhlc2UKKyAgICAgICAgaW5jb25zaXRlbmNp
ZXMgYnkgbmV2ZXIgbXV0YXRpbmcgdGhlIGZyb20vdG8gdHlwZXMgc3RvcmVkIGluIFNWR0FuaW1h
dGVFbGVtZW50LgorCisgICAgICAgIENhY2hlIHRvQXRFbmRPZkR1cmF0aW9uVHlwZSBqdXN0IGxp
a2UgbV90b1R5cGUvbV9mcm9tVHlwZSBpbiBTVkdBbmltYXRlRWxlbWVudCwKKyAgICAgICAgdG8g
YXZvaWQgcmVjb25zdHJ1Y3RpbmcgaXQgb24gZXZlcnkgYW5pbWF0aW9uIHN0ZXAuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBvbmx5IGRlc2lnbi9wZXJmb3JtYW5jZSBmaXhlcy4KKworICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6dGFyZ2V0RWxlbWVudFdpbGxDaGFuZ2Up
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5oOgorICAgICAgICAoU1ZHQW5pbWF0
ZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6U1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNh
bGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRBbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0
b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRBbmds
ZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRCb29sZWFuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQm9vbGVhbkFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRDb2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEVudW1l
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25Bbmlt
YXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
SW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1h
dGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRv
cjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkTnVtYmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVy
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZE51bWJlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJM
aXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6YWRkQW5pbWF0
ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0
b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1h
dG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9p
bnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6YW5nbGVBbmRFbnVtZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmJvb2xlYW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFR5cGU6OmVudW1lcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
aW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmludGVnZXJPcHRp
b25hbEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGhMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6Om51bWJlck9wdGlvbmFsTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHlwZTo6cGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnBv
aW50TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnByZXNlcnZlQXNw
ZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkVHlwZTo6dHJhbnNmb3JtTGlzdCk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25F
bGVtZW50OjpjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24pOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRpb25FbGVtZW50OjphZGp1c3RGcm9tVG9MaXN0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFuaW1hdGVEaXNjcmV0ZVR5cGUpOgorICAgICAgICAoU1ZH
QW5pbWF0aW9uRWxlbWVudCk6CisKIDIwMTItMDUtMDIgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1pZ3JhdGUgcGVybWlzc2lvbiBmdW5jdGlvbnMgdG8gTm90aWZpY2F0
aW9uIGZyb20gTm90aWZpY2F0aW9uQ2VudGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcAppbmRleCAxMTlkM2JlMjE3MzJiZTVjOTkyYjBjNzE5ZTE2YjRkYTZhNjYzMGRj
Li4xYTMyNTBlNGUzYzVmZTVhYTAxOTcwYmZjYWQzNzQzZTk4N2E4YmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlU
eXBlKFNWR0VsZW1lbnQKICAgICByZXR1cm4gdHlwZTsKIH0KIAotdm9pZCBTVkdBbmltYXRlRWxl
bWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwgY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZywgU1ZHU01J
TEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpCit2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkKIHsKICAgICBBU1NFUlQocmVzdWx0RWxlbWVu
dCk7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKQEAgLTEyMiw2ICsxMjIsOSBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdAogICAgIGlmICho
YXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKQogICAgICAgICBwZXJjZW50YWdlID0gMTsKIAor
ICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2RlRGlzY3JldGUpCisgICAgICAgIHBlcmNlbnRh
Z2UgPSBwZXJjZW50YWdlIDwgMC41ID8gMCA6IDE7CisKICAgICAvLyBUYXJnZXQgZWxlbWVudCBt
aWdodCBoYXZlIGNoYW5nZWQuCiAgICAgbV9hbmltYXRvci0+c2V0Q29udGV4dEVsZW1lbnQodGFy
Z2V0RWxlbWVudCk7CiAKQEAgLTEzMiwxNCArMTM1LDE3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0CiAgICAgaWYgKCFtX2FuaW1hdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgIG1f
YW5pbWF0b3ItPmFuaW1WYWxXaWxsQ2hhbmdlKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKIAotICAg
IGlmICh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9hbmlt
YXRvci0+Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgbV9m
cm9tVHlwZS5nZXQoKSwgbV90b1R5cGUuZ2V0KCksIG1fdG9UeXBlLmdldCgpLCByZXN1bHRBbmlt
YXRpb25FbGVtZW50LT5tX2FuaW1hdGVkVHlwZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICAvLyBWYWx1ZXMtYW5pbWF0aW9uIGFjY3VtdWxhdGVzIHVzaW5nIHRoZSBsYXN0
IHZhbHVlcyBlbnRyeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbmQgb2YgZHVyYXRpb24gdGltZS4K
LSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiB0b0F0RW5kT2ZEdXJhdGlvblR5cGUgPSBtX2Fu
aW1hdG9yLT5jb25zdHJ1Y3RGcm9tU3RyaW5nKHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKTsKLSAg
ICBtX2FuaW1hdG9yLT5jYWxjdWxhdGVBbmltYXRlZFZhbHVlKHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBtX2Zyb21UeXBlLmdldCgpLCBtX3RvVHlwZS5nZXQoKSwgdG9BdEVuZE9mRHVyYXRpb25U
eXBlLmdldCgpLCByZXN1bHRBbmltYXRpb25FbGVtZW50LT5tX2FuaW1hdGVkVHlwZS5nZXQoKSk7
CisgICAgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvblR5cGUgPSBtX3RvQXRFbmRP
ZkR1cmF0aW9uVHlwZSA/IG1fdG9BdEVuZE9mRHVyYXRpb25UeXBlLmdldCgpIDogbV90b1R5cGUu
Z2V0KCk7CisgICAgbV9hbmltYXRvci0+Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShwZXJjZW50YWdl
LCByZXBlYXRDb3VudCwgbV9mcm9tVHlwZS5nZXQoKSwgbV90b1R5cGUuZ2V0KCksIHRvQXRFbmRP
ZkR1cmF0aW9uVHlwZSwgcmVzdWx0QW5pbWF0aW9uRWxlbWVudC0+bV9hbmltYXRlZFR5cGUuZ2V0
KCkpOworfQorCitib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJh
dGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpCit7CisgICAg
aWYgKHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIG1fdG9BdEVuZE9mRHVyYXRpb25UeXBlID0gZW5zdXJlQW5pbWF0b3IoKS0+Y29u
c3RydWN0RnJvbVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZyk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCkBAIC0y
ODQsNiArMjkwLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6dGFyZ2V0RWxlbWVudFdpbGxD
aGFuZ2UoU1ZHRWxlbWVudCogY3VycmVudFRhcmdldCwgU1ZHRWwKICAgICBtX2FuaW1hdGVkVHlw
ZS5jbGVhcigpOwogICAgIG1fZnJvbVR5cGUuY2xlYXIoKTsKICAgICBtX3RvVHlwZS5jbGVhcigp
OworICAgIG1fdG9BdEVuZE9mRHVyYXRpb25UeXBlLmNsZWFyKCk7CiAgICAgbV9hbmltYXRvci5j
bGVhcigpOwogICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBuZXdUYXJnZXQgPyBkZXRlcm1p
bmVBbmltYXRlZFByb3BlcnR5VHlwZShuZXdUYXJnZXQpIDogQW5pbWF0ZWRTdHJpbmc7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCmluZGV4IDYxNzE4NmVmNzc5YjY1YmRm
Y2JhNWEzOTE0ZjA4YzBlMjQ2NzIzODkuLjJjMTQxMDUyYmNiNjJjNjdkY2QxZmI4NTE0NGFkMDJk
M2U2NWUxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCkBAIC00NCw5
ICs0NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRUb0Jhc2VWYWx1
ZSgpOworICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNv
bnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpOwogICAgIHZpcnR1YWwgYm9vbCBj
YWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFs
dWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7Ci0g
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJp
bmcsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBs
eVJlc3VsdHNUb1RhcmdldCgpOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNBZGRpdGl2ZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtNjEsNiArNjIsNyBA
QCBwcml2YXRlOgogCiAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9mcm9tVHlwZTsKICAg
ICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvVHlwZTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBtX3RvQXRFbmRPZkR1cmF0aW9uVHlwZTsKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBtX2FuaW1hdGVkVHlwZTsKIAogICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCBtX2FuaW1hdGVkUHJvcGVydGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDljZmYzYzFmMDAwOWUyNjQ4MWIzMGUyN2MzNmFkYzMx
ZGE1MmIwMWQuLmI3NGQyZTE1ZTA5OGVjNzMyY2Y1N2Q5MzQ4ODk3OTFjNThkNTZjNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtNDQs
NiArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKIGlubGluZSBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1faGFzVG9Qb2ludEF0RW5kT2ZEdXJhdGlvbihm
YWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhbmltYXRlTW90aW9uVGFnKSk7CiB9CkBA
IC0xNzMsOCArMTc0LDE2IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJlc2V0VG9C
YXNlVmFsdWUoKQogICAgIHRyYW5zZm9ybS0+bWFrZUlkZW50aXR5KCk7CiB9CiAKK2Jvb2wgU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29u
c3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykKK3sKKyAgICBwYXJzZVBvaW50KHRv
QXRFbmRPZkR1cmF0aW9uU3RyaW5nLCBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24pOworICAgIG1f
aGFzVG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CisgICAg
bV9oYXNUb1BvaW50QXRFbmRPZkR1cmF0aW9uID0gZmFsc2U7CiAgICAgcGFyc2VQb2ludChmcm9t
U3RyaW5nLCBtX2Zyb21Qb2ludCk7CiAgICAgcGFyc2VQb2ludCh0b1N0cmluZywgbV90b1BvaW50
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Miw2ICsxOTEsNyBAQCBib29sIFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLAogICAgIAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRnJv
bUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0
cmluZykKIHsKKyAgICBtX2hhc1RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBmYWxzZTsKICAgICBp
ZiAoYW5pbWF0aW9uTW9kZSgpID09IEJ5QW5pbWF0aW9uICYmICFpc0FkZGl0aXZlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJzZVBvaW50KGZyb21TdHJpbmcsIG1fZnJvbVBvaW50
KTsKQEAgLTIxMSw3ICsyMjEsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpidWls
ZFRyYW5zZm9ybUZvclByb2dyZXNzKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmbwogICAgIHRyYW5z
Zm9ybS0+cm90YXRlKGFuZ2xlKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCwgY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZywgU1ZHU01JTEVsZW1l
bnQqKQordm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQq
KQogewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50
KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQpAQCAtMjI4LDggKzIzOCw4IEBAIHZvaWQgU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQKIAogICAgIGlmIChhbmltYXRpb25Nb2RlKCkgIT0gUGF0aEFuaW1hdGlv
bikgewogICAgICAgICBGbG9hdFBvaW50IHRvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBtX3RvUG9p
bnQ7Ci0gICAgICAgIGlmIChpc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0Q291bnQgJiYgIXRvQXRF
bmRPZkR1cmF0aW9uU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHBhcnNlUG9pbnQodG9B
dEVuZE9mRHVyYXRpb25TdHJpbmcsIHRvUG9pbnRBdEVuZE9mRHVyYXRpb24pOworICAgICAgICBp
ZiAoaXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50ICYmIG1faGFzVG9Qb2ludEF0RW5kT2ZE
dXJhdGlvbikKKyAgICAgICAgICAgIHRvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBtX3RvUG9pbnRB
dEVuZE9mRHVyYXRpb247CiAKICAgICAgICAgZmxvYXQgYW5pbWF0ZWRYID0gMDsKICAgICAgICAg
YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2Zyb21Qb2lu
dC54KCksIG1fdG9Qb2ludC54KCksIHRvUG9pbnRBdEVuZE9mRHVyYXRpb24ueCgpLCBhbmltYXRl
ZFgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAppbmRl
eCA3MWU0ZGUxZTJkZjNhMjdiOTM3N2IzNTU1NWU3ODJlNjcxNmQ3MzI2Li5lNTdlOGI3MWE0NzZj
N2ZiMzhjMGEwYTVhNTYwNWNkMmYzYjhiM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuaApAQCAtNDAsOSArNDAsMTAgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRUb0Jhc2VWYWx1ZSgpOworICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxh
dGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25T
dHJpbmcpOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFs
IGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiBieVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0
cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVt
ZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1l
bnQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpOwogICAgIHZpcnR1
YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIFBhdGggYW5pbWF0aW9uUGF0aCgpIGNv
bnN0OwpAQCAtNTUsOSArNTYsMTIgQEAgcHJpdmF0ZToKICAgICBSb3RhdGVNb2RlIHJvdGF0ZU1v
ZGUoKSBjb25zdDsKICAgICB2b2lkIGJ1aWxkVHJhbnNmb3JtRm9yUHJvZ3Jlc3MoQWZmaW5lVHJh
bnNmb3JtKiwgZmxvYXQgcGVyY2VudGFnZSk7CiAKKyAgICBib29sIG1faGFzVG9Qb2ludEF0RW5k
T2ZEdXJhdGlvbjsKKwogICAgIC8vIE5vdGU6IHdlIGRvIG5vdCBzdXBwb3J0IHBlcmNlbnRhZ2Ug
dmFsdWVzIGZvciB0by9mcm9tIGNvb3JkcyBhcyB0aGUgc3BlYyBpbXBsaWVzIHdlIHNob3VsZCAo
b3BlcmEgZG9lc24ndCBlaXRoZXIpCiAgICAgRmxvYXRQb2ludCBtX2Zyb21Qb2ludDsKICAgICBG
bG9hdFBvaW50IG1fdG9Qb2ludDsKKyAgICBGbG9hdFBvaW50IG1fdG9Qb2ludEF0RW5kT2ZEdXJh
dGlvbjsKIAogICAgIFBhdGggbV9wYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEFuZ2xlLmNwcAppbmRleCAwOTFjM2M1OWZhMTljYzNmMjg2ZWM1M2QzY2RhOTMxMzcxYmI1NWRl
Li5jY2RjOTk5MDA1YWUxMmMyMWU4M2VlM2IyYTYxMTM1MmNkYTEyNmFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBTVkdB
bmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBm
cm9tLCBTVkdBbmltYXQKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkQW5nbGUp
OwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBwYWlyPFNW
R0FuZ2xlLCB1bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVB
bmRFbnVtZXJhdGlvbigpOworICAgIGNvbnN0IHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJv
bUFuZ2xlQW5kRW51bWVyYXRpb24gPSBmcm9tLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAg
cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0by0+YW5n
bGVBbmRFbnVtZXJhdGlvbigpOwogICAgIC8vIE9ubHkgcmVzcGVjdCBieSBhbmltYXRpb25zLCBp
ZiBmcm9tIGFuZCBieSBhcmUgYm90aCBzcGVjaWZpZWQgaW4gYW5nbGVzIChhbmQgbm90IGVnLiAn
YXV0bycpLgogICAgIGlmIChmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gdG9Bbmds
ZUFuZEVudW1lcmF0aW9uLnNlY29uZCB8fCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQg
IT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBTVkdBbmdsZSYg
ZnJvbUFuZ2xlID0gZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7CisgICAgY29uc3QgU1ZH
QW5nbGUmIGZyb21BbmdsZSA9IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAgIFNW
R0FuZ2xlJiB0b0FuZ2xlID0gdG9BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAgIHRvQW5n
bGUuc2V0VmFsdWUodG9BbmdsZS52YWx1ZSgpICsgZnJvbUFuZ2xlLnZhbHVlKCkpOwogfQpAQCAt
OTgsMTIgKzk4LDExIEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiB7CiAgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIAot
ICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSBm
cm9tLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7Ci0gICAgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+
JiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0by0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOwotICAg
IHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1l
cmF0aW9uID0gdG9BdEVuZE9mRHVyYXRpb24tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKworICAg
IGNvbnN0IHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24g
PSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFu
aW1hdGVkLT5hbmdsZUFuZEVudW1lcmF0aW9uKCkgOiBmcm9tLT5hbmdsZUFuZEVudW1lcmF0aW9u
KCk7CisgICAgY29uc3QgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiB0b0FuZ2xlQW5kRW51bWVy
YXRpb24gPSB0by0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIGNvbnN0IHBhaXI8U1ZHQW5n
bGUsIHVuc2lnbmVkPiYgdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0aW9uID0gdG9B
dEVuZE9mRHVyYXRpb24tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKICAgICBwYWlyPFNWR0FuZ2xl
LCB1bnNpZ25lZD4mIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGFuaW1hdGVkLT5hbmds
ZUFuZEVudW1lcmF0aW9uKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9W
YWx1ZXM8cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+ID4oMCwgZnJvbUFuZ2xlQW5kRW51bWVyYXRp
b24sIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiwgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLCBw
ZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIGlmIChmcm9tQW5nbGVBbmRFbnVt
ZXJhdGlvbi5zZWNvbmQgIT0gdG9BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCkgewogICAgICAg
ICAvLyBBbmltYXRpbmcgZnJvbSBlZy4gYXV0byB0byA5MGRlZywgb3IgYXV0byB0byA5MGRlZy4K
QEAgLTE0Myw3ICsxNDIsNyBAQCB2b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIGFuaW1hdGVk
QW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgPSBTVkdNYXJrZXJPcmllbnRBbmdsZTsKIAogICAg
IFNWR0FuZ2xlJiBhbmltYXRlZFNWR0FuZ2xlID0gYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9u
LmZpcnN0OwotICAgIFNWR0FuZ2xlJiB0b0F0RW5kT2ZEdXJhdGlvblNWR0FuZ2xlID0gdG9BdEVu
ZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OworICAgIGNvbnN0IFNWR0FuZ2xl
JiB0b0F0RW5kT2ZEdXJhdGlvblNWR0FuZ2xlID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVu
dW1lcmF0aW9uLmZpcnN0OwogICAgIGZsb2F0IGFuaW1hdGVkQW5nbGUgPSBhbmltYXRlZFNWR0Fu
Z2xlLnZhbHVlKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1i
ZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0
LnZhbHVlKCksIHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdC52YWx1ZSgpLCB0b0F0RW5kT2ZE
dXJhdGlvblNWR0FuZ2xlLnZhbHVlKCksIGFuaW1hdGVkQW5nbGUpOwogICAgIGFuaW1hdGVkU1ZH
QW5nbGUuc2V0VmFsdWUoYW5pbWF0ZWRBbmdsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEJvb2xlYW4uY3BwCmluZGV4IDA3MjM2NmIxYmQ0Y2Y1ZGM5M2I2ZGYzNmVjZDljNTg4YzE4
MTA4OWQuLmY5ODU4YmU1YjFlMjgwMTAzNDUyODAxNTZhODRhY2NlODg2NjUxOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCkBAIC03OSwxMCArNzksOSBAQCB2
b2lkIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbgogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwog
ICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIGJvb2wmIGZyb21Cb29sZWFuID0g
ZnJvbS0+Ym9vbGVhbigpOwotICAgIGJvb2wmIHRvQm9vbGVhbiA9IHRvLT5ib29sZWFuKCk7Cisg
ICAgYm9vbCBmcm9tQm9vbGVhbiA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgp
ID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmJvb2xlYW4oKSA6IGZyb20tPmJvb2xlYW4oKTsK
KyAgICBib29sIHRvQm9vbGVhbiA9IHRvLT5ib29sZWFuKCk7CiAgICAgYm9vbCYgYW5pbWF0ZWRC
b29sZWFuID0gYW5pbWF0ZWQtPmJvb2xlYW4oKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFk
anVzdEZyb21Ub1ZhbHVlczxib29sPigwLCBmcm9tQm9vbGVhbiwgdG9Cb29sZWFuLCBhbmltYXRl
ZEJvb2xlYW4sIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgbV9hbmltYXRp
b25FbGVtZW50LT5hbmltYXRlRGlzY3JldGVUeXBlPGJvb2w+KHBlcmNlbnRhZ2UsIGZyb21Cb29s
ZWFuLCB0b0Jvb2xlYW4sIGFuaW1hdGVkQm9vbGVhbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRDb2xvci5jcHAKaW5kZXggN2U3Y2QxMjY5YmI2ODk5OTMyM2MzYmJhMjgwNWY4MzBl
NDU1ZmE2YS4uODMyYzJhMjhlOGQ4NzQxYTMyY2RiNzNlZGM2MjQ4YWQ4YjE3Y2U5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcApAQCAtNjgsMTEgKzY4LDE0IEBAIHZv
aWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAg
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgQ29sb3ImIGZyb21Db2xvciA9IGZy
b20tPmNvbG9yKCk7Ci0gICAgQ29sb3ImIHRvQ29sb3IgPSB0by0+Y29sb3IoKTsKLSAgICBDb2xv
ciYgdG9BdEVuZE9mRHVyYXRpb25Db2xvciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5jb2xvcigpOwor
ICAgIENvbG9yIGZyb21Db2xvciA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgp
ID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmNvbG9yKCkgOiBmcm9tLT5jb2xvcigpOworICAg
IENvbG9yIHRvQ29sb3IgPSB0by0+Y29sb3IoKTsKKyAgICBjb25zdCBDb2xvciYgdG9BdEVuZE9m
RHVyYXRpb25Db2xvciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5jb2xvcigpOwogICAgIENvbG9yJiBh
bmltYXRlZENvbG9yID0gYW5pbWF0ZWQtPmNvbG9yKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50
LT5hZGp1c3RGcm9tVG9WYWx1ZXM8Q29sb3I+KHBhcnNlQ29sb3JGcm9tU3RyaW5nLCBmcm9tQ29s
b3IsIHRvQ29sb3IsIGFuaW1hdGVkQ29sb3IsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQp
OworCisgICAgLy8gQXBwbHkgQ1NTIGluaGVyaXRhbmNlIHJ1bGVzLgorICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8Q29sb3I+KHBhcnNlQ29sb3JGcm9tU3RyaW5n
LCBtX2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tQ29sb3Is
IG1fY29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5o
ZXJpdGFuY2U8Q29sb3I+KHBhcnNlQ29sb3JGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQt
PnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9Db2xvciwgbV9jb250ZXh0RWxlbWVudCk7CiAKICAg
ICAvLyBBcHBseSA8YW5pbWF0ZUNvbG9yPiBydWxlcy4KICAgICBpZiAobV9hbmltYXRpb25FbGVt
ZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSA9PSBDdXJyZW50Q29sb3JWYWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAppbmRleCBjNWI2ZDNm
N2UwMDNkN2Q0ZjliMDdmNGEwYmYzYjY5Yzg3N2NkNzVkLi4yZWM3ZTNmMDZjZDFjMWYxZTYzY2Uz
NmE2NmExODhiM2FkMWJmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
RW51bWVyYXRpb24uY3BwCkBAIC0xNTAsMTAgKzE1MCw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOwogCi0gICAgdW5zaWduZWQmIGZyb21FbnVtZXJhdGlvbiA9IGZyb20tPmVudW1l
cmF0aW9uKCk7Ci0gICAgdW5zaWduZWQmIHRvRW51bWVyYXRpb24gPSB0by0+ZW51bWVyYXRpb24o
KTsKKyAgICB1bnNpZ25lZCBmcm9tRW51bWVyYXRpb24gPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFu
aW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5lbnVtZXJhdGlvbigpIDog
ZnJvbS0+ZW51bWVyYXRpb24oKTsKKyAgICB1bnNpZ25lZCB0b0VudW1lcmF0aW9uID0gdG8tPmVu
dW1lcmF0aW9uKCk7CiAgICAgdW5zaWduZWQmIGFuaW1hdGVkRW51bWVyYXRpb24gPSBhbmltYXRl
ZC0+ZW51bWVyYXRpb24oKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1Zh
bHVlczx1bnNpZ25lZD4oMCwgZnJvbUVudW1lcmF0aW9uLCB0b0VudW1lcmF0aW9uLCBhbmltYXRl
ZEVudW1lcmF0aW9uLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIG1fYW5p
bWF0aW9uRWxlbWVudC0+YW5pbWF0ZURpc2NyZXRlVHlwZTx1bnNpZ25lZD4ocGVyY2VudGFnZSwg
ZnJvbUVudW1lcmF0aW9uLCB0b0VudW1lcmF0aW9uLCBhbmltYXRlZEVudW1lcmF0aW9uKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKaW5kZXggY2QzNmI2N2Rj
NDk0ZDVjODhkMTQ2MjI2ZDQyNjY2NWU0N2UzNjczOS4uODkwNjczMTkwYTQzYTI1OWZhODZjOTg2
ZWM5OTYyZTg1YzY5MDJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdl
ci5jcHAKQEAgLTg1LDExICs4NSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9y
OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbgogICAgIEFT
U0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsK
IAotICAgIGludCYgZnJvbUludGVnZXIgPSBmcm9tLT5pbnRlZ2VyKCk7Ci0gICAgaW50JiB0b0lu
dGVnZXIgPSB0by0+aW50ZWdlcigpOwotICAgIGludCYgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2Vy
ID0gdG9BdEVuZE9mRHVyYXRpb24tPmludGVnZXIoKTsKKyAgICBpbnQgZnJvbUludGVnZXIgPSBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1h
dGVkLT5pbnRlZ2VyKCkgOiBmcm9tLT5pbnRlZ2VyKCk7CisgICAgaW50IHRvSW50ZWdlciA9IHRv
LT5pbnRlZ2VyKCk7CisgICAgaW50IHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlciA9IHRvQXRFbmRP
ZkR1cmF0aW9uLT5pbnRlZ2VyKCk7CiAgICAgaW50JiBhbmltYXRlZEludGVnZXIgPSBhbmltYXRl
ZC0+aW50ZWdlcigpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVz
PGludD4oMCwgZnJvbUludGVnZXIsIHRvSW50ZWdlciwgYW5pbWF0ZWRJbnRlZ2VyLCBwZXJjZW50
YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIGNhbGN1bGF0ZUFuaW1hdGVkSW50ZWdlciht
X2FuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tSW50ZWdlciwg
dG9JbnRlZ2VyLCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXIsIGFuaW1hdGVkSW50ZWdlcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIuY3BwCmluZGV4IGUxM2IxY2Y2MzkyYjJlOGFjYmQzYTdhOGY2ZjUyYjdjNzYx
Njg2NWIuLmFmMzdkYjIyNjEzODFhOGIwODk2MjBhMmY3NmJmYzc0NGJhZGZlZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlCiAgICAg
QVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIpOwog
ICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBwYWlyPGludCwg
aW50PiYgZnJvbUludGVnZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwor
ICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiBmcm9tSW50ZWdlclBhaXIgPSBmcm9tLT5pbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyKCk7CiAgICAgcGFpcjxpbnQsIGludD4mIHRvSW50ZWdlclBhaXIgPSB0
by0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwogCiAgICAgdG9JbnRlZ2VyUGFpci5maXJzdCAr
PSBmcm9tSW50ZWdlclBhaXIuZmlyc3Q7CkBAIC05MSwxMSArOTEsMTAgQEAgdm9pZCBTVkdBbmlt
YXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZShmbG9hdCBwZXIKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQo
bV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBwYWlyPGludCwgaW50PiYgZnJvbUludGVnZXJQYWly
ID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwotICAgIHBhaXI8aW50LCBpbnQ+JiB0
b0ludGVnZXJQYWlyID0gdG8tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKLSAgICBwYWlyPGlu
dCwgaW50PiYgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyUGFpciA9IHRvQXRFbmRPZkR1cmF0aW9u
LT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgY29uc3QgcGFpcjxpbnQsIGludD4mIGZy
b21JbnRlZ2VyUGFpciA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRv
QW5pbWF0aW9uID8gYW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKSA6IGZyb20tPmlu
dGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBjb25zdCBwYWlyPGludCwgaW50PiYgdG9JbnRl
Z2VyUGFpciA9IHRvLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgY29uc3QgcGFpcjxp
bnQsIGludD4mIHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlclBhaXIgPSB0b0F0RW5kT2ZEdXJhdGlv
bi0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwogICAgIHBhaXI8aW50LCBpbnQ+JiBhbmltYXRl
ZEludGVnZXJQYWlyID0gYW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKLSAgICBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxwYWlyPGludCwgaW50PiA+KDAs
IGZyb21JbnRlZ2VyUGFpciwgdG9JbnRlZ2VyUGFpciwgYW5pbWF0ZWRJbnRlZ2VyUGFpciwgcGVy
Y2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKG1fYW5pbWF0aW9uRWxlbWVudCwgcGVyY2Vu
dGFnZSwgcmVwZWF0Q291bnQsIGZyb21JbnRlZ2VyUGFpci5maXJzdCwgdG9JbnRlZ2VyUGFpci5m
aXJzdCwgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyUGFpci5maXJzdCwgYW5pbWF0ZWRJbnRlZ2Vy
UGFpci5maXJzdCk7CiAgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkSW50ZWdlcihtX2FuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50
LCBmcm9tSW50ZWdlclBhaXIuc2Vjb25kLCB0b0ludGVnZXJQYWlyLnNlY29uZCwgdG9BdEVuZE9m
RHVyYXRpb25JbnRlZ2VyUGFpci5zZWNvbmQsIGFuaW1hdGVkSW50ZWdlclBhaXIuc2Vjb25kKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCmluZGV4IGNhNmJhZTgzZGE4
N2NmN2Y5MGYxYmFjNzlhOGMwODRkNGY5NTZmNzAuLjdjMjZlYmQzNWUzMzc3MzZlOGE2OTQyY2M3
Y2I3ODdhZjFhOTRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZExlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNw
cApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFkZEFu
aW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYQogICAgIEFTU0VSVChm
cm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0
aENvbnRleHQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZHTGVuZ3RoJiBmcm9tTGVuZ3RoID0g
ZnJvbS0+bGVuZ3RoKCk7CisgICAgY29uc3QgU1ZHTGVuZ3RoJiBmcm9tTGVuZ3RoID0gZnJvbS0+
bGVuZ3RoKCk7CiAgICAgU1ZHTGVuZ3RoJiB0b0xlbmd0aCA9IHRvLT5sZW5ndGgoKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtOTYsMTEgKzk2LDE0IEBAIHZvaWQgU1ZHQW5pbWF0
ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1f
Y29udGV4dEVsZW1lbnQpOwogCi0gICAgU1ZHTGVuZ3RoJiBmcm9tU1ZHTGVuZ3RoID0gZnJvbS0+
bGVuZ3RoKCk7Ci0gICAgU1ZHTGVuZ3RoJiB0b1NWR0xlbmd0aCA9IHRvLT5sZW5ndGgoKTsKLSAg
ICBTVkdMZW5ndGgmIHRvQXRFbmRPZkR1cmF0aW9uU1ZHTGVuZ3RoID0gdG9BdEVuZE9mRHVyYXRp
b24tPmxlbmd0aCgpOworICAgIFNWR0xlbmd0aCBmcm9tU1ZHTGVuZ3RoID0gbV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+bGVuZ3Ro
KCkgOiBmcm9tLT5sZW5ndGgoKTsKKyAgICBTVkdMZW5ndGggdG9TVkdMZW5ndGggPSB0by0+bGVu
Z3RoKCk7CisgICAgY29uc3QgU1ZHTGVuZ3RoJiB0b0F0RW5kT2ZEdXJhdGlvblNWR0xlbmd0aCA9
IHRvQXRFbmRPZkR1cmF0aW9uLT5sZW5ndGgoKTsKICAgICBTVkdMZW5ndGgmIGFuaW1hdGVkU1ZH
TGVuZ3RoID0gYW5pbWF0ZWQtPmxlbmd0aCgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRq
dXN0RnJvbVRvVmFsdWVzPFNWR0xlbmd0aD4ocGFyc2VMZW5ndGhGcm9tU3RyaW5nLCBmcm9tU1ZH
TGVuZ3RoLCB0b1NWR0xlbmd0aCwgYW5pbWF0ZWRTVkdMZW5ndGgsIHBlcmNlbnRhZ2UsIG1fY29u
dGV4dEVsZW1lbnQpOworCisgICAgLy8gQXBwbHkgQ1NTIGluaGVyaXRhbmNlIHJ1bGVzLgorICAg
IG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVuZ3RoPihwYXJz
ZUxlbmd0aEZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVU
eXBlKCksIGZyb21TVkdMZW5ndGgsIG1fY29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVuZ3RoPihwYXJzZUxlbmd0aEZyb21T
dHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlwZSgpLCB0b1NWR0xl
bmd0aCwgbV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQobV9jb250ZXh0RWxlbWVudCk7CiAgICAgZmxvYXQgYW5pbWF0ZWROdW1iZXIgPSBhbmlt
YXRlZFNWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKaW5kZXggZGE5NmFjZTMwY2JlZGJkM2U4ZmQzZTZm
OTRkMTQ2MDhkZjNkMzc5NC4uOTY1MTkxYTg5NTdiMGQ5M2U5ODYzYTY4NGM4NzY2MGVkZWQyNTc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5p
bWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0EKICAgICBBU1NFUlQoZnJvbS0+
dHlwZSgpID09IEFuaW1hdGVkTGVuZ3RoTGlzdCk7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9
PSB0by0+dHlwZSgpKTsKIAotICAgIFNWR0xlbmd0aExpc3QmIGZyb21MZW5ndGhMaXN0ID0gZnJv
bS0+bGVuZ3RoTGlzdCgpOworICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIGZyb21MZW5ndGhMaXN0
ID0gZnJvbS0+bGVuZ3RoTGlzdCgpOwogICAgIFNWR0xlbmd0aExpc3QmIHRvTGVuZ3RoTGlzdCA9
IHRvLT5sZW5ndGhMaXN0KCk7CiAKICAgICB1bnNpZ25lZCBmcm9tTGVuZ3RoTGlzdFNpemUgPSBm
cm9tTGVuZ3RoTGlzdC5zaXplKCk7CkBAIC05NywxMSArOTcsMTYgQEAgdm9pZCBTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50
YWdlLCB1bnMKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9j
b250ZXh0RWxlbWVudCk7CiAKLSAgICBTVkdMZW5ndGhMaXN0JiBmcm9tTGVuZ3RoTGlzdCA9IGZy
b20tPmxlbmd0aExpc3QoKTsKLSAgICBTVkdMZW5ndGhMaXN0JiB0b0xlbmd0aExpc3QgPSB0by0+
bGVuZ3RoTGlzdCgpOwotICAgIFNWR0xlbmd0aExpc3QmIHRvQXRFbmRPZkR1cmF0aW9uTGVuZ3Ro
TGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5sZW5ndGhMaXN0KCk7CisgICAgU1ZHTGVuZ3RoTGlz
dCBmcm9tTGVuZ3RoTGlzdCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09
IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmxlbmd0aExpc3QoKSA6IGZyb20tPmxlbmd0aExpc3Qo
KTsKKyAgICBTVkdMZW5ndGhMaXN0IHRvTGVuZ3RoTGlzdCA9IHRvLT5sZW5ndGhMaXN0KCk7Cisg
ICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25MZW5ndGhMaXN0ID0gdG9B
dEVuZE9mRHVyYXRpb24tPmxlbmd0aExpc3QoKTsKICAgICBTVkdMZW5ndGhMaXN0JiBhbmltYXRl
ZExlbmd0aExpc3QgPSBhbmltYXRlZC0+bGVuZ3RoTGlzdCgpOwotICAgIGlmICghbV9hbmltYXRp
b25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR0xlbmd0aExpc3Q+KHBhcnNlTGVu
Z3RoTGlzdEZyb21TdHJpbmcsIGZyb21MZW5ndGhMaXN0LCB0b0xlbmd0aExpc3QsIGFuaW1hdGVk
TGVuZ3RoTGlzdCwgcGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCkpCisKKyAgICAvLyBBcHBs
eSBDU1MgaW5oZXJpdGFuY2UgcnVsZXMuCisgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RG
b3JJbmhlcml0YW5jZTxTVkdMZW5ndGhMaXN0PihwYXJzZUxlbmd0aExpc3RGcm9tU3RyaW5nLCBt
X2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tTGVuZ3RoTGlz
dCwgbV9jb250ZXh0RWxlbWVudCk7CisgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJ
bmhlcml0YW5jZTxTVkdMZW5ndGhMaXN0PihwYXJzZUxlbmd0aExpc3RGcm9tU3RyaW5nLCBtX2Fu
aW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9MZW5ndGhMaXN0LCBtX2Nv
bnRleHRFbGVtZW50KTsKKworICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9t
VG9MaXN0VmFsdWVzPFNWR0xlbmd0aExpc3Q+KGZyb21MZW5ndGhMaXN0LCB0b0xlbmd0aExpc3Qs
IGFuaW1hdGVkTGVuZ3RoTGlzdCwgcGVyY2VudGFnZSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHVuc2lnbmVkIGZyb21MZW5ndGhMaXN0U2l6ZSA9IGZyb21MZW5ndGhMaXN0LnNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCmluZGV4IGM3NzVhNDRjZWZlMjky
OTJjYmQwYTk4ZTIyMzc4YjUxZjhhODQ1ODQuLmI3MTNiYTE3YmFlNzg3MWRhNjQ1ZTU3MTZkMzc5
ZjcyOWU4N2ZkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcApA
QCAtODgsMTEgKzg4LDE0IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lCiAgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAg
ZmxvYXQmIGZyb21OdW1iZXIgPSBmcm9tLT5udW1iZXIoKTsKLSAgICBmbG9hdCYgdG9OdW1iZXIg
PSB0by0+bnVtYmVyKCk7Ci0gICAgZmxvYXQmIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyID0gdG9B
dEVuZE9mRHVyYXRpb24tPm51bWJlcigpOworICAgIGZsb2F0IGZyb21OdW1iZXIgPSBtX2FuaW1h
dGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5u
dW1iZXIoKSA6IGZyb20tPm51bWJlcigpOworICAgIGZsb2F0IHRvTnVtYmVyID0gdG8tPm51bWJl
cigpOworICAgIGZsb2F0IHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyID0gdG9BdEVuZE9mRHVyYXRp
b24tPm51bWJlcigpOwogICAgIGZsb2F0JiBhbmltYXRlZE51bWJlciA9IGFuaW1hdGVkLT5udW1i
ZXIoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxmbG9hdD4o
cGFyc2VOdW1iZXJGcm9tU3RyaW5nLCBmcm9tTnVtYmVyLCB0b051bWJlciwgYW5pbWF0ZWROdW1i
ZXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpOworCisgICAgLy8gQXBwbHkgQ1NTIGlu
aGVyaXRhbmNlIHJ1bGVzLgorICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJp
dGFuY2U8ZmxvYXQ+KHBhcnNlTnVtYmVyRnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT5m
cm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJvbU51bWJlciwgbV9jb250ZXh0RWxlbWVudCk7Cisg
ICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0YW5jZTxmbG9hdD4ocGFyc2VO
dW1iZXJGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUo
KSwgdG9OdW1iZXIsIG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgbV9hbmltYXRpb25FbGVtZW50
LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21OdW1i
ZXIsIHRvTnVtYmVyLCB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlciwgYW5pbWF0ZWROdW1iZXIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAppbmRleCAy
ZjNlM2FjNjNlY2Q0YzY4YzhkMTk2MTQ1NTkxMmU4YTIxZjU2ZTM2Li5hMmQ2MDE4MWE0NzBmZjJk
MmNhOGVkOTdhZGUzZDlmMTdlMTEyMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIFNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwg
U1ZHQQogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWROdW1iZXJMaXN0KTsKICAg
ICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgU1ZHTnVtYmVyTGlz
dCYgZnJvbU51bWJlckxpc3QgPSBmcm9tLT5udW1iZXJMaXN0KCk7CisgICAgY29uc3QgU1ZHTnVt
YmVyTGlzdCYgZnJvbU51bWJlckxpc3QgPSBmcm9tLT5udW1iZXJMaXN0KCk7CiAgICAgU1ZHTnVt
YmVyTGlzdCYgdG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxpc3QoKTsKIAogICAgIHVuc2lnbmVk
IGZyb21OdW1iZXJMaXN0U2l6ZSA9IGZyb21OdW1iZXJMaXN0LnNpemUoKTsKQEAgLTgzLDEzICs4
MywxMiBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5
cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQQogdm9pZCBTVkdBbmltYXRlZE51bWJlckxp
c3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUq
IHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUq
IGFuaW1hdGVkKQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIEFTU0VS
VChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIFNWR051bWJlckxpc3QmIGZyb21OdW1iZXJMaXN0
ID0gZnJvbS0+bnVtYmVyTGlzdCgpOwotICAgIFNWR051bWJlckxpc3QmIHRvTnVtYmVyTGlzdCA9
IHRvLT5udW1iZXJMaXN0KCk7Ci0gICAgU1ZHTnVtYmVyTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25O
dW1iZXJMaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPm51bWJlckxpc3QoKTsKKyAgICBjb25zdCBT
VkdOdW1iZXJMaXN0JiBmcm9tTnVtYmVyTGlzdCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPm51bWJlckxpc3QoKSA6IGZyb20t
Pm51bWJlckxpc3QoKTsKKyAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiB0b051bWJlckxpc3QgPSB0
by0+bnVtYmVyTGlzdCgpOworICAgIGNvbnN0IFNWR051bWJlckxpc3QmIHRvQXRFbmRPZkR1cmF0
aW9uTnVtYmVyTGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5udW1iZXJMaXN0KCk7CiAgICAgU1ZH
TnVtYmVyTGlzdCYgYW5pbWF0ZWROdW1iZXJMaXN0ID0gYW5pbWF0ZWQtPm51bWJlckxpc3QoKTsK
LSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdO
dW1iZXJMaXN0PigwLCBmcm9tTnVtYmVyTGlzdCwgdG9OdW1iZXJMaXN0LCBhbmltYXRlZE51bWJl
ckxpc3QsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQpKQorICAgIGlmICghbV9hbmltYXRp
b25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR051bWJlckxpc3Q+KGZyb21OdW1i
ZXJMaXN0LCB0b051bWJlckxpc3QsIGFuaW1hdGVkTnVtYmVyTGlzdCwgcGVyY2VudGFnZSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGZyb21OdW1iZXJMaXN0U2l6ZSA9IGZyb21O
dW1iZXJMaXN0LnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcAppbmRleCBmMzRkNzYzYTg4MzlkY2NjYjdiMmQ3
NjE5Y2Y1MGE0NWYwYTIwYTg5Li43ODJiZTM0MzFhNTI2MTExOGE1NDg4MTM1ZDI0NmM5ZjUyMjli
MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSoKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBwYWly
PGZsb2F0LCBmbG9hdD4mIGZyb21OdW1iZXJQYWlyID0gZnJvbS0+bnVtYmVyT3B0aW9uYWxOdW1i
ZXIoKTsKKyAgICBjb25zdCBwYWlyPGZsb2F0LCBmbG9hdD4mIGZyb21OdW1iZXJQYWlyID0gZnJv
bS0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKICAgICBwYWlyPGZsb2F0LCBmbG9hdD4mIHRvTnVt
YmVyUGFpciA9IHRvLT5udW1iZXJPcHRpb25hbE51bWJlcigpOwogCiAgICAgdG9OdW1iZXJQYWly
LmZpcnN0ICs9IGZyb21OdW1iZXJQYWlyLmZpcnN0OwpAQCAtODgsMTEgKzg4LDEwIEBAIHZvaWQg
U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlCiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAg
QVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiBmcm9t
TnVtYmVyUGFpciA9IGZyb20tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7Ci0gICAgcGFpcjxmbG9h
dCwgZmxvYXQ+JiB0b051bWJlclBhaXIgPSB0by0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKLSAg
ICBwYWlyPGZsb2F0LCBmbG9hdD4mIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyUGFpciA9IHRvQXRF
bmRPZkR1cmF0aW9uLT5udW1iZXJPcHRpb25hbE51bWJlcigpOworICAgIGNvbnN0IHBhaXI8Zmxv
YXQsIGZsb2F0PiYgZnJvbU51bWJlclBhaXIgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlv
bk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5udW1iZXJPcHRpb25hbE51bWJlcigp
IDogIGZyb20tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgY29uc3QgcGFpcjxmbG9hdCwg
ZmxvYXQ+JiB0b051bWJlclBhaXIgPSB0by0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKKyAgICBj
b25zdCBwYWlyPGZsb2F0LCBmbG9hdD4mIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyUGFpciA9IHRv
QXRFbmRPZkR1cmF0aW9uLT5udW1iZXJPcHRpb25hbE51bWJlcigpOwogICAgIHBhaXI8ZmxvYXQs
IGZsb2F0PiYgYW5pbWF0ZWROdW1iZXJQYWlyID0gYW5pbWF0ZWQtPm51bWJlck9wdGlvbmFsTnVt
YmVyKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8cGFpcjxm
bG9hdCwgZmxvYXQ+ID4oMCwgZnJvbU51bWJlclBhaXIsIHRvTnVtYmVyUGFpciwgYW5pbWF0ZWRO
dW1iZXJQYWlyLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIG1fYW5pbWF0
aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50
LCBmcm9tTnVtYmVyUGFpci5maXJzdCwgdG9OdW1iZXJQYWlyLmZpcnN0LCB0b0F0RW5kT2ZEdXJh
dGlvbk51bWJlclBhaXIuZmlyc3QsIGFuaW1hdGVkTnVtYmVyUGFpci5maXJzdCk7CiAgICAgbV9h
bmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0
Q291bnQsIGZyb21OdW1iZXJQYWlyLnNlY29uZCwgdG9OdW1iZXJQYWlyLnNlY29uZCwgdG9BdEVu
ZE9mRHVyYXRpb25OdW1iZXJQYWlyLnNlY29uZCwgYW5pbWF0ZWROdW1iZXJQYWlyLnNlY29uZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCmluZGV4IDFjMTg2NWFmYjdmNTAx
MjNkOWVjNTYyZDE4NTQyOGU5NTYxYTM1NGEuLjAyOWIxNmExZjA3NTY2MTcwMGNhZTA0NjhhYjVm
NzJhZjU5NDJkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBh
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBAIC0x
MTIsMTUgKzExMiwyMiBAQCB2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAgICAgU1ZHUGF0aEJ5dGVT
dHJlYW0qIHRvQXRFbmRPZkR1cmF0aW9uUGF0aCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5wYXRoKCk7
CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIGFuaW1hdGVkUGF0aCA9IGFuaW1hdGVkLT5wYXRoKCk7
CiAKLSAgICAvLyBQYXNzIGZhbHNlIHRvICdyZXNpemVBbmltYXRlZExpc3RJZk5lZWRlZCcgaGVy
ZSwgYXMgdGhlIHBhdGggYW5pbWF0aW9uIGlzIG5vdCBhIHJlZ3VsYXIgVmVjdG9yPFNWR1hYWD4g
dHlwZSwgYnV0IGEgU1ZHUGF0aEJ5dGVTdHJlYW0sIHRoYXQgd29ya3MgZGlmZmVyZW50bHkuCi0g
ICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUGF0
aEJ5dGVTdHJlYW0+KDAsICpmcm9tUGF0aCwgKnRvUGF0aCwgKmFuaW1hdGVkUGF0aCwgcGVyY2Vu
dGFnZSwgbV9jb250ZXh0RWxlbWVudCwgZmFsc2UpKQotICAgICAgICByZXR1cm47CisgICAgT3du
UHRyPFNWR1BhdGhCeXRlU3RyZWFtPiB1bmRlcmx5aW5nUGF0aDsKKyAgICBib29sIGlzVG9Bbmlt
YXRpb24gPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlv
bjsKKyAgICBpZiAoaXNUb0FuaW1hdGlvbikgeworICAgICAgICB1bmRlcmx5aW5nUGF0aCA9IGFu
aW1hdGVkUGF0aC0+Y29weSgpOworICAgICAgICBmcm9tUGF0aCA9IHVuZGVybHlpbmdQYXRoLmdl
dCgpOworICAgIH0KIAogICAgIC8vIENhY2hlIHRoZSBjdXJyZW50IGFuaW1hdGVkIHZhbHVlIGJl
Zm9yZSB0aGUgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKCkgY2xlYXJzIGFuaW1hdGVk
UGF0aC4KICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGxhc3RBbmltYXRlZFBhdGg7Ci0g
ICAgaWYgKCFmcm9tUGF0aC0+c2l6ZSgpIHx8IChtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWRkaXRp
dmUoKSAmJiBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSAhPSBUb0FuaW1hdGlv
bikpCisgICAgaWYgKCFmcm9tUGF0aC0+c2l6ZSgpIHx8IChtX2FuaW1hdGlvbkVsZW1lbnQtPmlz
QWRkaXRpdmUoKSAmJiAhaXNUb0FuaW1hdGlvbikpCiAgICAgICAgIGxhc3RBbmltYXRlZFBhdGgg
PSBhbmltYXRlZFBhdGgtPmNvcHkoKTsKIAorICAgIC8vIFBhc3MgZmFsc2UgdG8gJ3Jlc2l6ZUFu
aW1hdGVkTGlzdElmTmVlZGVkJyBoZXJlLCBhcyB0aGUgcGF0aCBhbmltYXRpb24gaXMgbm90IGEg
cmVndWxhciBWZWN0b3I8U1ZHWFhYPiB0eXBlLCBidXQgYSBTVkdQYXRoQnl0ZVN0cmVhbSwgdGhh
dCB3b3JrcyBkaWZmZXJlbnRseS4KKyAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0
RnJvbVRvTGlzdFZhbHVlczxTVkdQYXRoQnl0ZVN0cmVhbT4oKmZyb21QYXRoLCAqdG9QYXRoLCAq
YW5pbWF0ZWRQYXRoLCBwZXJjZW50YWdlLCBmYWxzZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbShmcm9tUGF0aCwgdG9QYXRoLCBhbmltYXRl
ZFBhdGgsIHBlcmNlbnRhZ2UpOwogCiAgICAgLy8gSGFuZGxlIGFkZGl0aXZlPSdzdW0nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKaW5kZXggYzI2NDlmYzNk
NWI1MWE2ZjFiYjgwYTcwZTJlNzMwNzAzODdkYTljYi4uMTVkOWMwMWZlMzFlY2MwNDU0YjY4ZDdj
NjgwMTdiNWYyYWFjN2NlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUG9pbnRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2lu
dExpc3QuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmlt
YXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuCiAgICAg
QVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZFBvaW50cyk7CiAgICAgQVNTRVJUKGZyb20t
PnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIFNWR1BvaW50TGlzdCYgZnJvbVBvaW50TGlz
dCA9IGZyb20tPnBvaW50TGlzdCgpOworICAgIGNvbnN0IFNWR1BvaW50TGlzdCYgZnJvbVBvaW50
TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOwogICAgIFNWR1BvaW50TGlzdCYgdG9Qb2ludExpc3Qg
PSB0by0+cG9pbnRMaXN0KCk7CiAKICAgICB1bnNpZ25lZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZy
b21Qb2ludExpc3Quc2l6ZSgpOwpAQCAtODQsMTMgKzg0LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWRQ
b2ludExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20s
IFNWR0FuCiB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1h
dGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0
RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKIHsKICAgICBBU1NFUlQo
bV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKLSAg
ICBTVkdQb2ludExpc3QmIGZyb21Qb2ludExpc3QgPSBmcm9tLT5wb2ludExpc3QoKTsKLSAgICBT
VkdQb2ludExpc3QmIHRvUG9pbnRMaXN0ID0gdG8tPnBvaW50TGlzdCgpOwotICAgIFNWR1BvaW50
TGlzdCYgdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+cG9p
bnRMaXN0KCk7CisgICAgY29uc3QgU1ZHUG9pbnRMaXN0JiBmcm9tUG9pbnRMaXN0ID0gbV9hbmlt
YXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+
cG9pbnRMaXN0KCkgOiBmcm9tLT5wb2ludExpc3QoKTsKKyAgICBjb25zdCBTVkdQb2ludExpc3Qm
IHRvUG9pbnRMaXN0ID0gdG8tPnBvaW50TGlzdCgpOworICAgIGNvbnN0IFNWR1BvaW50TGlzdCYg
dG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+cG9pbnRMaXN0
KCk7CiAgICAgU1ZHUG9pbnRMaXN0JiBhbmltYXRlZFBvaW50TGlzdCA9IGFuaW1hdGVkLT5wb2lu
dExpc3QoKTsKLSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZh
bHVlczxTVkdQb2ludExpc3Q+KDAsIGZyb21Qb2ludExpc3QsIHRvUG9pbnRMaXN0LCBhbmltYXRl
ZFBvaW50TGlzdCwgcGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCkpCisgICAgaWYgKCFtX2Fu
aW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUG9pbnRMaXN0Pihmcm9t
UG9pbnRMaXN0LCB0b1BvaW50TGlzdCwgYW5pbWF0ZWRQb2ludExpc3QsIHBlcmNlbnRhZ2UpKQog
ICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZyb21Q
b2ludExpc3Quc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAppbmRleCA3M2E3ZjI3MGM5M2QyZmE1ZDdkZmNmZDdm
ZWY4Y2U1MmRkNWIxMDk1Li5lMjAwNjg4OGE4YTNiMTcxZTkzMDkxMjkyMWFiNmQwYjQwZWQ5ZWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmNwcApAQCAtNzMsMTAgKzczLDkgQEAgdm9pZCBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW9BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW4K
ICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxl
bWVudCk7CiAKLSAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBmcm9tUHJlc2VydmVBc3BlY3RS
YXRpbyA9IGZyb20tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvJiB0b1ByZXNlcnZlQXNwZWN0UmF0aW8gPSB0by0+cHJlc2VydmVBc3BlY3RSYXRpbygp
OworICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIGZyb21QcmVzZXJ2ZUFzcGVjdFJh
dGlvID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24g
PyBhbmltYXRlZC0+cHJlc2VydmVBc3BlY3RSYXRpbygpIDogZnJvbS0+cHJlc2VydmVBc3BlY3RS
YXRpbygpOworICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHRvUHJlc2VydmVBc3Bl
Y3RSYXRpbyA9IHRvLT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CiAgICAgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyYgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gYW5pbWF0ZWQtPnByZXNlcnZl
QXNwZWN0UmF0aW8oKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVl
czxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPigwLCBmcm9tUHJlc2VydmVBc3BlY3RSYXRpbywgdG9Q
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIHBlcmNlbnRh
Z2UsIG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRl
RGlzY3JldGVUeXBlPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+KHBlcmNlbnRhZ2UsIGZyb21QcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCB0b1ByZXNlcnZlQXNwZWN0UmF0aW8sIGFuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpbyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCmluZGV4
IGFkNDI4NmRiZWNhZjg1NzM2NWM5Y2RmMzIyYTNmNmIxNmRhMmVhMjcuLjE2NzdhMjI0YzNmNzdj
Y2ViN2FiYWMxM2ZlNGM4N2FiM2JiYTM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFJlY3QuY3BwCkBAIC03NywxMSArNzcsMTAgQEAgdm9pZCBTVkdBbmltYXRlZFJlY3RBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKIAotICAgIEZsb2F0UmVjdCYgZnJvbVJlY3QgPSBmcm9tLT5yZWN0KCk7Ci0gICAgRmxvYXRS
ZWN0JiB0b1JlY3QgPSB0by0+cmVjdCgpOwotICAgIEZsb2F0UmVjdCYgdG9BdEVuZE9mRHVyYXRp
b25SZWN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJlY3Qm
IGZyb21SZWN0ID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9Bbmlt
YXRpb24gPyBhbmltYXRlZC0+cmVjdCgpIDogZnJvbS0+cmVjdCgpOworICAgIGNvbnN0IEZsb2F0
UmVjdCYgdG9SZWN0ID0gdG8tPnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHRvQXRFbmRP
ZkR1cmF0aW9uUmVjdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5yZWN0KCk7CiAgICAgRmxvYXRSZWN0
JiBhbmltYXRlZFJlY3QgPSBhbmltYXRlZC0+cmVjdCgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVu
dC0+YWRqdXN0RnJvbVRvVmFsdWVzPEZsb2F0UmVjdD4oMCwgZnJvbVJlY3QsIHRvUmVjdCwgYW5p
bWF0ZWRSZWN0LCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIGZsb2F0IGFu
aW1hdGVkWCA9IGFuaW1hdGVkUmVjdC54KCk7CiAgICAgZmxvYXQgYW5pbWF0ZWRZID0gYW5pbWF0
ZWRSZWN0LnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0
cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwCmluZGV4
IGFiOTExMGIzOGI5YzBhOGVjYTdhY2RkODFlZTMyY2JhMjcxNWY4MTIuLjAwMjQ1OGIxZjg5ODc2
MWE0MWY2ZWIyYTg1OWNiNjU4ZDBmYzE2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcApAQCAtNzgsMTAgKzc4LDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZWRTdHJpbmdB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVs
ZW1lbnQpOwogCi0gICAgU3RyaW5nJiBmcm9tU3RyaW5nID0gZnJvbS0+c3RyaW5nKCk7Ci0gICAg
U3RyaW5nJiB0b1N0cmluZyA9IHRvLT5zdHJpbmcoKTsKKyAgICBTdHJpbmcgZnJvbVN0cmluZyA9
IGZyb20tPnN0cmluZygpOworICAgIFN0cmluZyB0b1N0cmluZyA9IHRvLT5zdHJpbmcoKTsKICAg
ICBTdHJpbmcmIGFuaW1hdGVkU3RyaW5nID0gYW5pbWF0ZWQtPnN0cmluZygpOwotICAgIG1fYW5p
bWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVzPFN0cmluZz4ocGFyc2VTdHJpbmdGcm9t
U3RyaW5nLCBmcm9tU3RyaW5nLCB0b1N0cmluZywgYW5pbWF0ZWRTdHJpbmcsIHBlcmNlbnRhZ2Us
IG1fY29udGV4dEVsZW1lbnQpOworCisgICAgLy8gQXBwbHkgQ1NTIGluaGVyaXRhbmNlIHJ1bGVz
LgorICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U3RyaW5nPihw
YXJzZVN0cmluZ0Zyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFs
dWVUeXBlKCksIGZyb21TdHJpbmcsIG1fY29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U3RyaW5nPihwYXJzZVN0cmluZ0Zyb21TdHJp
bmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlwZSgpLCB0b1N0cmluZywg
bV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVEaXNj
cmV0ZVR5cGU8U3RyaW5nPihwZXJjZW50YWdlLCBmcm9tU3RyaW5nLCB0b1N0cmluZywgYW5pbWF0
ZWRTdHJpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LmNwcAppbmRleCA1MGQyZDU3NjQ1ODliNzY4NDcyYzc3ZGNlZGQ5MzgyYWE4OTRjYTI2
Li40N2E0NGVlMTVkMDEyZmJjMjI0MWMxNzQ0OTFhYzQ3ZThhMzAyOWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcApAQCAtNzksMTQgKzc5
LDE0IEBAIHZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVk
VHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTCiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9
PSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8t
PnR5cGUoKSk7CiAKLSAgICBTVkdUcmFuc2Zvcm1MaXN0JiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZy
b20tPnRyYW5zZm9ybUxpc3QoKTsKKyAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiBmcm9tVHJh
bnNmb3JtTGlzdCA9IGZyb20tPnRyYW5zZm9ybUxpc3QoKTsKICAgICBTVkdUcmFuc2Zvcm1MaXN0
JiB0b1RyYW5zZm9ybUxpc3QgPSB0by0+dHJhbnNmb3JtTGlzdCgpOwogICAgIHVuc2lnbmVkIGZy
b21UcmFuc2Zvcm1MaXN0U2l6ZSA9IGZyb21UcmFuc2Zvcm1MaXN0LnNpemUoKTsKICAgICBpZiAo
IWZyb21UcmFuc2Zvcm1MaXN0U2l6ZSB8fCBmcm9tVHJhbnNmb3JtTGlzdFNpemUgIT0gdG9UcmFu
c2Zvcm1MaXN0LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGZyb21UcmFu
c2Zvcm1MaXN0U2l6ZSA9PSAxKTsKLSAgICBTVkdUcmFuc2Zvcm0mIGZyb21UcmFuc2Zvcm0gPSBm
cm9tVHJhbnNmb3JtTGlzdFswXTsKKyAgICBjb25zdCBTVkdUcmFuc2Zvcm0mIGZyb21UcmFuc2Zv
cm0gPSBmcm9tVHJhbnNmb3JtTGlzdFswXTsKICAgICBTVkdUcmFuc2Zvcm0mIHRvVHJhbnNmb3Jt
ID0gdG9UcmFuc2Zvcm1MaXN0WzBdOwogCiAgICAgQVNTRVJUKGZyb21UcmFuc2Zvcm0udHlwZSgp
ID09IHRvVHJhbnNmb3JtLnR5cGUoKSk7CkBAIC0xMDEsMTMgKzEwMSwxMyBAQCB2b2lkIFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsCiAgICAgLy8g4oCYdG/igJkgYXR0cmlidXRlIHZhbHVlLCB3aGljaCBjb25m
bGljdHMgbWF0aGVtYXRpY2FsbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnQgZm9yIGFkZGl0aXZlIHRy
YW5zZm9ybSBhbmltYXRpb25zCiAgICAgLy8gdG8gYmUgcG9zdC1tdWx0aXBsaWVkLiBBcyBhIGNv
bnNlcXVlbmNlLCBpbiBTVkcgMS4xIHRoZSBiZWhhdmlvciBvZiB0byBhbmltYXRpb25zIGZvciDi
gJhhbmltYXRlVHJhbnNmb3Jt4oCZIGlzIHVuZGVmaW5lZC4KICAgICAvLyBGSVhNRTogVGhpcyBp
cyBub3QgdGFrZW4gaW50byBhY2NvdW50IHlldC4KLSAgICBTVkdUcmFuc2Zvcm1MaXN0JiBmcm9t
VHJhbnNmb3JtTGlzdCA9IGZyb20tPnRyYW5zZm9ybUxpc3QoKTsKLSAgICBTVkdUcmFuc2Zvcm1M
aXN0JiB0b1RyYW5zZm9ybUxpc3QgPSB0by0+dHJhbnNmb3JtTGlzdCgpOwotICAgIFNWR1RyYW5z
Zm9ybUxpc3QmIHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlzdCA9IHRvQXRFbmRPZkR1cmF0
aW9uLT50cmFuc2Zvcm1MaXN0KCk7CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgZnJvbVRy
YW5zZm9ybUxpc3QgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0Fu
aW1hdGlvbiA/IGFuaW1hdGVkLT50cmFuc2Zvcm1MaXN0KCkgOiBmcm9tLT50cmFuc2Zvcm1MaXN0
KCk7CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgdG9UcmFuc2Zvcm1MaXN0ID0gdG8tPnRy
YW5zZm9ybUxpc3QoKTsKKyAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiB0b0F0RW5kT2ZEdXJh
dGlvblRyYW5zZm9ybUxpc3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+dHJhbnNmb3JtTGlzdCgpOwog
ICAgIFNWR1RyYW5zZm9ybUxpc3QmIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IGFuaW1hdGVkLT50
cmFuc2Zvcm1MaXN0KCk7CiAKICAgICAvLyBQYXNzIGZhbHNlIHRvICdyZXNpemVBbmltYXRlZExp
c3RJZk5lZWRlZCcgaGVyZSwgYXMgdGhlIHNwZWNpYWwgcG9zdC1tdWx0aXBsaWNhdGlvbiBiZWhh
dmlvciBvZiA8YW5pbWF0ZVRyYW5zZm9ybT4gbmVlZHMgdG8gYmUgcmVzcGVjdGVkIGJlbG93Lgot
ICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1Ry
YW5zZm9ybUxpc3Q+KDAsIGZyb21UcmFuc2Zvcm1MaXN0LCB0b1RyYW5zZm9ybUxpc3QsIGFuaW1h
dGVkVHJhbnNmb3JtTGlzdCwgcGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVudCwgZmFsc2UpKQor
ICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1Ry
YW5zZm9ybUxpc3Q+KGZyb21UcmFuc2Zvcm1MaXN0LCB0b1RyYW5zZm9ybUxpc3QsIGFuaW1hdGVk
VHJhbnNmb3JtTGlzdCwgcGVyY2VudGFnZSwgZmFsc2UpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBOZXZlciByZXNpemUgdGhlIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0byB0aGUgdG9UcmFu
c2Zvcm1MaXN0IHNpemUsIGluc3RlYWQgZWl0aGVyIGNsZWFyIHRoZSBsaXN0IG9yIGFwcGVuZCB0
byBpdC4KQEAgLTExNSwxMyArMTE1LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwKICAgICAg
ICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNsZWFyKCk7CiAKICAgICB1bnNpZ25lZCBmcm9tVHJh
bnNmb3JtTGlzdFNpemUgPSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7Ci0gICAgU1ZHVHJhbnNm
b3JtJiB0b1RyYW5zZm9ybSA9IHRvVHJhbnNmb3JtTGlzdFswXTsKKyAgICBjb25zdCBTVkdUcmFu
c2Zvcm0mIHRvVHJhbnNmb3JtID0gdG9UcmFuc2Zvcm1MaXN0WzBdOwogICAgIFNWR1RyYW5zZm9y
bSBlZmZlY3RpdmVGcm9tID0gZnJvbVRyYW5zZm9ybUxpc3RTaXplID8gZnJvbVRyYW5zZm9ybUxp
c3RbMF0gOiBTVkdUcmFuc2Zvcm0odG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm06OkNv
bnN0cnVjdFplcm9UcmFuc2Zvcm0pOwogICAgIFNWR1RyYW5zZm9ybSBjdXJyZW50VHJhbnNmb3Jt
ID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2UoZWZmZWN0aXZlRnJvbSwgdG9UcmFuc2Zvcm0pLnNjYWxl
ZERpc3RhbmNlKHBlcmNlbnRhZ2UpLmFkZFRvU1ZHVHJhbnNmb3JtKGVmZmVjdGl2ZUZyb20pOwot
ICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRDb3Vu
dCkgewotICAgICAgICBTVkdUcmFuc2Zvcm0mIHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtID0g
dG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0WzBdOwotICAgICAgICBhbmltYXRlZFRyYW5z
Zm9ybUxpc3QuYXBwZW5kKFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVkdUcmFuc2Zvcm1zKGN1
cnJlbnRUcmFuc2Zvcm0sIHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtLCByZXBlYXRDb3VudCkp
OwotICAgIH0gZWxzZQorICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0ZWQo
KSAmJiByZXBlYXRDb3VudCkKKyAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChT
VkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3JtcyhjdXJyZW50VHJhbnNmb3JtLCB0
b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybUxpc3RbMF0sIHJlcGVhdENvdW50KSk7CisgICAgZWxz
ZQogICAgICAgICBhbmltYXRlZFRyYW5zZm9ybUxpc3QuYXBwZW5kKGN1cnJlbnRUcmFuc2Zvcm0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCmluZGV4IDFlMTI4Y2Mw
MDFlZTEzYmJkZWNiYzE0ZTY4MzQ2ODZlNzYxZmUyODkuLjJmYzBlMTk0NmJiMGQwOTczY2MyNzgy
ZmZjYTc2ZTFhZDEzYjkzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3Bw
CkBAIC0yMzcsNiArMjM3LDEwOCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KFNWR1RyYW5zZm9ybUxpcwogICAgIHJldHVy
biBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitjb25zdCBzdGQ6OnBhaXI8U1ZHQW5nbGUs
IHVuc2lnbmVkPiYgU1ZHQW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVudW1lcmF0aW9uKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOworICAgIHJldHVybiAqbV9k
YXRhLmFuZ2xlQW5kRW51bWVyYXRpb247Cit9CisKK2NvbnN0IGJvb2wmIFNWR0FuaW1hdGVkVHlw
ZTo6Ym9vbGVhbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZEJvb2xl
YW4pOworICAgIHJldHVybiAqbV9kYXRhLmJvb2xlYW47Cit9CisKK2NvbnN0IENvbG9yJiBTVkdB
bmltYXRlZFR5cGU6OmNvbG9yKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1h
dGVkQ29sb3IpOworICAgIHJldHVybiAqbV9kYXRhLmNvbG9yOworfQorCitjb25zdCB1bnNpZ25l
ZCYgU1ZHQW5pbWF0ZWRUeXBlOjplbnVtZXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
dHlwZSA9PSBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICByZXR1cm4gKm1fZGF0YS5lbnVtZXJh
dGlvbjsKK30KKworY29uc3QgaW50JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXIoKSBjb25zdAor
eworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICByZXR1cm4gKm1f
ZGF0YS5pbnRlZ2VyOworfQorCitjb25zdCBwYWlyPGludCwgaW50PiYgU1ZHQW5pbWF0ZWRUeXBl
OjppbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09
IEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcik7CisgICAgcmV0dXJuICptX2RhdGEuaW50
ZWdlck9wdGlvbmFsSW50ZWdlcjsKK30KKworY29uc3QgU1ZHTGVuZ3RoJiBTVkdBbmltYXRlZFR5
cGU6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZExlbmd0
aCk7CisgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoOworfQorCitjb25zdCBTVkdMZW5ndGhMaXN0
JiBTVkdBbmltYXRlZFR5cGU6Omxlbmd0aExpc3QoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5
cGUgPT0gQW5pbWF0ZWRMZW5ndGhMaXN0KTsKKyAgICByZXR1cm4gKm1fZGF0YS5sZW5ndGhMaXN0
OworfQorCitjb25zdCBmbG9hdCYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIoKSBjb25zdAorewor
ICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWROdW1iZXIpOworICAgIHJldHVybiAqbV9kYXRh
Lm51bWJlcjsKK30KKworY29uc3QgU1ZHTnVtYmVyTGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1i
ZXJMaXN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyTGlz
dCk7CisgICAgcmV0dXJuICptX2RhdGEubnVtYmVyTGlzdDsKK30KKworY29uc3QgcGFpcjxmbG9h
dCwgZmxvYXQ+JiBTVkdBbmltYXRlZFR5cGU6Om51bWJlck9wdGlvbmFsTnVtYmVyKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwor
ICAgIHJldHVybiAqbV9kYXRhLm51bWJlck9wdGlvbmFsTnVtYmVyOworfQorCitjb25zdCBTVkdQ
YXRoQnl0ZVN0cmVhbSogU1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IEFuaW1hdGVkUGF0aCk7CisgICAgcmV0dXJuIG1fZGF0YS5wYXRoOworfQor
Citjb25zdCBTVkdQb2ludExpc3QmIFNWR0FuaW1hdGVkVHlwZTo6cG9pbnRMaXN0KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9pbnRzKTsKKyAgICByZXR1cm4gKm1f
ZGF0YS5wb2ludExpc3Q7Cit9CisKK2NvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIFNWR0Fu
aW1hdGVkVHlwZTo6cHJlc2VydmVBc3BlY3RSYXRpbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
dHlwZSA9PSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIHJldHVybiAqbV9kYXRh
LnByZXNlcnZlQXNwZWN0UmF0aW87Cit9CisKK2NvbnN0IEZsb2F0UmVjdCYgU1ZHQW5pbWF0ZWRU
eXBlOjpyZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUmVjdCk7
CisgICAgcmV0dXJuICptX2RhdGEucmVjdDsKK30KKworY29uc3QgU3RyaW5nJiBTVkdBbmltYXRl
ZFR5cGU6OnN0cmluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFN0
cmluZyk7CisgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOworfQorCitjb25zdCBTVkdUcmFuc2Zv
cm1MaXN0JiBTVkdBbmltYXRlZFR5cGU6OnRyYW5zZm9ybUxpc3QoKSBjb25zdAoreworICAgIEFT
U0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICByZXR1cm4gKm1fZGF0
YS50cmFuc2Zvcm1MaXN0OworfQorCiBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgU1ZH
QW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVudW1lcmF0aW9uKCkKIHsKICAgICBBU1NFUlQobV90eXBl
ID09IEFuaW1hdGVkQW5nbGUpOwpAQCAtMjcwLDcgKzM3Miw3IEBAIGludCYgU1ZHQW5pbWF0ZWRU
eXBlOjppbnRlZ2VyKCkKIHBhaXI8aW50LCBpbnQ+JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXJP
cHRpb25hbEludGVnZXIoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyKTsKLSAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRl
Z2VyOyAgICAgICAgCisgICAgcmV0dXJuICptX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsK
IH0KIAogU1ZHTGVuZ3RoJiBTVkdBbmltYXRlZFR5cGU6Omxlbmd0aCgpCkBAIC0zMDAsNyArNDAy
LDcgQEAgU1ZHTnVtYmVyTGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXJMaXN0KCkKIHBhaXI8
ZmxvYXQsIGZsb2F0PiYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXJPcHRpb25hbE51bWJlcigpCiB7
CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAg
ICByZXR1cm4gKm1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlcjsgICAgICAgIAorICAgIHJldHVy
biAqbV9kYXRhLm51bWJlck9wdGlvbmFsTnVtYmVyOwogfQogCiBTVkdQYXRoQnl0ZVN0cmVhbSog
U1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApp
bmRleCBkNjA5ZjhjNTI1ZmQ0MGJjZGE1MzAzOGIxZjQ3ZTFkMmVlZTY2OGYyLi5hN2JiOGJjNDQ0
ZTUwMTI0M2I0OWE4ZDhiMzZkNWJhMDkyMmNlYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oCkBAIC02Miw2ICs2MiwyNiBAQCBwdWJsaWM6CiAKICAgICBBbmltYXRlZFByb3Bl
cnR5VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKKyAgICAvLyBOb24tbXV0
YWJsZSBhY2Nlc3NvcnMuCisgICAgY29uc3Qgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4m
IGFuZ2xlQW5kRW51bWVyYXRpb24oKSBjb25zdDsKKyAgICBjb25zdCBib29sJiBib29sZWFuKCkg
Y29uc3Q7CisgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3Q7CisgICAgY29uc3QgdW5zaWdu
ZWQmIGVudW1lcmF0aW9uKCkgY29uc3Q7CisgICAgY29uc3QgaW50JiBpbnRlZ2VyKCkgY29uc3Q7
CisgICAgY29uc3Qgc3RkOjpwYWlyPGludCwgaW50PiYgaW50ZWdlck9wdGlvbmFsSW50ZWdlcigp
IGNvbnN0OworICAgIGNvbnN0IFNWR0xlbmd0aCYgbGVuZ3RoKCkgY29uc3Q7CisgICAgY29uc3Qg
U1ZHTGVuZ3RoTGlzdCYgbGVuZ3RoTGlzdCgpIGNvbnN0OworICAgIGNvbnN0IGZsb2F0JiBudW1i
ZXIoKSBjb25zdDsKKyAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiBudW1iZXJMaXN0KCkgY29uc3Q7
CisgICAgY29uc3Qgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4mIG51bWJlck9wdGlvbmFsTnVtYmVy
KCkgY29uc3Q7CisgICAgY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGgoKSBjb25zdDsKKyAg
ICBjb25zdCBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0OworICAgIGNvbnN0IFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8oKSBjb25zdDsKKyAgICBjb25z
dCBGbG9hdFJlY3QmIHJlY3QoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNv
bnN0OworICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3QmIHRyYW5zZm9ybUxpc3QoKSBjb25zdDsK
KworICAgIC8vIE11dGFibGUgYWNjZXNzb3JzLgogICAgIHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5z
aWduZWQ+JiBhbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAgICAgYm9vbCYgYm9vbGVhbigpOwogICAg
IENvbG9yJiBjb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
Y3BwCmluZGV4IDRjNmI0MjdkYmNiNDJlZGQ0MjZjZjBmNzlhZmQ5Y2RmZTJmYzNjMTQuLjA3ZTRh
OTQ0OTU3Njk2MjQwMDhmZDNlMzYyMDhkMjhjZGM2MmNhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTQ5MywxMyArNDkzLDEyIEBAIHZvaWQgU1ZH
QW5pbWF0aW9uRWxlbWVudDo6Y3VycmVudFZhbHVlc0Zyb21LZXlQb2ludHMoZmxvYXQgcGVyY2Vu
dCwgZmxvYXQmIGVmZmVjCiAgICAgdG8gPSBtX3ZhbHVlc1tpbmRleCArIDFdOwogfQogICAgIAot
dm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9u
KGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0
cmluZyYgdG8sIFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pCit2b2lkIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgZmxv
YXQmIGVmZmVjdGl2ZVBlcmNlbnQsIFN0cmluZyYgZnJvbSwgU3RyaW5nJiB0bykKIHsKICAgICB1
bnNpZ25lZCB2YWx1ZXNDb3VudCA9IG1fdmFsdWVzLnNpemUoKTsKICAgICBBU1NFUlQobV9hbmlt
YXRpb25WYWxpZCk7CiAgICAgQVNTRVJUKHZhbHVlc0NvdW50ID49IDEpOwogCi0gICAgdG9BdEVu
ZE9mRHVyYXRpb24gPSBtX3ZhbHVlcy5sYXN0KCk7CiAgICAgaWYgKHBlcmNlbnQgPT0gMSB8fCB2
YWx1ZXNDb3VudCA9PSAxKSB7CiAgICAgICAgIGZyb20gPSBtX3ZhbHVlc1t2YWx1ZXNDb3VudCAt
IDFdOwogICAgICAgICB0byA9IG1fdmFsdWVzW3ZhbHVlc0NvdW50IC0gMV07CkBAIC02MDEsNiAr
NjAwLDggQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzdGFydGVkQWN0aXZlSW50ZXJ2YWwo
KQogICAgICAgICAgICAgJiYgKGNhbGNNb2RlID09IENhbGNNb2RlRGlzY3JldGUgfHwgIW1fa2V5
VGltZXMuc2l6ZSgpIHx8IG1fa2V5VGltZXMubGFzdCgpID09IDEpCiAgICAgICAgICAgICAmJiAo
Y2FsY01vZGUgIT0gQ2FsY01vZGVTcGxpbmUgfHwgKChtX2tleVNwbGluZXMuc2l6ZSgpICYmICht
X2tleVNwbGluZXMuc2l6ZSgpID09IG1fdmFsdWVzLnNpemUoKSAtIDEpKSB8fCBtX2tleVNwbGlu
ZXMuc2l6ZSgpID09IG1fa2V5UG9pbnRzLnNpemUoKSAtIDEpKQogICAgICAgICAgICAgJiYgKCFm
YXN0SGFzQXR0cmlidXRlKFNWR05hbWVzOjprZXlQb2ludHNBdHRyKSB8fCAobV9rZXlUaW1lcy5z
aXplKCkgPiAxICYmIG1fa2V5VGltZXMuc2l6ZSgpID09IG1fa2V5UG9pbnRzLnNpemUoKSkpOwor
ICAgICAgICBpZiAobV9hbmltYXRpb25WYWxpZCkKKyAgICAgICAgICAgIG1fYW5pbWF0aW9uVmFs
aWQgPSBjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKG1fdmFsdWVzLmxhc3QoKSk7CiAg
ICAgICAgIGlmIChjYWxjTW9kZSA9PSBDYWxjTW9kZVBhY2VkICYmIG1fYW5pbWF0aW9uVmFsaWQp
CiAgICAgICAgICAgICBjYWxjdWxhdGVLZXlUaW1lc0ZvckNhbGNNb2RlUGFjZWQoKTsKICAgICB9
IGVsc2UgaWYgKGFuaW1hdGlvbk1vZGUgPT0gUGF0aEFuaW1hdGlvbikKQEAgLTYxMiwxMyArNjEz
LDEyIEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBl
cmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTCiAgICAgaWYgKCFtX2FuaW1hdGlvblZhbGlk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgdG9BdEVuZE9mRHVyYXRpb247CiAgICAg
ZmxvYXQgZWZmZWN0aXZlUGVyY2VudDsKICAgICBDYWxjTW9kZSBtb2RlID0gY2FsY01vZGUoKTsK
ICAgICBpZiAoYW5pbWF0aW9uTW9kZSgpID09IFZhbHVlc0FuaW1hdGlvbikgewogICAgICAgICBT
dHJpbmcgZnJvbTsKICAgICAgICAgU3RyaW5nIHRvOwotICAgICAgICBjdXJyZW50VmFsdWVzRm9y
VmFsdWVzQW5pbWF0aW9uKHBlcmNlbnQsIGVmZmVjdGl2ZVBlcmNlbnQsIGZyb20sIHRvLCB0b0F0
RW5kT2ZEdXJhdGlvbik7CisgICAgICAgIGN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24o
cGVyY2VudCwgZWZmZWN0aXZlUGVyY2VudCwgZnJvbSwgdG8pOwogICAgICAgICBpZiAoZnJvbSAh
PSBtX2xhc3RWYWx1ZXNBbmltYXRpb25Gcm9tIHx8IHRvICE9IG1fbGFzdFZhbHVlc0FuaW1hdGlv
blRvKSB7CiAgICAgICAgICAgICBtX2FuaW1hdGlvblZhbGlkID0gY2FsY3VsYXRlRnJvbUFuZFRv
VmFsdWVzKGZyb20sIHRvKTsKICAgICAgICAgICAgIGlmICghbV9hbmltYXRpb25WYWxpZCkKQEAg
LTYzNSw3ICs2MzUsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGlv
bihmbG9hdCBwZXJjZW50LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUwogICAgIGVsc2UKICAgICAg
ICAgZWZmZWN0aXZlUGVyY2VudCA9IHBlcmNlbnQ7CiAKLSAgICBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGVmZmVjdGl2ZVBlcmNlbnQsIHJlcGVhdENvdW50LCB0b0F0RW5kT2ZEdXJhdGlvbiwgcmVz
dWx0RWxlbWVudCk7CisgICAgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50
LCByZXBlYXRDb3VudCwgcmVzdWx0RWxlbWVudCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6Y29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUoU1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJv
cGVydHlJRCBpZCwgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5oCmluZGV4IGZjNzRlYmJkYjA3MTAyYmQ3Yjk3MDUwMDA3ZjI0YTIyMGU1ODQ2NjAu
LjVjNjQyOWRhNTFkMzNlODdjMGQ1NThlMTU4MzZkN2E4OTI4YTAzMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaApAQCAtMTE1LDI4ICsxMTUsOCBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotICAgIHZvaWQg
YWRqdXN0RnJvbVRvVmFsdWVzKEFuaW1hdGVkVHlwZSAoKnBhcnNlVHlwZUZyb21TdHJpbmcpKFNW
R0FuaW1hdGlvbkVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbmltYXRlZFR5cGUmIGZyb21UeXBlLCBBbmltYXRlZFR5cGUmIHRvVHlwZSwgQW5p
bWF0ZWRUeXBlJiBhbmltYXRlZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQmIHBlcmNlbnRhZ2UsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIGJvb2wgYWRq
dXN0RnJvbVRvTGlzdFZhbHVlcyhjb25zdCBBbmltYXRlZFR5cGUmIGZyb21MaXN0LCBjb25zdCBB
bmltYXRlZFR5cGUmIHRvTGlzdCwgQW5pbWF0ZWRUeXBlJiBhbmltYXRlZExpc3QsIGZsb2F0IHBl
cmNlbnRhZ2UsIGJvb2wgcmVzaXplQW5pbWF0ZWRMaXN0SWZOZWVkZWQgPSB0cnVlKQogICAgIHsK
LSAgICAgICAgLy8gVG8tYW5pbWF0aW9uIHVzZXMgY29udHJpYnV0aW9ucyBmcm9tIHRoZSBsb3dl
ciBwcmlvcml0eSBhbmltYXRpb25zIGFzIHRoZSBiYXNlIHZhbHVlLgotICAgICAgICBpZiAoYW5p
bWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uKQotICAgICAgICAgICAgZnJvbVR5cGUgPSBBbmlt
YXRlZFR5cGUoYW5pbWF0ZWRUeXBlKTsKLQotICAgICAgICBhZGp1c3RGb3JJbmhlcml0YW5jZTxB
bmltYXRlZFR5cGU+KHBhcnNlVHlwZUZyb21TdHJpbmcsIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBl
LCBmcm9tVHlwZSwgY29udGV4dEVsZW1lbnQpOwotICAgICAgICBhZGp1c3RGb3JJbmhlcml0YW5j
ZTxBbmltYXRlZFR5cGU+KHBhcnNlVHlwZUZyb21TdHJpbmcsIG1fdG9Qcm9wZXJ0eVZhbHVlVHlw
ZSwgdG9UeXBlLCBjb250ZXh0RWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKGNhbGNNb2RlKCkgPT0g
Q2FsY01vZGVEaXNjcmV0ZSkKLSAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSBwZXJjZW50YWdlIDwg
MC41ID8gMCA6IDE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBl
PgotICAgIGJvb2wgYWRqdXN0RnJvbVRvTGlzdFZhbHVlcyhBbmltYXRlZFR5cGUgKCpwYXJzZVR5
cGVGcm9tU3RyaW5nKShTVkdBbmltYXRpb25FbGVtZW50KiwgY29uc3QgU3RyaW5nJiksIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRlZFR5cGUmIGZyb21MaXN0LCBBbmlt
YXRlZFR5cGUmIHRvTGlzdCwgQW5pbWF0ZWRUeXBlJiBhbmltYXRlZExpc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBwZXJjZW50YWdlLCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgYm9vbCByZXNpemVBbmltYXRlZExpc3RJZk5lZWRlZCA9IHRydWUpCi0gICAg
ewotICAgICAgICBhZGp1c3RGcm9tVG9WYWx1ZXMocGFyc2VUeXBlRnJvbVN0cmluZywgZnJvbUxp
c3QsIHRvTGlzdCwgYW5pbWF0ZWRMaXN0LCBwZXJjZW50YWdlLCBjb250ZXh0RWxlbWVudCk7Ci0K
ICAgICAgICAgLy8gSWYgbm8gJ3RvJyB2YWx1ZSBpcyBnaXZlbiwgbm90aGluZyB0byBhbmltYXRl
LgogICAgICAgICB1bnNpZ25lZCB0b0xpc3RTaXplID0gdG9MaXN0LnNpemUoKTsKICAgICAgICAg
aWYgKCF0b0xpc3RTaXplKQpAQCAtMTQ3LDkgKzEyNyw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KGZyb21MaXN0U2l6ZSAhPSB0b0xpc3RTaXplICYmIGZyb21MaXN0U2l6ZSkgewogICAgICAgICAg
ICAgaWYgKHBlcmNlbnRhZ2UgPCAwLjUpIHsKICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9u
TW9kZSgpICE9IFRvQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgICAgICBhbmltYXRlZExpc3Qg
PSBmcm9tTGlzdDsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZWRMaXN0ID0gQW5pbWF0ZWRU
eXBlKGZyb21MaXN0KTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGFuaW1h
dGVkTGlzdCA9IHRvTGlzdDsKKyAgICAgICAgICAgICAgICBhbmltYXRlZExpc3QgPSBBbmltYXRl
ZFR5cGUodG9MaXN0KTsKIAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0xNjIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEFuaW1hdGVkVHlwZT4KLSAgICB2b2lkIGFuaW1hdGVEaXNjcmV0ZVR5cGUoZmxvYXQgcGVyY2Vu
dGFnZSwgQW5pbWF0ZWRUeXBlJiBmcm9tVHlwZSwgQW5pbWF0ZWRUeXBlJiB0b1R5cGUsIEFuaW1h
dGVkVHlwZSYgYW5pbWF0ZWRUeXBlKQorICAgIHZvaWQgYW5pbWF0ZURpc2NyZXRlVHlwZShmbG9h
dCBwZXJjZW50YWdlLCBjb25zdCBBbmltYXRlZFR5cGUmIGZyb21UeXBlLCBjb25zdCBBbmltYXRl
ZFR5cGUmIHRvVHlwZSwgQW5pbWF0ZWRUeXBlJiBhbmltYXRlZFR5cGUpCiAgICAgewogICAgICAg
ICBpZiAoKGFuaW1hdGlvbk1vZGUoKSA9PSBGcm9tVG9BbmltYXRpb24gJiYgcGVyY2VudGFnZSA+
IDAuNSkgfHwgYW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0g
MSkgewogICAgICAgICAgICAgYW5pbWF0ZWRUeXBlID0gQW5pbWF0ZWRUeXBlKHRvVHlwZSk7CkBA
IC0yMjIsMTMgKzIwMiwxNCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRpb25BdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGJv
b2wgY2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRP
ZkR1cmF0aW9uU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRU
b1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLCBTVkdTTUlM
RWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlM
RWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRl
RGlzdGFuY2UoY29uc3QgU3RyaW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRv
U3RyaW5nKi8pIHsgcmV0dXJuIC0xLmY7IH0KICAgICB2aXJ0dWFsIFBhdGggYW5pbWF0aW9uUGF0
aCgpIGNvbnN0IHsgcmV0dXJuIFBhdGgoKTsgfQogCi0gICAgdm9pZCBjdXJyZW50VmFsdWVzRm9y
VmFsdWVzQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJjZW50LCBT
dHJpbmcmIGZyb20sIFN0cmluZyYgdG8sIFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pOworICAg
IHZvaWQgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJjZW50LCBmbG9h
dCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvKTsKICAgICB2b2lk
IGNhbGN1bGF0ZUtleVRpbWVzRm9yQ2FsY01vZGVQYWNlZCgpOwogICAgIGZsb2F0IGNhbGN1bGF0
ZVBlcmNlbnRGcm9tS2V5UG9pbnRzKGZsb2F0IHBlcmNlbnQpIGNvbnN0OwogICAgIHZvaWQgY3Vy
cmVudFZhbHVlc0Zyb21LZXlQb2ludHMoZmxvYXQgcGVyY2VudCwgZmxvYXQmIGVmZmVjdGl2ZVBl
cmNlbnQsIFN0cmluZyYgZnJvbSwgU3RyaW5nJiB0bykgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139970</attachid>
            <date>2012-05-03 01:12:42 -0700</date>
            <delta_ts>2012-05-03 02:04:43 -0700</delta_ts>
            <desc>Follow-up patch v3</desc>
            <filename>bug-85158-20120503101258.patch</filename>
            <type>text/plain</type>
            <size>62730</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM0NjE5MjM3NTlkNzU0
MzdiNDY4N2FkYjQzMzJmYTNkODkzYTI1Zi4uZTkzNDMzMjY3YzY5NDUxNjVmYjAwMGE2NzVjNWU4
ZmE1YzgwZDVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMi0wNS0wMyAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBBY2N1bXVs
YXRpb24gZm9yIHZhbHVlcy1hbmltYXRpb24gaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE1OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBwYXRjaDogQWRkIGNvbnN0IEZv
byYgZm9vKCkgY29uc3QgYWNjZXNzb3JzIHRvIFNWR0FuaW1hdGVkVHlwZSwKKyAgICAgICAgdG8g
YXZvaWQgdGhlICJGb28mIGZvbyA9IGFuaW1hdGVkLT5mb28oKSIgaWRpb20gaW4gYWxsIGNhc2Vz
IHdoZXJlIHdlCisgICAgICAgIGRvbid0IG5lZWQgdG8gbXV0YXRlICdmb28nLiBVc2UgImNvbnN0
IEZvbyYgZm9vID0gYW5pbWF0ZWQtPmZvbygpIiBpbnN0ZWFkLgorICAgICAgICBJbmxpbmUgYWxs
IG9mIHRoZXNlIG1ldGhvZHMgdG8gYXZvaWQgdGhlIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuCisK
KyAgICAgICAgRm9yIHRvLWFuaW1hdGlvbnMgd2UgYWN0dWFsbHkgbXV0YXRlZCB0aGUgZnJvbSB2
YWx1ZSBiZWZvcmUsIGJ1dCBpdCB3YXNuJ3QgYQorICAgICAgICBwcm9ibGVtIGluIHByYWN0aXZl
LCBhcyB3ZSBkaWQgdGhhdCBvbiBldmVyeSBhbmltYXRpb24gc3RlcC4gRnVsbHkgYXZvaWQgdGhl
c2UKKyAgICAgICAgaW5jb25zaXRlbmNpZXMgYnkgbmV2ZXIgbXV0YXRpbmcgdGhlIGZyb20vdG8g
dHlwZXMgc3RvcmVkIGluIFNWR0FuaW1hdGVFbGVtZW50LgorCisgICAgICAgIENhY2hlIHRvQXRF
bmRPZkR1cmF0aW9uVHlwZSBqdXN0IGxpa2UgbV90b1R5cGUvbV9mcm9tVHlwZSBpbiBTVkdBbmlt
YXRlRWxlbWVudCwKKyAgICAgICAgdG8gYXZvaWQgcmVjb25zdHJ1Y3RpbmcgaXQgb24gZXZlcnkg
YW5pbWF0aW9uIHN0ZXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBvbmx5IGRlc2lnbi9wZXJm
b3JtYW5jZSBmaXhlcy4KKworICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlVG9BdEVu
ZE9mRHVyYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6
dGFyZ2V0RWxlbWVudFdpbGxDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVu
dC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21B
bmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6
Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6YWRk
QW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
TGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUp
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBhdGguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0
b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjph
ZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmFuZ2xlQW5kRW51bWVyYXRpb24pOgorICAg
ICAgICAoU1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlw
ZTo6Ym9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6ZW51bWVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6aW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZFR5cGU6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6Omxlbmd0aExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
OjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXJMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyT3B0aW9uYWxOdW1i
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6cG9pbnRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6cHJlc2VydmVBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGU6OnJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRU
eXBlOjpzdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp0cmFuc2Zv
cm1MaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRB
Y3RpdmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojp1
cGRhdGVBbmltYXRpb24pOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjphZGp1c3RGcm9tVG9MaXN0VmFs
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFuaW1hdGVEaXNj
cmV0ZVR5cGUpOgorICAgICAgICAoU1ZHQW5pbWF0aW9uRWxlbWVudCk6CisKIDIwMTItMDUtMDMg
IERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBEb24ndCBhZGQgc21hbGwgb3BhcXVlIGFyZWFzIHRvIHRoZSBvY2NsdXNpb24gdHJhY2tlcidz
IFJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKaW5kZXggMTE5
ZDNiZTIxNzMyYmU1Yzk5MmIwYzcxOWUxNmI0ZGE2YTY2MzBkYy4uMWEzMjUwZTRlM2M1ZmU1YWEw
MTk3MGJmY2FkMzc0M2U5ODdhOGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEFuaW1hdGVkUHJvcGVydHlUeXBlIFNWR0FuaW1h
dGVFbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShTVkdFbGVtZW50CiAgICAg
cmV0dXJuIHR5cGU7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0
cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVt
ZW50KQordm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQqIHJlc3Vs
dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHJlc3VsdEVsZW1lbnQpOwogICAgIFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CkBAIC0xMjIsNiArMTIyLDkg
QEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXQKICAgICBpZiAoaGFzVGFnTmFtZShTVkdOYW1lczo6
c2V0VGFnKSkKICAgICAgICAgcGVyY2VudGFnZSA9IDE7CiAKKyAgICBpZiAoY2FsY01vZGUoKSA9
PSBDYWxjTW9kZURpc2NyZXRlKQorICAgICAgICBwZXJjZW50YWdlID0gcGVyY2VudGFnZSA8IDAu
NSA/IDAgOiAxOworCiAgICAgLy8gVGFyZ2V0IGVsZW1lbnQgbWlnaHQgaGF2ZSBjaGFuZ2VkLgog
ICAgIG1fYW5pbWF0b3ItPnNldENvbnRleHRFbGVtZW50KHRhcmdldEVsZW1lbnQpOwogCkBAIC0x
MzIsMTQgKzEzNSwxNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdAogICAgIGlmICghbV9hbmlt
YXRlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICBtX2FuaW1hdG9yLT5hbmltVmFsV2ls
bENoYW5nZShtX2FuaW1hdGVkUHJvcGVydGllcyk7CiAKLSAgICBpZiAodG9BdEVuZE9mRHVyYXRp
b25TdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fZnJvbVR5cGUuZ2V0KCksIG1fdG9U
eXBlLmdldCgpLCBtX3RvVHlwZS5nZXQoKSwgcmVzdWx0QW5pbWF0aW9uRWxlbWVudC0+bV9hbmlt
YXRlZFR5cGUuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8gVmFsdWVz
LWFuaW1hdGlvbiBhY2N1bXVsYXRlcyB1c2luZyB0aGUgbGFzdCB2YWx1ZXMgZW50cnkgY29ycmVz
cG9uZGluZyB0byB0aGUgZW5kIG9mIGR1cmF0aW9uIHRpbWUuCi0gICAgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gdG9BdEVuZE9mRHVyYXRpb25UeXBlID0gbV9hbmltYXRvci0+Y29uc3RydWN0RnJv
bVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZyk7Ci0gICAgbV9hbmltYXRvci0+Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgbV9mcm9tVHlwZS5nZXQo
KSwgbV90b1R5cGUuZ2V0KCksIHRvQXRFbmRPZkR1cmF0aW9uVHlwZS5nZXQoKSwgcmVzdWx0QW5p
bWF0aW9uRWxlbWVudC0+bV9hbmltYXRlZFR5cGUuZ2V0KCkpOworICAgIFNWR0FuaW1hdGVkVHlw
ZSogdG9BdEVuZE9mRHVyYXRpb25UeXBlID0gbV90b0F0RW5kT2ZEdXJhdGlvblR5cGUgPyBtX3Rv
QXRFbmRPZkR1cmF0aW9uVHlwZS5nZXQoKSA6IG1fdG9UeXBlLmdldCgpOworICAgIG1fYW5pbWF0
b3ItPmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fZnJv
bVR5cGUuZ2V0KCksIG1fdG9UeXBlLmdldCgpLCB0b0F0RW5kT2ZEdXJhdGlvblR5cGUsIHJlc3Vs
dEFuaW1hdGlvbkVsZW1lbnQtPm1fYW5pbWF0ZWRUeXBlLmdldCgpKTsKK30KKworYm9vbCBTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJp
bmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKQoreworICAgIGlmICh0b0F0RW5kT2ZEdXJhdGlv
blN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3RvQXRFbmRP
ZkR1cmF0aW9uVHlwZSA9IGVuc3VyZUFuaW1hdG9yKCktPmNvbnN0cnVjdEZyb21TdHJpbmcodG9B
dEVuZE9mRHVyYXRpb25TdHJpbmcpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNWR0Fu
aW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQpAQCAtMjg0LDYgKzI5MCw3IEBAIHZvaWQg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OnRhcmdldEVsZW1lbnRXaWxsQ2hhbmdlKFNWR0VsZW1lbnQqIGN1
cnJlbnRUYXJnZXQsIFNWR0VsCiAgICAgbV9hbmltYXRlZFR5cGUuY2xlYXIoKTsKICAgICBtX2Zy
b21UeXBlLmNsZWFyKCk7CiAgICAgbV90b1R5cGUuY2xlYXIoKTsKKyAgICBtX3RvQXRFbmRPZkR1
cmF0aW9uVHlwZS5jbGVhcigpOwogICAgIG1fYW5pbWF0b3IuY2xlYXIoKTsKICAgICBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlID0gbmV3VGFyZ2V0ID8gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUobmV3VGFyZ2V0KSA6IEFuaW1hdGVkU3RyaW5nOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnQuaAppbmRleCA2MTcxODZlZjc3OWI2NWJkZmNiYTVhMzkxNGYwOGMwZTI0Njcy
Mzg5Li4yYzE0MTA1MmJjYjYyYzY3ZGNkMWZiODUxNDRhZDAyZDNlNjVlMWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaApAQCAtNDQsOSArNDQsMTAgQEAgcHJvdGVjdGVk
OgogICAgIFNWR0FuaW1hdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0VG9CYXNlVmFsdWUoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRP
ZkR1cmF0aW9uU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFs
dWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAg
ICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nLCBTVkdTTUlMRWxlbWVudCog
cmVzdWx0RWxlbWVudCk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
ZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiBy
ZXN1bHRFbGVtZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsK
ICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCBib29sIGlzQWRkaXRp
dmUoKSBjb25zdCBPVkVSUklERTsKQEAgLTYxLDYgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+IG1fZnJvbVR5cGU7CiAgICAgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gbV90b1R5cGU7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gbV90b0F0RW5kT2ZE
dXJhdGlvblR5cGU7CiAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9hbmltYXRlZFR5cGU7
CiAKICAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgbV9hbmltYXRlZFByb3BlcnRp
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApp
bmRleCA5Y2ZmM2MxZjAwMDllMjY0ODFiMzBlMjdjMzZhZGMzMWRhNTJiMDFkLi5iNzRkMmUxNWUw
OThlYzczMmNmNTdkOTM0ODg5NzkxYzU4ZDU2YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFNWR05hbWVzOwogCiBpbmxpbmUgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKICAgICA6IFNWR0FuaW1hdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CisgICAgLCBtX2hhc1RvUG9pbnRBdEVuZE9mRHVyYXRpb24oZmFsc2UpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoYW5pbWF0ZU1vdGlvblRhZykpOwogfQpAQCAtMTczLDggKzE3NCwxNiBAQCB2
b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKCkKICAgICB0cmFu
c2Zvcm0tPm1ha2VJZGVudGl0eSgpOwogfQogCitib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9m
RHVyYXRpb25TdHJpbmcpCit7CisgICAgcGFyc2VQb2ludCh0b0F0RW5kT2ZEdXJhdGlvblN0cmlu
ZywgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uKTsKKyAgICBtX2hhc1RvUG9pbnRBdEVuZE9mRHVy
YXRpb24gPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogeworICAgIG1faGFzVG9Qb2ludEF0RW5kT2ZE
dXJhdGlvbiA9IGZhbHNlOwogICAgIHBhcnNlUG9pbnQoZnJvbVN0cmluZywgbV9mcm9tUG9pbnQp
OwogICAgIHBhcnNlUG9pbnQodG9TdHJpbmcsIG1fdG9Qb2ludCk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODIsNiArMTkxLDcgQEAgYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3Vs
YXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywKICAgICAKIGJvb2wg
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCiB7CisgICAgbV9oYXNU
b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gZmFsc2U7CiAgICAgaWYgKGFuaW1hdGlvbk1vZGUoKSA9
PSBCeUFuaW1hdGlvbiAmJiAhaXNBZGRpdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcGFyc2VQb2ludChmcm9tU3RyaW5nLCBtX2Zyb21Qb2ludCk7CkBAIC0yMTEsNyArMjIxLDcg
QEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YnVpbGRUcmFuc2Zvcm1Gb3JQcm9ncmVz
cyhBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm8KICAgICB0cmFuc2Zvcm0tPnJvdGF0ZShhbmdsZSk7
CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGNvbnN0IFN0cmluZyYg
dG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KikKK3ZvaWQgU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KikKIHsKICAgICBTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0
RWxlbWVudCkKQEAgLTIyOCw4ICsyMzgsOCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAKICAg
ICBpZiAoYW5pbWF0aW9uTW9kZSgpICE9IFBhdGhBbmltYXRpb24pIHsKICAgICAgICAgRmxvYXRQ
b2ludCB0b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gbV90b1BvaW50OwotICAgICAgICBpZiAoaXNB
Y2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50ICYmICF0b0F0RW5kT2ZEdXJhdGlvblN0cmluZy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBwYXJzZVBvaW50KHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5n
LCB0b1BvaW50QXRFbmRPZkR1cmF0aW9uKTsKKyAgICAgICAgaWYgKGlzQWNjdW11bGF0ZWQoKSAm
JiByZXBlYXRDb3VudCAmJiBtX2hhc1RvUG9pbnRBdEVuZE9mRHVyYXRpb24pCisgICAgICAgICAg
ICB0b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uOwogCiAg
ICAgICAgIGZsb2F0IGFuaW1hdGVkWCA9IDA7CiAgICAgICAgIGFuaW1hdGVBZGRpdGl2ZU51bWJl
cihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgbV9mcm9tUG9pbnQueCgpLCBtX3RvUG9pbnQueCgp
LCB0b1BvaW50QXRFbmRPZkR1cmF0aW9uLngoKSwgYW5pbWF0ZWRYKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKaW5kZXggNzFlNGRlMWUyZGYzYTI3Yjkz
NzdiMzU1NTVlNzgyZTY3MTZkNzMyNi4uZTU3ZThiNzFhNDc2YzdmYjM4YzBhMGE1YTU2MDVjZDJm
M2I4YjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmgKQEAgLTQwLDkgKzQwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0VG9C
YXNlVmFsdWUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25W
YWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKTsKICAgICB2aXJ0dWFs
IGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21B
bmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJp
bmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nLCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCk7CisgICAgdmlydHVhbCB2
b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KTsKICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7
CiAgICAgdmlydHVhbCBQYXRoIGFuaW1hdGlvblBhdGgoKSBjb25zdDsKQEAgLTU1LDkgKzU2LDEy
IEBAIHByaXZhdGU6CiAgICAgUm90YXRlTW9kZSByb3RhdGVNb2RlKCkgY29uc3Q7CiAgICAgdm9p
ZCBidWlsZFRyYW5zZm9ybUZvclByb2dyZXNzKEFmZmluZVRyYW5zZm9ybSosIGZsb2F0IHBlcmNl
bnRhZ2UpOwogCisgICAgYm9vbCBtX2hhc1RvUG9pbnRBdEVuZE9mRHVyYXRpb247CisKICAgICAv
LyBOb3RlOiB3ZSBkbyBub3Qgc3VwcG9ydCBwZXJjZW50YWdlIHZhbHVlcyBmb3IgdG8vZnJvbSBj
b29yZHMgYXMgdGhlIHNwZWMgaW1wbGllcyB3ZSBzaG91bGQgKG9wZXJhIGRvZXNuJ3QgZWl0aGVy
KQogICAgIEZsb2F0UG9pbnQgbV9mcm9tUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBtX3RvUG9pbnQ7
CisgICAgRmxvYXRQb2ludCBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb247CiAKICAgICBQYXRoIG1f
cGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmds
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKaW5kZXggMDkx
YzNjNTlmYTE5Y2MzZjI4NmVjNTNkM2NkYTkzMTM3MWJiNTVkZS4uY2NkYzk5OTAwNWFlMTJjMjFl
ODNlZTNiMmE2MTEzNTJjZGExMjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkQW5nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFu
Z2xlLmNwcApAQCAtODQsMTIgKzg0LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
OjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0CiAgICAg
QVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZEFuZ2xlKTsKICAgICBBU1NFUlQoZnJvbS0+
dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBm
cm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGZyb20tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKyAg
ICBjb25zdCBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9u
ID0gZnJvbS0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOwogICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2ln
bmVkPiYgdG9BbmdsZUFuZEVudW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsK
ICAgICAvLyBPbmx5IHJlc3BlY3QgYnkgYW5pbWF0aW9ucywgaWYgZnJvbSBhbmQgYnkgYXJlIGJv
dGggc3BlY2lmaWVkIGluIGFuZ2xlcyAoYW5kIG5vdCBlZy4gJ2F1dG8nKS4KICAgICBpZiAoZnJv
bUFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kICE9IHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNv
bmQgfHwgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kICE9IFNWR01hcmtlck9yaWVudEFu
Z2xlKQogICAgICAgICByZXR1cm47Ci0gICAgU1ZHQW5nbGUmIGZyb21BbmdsZSA9IGZyb21Bbmds
ZUFuZEVudW1lcmF0aW9uLmZpcnN0OworICAgIGNvbnN0IFNWR0FuZ2xlJiBmcm9tQW5nbGUgPSBm
cm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKICAgICBTVkdBbmdsZSYgdG9BbmdsZSA9IHRv
QW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKICAgICB0b0FuZ2xlLnNldFZhbHVlKHRvQW5nbGUu
dmFsdWUoKSArIGZyb21BbmdsZS52YWx1ZSgpKTsKIH0KQEAgLTk4LDEyICs5OCwxMSBAQCB2b2lk
IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZAogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwog
ICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAgICAKLSAgICBwYWlyPFNWR0FuZ2xlLCB1
bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVBbmRFbnVtZXJh
dGlvbigpOwotICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BbmdsZUFuZEVudW1lcmF0
aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKLSAgICBwYWlyPFNWR0FuZ2xlLCB1bnNp
Z25lZD4mIHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRFbmRPZkR1
cmF0aW9uLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisKKyAgICBjb25zdCBwYWlyPFNWR0FuZ2xl
LCB1bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gbV9hbmltYXRpb25FbGVtZW50
LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+YW5nbGVBbmRFbnVt
ZXJhdGlvbigpIDogZnJvbS0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIGNvbnN0IHBhaXI8
U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BbmdsZUFuZEVudW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5k
RW51bWVyYXRpb24oKTsKKyAgICBjb25zdCBwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIHRvQXRF
bmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hbmds
ZUFuZEVudW1lcmF0aW9uKCk7CiAgICAgcGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBhbmltYXRl
ZEFuZ2xlQW5kRW51bWVyYXRpb24gPSBhbmltYXRlZC0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOwot
ICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVzPHBhaXI8U1ZHQW5nbGUs
IHVuc2lnbmVkPiA+KDAsIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLCB0b0FuZ2xlQW5kRW51bWVy
YXRpb24sIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbiwgcGVyY2VudGFnZSwgbV9jb250ZXh0
RWxlbWVudCk7CiAKICAgICBpZiAoZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kICE9IHRv
QW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQpIHsKICAgICAgICAgLy8gQW5pbWF0aW5nIGZyb20g
ZWcuIGF1dG8gdG8gOTBkZWcsIG9yIGF1dG8gdG8gOTBkZWcuCkBAIC0xNDMsNyArMTQyLDcgQEAg
dm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24u
c2Vjb25kID0gU1ZHTWFya2VyT3JpZW50QW5nbGU7CiAKICAgICBTVkdBbmdsZSYgYW5pbWF0ZWRT
VkdBbmdsZSA9IGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKLSAgICBTVkdBbmds
ZSYgdG9BdEVuZE9mRHVyYXRpb25TVkdBbmdsZSA9IHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRF
bnVtZXJhdGlvbi5maXJzdDsKKyAgICBjb25zdCBTVkdBbmdsZSYgdG9BdEVuZE9mRHVyYXRpb25T
VkdBbmdsZSA9IHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKICAg
ICBmbG9hdCBhbmltYXRlZEFuZ2xlID0gYW5pbWF0ZWRTVkdBbmdsZS52YWx1ZSgpOwogICAgIG1f
YW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVh
dENvdW50LCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdC52YWx1ZSgpLCB0b0FuZ2xlQW5k
RW51bWVyYXRpb24uZmlyc3QudmFsdWUoKSwgdG9BdEVuZE9mRHVyYXRpb25TVkdBbmdsZS52YWx1
ZSgpLCBhbmltYXRlZEFuZ2xlKTsKICAgICBhbmltYXRlZFNWR0FuZ2xlLnNldFZhbHVlKGFuaW1h
dGVkQW5nbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9v
bGVhbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAppbmRl
eCAwNzIzNjZiMWJkNGNmNWRjOTNiNmRmMzZlY2Q5YzU4OGMxODEwODlkLi5mOTg1OGJlNWIxZTI4
MDEwMzQ1MjgwMTU2YTg0YWNjZTg4NjY1MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRCb29sZWFuLmNwcApAQCAtNzksMTAgKzc5LDkgQEAgdm9pZCBTVkdBbmltYXRlZEJvb2xl
YW5BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z24KICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0
RWxlbWVudCk7CiAKLSAgICBib29sJiBmcm9tQm9vbGVhbiA9IGZyb20tPmJvb2xlYW4oKTsKLSAg
ICBib29sJiB0b0Jvb2xlYW4gPSB0by0+Ym9vbGVhbigpOworICAgIGJvb2wgZnJvbUJvb2xlYW4g
PSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFu
aW1hdGVkLT5ib29sZWFuKCkgOiBmcm9tLT5ib29sZWFuKCk7CisgICAgYm9vbCB0b0Jvb2xlYW4g
PSB0by0+Ym9vbGVhbigpOwogICAgIGJvb2wmIGFuaW1hdGVkQm9vbGVhbiA9IGFuaW1hdGVkLT5i
b29sZWFuKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8Ym9v
bD4oMCwgZnJvbUJvb2xlYW4sIHRvQm9vbGVhbiwgYW5pbWF0ZWRCb29sZWFuLCBwZXJjZW50YWdl
LCBtX2NvbnRleHRFbGVtZW50KTsKIAogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZURp
c2NyZXRlVHlwZTxib29sPihwZXJjZW50YWdlLCBmcm9tQm9vbGVhbiwgdG9Cb29sZWFuLCBhbmlt
YXRlZEJvb2xlYW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCmlu
ZGV4IDdlN2NkMTI2OWJiNjg5OTkzMjNjM2JiYTI4MDVmODMwZTQ1NWZhNmEuLjgzMmMyYTI4ZThk
ODc0MWEzMmNkYjczZWRjNjI0OGFkOGIxN2NlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRDb2xvci5jcHAKQEAgLTY4LDExICs2OCwxNCBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZAogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRF
bGVtZW50KTsKIAotICAgIENvbG9yJiBmcm9tQ29sb3IgPSBmcm9tLT5jb2xvcigpOwotICAgIENv
bG9yJiB0b0NvbG9yID0gdG8tPmNvbG9yKCk7Ci0gICAgQ29sb3ImIHRvQXRFbmRPZkR1cmF0aW9u
Q29sb3IgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+Y29sb3IoKTsKKyAgICBDb2xvciBmcm9tQ29sb3Ig
PSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFu
aW1hdGVkLT5jb2xvcigpIDogZnJvbS0+Y29sb3IoKTsKKyAgICBDb2xvciB0b0NvbG9yID0gdG8t
PmNvbG9yKCk7CisgICAgY29uc3QgQ29sb3ImIHRvQXRFbmRPZkR1cmF0aW9uQ29sb3IgPSB0b0F0
RW5kT2ZEdXJhdGlvbi0+Y29sb3IoKTsKICAgICBDb2xvciYgYW5pbWF0ZWRDb2xvciA9IGFuaW1h
dGVkLT5jb2xvcigpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVz
PENvbG9yPihwYXJzZUNvbG9yRnJvbVN0cmluZywgZnJvbUNvbG9yLCB0b0NvbG9yLCBhbmltYXRl
ZENvbG9yLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKKworICAgIC8vIEFwcGx5IENT
UyBpbmhlcml0YW5jZSBydWxlcy4KKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvcklu
aGVyaXRhbmNlPENvbG9yPihwYXJzZUNvbG9yRnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50
LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJvbUNvbG9yLCBtX2NvbnRleHRFbGVtZW50KTsK
KyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPENvbG9yPihwYXJz
ZUNvbG9yRnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBl
KCksIHRvQ29sb3IsIG1fY29udGV4dEVsZW1lbnQpOwogCiAgICAgLy8gQXBwbHkgPGFuaW1hdGVD
b2xvcj4gcnVsZXMuCiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFs
dWVUeXBlKCkgPT0gQ3VycmVudENvbG9yVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAKaW5kZXggYzViNmQzZjdlMDAzZDdkNGY5YjA3ZjRhMGJm
M2I2OWM4NzdjZDc1ZC4uMmVjN2UzZjA2Y2QxYzFmMWU2M2NlMzZhNjZhMTg4YjNhZDFiZmNiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcApAQCAt
MTUwLDEwICsxNTAsOSBAQCB2b2lkIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bgogICAgIEFTU0VSVChtX2Fu
aW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIHVu
c2lnbmVkJiBmcm9tRW51bWVyYXRpb24gPSBmcm9tLT5lbnVtZXJhdGlvbigpOwotICAgIHVuc2ln
bmVkJiB0b0VudW1lcmF0aW9uID0gdG8tPmVudW1lcmF0aW9uKCk7CisgICAgdW5zaWduZWQgZnJv
bUVudW1lcmF0aW9uID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9B
bmltYXRpb24gPyBhbmltYXRlZC0+ZW51bWVyYXRpb24oKSA6IGZyb20tPmVudW1lcmF0aW9uKCk7
CisgICAgdW5zaWduZWQgdG9FbnVtZXJhdGlvbiA9IHRvLT5lbnVtZXJhdGlvbigpOwogICAgIHVu
c2lnbmVkJiBhbmltYXRlZEVudW1lcmF0aW9uID0gYW5pbWF0ZWQtPmVudW1lcmF0aW9uKCk7Ci0g
ICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8dW5zaWduZWQ+KDAsIGZy
b21FbnVtZXJhdGlvbiwgdG9FbnVtZXJhdGlvbiwgYW5pbWF0ZWRFbnVtZXJhdGlvbiwgcGVyY2Vu
dGFnZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1h
dGVEaXNjcmV0ZVR5cGU8dW5zaWduZWQ+KHBlcmNlbnRhZ2UsIGZyb21FbnVtZXJhdGlvbiwgdG9F
bnVtZXJhdGlvbiwgYW5pbWF0ZWRFbnVtZXJhdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEludGVnZXIuY3BwCmluZGV4IGNkMzZiNjdkYzQ5NGQ1Yzg4ZDE0NjIyNmQ0MjY2
NjVlNDdlMzY3MzkuLjg5MDY3MzE5MGE0M2EyNTlmYTg2Yzk4NmVjOTk2MmU4NWM2OTAyYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwCkBAIC04NSwxMSArODUs
MTAgQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ24KICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVt
ZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBpbnQmIGZyb21JbnRl
Z2VyID0gZnJvbS0+aW50ZWdlcigpOwotICAgIGludCYgdG9JbnRlZ2VyID0gdG8tPmludGVnZXIo
KTsKLSAgICBpbnQmIHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlciA9IHRvQXRFbmRPZkR1cmF0aW9u
LT5pbnRlZ2VyKCk7CisgICAgaW50IGZyb21JbnRlZ2VyID0gbV9hbmltYXRpb25FbGVtZW50LT5h
bmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+aW50ZWdlcigpIDogZnJv
bS0+aW50ZWdlcigpOworICAgIGludCB0b0ludGVnZXIgPSB0by0+aW50ZWdlcigpOworICAgIGlu
dCB0b0F0RW5kT2ZEdXJhdGlvbkludGVnZXIgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+aW50ZWdlcigp
OwogICAgIGludCYgYW5pbWF0ZWRJbnRlZ2VyID0gYW5pbWF0ZWQtPmludGVnZXIoKTsKLSAgICBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxpbnQ+KDAsIGZyb21JbnRlZ2Vy
LCB0b0ludGVnZXIsIGFuaW1hdGVkSW50ZWdlciwgcGVyY2VudGFnZSwgbV9jb250ZXh0RWxlbWVu
dCk7CiAKICAgICBjYWxjdWxhdGVBbmltYXRlZEludGVnZXIobV9hbmltYXRpb25FbGVtZW50LCBw
ZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUludGVnZXIsIHRvSW50ZWdlciwgdG9BdEVuZE9m
RHVyYXRpb25JbnRlZ2VyLCBhbmltYXRlZEludGVnZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAppbmRl
eCBlMTNiMWNmNjM5MmIyZThhY2JkM2E3YThmNmY1MmI3Yzc2MTY4NjViLi5hZjM3ZGIyMjYxMzgx
YThiMDg5NjIwYTJmNzZiZmM3NDRiYWRmZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjph
ZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZQogICAgIEFTU0VSVChmcm9tLT50eXBlKCkg
PT0gQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKTsKICAgICBBU1NFUlQoZnJvbS0+dHlw
ZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgcGFpcjxpbnQsIGludD4mIGZyb21JbnRlZ2VyUGFp
ciA9IGZyb20tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBjb25zdCBwYWlyPGludCwg
aW50PiYgZnJvbUludGVnZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwog
ICAgIHBhaXI8aW50LCBpbnQ+JiB0b0ludGVnZXJQYWlyID0gdG8tPmludGVnZXJPcHRpb25hbElu
dGVnZXIoKTsKIAogICAgIHRvSW50ZWdlclBhaXIuZmlyc3QgKz0gZnJvbUludGVnZXJQYWlyLmZp
cnN0OwpAQCAtOTEsMTEgKzkxLDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyCiAgICAgQVNT
RVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwog
Ci0gICAgcGFpcjxpbnQsIGludD4mIGZyb21JbnRlZ2VyUGFpciA9IGZyb20tPmludGVnZXJPcHRp
b25hbEludGVnZXIoKTsKLSAgICBwYWlyPGludCwgaW50PiYgdG9JbnRlZ2VyUGFpciA9IHRvLT5p
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7Ci0gICAgcGFpcjxpbnQsIGludD4mIHRvQXRFbmRPZkR1
cmF0aW9uSW50ZWdlclBhaXIgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+aW50ZWdlck9wdGlvbmFsSW50
ZWdlcigpOworICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiBmcm9tSW50ZWdlclBhaXIgPSBtX2Fu
aW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVk
LT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCkgOiBmcm9tLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
KCk7CisgICAgY29uc3QgcGFpcjxpbnQsIGludD4mIHRvSW50ZWdlclBhaXIgPSB0by0+aW50ZWdl
ck9wdGlvbmFsSW50ZWdlcigpOworICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiB0b0F0RW5kT2ZE
dXJhdGlvbkludGVnZXJQYWlyID0gdG9BdEVuZE9mRHVyYXRpb24tPmludGVnZXJPcHRpb25hbElu
dGVnZXIoKTsKICAgICBwYWlyPGludCwgaW50PiYgYW5pbWF0ZWRJbnRlZ2VyUGFpciA9IGFuaW1h
dGVkLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5h
ZGp1c3RGcm9tVG9WYWx1ZXM8cGFpcjxpbnQsIGludD4gPigwLCBmcm9tSW50ZWdlclBhaXIsIHRv
SW50ZWdlclBhaXIsIGFuaW1hdGVkSW50ZWdlclBhaXIsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVs
ZW1lbnQpOwogCiAgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkSW50ZWdlcihtX2FuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBm
cm9tSW50ZWdlclBhaXIuZmlyc3QsIHRvSW50ZWdlclBhaXIuZmlyc3QsIHRvQXRFbmRPZkR1cmF0
aW9uSW50ZWdlclBhaXIuZmlyc3QsIGFuaW1hdGVkSW50ZWdlclBhaXIuZmlyc3QpOwogICAgIFNW
R0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZEludGVnZXIobV9hbmlt
YXRpb25FbGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUludGVnZXJQYWlyLnNl
Y29uZCwgdG9JbnRlZ2VyUGFpci5zZWNvbmQsIHRvQXRFbmRPZkR1cmF0aW9uSW50ZWdlclBhaXIu
c2Vjb25kLCBhbmltYXRlZEludGVnZXJQYWlyLnNlY29uZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoLmNwcAppbmRleCBjYTZiYWU4M2RhODdjZjdmOTBmMWJhYzc5YThjMDg0
ZDRmOTU2ZjcwLi43YzI2ZWJkMzVlMzM3NzM2ZThhNjk0MmNjN2NiNzg3YWYxYTk0Zjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1h
dGVkVHlwZSogZnJvbSwgU1ZHQW5pbWEKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50
eXBlKCkpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVs
ZW1lbnQpOwotICAgIFNWR0xlbmd0aCYgZnJvbUxlbmd0aCA9IGZyb20tPmxlbmd0aCgpOworICAg
IGNvbnN0IFNWR0xlbmd0aCYgZnJvbUxlbmd0aCA9IGZyb20tPmxlbmd0aCgpOwogICAgIFNWR0xl
bmd0aCYgdG9MZW5ndGggPSB0by0+bGVuZ3RoKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKQEAgLTk2LDExICs5NiwxNCBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZQogICAgIEFTU0VS
VChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAot
ICAgIFNWR0xlbmd0aCYgZnJvbVNWR0xlbmd0aCA9IGZyb20tPmxlbmd0aCgpOwotICAgIFNWR0xl
bmd0aCYgdG9TVkdMZW5ndGggPSB0by0+bGVuZ3RoKCk7Ci0gICAgU1ZHTGVuZ3RoJiB0b0F0RW5k
T2ZEdXJhdGlvblNWR0xlbmd0aCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5sZW5ndGgoKTsKKyAgICBT
VkdMZW5ndGggZnJvbVNWR0xlbmd0aCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9k
ZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmxlbmd0aCgpIDogZnJvbS0+bGVuZ3RoKCk7
CisgICAgU1ZHTGVuZ3RoIHRvU1ZHTGVuZ3RoID0gdG8tPmxlbmd0aCgpOworICAgIGNvbnN0IFNW
R0xlbmd0aCYgdG9BdEVuZE9mRHVyYXRpb25TVkdMZW5ndGggPSB0b0F0RW5kT2ZEdXJhdGlvbi0+
bGVuZ3RoKCk7CiAgICAgU1ZHTGVuZ3RoJiBhbmltYXRlZFNWR0xlbmd0aCA9IGFuaW1hdGVkLT5s
ZW5ndGgoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVlczxTVkdM
ZW5ndGg+KHBhcnNlTGVuZ3RoRnJvbVN0cmluZywgZnJvbVNWR0xlbmd0aCwgdG9TVkdMZW5ndGgs
IGFuaW1hdGVkU1ZHTGVuZ3RoLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsKKworICAg
IC8vIEFwcGx5IENTUyBpbmhlcml0YW5jZSBydWxlcy4KKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFkanVzdEZvckluaGVyaXRhbmNlPFNWR0xlbmd0aD4ocGFyc2VMZW5ndGhGcm9tU3RyaW5nLCBt
X2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tU1ZHTGVuZ3Ro
LCBtX2NvbnRleHRFbGVtZW50KTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvcklu
aGVyaXRhbmNlPFNWR0xlbmd0aD4ocGFyc2VMZW5ndGhGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVs
ZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9TVkdMZW5ndGgsIG1fY29udGV4dEVsZW1l
bnQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1l
bnQpOwogICAgIGZsb2F0IGFuaW1hdGVkTnVtYmVyID0gYW5pbWF0ZWRTVkdMZW5ndGgudmFsdWUo
bGVuZ3RoQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuY3BwCmluZGV4IGRhOTZhY2UzMGNiZWRiZDNlOGZkM2U2Zjk0ZDE0NjA4ZGYzZDM3OTQuLjk2
NTE5MWE4OTU3YjBkOTNlOTg2M2E2ODRjODc2NjBlZGVkMjU3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0
ZWRUeXBlKiBmcm9tLCBTVkdBCiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZExl
bmd0aExpc3QpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAg
ICBTVkdMZW5ndGhMaXN0JiBmcm9tTGVuZ3RoTGlzdCA9IGZyb20tPmxlbmd0aExpc3QoKTsKKyAg
ICBjb25zdCBTVkdMZW5ndGhMaXN0JiBmcm9tTGVuZ3RoTGlzdCA9IGZyb20tPmxlbmd0aExpc3Qo
KTsKICAgICBTVkdMZW5ndGhMaXN0JiB0b0xlbmd0aExpc3QgPSB0by0+bGVuZ3RoTGlzdCgpOwog
CiAgICAgdW5zaWduZWQgZnJvbUxlbmd0aExpc3RTaXplID0gZnJvbUxlbmd0aExpc3Quc2l6ZSgp
OwpAQCAtOTcsMTEgKzk3LDE2IEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zCiAgICAgQVNTRVJU
KG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0g
ICAgU1ZHTGVuZ3RoTGlzdCYgZnJvbUxlbmd0aExpc3QgPSBmcm9tLT5sZW5ndGhMaXN0KCk7Ci0g
ICAgU1ZHTGVuZ3RoTGlzdCYgdG9MZW5ndGhMaXN0ID0gdG8tPmxlbmd0aExpc3QoKTsKLSAgICBT
VkdMZW5ndGhMaXN0JiB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3QgPSB0b0F0RW5kT2ZEdXJh
dGlvbi0+bGVuZ3RoTGlzdCgpOworICAgIFNWR0xlbmd0aExpc3QgZnJvbUxlbmd0aExpc3QgPSBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1h
dGVkLT5sZW5ndGhMaXN0KCkgOiBmcm9tLT5sZW5ndGhMaXN0KCk7CisgICAgU1ZHTGVuZ3RoTGlz
dCB0b0xlbmd0aExpc3QgPSB0by0+bGVuZ3RoTGlzdCgpOworICAgIGNvbnN0IFNWR0xlbmd0aExp
c3QmIHRvQXRFbmRPZkR1cmF0aW9uTGVuZ3RoTGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5sZW5n
dGhMaXN0KCk7CiAgICAgU1ZHTGVuZ3RoTGlzdCYgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gYW5pbWF0
ZWQtPmxlbmd0aExpc3QoKTsKLSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJv
bVRvTGlzdFZhbHVlczxTVkdMZW5ndGhMaXN0PihwYXJzZUxlbmd0aExpc3RGcm9tU3RyaW5nLCBm
cm9tTGVuZ3RoTGlzdCwgdG9MZW5ndGhMaXN0LCBhbmltYXRlZExlbmd0aExpc3QsIHBlcmNlbnRh
Z2UsIG1fY29udGV4dEVsZW1lbnQpKQorCisgICAgLy8gQXBwbHkgQ1NTIGluaGVyaXRhbmNlIHJ1
bGVzLgorICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVu
Z3RoTGlzdD4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT5m
cm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJvbUxlbmd0aExpc3QsIG1fY29udGV4dEVsZW1lbnQp
OworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVuZ3Ro
TGlzdD4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT50b1By
b3BlcnR5VmFsdWVUeXBlKCksIHRvTGVuZ3RoTGlzdCwgbV9jb250ZXh0RWxlbWVudCk7CisKKyAg
ICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdMZW5n
dGhMaXN0Pihmcm9tTGVuZ3RoTGlzdCwgdG9MZW5ndGhMaXN0LCBhbmltYXRlZExlbmd0aExpc3Qs
IHBlcmNlbnRhZ2UpKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBmcm9tTGVuZ3Ro
TGlzdFNpemUgPSBmcm9tTGVuZ3RoTGlzdC5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyLmNwcAppbmRleCBjNzc1YTQ0Y2VmZTI5MjkyY2JkMGE5OGUyMjM3OGI1MWY4
YTg0NTg0Li5iNzEzYmExN2JhZTc4NzFkYTY0NWU1NzE2ZDM3OWY3MjllODdmZDZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKQEAgLTg4LDExICs4OCwxNCBAQCB2
b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZQogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwog
ICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIGZsb2F0JiBmcm9tTnVtYmVyID0g
ZnJvbS0+bnVtYmVyKCk7Ci0gICAgZmxvYXQmIHRvTnVtYmVyID0gdG8tPm51bWJlcigpOwotICAg
IGZsb2F0JiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5udW1i
ZXIoKTsKKyAgICBmbG9hdCBmcm9tTnVtYmVyID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRp
b25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+bnVtYmVyKCkgOiBmcm9tLT5udW1i
ZXIoKTsKKyAgICBmbG9hdCB0b051bWJlciA9IHRvLT5udW1iZXIoKTsKKyAgICBmbG9hdCB0b0F0
RW5kT2ZEdXJhdGlvbk51bWJlciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5udW1iZXIoKTsKICAgICBm
bG9hdCYgYW5pbWF0ZWROdW1iZXIgPSBhbmltYXRlZC0+bnVtYmVyKCk7Ci0gICAgbV9hbmltYXRp
b25FbGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8ZmxvYXQ+KHBhcnNlTnVtYmVyRnJvbVN0cmlu
ZywgZnJvbU51bWJlciwgdG9OdW1iZXIsIGFuaW1hdGVkTnVtYmVyLCBwZXJjZW50YWdlLCBtX2Nv
bnRleHRFbGVtZW50KTsKKworICAgIC8vIEFwcGx5IENTUyBpbmhlcml0YW5jZSBydWxlcy4KKyAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPGZsb2F0PihwYXJzZU51
bWJlckZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBl
KCksIGZyb21OdW1iZXIsIG1fY29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVu
dC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8ZmxvYXQ+KHBhcnNlTnVtYmVyRnJvbVN0cmluZywgbV9h
bmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRvTnVtYmVyLCBtX2NvbnRl
eHRFbGVtZW50KTsKIAogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVt
YmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tTnVtYmVyLCB0b051bWJlciwgdG9BdEVu
ZE9mRHVyYXRpb25OdW1iZXIsIGFuaW1hdGVkTnVtYmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKaW5kZXggMmYzZTNhYzYzZWNkNGM2OGM4ZDE5
NjE0NTU5MTJlOGEyMWY1NmUzNi4uYTJkNjAxODFhNDcwZmYyZDJjYThlZDk3YWRlM2Q5ZjE3ZTEx
MjI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6YWRk
QW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0EKICAgICBBU1NFUlQoZnJv
bS0+dHlwZSgpID09IEFuaW1hdGVkTnVtYmVyTGlzdCk7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUo
KSA9PSB0by0+dHlwZSgpKTsKIAotICAgIFNWR051bWJlckxpc3QmIGZyb21OdW1iZXJMaXN0ID0g
ZnJvbS0+bnVtYmVyTGlzdCgpOworICAgIGNvbnN0IFNWR051bWJlckxpc3QmIGZyb21OdW1iZXJM
aXN0ID0gZnJvbS0+bnVtYmVyTGlzdCgpOwogICAgIFNWR051bWJlckxpc3QmIHRvTnVtYmVyTGlz
dCA9IHRvLT5udW1iZXJMaXN0KCk7CiAKICAgICB1bnNpZ25lZCBmcm9tTnVtYmVyTGlzdFNpemUg
PSBmcm9tTnVtYmVyTGlzdC5zaXplKCk7CkBAIC04MywxMyArODMsMTIgQEAgdm9pZCBTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUq
IGZyb20sIFNWR0EKIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNW
R0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBl
KiB0b0F0RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKIHsKICAgICBB
U1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7
CiAKLSAgICBTVkdOdW1iZXJMaXN0JiBmcm9tTnVtYmVyTGlzdCA9IGZyb20tPm51bWJlckxpc3Qo
KTsKLSAgICBTVkdOdW1iZXJMaXN0JiB0b051bWJlckxpc3QgPSB0by0+bnVtYmVyTGlzdCgpOwot
ICAgIFNWR051bWJlckxpc3QmIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyTGlzdCA9IHRvQXRFbmRP
ZkR1cmF0aW9uLT5udW1iZXJMaXN0KCk7CisgICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYgZnJvbU51
bWJlckxpc3QgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1h
dGlvbiA/IGFuaW1hdGVkLT5udW1iZXJMaXN0KCkgOiBmcm9tLT5udW1iZXJMaXN0KCk7CisgICAg
Y29uc3QgU1ZHTnVtYmVyTGlzdCYgdG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxpc3QoKTsKKyAg
ICBjb25zdCBTVkdOdW1iZXJMaXN0JiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlckxpc3QgPSB0b0F0
RW5kT2ZEdXJhdGlvbi0+bnVtYmVyTGlzdCgpOwogICAgIFNWR051bWJlckxpc3QmIGFuaW1hdGVk
TnVtYmVyTGlzdCA9IGFuaW1hdGVkLT5udW1iZXJMaXN0KCk7Ci0gICAgaWYgKCFtX2FuaW1hdGlv
bkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTnVtYmVyTGlzdD4oMCwgZnJvbU51
bWJlckxpc3QsIHRvTnVtYmVyTGlzdCwgYW5pbWF0ZWROdW1iZXJMaXN0LCBwZXJjZW50YWdlLCBt
X2NvbnRleHRFbGVtZW50KSkKKyAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJv
bVRvTGlzdFZhbHVlczxTVkdOdW1iZXJMaXN0Pihmcm9tTnVtYmVyTGlzdCwgdG9OdW1iZXJMaXN0
LCBhbmltYXRlZE51bWJlckxpc3QsIHBlcmNlbnRhZ2UpKQogICAgICAgICByZXR1cm47CiAKICAg
ICB1bnNpZ25lZCBmcm9tTnVtYmVyTGlzdFNpemUgPSBmcm9tTnVtYmVyTGlzdC5zaXplKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlci5jcHAKaW5kZXggZjM0ZDc2M2E4ODM5ZGNjY2I3YjJkNzYxOWNmNTBhNDVmMGEyMGE4OS4u
NzgyYmUzNDMxYTUyNjExMThhNTQ4ODEzNWQyNDZjOWY1MjI5YjE2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcApA
QCAtNzYsNyArNzYsNyBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmlt
YXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqCiAgICAgQVNTRVJUKGZyb20t
PnR5cGUoKSA9PSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKICAgICBBU1NFUlQoZnJv
bS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiBmcm9t
TnVtYmVyUGFpciA9IGZyb20tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgY29uc3QgcGFp
cjxmbG9hdCwgZmxvYXQ+JiBmcm9tTnVtYmVyUGFpciA9IGZyb20tPm51bWJlck9wdGlvbmFsTnVt
YmVyKCk7CiAgICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiB0b051bWJlclBhaXIgPSB0by0+bnVtYmVy
T3B0aW9uYWxOdW1iZXIoKTsKIAogICAgIHRvTnVtYmVyUGFpci5maXJzdCArPSBmcm9tTnVtYmVy
UGFpci5maXJzdDsKQEAgLTg4LDExICs4OCwxMCBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZQog
ICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKIAotICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiYgZnJvbU51bWJlclBhaXIgPSBmcm9tLT5u
dW1iZXJPcHRpb25hbE51bWJlcigpOwotICAgIHBhaXI8ZmxvYXQsIGZsb2F0PiYgdG9OdW1iZXJQ
YWlyID0gdG8tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7Ci0gICAgcGFpcjxmbG9hdCwgZmxvYXQ+
JiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlclBhaXIgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+bnVtYmVy
T3B0aW9uYWxOdW1iZXIoKTsKKyAgICBjb25zdCBwYWlyPGZsb2F0LCBmbG9hdD4mIGZyb21OdW1i
ZXJQYWlyID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRp
b24gPyBhbmltYXRlZC0+bnVtYmVyT3B0aW9uYWxOdW1iZXIoKSA6ICBmcm9tLT5udW1iZXJPcHRp
b25hbE51bWJlcigpOworICAgIGNvbnN0IHBhaXI8ZmxvYXQsIGZsb2F0PiYgdG9OdW1iZXJQYWly
ID0gdG8tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisgICAgY29uc3QgcGFpcjxmbG9hdCwgZmxv
YXQ+JiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlclBhaXIgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+bnVt
YmVyT3B0aW9uYWxOdW1iZXIoKTsKICAgICBwYWlyPGZsb2F0LCBmbG9hdD4mIGFuaW1hdGVkTnVt
YmVyUGFpciA9IGFuaW1hdGVkLT5udW1iZXJPcHRpb25hbE51bWJlcigpOwotICAgIG1fYW5pbWF0
aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvVmFsdWVzPHBhaXI8ZmxvYXQsIGZsb2F0PiA+KDAsIGZy
b21OdW1iZXJQYWlyLCB0b051bWJlclBhaXIsIGFuaW1hdGVkTnVtYmVyUGFpciwgcGVyY2VudGFn
ZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVB
ZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbU51bWJlclBhaXIuZmly
c3QsIHRvTnVtYmVyUGFpci5maXJzdCwgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJQYWlyLmZpcnN0
LCBhbmltYXRlZE51bWJlclBhaXIuZmlyc3QpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tTnVtYmVyUGFp
ci5zZWNvbmQsIHRvTnVtYmVyUGFpci5zZWNvbmQsIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyUGFp
ci5zZWNvbmQsIGFuaW1hdGVkTnVtYmVyUGFpci5zZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQYXRoLmNwcAppbmRleCAxYzE4NjVhZmI3ZjUwMTIzZDllYzU2MmQxODU0MjhlOTU2
MWEzNTRhLi4wMjliMTZhMWYwNzU2NjE3MDBjYWUwNDY4YWI1ZjcyYWY1OTQyZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcApAQCAtMTEyLDE1ICsxMTIsMjIgQEAgdm9p
ZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIFNWR1BhdGhCeXRlU3RyZWFtKiB0b0F0RW5kT2ZEdXJh
dGlvblBhdGggPSB0b0F0RW5kT2ZEdXJhdGlvbi0+cGF0aCgpOwogICAgIFNWR1BhdGhCeXRlU3Ry
ZWFtKiBhbmltYXRlZFBhdGggPSBhbmltYXRlZC0+cGF0aCgpOwogCi0gICAgLy8gUGFzcyBmYWxz
ZSB0byAncmVzaXplQW5pbWF0ZWRMaXN0SWZOZWVkZWQnIGhlcmUsIGFzIHRoZSBwYXRoIGFuaW1h
dGlvbiBpcyBub3QgYSByZWd1bGFyIFZlY3RvcjxTVkdYWFg+IHR5cGUsIGJ1dCBhIFNWR1BhdGhC
eXRlU3RyZWFtLCB0aGF0IHdvcmtzIGRpZmZlcmVudGx5LgotICAgIGlmICghbV9hbmltYXRpb25F
bGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1BhdGhCeXRlU3RyZWFtPigwLCAqZnJv
bVBhdGgsICp0b1BhdGgsICphbmltYXRlZFBhdGgsIHBlcmNlbnRhZ2UsIG1fY29udGV4dEVsZW1l
bnQsIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuOworICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVh
bT4gdW5kZXJseWluZ1BhdGg7CisgICAgYm9vbCBpc1RvQW5pbWF0aW9uID0gbV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb247CisgICAgaWYgKGlzVG9Bbmlt
YXRpb24pIHsKKyAgICAgICAgdW5kZXJseWluZ1BhdGggPSBhbmltYXRlZFBhdGgtPmNvcHkoKTsK
KyAgICAgICAgZnJvbVBhdGggPSB1bmRlcmx5aW5nUGF0aC5nZXQoKTsKKyAgICB9CiAKICAgICAv
LyBDYWNoZSB0aGUgY3VycmVudCBhbmltYXRlZCB2YWx1ZSBiZWZvcmUgdGhlIGJ1aWxkQW5pbWF0
ZWRTVkdQYXRoQnl0ZVN0cmVhbSgpIGNsZWFycyBhbmltYXRlZFBhdGguCiAgICAgT3duUHRyPFNW
R1BhdGhCeXRlU3RyZWFtPiBsYXN0QW5pbWF0ZWRQYXRoOwotICAgIGlmICghZnJvbVBhdGgtPnNp
emUoKSB8fCAobV9hbmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZlKCkgJiYgbV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgIT0gVG9BbmltYXRpb24pKQorICAgIGlmICghZnJvbVBh
dGgtPnNpemUoKSB8fCAobV9hbmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZlKCkgJiYgIWlzVG9B
bmltYXRpb24pKQogICAgICAgICBsYXN0QW5pbWF0ZWRQYXRoID0gYW5pbWF0ZWRQYXRoLT5jb3B5
KCk7CiAKKyAgICAvLyBQYXNzIGZhbHNlIHRvICdyZXNpemVBbmltYXRlZExpc3RJZk5lZWRlZCcg
aGVyZSwgYXMgdGhlIHBhdGggYW5pbWF0aW9uIGlzIG5vdCBhIHJlZ3VsYXIgVmVjdG9yPFNWR1hY
WD4gdHlwZSwgYnV0IGEgU1ZHUGF0aEJ5dGVTdHJlYW0sIHRoYXQgd29ya3MgZGlmZmVyZW50bHku
CisgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZH
UGF0aEJ5dGVTdHJlYW0+KCpmcm9tUGF0aCwgKnRvUGF0aCwgKmFuaW1hdGVkUGF0aCwgcGVyY2Vu
dGFnZSwgZmFsc2UpKQorICAgICAgICByZXR1cm47CisKICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0
aEJ5dGVTdHJlYW0oZnJvbVBhdGgsIHRvUGF0aCwgYW5pbWF0ZWRQYXRoLCBwZXJjZW50YWdlKTsK
IAogICAgIC8vIEhhbmRsZSBhZGRpdGl2ZT0nc3VtJy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQb2ludExpc3QuY3BwCmluZGV4IGMyNjQ5ZmMzZDViNTFhNmYxYmI4MGE3MGUyZTcz
MDcwMzg3ZGE5Y2IuLjE1ZDljMDFmZTMxZWNjMDQ1NGI2OGQ3YzY4MDE3YjVmMmFhYzdjZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcApAQCAtNzAsNyAr
NzAsNyBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlw
ZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbgogICAgIEFTU0VSVChmcm9tLT50eXBlKCkg
PT0gQW5pbWF0ZWRQb2ludHMpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUo
KSk7CiAKLSAgICBTVkdQb2ludExpc3QmIGZyb21Qb2ludExpc3QgPSBmcm9tLT5wb2ludExpc3Qo
KTsKKyAgICBjb25zdCBTVkdQb2ludExpc3QmIGZyb21Qb2ludExpc3QgPSBmcm9tLT5wb2ludExp
c3QoKTsKICAgICBTVkdQb2ludExpc3QmIHRvUG9pbnRMaXN0ID0gdG8tPnBvaW50TGlzdCgpOwog
CiAgICAgdW5zaWduZWQgZnJvbVBvaW50TGlzdFNpemUgPSBmcm9tUG9pbnRMaXN0LnNpemUoKTsK
QEAgLTg0LDEzICs4NCwxMiBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFk
ZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbgogdm9pZCBTVkdBbmlt
YXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0Fu
aW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0Fu
aW1hdGVkVHlwZSogYW5pbWF0ZWQpCiB7CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7
Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgU1ZHUG9pbnRMaXN0JiBmcm9t
UG9pbnRMaXN0ID0gZnJvbS0+cG9pbnRMaXN0KCk7Ci0gICAgU1ZHUG9pbnRMaXN0JiB0b1BvaW50
TGlzdCA9IHRvLT5wb2ludExpc3QoKTsKLSAgICBTVkdQb2ludExpc3QmIHRvQXRFbmRPZkR1cmF0
aW9uUG9pbnRMaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPnBvaW50TGlzdCgpOworICAgIGNvbnN0
IFNWR1BvaW50TGlzdCYgZnJvbVBvaW50TGlzdCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnBvaW50TGlzdCgpIDogZnJvbS0+
cG9pbnRMaXN0KCk7CisgICAgY29uc3QgU1ZHUG9pbnRMaXN0JiB0b1BvaW50TGlzdCA9IHRvLT5w
b2ludExpc3QoKTsKKyAgICBjb25zdCBTVkdQb2ludExpc3QmIHRvQXRFbmRPZkR1cmF0aW9uUG9p
bnRMaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPnBvaW50TGlzdCgpOwogICAgIFNWR1BvaW50TGlz
dCYgYW5pbWF0ZWRQb2ludExpc3QgPSBhbmltYXRlZC0+cG9pbnRMaXN0KCk7Ci0gICAgaWYgKCFt
X2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUG9pbnRMaXN0Pigw
LCBmcm9tUG9pbnRMaXN0LCB0b1BvaW50TGlzdCwgYW5pbWF0ZWRQb2ludExpc3QsIHBlcmNlbnRh
Z2UsIG1fY29udGV4dEVsZW1lbnQpKQorICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1
c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1BvaW50TGlzdD4oZnJvbVBvaW50TGlzdCwgdG9Qb2ludExp
c3QsIGFuaW1hdGVkUG9pbnRMaXN0LCBwZXJjZW50YWdlKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgdW5zaWduZWQgZnJvbVBvaW50TGlzdFNpemUgPSBmcm9tUG9pbnRMaXN0LnNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5jcHAKaW5kZXggNzNhN2YyNzBjOTNkMmZhNWQ3ZGZjZmQ3ZmVmOGNlNTJkZDViMTA5NS4uZTIw
MDY4ODhhOGEzYjE3MWU5MzA5MTI5MjFhYjZkMGI0MGVkOWVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKQEAgLTcz
LDEwICs3Myw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VuCiAgICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogCi0gICAgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyYgZnJvbVByZXNlcnZlQXNwZWN0UmF0aW8gPSBmcm9tLT5wcmVzZXJ2
ZUFzcGVjdFJhdGlvKCk7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgdG9QcmVzZXJ2ZUFz
cGVjdFJhdGlvID0gdG8tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBjb25zdCBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvJiBmcm9tUHJlc2VydmVBc3BlY3RSYXRpbyA9IG1fYW5pbWF0aW9uRWxl
bWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnByZXNlcnZl
QXNwZWN0UmF0aW8oKSA6IGZyb20tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBjb25zdCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiB0b1ByZXNlcnZlQXNwZWN0UmF0aW8gPSB0by0+cHJlc2Vy
dmVBc3BlY3RSYXRpbygpOwogICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIGFuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpbyA9IGFuaW1hdGVkLT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAg
bV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9WYWx1ZXM8U1ZHUHJlc2VydmVBc3BlY3RS
YXRpbz4oMCwgZnJvbVByZXNlcnZlQXNwZWN0UmF0aW8sIHRvUHJlc2VydmVBc3BlY3RSYXRpbywg
YW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50
KTsKIAogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZURpc2NyZXRlVHlwZTxTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvPihwZXJjZW50YWdlLCBmcm9tUHJlc2VydmVBc3BlY3RSYXRpbywgdG9Q
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcAppbmRleCBhZDQyODZkYmVjYWY4NTczNjVj
OWNkZjMyMmEzZjZiMTZkYTJlYTI3Li4xNjc3YTIyNGMzZjc3Y2NlYjdhYmFjMTNmZTRjODdhYjNi
YmEzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcApAQCAtNzcsMTEg
Kzc3LDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICBBU1NFUlQobV9hbmltYXRpb25F
bGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBGbG9hdFJlY3Qm
IGZyb21SZWN0ID0gZnJvbS0+cmVjdCgpOwotICAgIEZsb2F0UmVjdCYgdG9SZWN0ID0gdG8tPnJl
Y3QoKTsKLSAgICBGbG9hdFJlY3QmIHRvQXRFbmRPZkR1cmF0aW9uUmVjdCA9IHRvQXRFbmRPZkR1
cmF0aW9uLT5yZWN0KCk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCA9IG1fYW5pbWF0
aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnJl
Y3QoKSA6IGZyb20tPnJlY3QoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCA9IHRvLT5y
ZWN0KCk7CisgICAgY29uc3QgRmxvYXRSZWN0JiB0b0F0RW5kT2ZEdXJhdGlvblJlY3QgPSB0b0F0
RW5kT2ZEdXJhdGlvbi0+cmVjdCgpOwogICAgIEZsb2F0UmVjdCYgYW5pbWF0ZWRSZWN0ID0gYW5p
bWF0ZWQtPnJlY3QoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub1ZhbHVl
czxGbG9hdFJlY3Q+KDAsIGZyb21SZWN0LCB0b1JlY3QsIGFuaW1hdGVkUmVjdCwgcGVyY2VudGFn
ZSwgbV9jb250ZXh0RWxlbWVudCk7CiAKICAgICBmbG9hdCBhbmltYXRlZFggPSBhbmltYXRlZFJl
Y3QueCgpOwogICAgIGZsb2F0IGFuaW1hdGVkWSA9IGFuaW1hdGVkUmVjdC55KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcAppbmRleCBhYjkxMTBiMzhiOWMwYThlY2E3
YWNkZDgxZWUzMmNiYTI3MTVmODEyLi4wMDI0NThiMWY4OTg3NjFhNDFmNmViMmE4NTljYjY1OGQw
ZmMxNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKQEAgLTc4
LDEwICs3OCwxMyBAQCB2b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZQogICAgIEFTU0VSVChtX2FuaW1h
dGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIFN0cmlu
ZyYgZnJvbVN0cmluZyA9IGZyb20tPnN0cmluZygpOwotICAgIFN0cmluZyYgdG9TdHJpbmcgPSB0
by0+c3RyaW5nKCk7CisgICAgU3RyaW5nIGZyb21TdHJpbmcgPSBmcm9tLT5zdHJpbmcoKTsKKyAg
ICBTdHJpbmcgdG9TdHJpbmcgPSB0by0+c3RyaW5nKCk7CiAgICAgU3RyaW5nJiBhbmltYXRlZFN0
cmluZyA9IGFuaW1hdGVkLT5zdHJpbmcoKTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVz
dEZyb21Ub1ZhbHVlczxTdHJpbmc+KHBhcnNlU3RyaW5nRnJvbVN0cmluZywgZnJvbVN0cmluZywg
dG9TdHJpbmcsIGFuaW1hdGVkU3RyaW5nLCBwZXJjZW50YWdlLCBtX2NvbnRleHRFbGVtZW50KTsK
KworICAgIC8vIEFwcGx5IENTUyBpbmhlcml0YW5jZSBydWxlcy4KKyAgICBtX2FuaW1hdGlvbkVs
ZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPFN0cmluZz4ocGFyc2VTdHJpbmdGcm9tU3RyaW5n
LCBtX2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tU3RyaW5n
LCBtX2NvbnRleHRFbGVtZW50KTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvcklu
aGVyaXRhbmNlPFN0cmluZz4ocGFyc2VTdHJpbmdGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1l
bnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9TdHJpbmcsIG1fY29udGV4dEVsZW1lbnQpOwog
CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlRGlzY3JldGVUeXBlPFN0cmluZz4ocGVy
Y2VudGFnZSwgZnJvbVN0cmluZywgdG9TdHJpbmcsIGFuaW1hdGVkU3RyaW5nKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKaW5kZXggNTBk
MmQ1NzY0NTg5Yjc2ODQ3MmM3N2RjZWRkOTM4MmFhODk0Y2EyNi4uNDdhNDRlZTE1ZDAxMmZiYzIy
NDFjMTc0NDkxYWM0N2U4YTMwMjljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKQEAgLTc5LDE0ICs3OSwxNCBAQCB2b2lkIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSogZnJvbSwgUwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0KTsKICAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgU1ZH
VHJhbnNmb3JtTGlzdCYgZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9tLT50cmFuc2Zvcm1MaXN0KCk7
CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9tLT50
cmFuc2Zvcm1MaXN0KCk7CiAgICAgU1ZHVHJhbnNmb3JtTGlzdCYgdG9UcmFuc2Zvcm1MaXN0ID0g
dG8tPnRyYW5zZm9ybUxpc3QoKTsKICAgICB1bnNpZ25lZCBmcm9tVHJhbnNmb3JtTGlzdFNpemUg
PSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7CiAgICAgaWYgKCFmcm9tVHJhbnNmb3JtTGlzdFNp
emUgfHwgZnJvbVRyYW5zZm9ybUxpc3RTaXplICE9IHRvVHJhbnNmb3JtTGlzdC5zaXplKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtTGlzdFNpemUgPT0gMSk7
Ci0gICAgU1ZHVHJhbnNmb3JtJiBmcm9tVHJhbnNmb3JtID0gZnJvbVRyYW5zZm9ybUxpc3RbMF07
CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtJiBmcm9tVHJhbnNmb3JtID0gZnJvbVRyYW5zZm9ybUxp
c3RbMF07CiAgICAgU1ZHVHJhbnNmb3JtJiB0b1RyYW5zZm9ybSA9IHRvVHJhbnNmb3JtTGlzdFsw
XTsKIAogICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUoKSA9PSB0b1RyYW5zZm9ybS50eXBl
KCkpOwpAQCAtMTAxLDEzICsxMDEsMTMgQEAgdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLAogICAgIC8v
IOKAmHRv4oCZIGF0dHJpYnV0ZSB2YWx1ZSwgd2hpY2ggY29uZmxpY3RzIG1hdGhlbWF0aWNhbGx5
IHdpdGggdGhlIHJlcXVpcmVtZW50IGZvciBhZGRpdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucwog
ICAgIC8vIHRvIGJlIHBvc3QtbXVsdGlwbGllZC4gQXMgYSBjb25zZXF1ZW5jZSwgaW4gU1ZHIDEu
MSB0aGUgYmVoYXZpb3Igb2YgdG8gYW5pbWF0aW9ucyBmb3Ig4oCYYW5pbWF0ZVRyYW5zZm9ybeKA
mSBpcyB1bmRlZmluZWQuCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHRha2VuIGludG8gYWNj
b3VudCB5ZXQuCi0gICAgU1ZHVHJhbnNmb3JtTGlzdCYgZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9t
LT50cmFuc2Zvcm1MaXN0KCk7Ci0gICAgU1ZHVHJhbnNmb3JtTGlzdCYgdG9UcmFuc2Zvcm1MaXN0
ID0gdG8tPnRyYW5zZm9ybUxpc3QoKTsKLSAgICBTVkdUcmFuc2Zvcm1MaXN0JiB0b0F0RW5kT2ZE
dXJhdGlvblRyYW5zZm9ybUxpc3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+dHJhbnNmb3JtTGlzdCgp
OworICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0ID0gbV9hbmlt
YXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+
dHJhbnNmb3JtTGlzdCgpIDogZnJvbS0+dHJhbnNmb3JtTGlzdCgpOworICAgIGNvbnN0IFNWR1Ry
YW5zZm9ybUxpc3QmIHRvVHJhbnNmb3JtTGlzdCA9IHRvLT50cmFuc2Zvcm1MaXN0KCk7CisgICAg
Y29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0ID0g
dG9BdEVuZE9mRHVyYXRpb24tPnRyYW5zZm9ybUxpc3QoKTsKICAgICBTVkdUcmFuc2Zvcm1MaXN0
JiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBhbmltYXRlZC0+dHJhbnNmb3JtTGlzdCgpOwogCiAg
ICAgLy8gUGFzcyBmYWxzZSB0byAncmVzaXplQW5pbWF0ZWRMaXN0SWZOZWVkZWQnIGhlcmUsIGFz
IHRoZSBzcGVjaWFsIHBvc3QtbXVsdGlwbGljYXRpb24gYmVoYXZpb3Igb2YgPGFuaW1hdGVUcmFu
c2Zvcm0+IG5lZWRzIHRvIGJlIHJlc3BlY3RlZCBiZWxvdy4KLSAgICBpZiAoIW1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdUcmFuc2Zvcm1MaXN0PigwLCBmcm9t
VHJhbnNmb3JtTGlzdCwgdG9UcmFuc2Zvcm1MaXN0LCBhbmltYXRlZFRyYW5zZm9ybUxpc3QsIHBl
cmNlbnRhZ2UsIG1fY29udGV4dEVsZW1lbnQsIGZhbHNlKSkKKyAgICBpZiAoIW1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdUcmFuc2Zvcm1MaXN0Pihmcm9tVHJh
bnNmb3JtTGlzdCwgdG9UcmFuc2Zvcm1MaXN0LCBhbmltYXRlZFRyYW5zZm9ybUxpc3QsIHBlcmNl
bnRhZ2UsIGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTmV2ZXIgcmVzaXplIHRo
ZSBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdG8gdGhlIHRvVHJhbnNmb3JtTGlzdCBzaXplLCBpbnN0
ZWFkIGVpdGhlciBjbGVhciB0aGUgbGlzdCBvciBhcHBlbmQgdG8gaXQuCkBAIC0xMTUsMTMgKzEx
NSwxMiBAQCB2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsCiAgICAgICAgIGFuaW1hdGVkVHJhbnNmb3Jt
TGlzdC5jbGVhcigpOwogCiAgICAgdW5zaWduZWQgZnJvbVRyYW5zZm9ybUxpc3RTaXplID0gZnJv
bVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwotICAgIFNWR1RyYW5zZm9ybSYgdG9UcmFuc2Zvcm0gPSB0
b1RyYW5zZm9ybUxpc3RbMF07CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtJiB0b1RyYW5zZm9ybSA9
IHRvVHJhbnNmb3JtTGlzdFswXTsKICAgICBTVkdUcmFuc2Zvcm0gZWZmZWN0aXZlRnJvbSA9IGZy
b21UcmFuc2Zvcm1MaXN0U2l6ZSA/IGZyb21UcmFuc2Zvcm1MaXN0WzBdIDogU1ZHVHJhbnNmb3Jt
KHRvVHJhbnNmb3JtLnR5cGUoKSwgU1ZHVHJhbnNmb3JtOjpDb25zdHJ1Y3RaZXJvVHJhbnNmb3Jt
KTsKICAgICBTVkdUcmFuc2Zvcm0gY3VycmVudFRyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybURpc3Rh
bmNlKGVmZmVjdGl2ZUZyb20sIHRvVHJhbnNmb3JtKS5zY2FsZWREaXN0YW5jZShwZXJjZW50YWdl
KS5hZGRUb1NWR1RyYW5zZm9ybShlZmZlY3RpdmVGcm9tKTsKLSAgICBpZiAobV9hbmltYXRpb25F
bGVtZW50LT5pc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0Q291bnQpIHsKLSAgICAgICAgU1ZHVHJh
bnNmb3JtJiB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybSA9IHRvQXRFbmRPZkR1cmF0aW9uVHJh
bnNmb3JtTGlzdFswXTsKLSAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdU
cmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3JtcyhjdXJyZW50VHJhbnNmb3JtLCB0b0F0
RW5kT2ZEdXJhdGlvblRyYW5zZm9ybSwgcmVwZWF0Q291bnQpKTsKLSAgICB9IGVsc2UKKyAgICBp
ZiAobV9hbmltYXRpb25FbGVtZW50LT5pc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0Q291bnQpCisg
ICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBlbmQoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6
OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9ybSwgdG9BdEVuZE9mRHVyYXRpb25UcmFu
c2Zvcm1MaXN0WzBdLCByZXBlYXRDb3VudCkpOworICAgIGVsc2UKICAgICAgICAgYW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmFwcGVuZChjdXJyZW50VHJhbnNmb3JtKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAppbmRleCAxZTEyOGNjMDAxZWUxM2JiZGVjYmMxNGU2ODM0
Njg2ZTc2MWZlMjg5Li4zM2ExOGE3ZmI0OGE5MTMxYzYzMDYxNDM3NWViMzk2ODU5NGQ2Y2MzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcApAQCAtMjIsMTcgKzIyLDggQEAK
ICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5oIgogCi0jaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiU1ZHQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdDb2xv
ci5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIK
LSNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKLSNpbmNsdWRlICJTVkdQb2ludExp
c3QuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCi0jaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIzNywxMDggKzIy
OCw2IEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZVRyYW5zZm9ybUxpc3QoU1ZHVHJhbnNmb3JtTGlzCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5y
ZWxlYXNlKCk7CiB9CiAKLXN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBTVkdBbmltYXRl
ZFR5cGU6OmFuZ2xlQW5kRW51bWVyYXRpb24oKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gQW5p
bWF0ZWRBbmdsZSk7Ci0gICAgcmV0dXJuICptX2RhdGEuYW5nbGVBbmRFbnVtZXJhdGlvbjsKLX0K
LQotYm9vbCYgU1ZHQW5pbWF0ZWRUeXBlOjpib29sZWFuKCkKLXsKLSAgICBBU1NFUlQobV90eXBl
ID09IEFuaW1hdGVkQm9vbGVhbik7Ci0gICAgcmV0dXJuICptX2RhdGEuYm9vbGVhbjsKLX0KLQot
Q29sb3ImIFNWR0FuaW1hdGVkVHlwZTo6Y29sb3IoKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0g
QW5pbWF0ZWRDb2xvcik7Ci0gICAgcmV0dXJuICptX2RhdGEuY29sb3I7Ci19Ci0KLXVuc2lnbmVk
JiBTVkdBbmltYXRlZFR5cGU6OmVudW1lcmF0aW9uKCkKLXsKLSAgICBBU1NFUlQobV90eXBlID09
IEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIHJldHVybiAqbV9kYXRhLmVudW1lcmF0aW9uOwot
fQotCi1pbnQmIFNWR0FuaW1hdGVkVHlwZTo6aW50ZWdlcigpCi17Ci0gICAgQVNTRVJUKG1fdHlw
ZSA9PSBBbmltYXRlZEludGVnZXIpOwotICAgIHJldHVybiAqbV9kYXRhLmludGVnZXI7Ci19Ci0K
LXBhaXI8aW50LCBpbnQ+JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXJPcHRpb25hbEludGVnZXIo
KQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
KTsKLSAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOyAgICAgICAgCi19
Ci0KLVNWR0xlbmd0aCYgU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgoKQotewotICAgIEFTU0VSVCht
X3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpOwotICAgIHJldHVybiAqbV9kYXRhLmxlbmd0aDsKLX0K
LQotU1ZHTGVuZ3RoTGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGhMaXN0KCkKLXsKLSAgICBB
U1NFUlQobV90eXBlID09IEFuaW1hdGVkTGVuZ3RoTGlzdCk7Ci0gICAgcmV0dXJuICptX2RhdGEu
bGVuZ3RoTGlzdDsKLX0KLQotZmxvYXQmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyKCkKLXsKLSAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyKTsKLSAgICByZXR1cm4gKm1fZGF0YS5u
dW1iZXI7Ci19Ci0KLVNWR051bWJlckxpc3QmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyTGlzdCgp
Ci17Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlckxpc3QpOwotICAgIHJldHVy
biAqbV9kYXRhLm51bWJlckxpc3Q7Ci19Ci0KLXBhaXI8ZmxvYXQsIGZsb2F0PiYgU1ZHQW5pbWF0
ZWRUeXBlOjpudW1iZXJPcHRpb25hbE51bWJlcigpCi17Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJP
cHRpb25hbE51bWJlcjsgICAgICAgIAotfQotCi1TVkdQYXRoQnl0ZVN0cmVhbSogU1ZHQW5pbWF0
ZWRUeXBlOjpwYXRoKCkKLXsKLSAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUGF0aCk7Ci0g
ICAgcmV0dXJuIG1fZGF0YS5wYXRoOwotfQotCi1TVkdQb2ludExpc3QmIFNWR0FuaW1hdGVkVHlw
ZTo6cG9pbnRMaXN0KCkKLXsKLSAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9pbnRzKTsK
LSAgICByZXR1cm4gKm1fZGF0YS5wb2ludExpc3Q7Ci19Ci0KLVNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8mIFNWR0FuaW1hdGVkVHlwZTo6cHJlc2VydmVBc3BlY3RSYXRpbygpCi17Ci0gICAgQVNTRVJU
KG1fdHlwZSA9PSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotICAgIHJldHVybiAqbV9k
YXRhLnByZXNlcnZlQXNwZWN0UmF0aW87Ci19Ci0KLUZsb2F0UmVjdCYgU1ZHQW5pbWF0ZWRUeXBl
OjpyZWN0KCkKLXsKLSAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUmVjdCk7Ci0gICAgcmV0
dXJuICptX2RhdGEucmVjdDsKLX0KLQotU3RyaW5nJiBTVkdBbmltYXRlZFR5cGU6OnN0cmluZygp
Ci17Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFN0cmluZyk7Ci0gICAgcmV0dXJuICpt
X2RhdGEuc3RyaW5nOwotfQotCi1TVkdUcmFuc2Zvcm1MaXN0JiBTVkdBbmltYXRlZFR5cGU6OnRy
YW5zZm9ybUxpc3QoKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0KTsKLSAgICByZXR1cm4gKm1fZGF0YS50cmFuc2Zvcm1MaXN0OwotfQotCiBTdHJpbmcgU1ZH
QW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCmluZGV4IGQ2MDlmOGM1MjVmZDQwYmNkYTUz
MDM4YjFmNDdlMWQyZWVlNjY4ZjIuLmNiMTllN2M3OWQyNzNlYWYyZGFjNWU3ZmIwZjkwZTAwODk5
NTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKQEAgLTIxLDIwICsyMSwy
MCBAQAogI2RlZmluZSBTVkdBbmltYXRlZFR5cGVfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJTVkdBbmdsZS5oIgorI2luY2x1ZGUgIlNWR0Nv
bG9yLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgor
I2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCisj
aW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDb2xvcjsKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIFNWR0FuZ2xlOwotY2xh
c3MgU1ZHTGVuZ3RoOwotY2xhc3MgU1ZHTGVuZ3RoTGlzdDsKLWNsYXNzIFNWR051bWJlckxpc3Q7
CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKLWNsYXNzIFNWR1BvaW50TGlzdDsKLWNsYXNzIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW87Ci1jbGFzcyBTVkdUcmFuc2Zvcm1MaXN0OwogCiBjbGFzcyBT
VkdBbmltYXRlZFR5cGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjIsMjMg
KzYyLDIxMSBAQCBwdWJsaWM6CiAKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVk
PiYgYW5nbGVBbmRFbnVtZXJhdGlvbigpOwotICAgIGJvb2wmIGJvb2xlYW4oKTsKLSAgICBDb2xv
ciYgY29sb3IoKTsKLSAgICB1bnNpZ25lZCYgZW51bWVyYXRpb24oKTsKLSAgICBpbnQmIGludGVn
ZXIoKTsKLSAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+JiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7
Ci0gICAgU1ZHTGVuZ3RoJiBsZW5ndGgoKTsKLSAgICBTVkdMZW5ndGhMaXN0JiBsZW5ndGhMaXN0
KCk7Ci0gICAgZmxvYXQmIG51bWJlcigpOwotICAgIFNWR051bWJlckxpc3QmIG51bWJlckxpc3Qo
KTsKLSAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiYgbnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsK
LSAgICBTVkdQYXRoQnl0ZVN0cmVhbSogcGF0aCgpOwotICAgIFNWR1BvaW50TGlzdCYgcG9pbnRM
aXN0KCk7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbygp
OwotICAgIEZsb2F0UmVjdCYgcmVjdCgpOwotICAgIFN0cmluZyYgc3RyaW5nKCk7Ci0gICAgU1ZH
VHJhbnNmb3JtTGlzdCYgdHJhbnNmb3JtTGlzdCgpOworICAgIC8vIE5vbi1tdXRhYmxlIGFjY2Vz
c29ycy4KKyAgICBjb25zdCBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5nbGVBbmRF
bnVtZXJhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1h
dGVkQW5nbGUpOworICAgICAgICByZXR1cm4gKm1fZGF0YS5hbmdsZUFuZEVudW1lcmF0aW9uOwor
ICAgIH0KKworICAgIGNvbnN0IGJvb2wmIGJvb2xlYW4oKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZEJvb2xlYW4pOworICAgICAgICByZXR1cm4gKm1fZGF0
YS5ib29sZWFuOworICAgIH0KKworICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQ29sb3IpOworICAgICAgICByZXR1
cm4gKm1fZGF0YS5jb2xvcjsKKyAgICB9CisKKyAgICBjb25zdCB1bnNpZ25lZCYgZW51bWVyYXRp
b24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZEVudW1l
cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEuZW51bWVyYXRpb247CisgICAgfQorCisg
ICAgY29uc3QgaW50JiBpbnRlZ2VyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEuaW50ZWdlcjsK
KyAgICB9CisKKyAgICBjb25zdCBwYWlyPGludCwgaW50PiYgaW50ZWdlck9wdGlvbmFsSW50ZWdl
cigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlcik7CisgICAgICAgIHJldHVybiAqbV9kYXRhLmludGVnZXJPcHRpb25h
bEludGVnZXI7CisgICAgfQorCisgICAgY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGgoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZExlbmd0aCk7CisgICAgICAg
IHJldHVybiAqbV9kYXRhLmxlbmd0aDsKKyAgICB9CisKKyAgICBjb25zdCBTVkdMZW5ndGhMaXN0
JiBsZW5ndGhMaXN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5p
bWF0ZWRMZW5ndGhMaXN0KTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoTGlzdDsKKyAg
ICB9CisKKyAgICBjb25zdCBmbG9hdCYgbnVtYmVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gQW5pbWF0ZWROdW1iZXIpOworICAgICAgICByZXR1cm4gKm1fZGF0YS5u
dW1iZXI7CisgICAgfQorCisgICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYgbnVtYmVyTGlzdCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyTGlzdCk7
CisgICAgICAgIHJldHVybiAqbV9kYXRhLm51bWJlckxpc3Q7CisgICAgfQorCisgICAgY29uc3Qg
cGFpcjxmbG9hdCwgZmxvYXQ+JiBudW1iZXJPcHRpb25hbE51bWJlcigpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwor
ICAgICAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlcjsKKyAgICB9CisKKyAg
ICBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSogcGF0aCgpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IEFuaW1hdGVkUGF0aCk7CisgICAgICAgIHJldHVybiBtX2RhdGEucGF0
aDsKKyAgICB9CisKKyAgICBjb25zdCBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9pbnRzKTsKKyAgICAgICAg
cmV0dXJuICptX2RhdGEucG9pbnRMaXN0OworICAgIH0KKworICAgIGNvbnN0IFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8oKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgICAgICBy
ZXR1cm4gKm1fZGF0YS5wcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgIH0KKworICAgIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFu
aW1hdGVkUmVjdCk7CisgICAgICAgIHJldHVybiAqbV9kYXRhLnJlY3Q7CisgICAgfQorCisgICAg
Y29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBBbmltYXRlZFN0cmluZyk7CisgICAgICAgIHJldHVybiAqbV9kYXRhLnN0cmluZzsKKyAg
ICB9CisKKyAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1MaXN0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsK
KyAgICAgICAgcmV0dXJuICptX2RhdGEudHJhbnNmb3JtTGlzdDsKKyAgICB9CisKKyAgICAvLyBN
dXRhYmxlIGFjY2Vzc29ycy4KKyAgICBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5n
bGVBbmRFbnVtZXJhdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1h
dGVkQW5nbGUpOworICAgICAgICByZXR1cm4gKm1fZGF0YS5hbmdsZUFuZEVudW1lcmF0aW9uOwor
ICAgIH0KKworICAgIGJvb2wmIGJvb2xlYW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBBbmltYXRlZEJvb2xlYW4pOworICAgICAgICByZXR1cm4gKm1fZGF0YS5ib29sZWFuOwor
ICAgIH0KKworICAgIENvbG9yJiBjb2xvcigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBl
ID09IEFuaW1hdGVkQ29sb3IpOworICAgICAgICByZXR1cm4gKm1fZGF0YS5jb2xvcjsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCYgZW51bWVyYXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEuZW51
bWVyYXRpb247CisgICAgfQorCisgICAgaW50JiBpbnRlZ2VyKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEu
aW50ZWdlcjsKKyAgICB9CisKKyAgICBwYWlyPGludCwgaW50PiYgaW50ZWdlck9wdGlvbmFsSW50
ZWdlcigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlcik7CisgICAgICAgIHJldHVybiAqbV9kYXRhLmludGVnZXJPcHRpb25hbElu
dGVnZXI7CisgICAgfQorCisgICAgU1ZHTGVuZ3RoJiBsZW5ndGgoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZExlbmd0aCk7CisgICAgICAgIHJldHVybiAqbV9kYXRh
Lmxlbmd0aDsKKyAgICB9CisKKyAgICBTVkdMZW5ndGhMaXN0JiBsZW5ndGhMaXN0KCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGhMaXN0KTsKKyAgICAgICAg
cmV0dXJuICptX2RhdGEubGVuZ3RoTGlzdDsKKyAgICB9CisKKyAgICBmbG9hdCYgbnVtYmVyKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWROdW1iZXIpOworICAgICAg
ICByZXR1cm4gKm1fZGF0YS5udW1iZXI7CisgICAgfQorCisgICAgU1ZHTnVtYmVyTGlzdCYgbnVt
YmVyTGlzdCgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVy
TGlzdCk7CisgICAgICAgIHJldHVybiAqbV9kYXRhLm51bWJlckxpc3Q7CisgICAgfQorCisgICAg
cGFpcjxmbG9hdCwgZmxvYXQ+JiBudW1iZXJPcHRpb25hbE51bWJlcigpCisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgICAg
ICByZXR1cm4gKm1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlcjsKKyAgICB9CisKKyAgICBTVkdQ
YXRoQnl0ZVN0cmVhbSogcGF0aCgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFu
aW1hdGVkUGF0aCk7CisgICAgICAgIHJldHVybiBtX2RhdGEucGF0aDsKKyAgICB9CisKKyAgICBT
VkdQb2ludExpc3QmIHBvaW50TGlzdCgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IEFuaW1hdGVkUG9pbnRzKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEucG9pbnRMaXN0OworICAg
IH0KKworICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8oKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8pOworICAgICAgICByZXR1cm4gKm1fZGF0YS5wcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgIH0K
KworICAgIEZsb2F0UmVjdCYgcmVjdCgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IEFuaW1hdGVkUmVjdCk7CisgICAgICAgIHJldHVybiAqbV9kYXRhLnJlY3Q7CisgICAgfQorCisg
ICAgU3RyaW5nJiBzdHJpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmlt
YXRlZFN0cmluZyk7CisgICAgICAgIHJldHVybiAqbV9kYXRhLnN0cmluZzsKKyAgICB9CisKKyAg
ICBTVkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1MaXN0KCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICAgICAgcmV0dXJuICptX2Rh
dGEudHJhbnNmb3JtTGlzdDsKKyAgICB9CiAKICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpOwog
ICAgIGJvb2wgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3Ry
aW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXgg
NGM2YjQyN2RiY2I0MmVkZDQyNmNmMGY3OWFmZDljZGZlMmZjM2MxNC4uMDdlNGE5NDQ5NTc2OTYy
NDAwOGZkM2UzNjIwOGQyOGNkYzYyY2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcApAQCAtNDkzLDEzICs0OTMsMTIgQEAgdm9pZCBTVkdBbmltYXRpb25F
bGVtZW50OjpjdXJyZW50VmFsdWVzRnJvbUtleVBvaW50cyhmbG9hdCBwZXJjZW50LCBmbG9hdCYg
ZWZmZWMKICAgICB0byA9IG1fdmFsdWVzW2luZGV4ICsgMV07CiB9CiAgICAgCi12b2lkIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24oZmxvYXQgcGVy
Y2VudCwgZmxvYXQmIGVmZmVjdGl2ZVBlcmNlbnQsIFN0cmluZyYgZnJvbSwgU3RyaW5nJiB0bywg
U3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvbikKK3ZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3Vy
cmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJjZW50LCBmbG9hdCYgZWZmZWN0
aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvKQogewogICAgIHVuc2lnbmVkIHZh
bHVlc0NvdW50ID0gbV92YWx1ZXMuc2l6ZSgpOwogICAgIEFTU0VSVChtX2FuaW1hdGlvblZhbGlk
KTsKICAgICBBU1NFUlQodmFsdWVzQ291bnQgPj0gMSk7CiAKLSAgICB0b0F0RW5kT2ZEdXJhdGlv
biA9IG1fdmFsdWVzLmxhc3QoKTsKICAgICBpZiAocGVyY2VudCA9PSAxIHx8IHZhbHVlc0NvdW50
ID09IDEpIHsKICAgICAgICAgZnJvbSA9IG1fdmFsdWVzW3ZhbHVlc0NvdW50IC0gMV07CiAgICAg
ICAgIHRvID0gbV92YWx1ZXNbdmFsdWVzQ291bnQgLSAxXTsKQEAgLTYwMSw2ICs2MDAsOCBAQCB2
b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpCiAgICAgICAg
ICAgICAmJiAoY2FsY01vZGUgPT0gQ2FsY01vZGVEaXNjcmV0ZSB8fCAhbV9rZXlUaW1lcy5zaXpl
KCkgfHwgbV9rZXlUaW1lcy5sYXN0KCkgPT0gMSkKICAgICAgICAgICAgICYmIChjYWxjTW9kZSAh
PSBDYWxjTW9kZVNwbGluZSB8fCAoKG1fa2V5U3BsaW5lcy5zaXplKCkgJiYgKG1fa2V5U3BsaW5l
cy5zaXplKCkgPT0gbV92YWx1ZXMuc2l6ZSgpIC0gMSkpIHx8IG1fa2V5U3BsaW5lcy5zaXplKCkg
PT0gbV9rZXlQb2ludHMuc2l6ZSgpIC0gMSkpCiAgICAgICAgICAgICAmJiAoIWZhc3RIYXNBdHRy
aWJ1dGUoU1ZHTmFtZXM6OmtleVBvaW50c0F0dHIpIHx8IChtX2tleVRpbWVzLnNpemUoKSA+IDEg
JiYgbV9rZXlUaW1lcy5zaXplKCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpKSk7CisgICAgICAgIGlm
IChtX2FuaW1hdGlvblZhbGlkKQorICAgICAgICAgICAgbV9hbmltYXRpb25WYWxpZCA9IGNhbGN1
bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUobV92YWx1ZXMubGFzdCgpKTsKICAgICAgICAgaWYg
KGNhbGNNb2RlID09IENhbGNNb2RlUGFjZWQgJiYgbV9hbmltYXRpb25WYWxpZCkKICAgICAgICAg
ICAgIGNhbGN1bGF0ZUtleVRpbWVzRm9yQ2FsY01vZGVQYWNlZCgpOwogICAgIH0gZWxzZSBpZiAo
YW5pbWF0aW9uTW9kZSA9PSBQYXRoQW5pbWF0aW9uKQpAQCAtNjEyLDEzICs2MTMsMTIgQEAgdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5z
aWduZWQgcmVwZWF0Q291bnQsIFMKICAgICBpZiAoIW1fYW5pbWF0aW9uVmFsaWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyB0b0F0RW5kT2ZEdXJhdGlvbjsKICAgICBmbG9hdCBlZmZl
Y3RpdmVQZXJjZW50OwogICAgIENhbGNNb2RlIG1vZGUgPSBjYWxjTW9kZSgpOwogICAgIGlmIChh
bmltYXRpb25Nb2RlKCkgPT0gVmFsdWVzQW5pbWF0aW9uKSB7CiAgICAgICAgIFN0cmluZyBmcm9t
OwogICAgICAgICBTdHJpbmcgdG87Ci0gICAgICAgIGN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmlt
YXRpb24ocGVyY2VudCwgZWZmZWN0aXZlUGVyY2VudCwgZnJvbSwgdG8sIHRvQXRFbmRPZkR1cmF0
aW9uKTsKKyAgICAgICAgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihwZXJjZW50LCBl
ZmZlY3RpdmVQZXJjZW50LCBmcm9tLCB0byk7CiAgICAgICAgIGlmIChmcm9tICE9IG1fbGFzdFZh
bHVlc0FuaW1hdGlvbkZyb20gfHwgdG8gIT0gbV9sYXN0VmFsdWVzQW5pbWF0aW9uVG8pIHsKICAg
ICAgICAgICAgIG1fYW5pbWF0aW9uVmFsaWQgPSBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoZnJv
bSwgdG8pOwogICAgICAgICAgICAgaWYgKCFtX2FuaW1hdGlvblZhbGlkKQpAQCAtNjM1LDcgKzYz
NSw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBl
cmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTCiAgICAgZWxzZQogICAgICAgICBlZmZlY3Rp
dmVQZXJjZW50ID0gcGVyY2VudDsKIAotICAgIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZWZmZWN0
aXZlUGVyY2VudCwgcmVwZWF0Q291bnQsIHRvQXRFbmRPZkR1cmF0aW9uLCByZXN1bHRFbGVtZW50
KTsKKyAgICBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGVmZmVjdGl2ZVBlcmNlbnQsIHJlcGVhdENv
dW50LCByZXN1bHRFbGVtZW50KTsKIH0KIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojpjb21w
dXRlQ1NTUHJvcGVydHlWYWx1ZShTVkdFbGVtZW50KiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlk
LCBTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgK
aW5kZXggZmM3NGViYmRiMDcxMDJiZDdiOTcwNTAwMDdmMjRhMjIwZTU4NDY2MC4uNWM2NDI5ZGE1
MWQzM2U4N2MwZDU1OGUxNTgzNmQ3YTg5MjhhMDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5oCkBAIC0xMTUsMjggKzExNSw4IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci0gICAgdm9pZCBhZGp1c3RGcm9t
VG9WYWx1ZXMoQW5pbWF0ZWRUeXBlICgqcGFyc2VUeXBlRnJvbVN0cmluZykoU1ZHQW5pbWF0aW9u
RWxlbWVudCosIGNvbnN0IFN0cmluZyYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFu
aW1hdGVkVHlwZSYgZnJvbVR5cGUsIEFuaW1hdGVkVHlwZSYgdG9UeXBlLCBBbmltYXRlZFR5cGUm
IGFuaW1hdGVkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYgcGVyY2Vu
dGFnZSwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgYm9vbCBhZGp1c3RGcm9tVG9M
aXN0VmFsdWVzKGNvbnN0IEFuaW1hdGVkVHlwZSYgZnJvbUxpc3QsIGNvbnN0IEFuaW1hdGVkVHlw
ZSYgdG9MaXN0LCBBbmltYXRlZFR5cGUmIGFuaW1hdGVkTGlzdCwgZmxvYXQgcGVyY2VudGFnZSwg
Ym9vbCByZXNpemVBbmltYXRlZExpc3RJZk5lZWRlZCA9IHRydWUpCiAgICAgewotICAgICAgICAv
LyBUby1hbmltYXRpb24gdXNlcyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5
IGFuaW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUuCi0gICAgICAgIGlmIChhbmltYXRpb25Nb2Rl
KCkgPT0gVG9BbmltYXRpb24pCi0gICAgICAgICAgICBmcm9tVHlwZSA9IEFuaW1hdGVkVHlwZShh
bmltYXRlZFR5cGUpOwotCi0gICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlPEFuaW1hdGVkVHlw
ZT4ocGFyc2VUeXBlRnJvbVN0cmluZywgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUsIGZyb21UeXBl
LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlPEFuaW1hdGVk
VHlwZT4ocGFyc2VUeXBlRnJvbVN0cmluZywgbV90b1Byb3BlcnR5VmFsdWVUeXBlLCB0b1R5cGUs
IGNvbnRleHRFbGVtZW50KTsKLQotICAgICAgICBpZiAoY2FsY01vZGUoKSA9PSBDYWxjTW9kZURp
c2NyZXRlKQotICAgICAgICAgICAgcGVyY2VudGFnZSA9IHBlcmNlbnRhZ2UgPCAwLjUgPyAwIDog
MTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci0gICAgYm9v
bCBhZGp1c3RGcm9tVG9MaXN0VmFsdWVzKEFuaW1hdGVkVHlwZSAoKnBhcnNlVHlwZUZyb21TdHJp
bmcpKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKSwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFuaW1hdGVkVHlwZSYgZnJvbUxpc3QsIEFuaW1hdGVkVHlwZSYg
dG9MaXN0LCBBbmltYXRlZFR5cGUmIGFuaW1hdGVkTGlzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQmIHBlcmNlbnRhZ2UsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBib29sIHJlc2l6ZUFuaW1hdGVkTGlzdElmTmVlZGVkID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAg
IGFkanVzdEZyb21Ub1ZhbHVlcyhwYXJzZVR5cGVGcm9tU3RyaW5nLCBmcm9tTGlzdCwgdG9MaXN0
LCBhbmltYXRlZExpc3QsIHBlcmNlbnRhZ2UsIGNvbnRleHRFbGVtZW50KTsKLQogICAgICAgICAv
LyBJZiBubyAndG8nIHZhbHVlIGlzIGdpdmVuLCBub3RoaW5nIHRvIGFuaW1hdGUuCiAgICAgICAg
IHVuc2lnbmVkIHRvTGlzdFNpemUgPSB0b0xpc3Quc2l6ZSgpOwogICAgICAgICBpZiAoIXRvTGlz
dFNpemUpCkBAIC0xNDcsOSArMTI3LDkgQEAgcHVibGljOgogICAgICAgICBpZiAoZnJvbUxpc3RT
aXplICE9IHRvTGlzdFNpemUgJiYgZnJvbUxpc3RTaXplKSB7CiAgICAgICAgICAgICBpZiAocGVy
Y2VudGFnZSA8IDAuNSkgewogICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25Nb2RlKCkgIT0g
VG9BbmltYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIGFuaW1hdGVkTGlzdCA9IGZyb21MaXN0
OworICAgICAgICAgICAgICAgICAgICBhbmltYXRlZExpc3QgPSBBbmltYXRlZFR5cGUoZnJvbUxp
c3QpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgYW5pbWF0ZWRMaXN0ID0g
dG9MaXN0OworICAgICAgICAgICAgICAgIGFuaW1hdGVkTGlzdCA9IEFuaW1hdGVkVHlwZSh0b0xp
c3QpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE2Miw3ICsx
NDIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRU
eXBlPgotICAgIHZvaWQgYW5pbWF0ZURpc2NyZXRlVHlwZShmbG9hdCBwZXJjZW50YWdlLCBBbmlt
YXRlZFR5cGUmIGZyb21UeXBlLCBBbmltYXRlZFR5cGUmIHRvVHlwZSwgQW5pbWF0ZWRUeXBlJiBh
bmltYXRlZFR5cGUpCisgICAgdm9pZCBhbmltYXRlRGlzY3JldGVUeXBlKGZsb2F0IHBlcmNlbnRh
Z2UsIGNvbnN0IEFuaW1hdGVkVHlwZSYgZnJvbVR5cGUsIGNvbnN0IEFuaW1hdGVkVHlwZSYgdG9U
eXBlLCBBbmltYXRlZFR5cGUmIGFuaW1hdGVkVHlwZSkKICAgICB7CiAgICAgICAgIGlmICgoYW5p
bWF0aW9uTW9kZSgpID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBh
bmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gfHwgcGVyY2VudGFnZSA9PSAxKSB7CiAgICAg
ICAgICAgICBhbmltYXRlZFR5cGUgPSBBbmltYXRlZFR5cGUodG9UeXBlKTsKQEAgLTIyMiwxMyAr
MjAyLDE0IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlv
bkF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxh
dGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25T
dHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQs
IGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcsIFNWR1NNSUxFbGVtZW50KiBy
ZXN1bHRFbGVtZW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiBy
ZXN1bHRFbGVtZW50KSA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmIC8qZnJvbVN0cmluZyovLCBjb25zdCBTdHJpbmcmIC8qdG9TdHJpbmcqLykg
eyByZXR1cm4gLTEuZjsgfQogICAgIHZpcnR1YWwgUGF0aCBhbmltYXRpb25QYXRoKCkgY29uc3Qg
eyByZXR1cm4gUGF0aCgpOyB9CiAKLSAgICB2b2lkIGN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmlt
YXRpb24oZmxvYXQgcGVyY2VudCwgZmxvYXQmIGVmZmVjdGl2ZVBlcmNlbnQsIFN0cmluZyYgZnJv
bSwgU3RyaW5nJiB0bywgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvbik7CisgICAgdm9pZCBjdXJy
ZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3Rp
dmVQZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmluZyYgdG8pOwogICAgIHZvaWQgY2FsY3VsYXRl
S2V5VGltZXNGb3JDYWxjTW9kZVBhY2VkKCk7CiAgICAgZmxvYXQgY2FsY3VsYXRlUGVyY2VudEZy
b21LZXlQb2ludHMoZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAgICAgdm9pZCBjdXJyZW50VmFsdWVz
RnJvbUtleVBvaW50cyhmbG9hdCBwZXJjZW50LCBmbG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3Ry
aW5nJiBmcm9tLCBTdHJpbmcmIHRvKSBjb25zdDsK
</data>
<flag name="review"
          id="145710"
          type_id="1"
          status="+"
          setter="zherczeg"
    />
          </attachment>
      

    </bug>

</bugzilla>