<?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>66492</bug_id>
          
          <creation_ts>2011-08-18 12:29:59 -0700</creation_ts>
          <short_desc>[chromium] Separate platform gesture events from synthetic gestures</short_desc>
          <delta_ts>2011-08-31 10:39:18 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>66577</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>larsgk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>453246</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-18 12:29:59 -0700</bug_when>
    <thetext>The chromium gesture recognizer overloads PlatformGestureEvents with additional semantics that ought to be separated into a separate kind of event per discussion in https://bugs.webkit.org/show_bug.cgi?id=65044.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453256</commentid>
    <comment_count>1</comment_count>
      <attachid>104384</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-18 12:33:30 -0700</bug_when>
    <thetext>Created attachment 104384
Patch, not to be committed. Looking for feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453259</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 12:37:24 -0700</bug_when>
    <thetext>Attachment 104384 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;S...&quot; exit_code: 1

Source/WebCore/platform/SyntheticGestureEvent.h:79:  Extra space between const and FloatSize&amp;  [whitespace/declaration] [3]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456372</commentid>
    <comment_count>3</comment_count>
      <attachid>105058</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-24 13:29:23 -0700</bug_when>
    <thetext>Created attachment 105058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456374</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-24 13:31:18 -0700</bug_when>
    <thetext>Benjamin: please have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456376</commentid>
    <comment_count>5</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-24 13:33:31 -0700</bug_when>
    <thetext>Benjamin: please have a look at the SyntheticGestureEvent related portions. Does this address your objections?

Adam: once Benjamin is satisfied: I believe this maintains layering separation. And please have a look at the chromium specific portions once Benjamin is satisfied.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456394</commentid>
    <comment_count>6</comment_count>
      <attachid>105058</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-24 13:56:01 -0700</bug_when>
    <thetext>Comment on attachment 105058
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2247
&gt; +        // fp.move(synthetic.delta());
&gt; +        // IntPoint point(roundedIntPoint(fp));

We usually frown upon commented out code.

&gt; Source/WebCore/page/EventHandler.cpp:2249
&gt; +        fprintf(stderr, &quot;EventHandler::handleSyntheticEvent ScrollUpdateType\n\tdelta %f, %f\n&quot;, synthetic.delta().width(), synthetic.delta().height());

WebKit has a LOG macro if you&apos;d like to log things.

&gt; Source/WebCore/platform/ScrollAnimator.cpp:45
&gt; +// remove
&gt; +#include &lt;stdio.h&gt;

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456406</commentid>
    <comment_count>7</comment_count>
      <attachid>105058</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-24 14:19:46 -0700</bug_when>
    <thetext>Comment on attachment 105058
Patch

!@* I always forget to proof-read something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456421</commentid>
    <comment_count>8</comment_count>
      <attachid>105070</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-24 14:44:01 -0700</bug_when>
    <thetext>Created attachment 105070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456863</commentid>
    <comment_count>9</comment_count>
      <attachid>105070</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-25 08:13:37 -0700</bug_when>
    <thetext>Comment on attachment 105070
Patch

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

&gt; LayoutTests/ChangeLog:5
&gt; +        Remove a layout test obsoleted by removing
&gt; +        synthetic gesture events from PlatformGestureEvent.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=66492

What&apos;s wrong with this test? Is there another test for touchdown + touchup = synthetic click?

&gt; Source/WebCore/page/EventHandler.cpp:2208
&gt; +// TODO(rjkroege): revert thsi to something more like the previous version

To remove :)

&gt; Source/WebCore/platform/SyntheticGestureEvent.h:53
&gt; +        GestureBeginType,
&gt; +        GestureChangeType,
&gt; +        GestueEndType,

I suggest to keep those out until the you add the implementation.

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:111
&gt; +    // FIXME: make certain that screen positions are valid.
&gt; +    gestures-&gt;append(SyntheticGestureEvent(SyntheticGestureEvent::TapEndType, FloatPoint(firstTouchPosition()), FloatPoint(firstTouchPosition()), m_lastTouchTime, FloatSize(), m_shiftKey, m_ctrlKey, m_altKey, m_metaKey));

Look like the screen position are not valid here, and that should not be too difficult to fix. I suggest you fix that now instead of getting weird bugs later.

&gt; Source/WebKit/chromium/public/WebInputEvent.h:113
&gt; +        
&gt; +        // FIXME: insert WebSyntheticGestureEvent

I am not familiar with Chromium, don&apos;t you need this to get the feature to work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456865</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-25 08:17:36 -0700</bug_when>
    <thetext>Just a few comment. The patch looks good.

Lars, could you apply this patch locally and update https://bugs.webkit.org/show_bug.cgi?id=65545 to use SyntheticGestureEvent::TapEndType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456944</commentid>
    <comment_count>11</comment_count>
      <attachid>105205</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-25 10:12:05 -0700</bug_when>
    <thetext>Created attachment 105205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456955</commentid>
    <comment_count>12</comment_count>
      <attachid>105070</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-25 10:22:12 -0700</bug_when>
    <thetext>Comment on attachment 105070
Patch

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

&gt;&gt; LayoutTests/ChangeLog:5
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=66492
&gt; 
&gt; What&apos;s wrong with this test? Is there another test for touchdown + touchup = synthetic click?

This test verified that PlatformGestureEvents with TapType would cause delivery of the appropriate mousemove, mousedown, mouseup sequence needed for a click. This patch removes TapType so this particular layout test doesn&apos;t apply.

The delivery of synthetic clicks is still exercised by fast/events/touch/touch-gesture-click.html.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2208
&gt;&gt; +// TODO(rjkroege): revert thsi to something more like the previous version
&gt; 
&gt; To remove :)

done, easily. :-)

&gt;&gt; Source/WebCore/platform/SyntheticGestureEvent.h:53
&gt;&gt; +        GestueEndType,
&gt; 
&gt; I suggest to keep those out until the you add the implementation.

done.

&gt;&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:111
&gt;&gt; +    gestures-&gt;append(SyntheticGestureEvent(SyntheticGestureEvent::TapEndType, FloatPoint(firstTouchPosition()), FloatPoint(firstTouchPosition()), m_lastTouchTime, FloatSize(), m_shiftKey, m_ctrlKey, m_altKey, m_metaKey));
&gt; 
&gt; Look like the screen position are not valid here, and that should not be too difficult to fix. I suggest you fix that now instead of getting weird bugs later.

Thanks for the catch. Fixed.

&gt;&gt; Source/WebKit/chromium/public/WebInputEvent.h:113
&gt;&gt; +        // FIXME: insert WebSyntheticGestureEvent
&gt; 
&gt; I am not familiar with Chromium, don&apos;t you need this to get the feature to work?

No. Currently: SyntheticGestureEvents get manufactured by the PlatformGestureRecognizer instance by Chromium WebKit and sent into WebCore.  This FIXME records a future enhancement to the Chromium WebKit API to permit delivering SyntheticGestureEvents from the Chromium embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458154</commentid>
    <comment_count>13</comment_count>
      <attachid>105205</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-29 03:42:30 -0700</bug_when>
    <thetext>Comment on attachment 105205
Patch

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

Look good!

&gt; Source/WebCore/page/EventHandler.cpp:2235
&gt; +        PlatformMouseEvent fakeMouseMove(roundedIntPoint(synthetic.position()), roundedIntPoint(synthetic.globalPosition()), NoButton, MouseEventMoved, /* clickCount */ 1, synthetic.shiftKey(), synthetic.ctrlKey(), synthetic.altKey(), synthetic.metaKey(), synthetic.timestamp());
&gt; +        PlatformMouseEvent fakeMouseDown(roundedIntPoint(synthetic.position()), roundedIntPoint(synthetic.globalPosition()), LeftButton, MouseEventPressed, /* clickCount */ 1, synthetic.shiftKey(), synthetic.ctrlKey(), synthetic.altKey(), synthetic.metaKey(), synthetic.timestamp());
&gt; +        PlatformMouseEvent fakeMouseUp(roundedIntPoint(synthetic.position()), roundedIntPoint(synthetic.globalPosition()), LeftButton, MouseEventReleased, /* clickCount */ 1, synthetic.shiftKey(), synthetic.ctrlKey(), synthetic.altKey(), synthetic.metaKey(), synthetic.timestamp());

It would be a bit cleaner to have local variables for roundedIntPoint(synthetic.position()) and roundedIntPoint(synthetic.globalPosition()) instead of repeating the call.

&gt; Source/WebCore/page/EventHandler.cpp:2249
&gt; +        // FIXME: Implement additional synthetic gestures.

This comment does not convey enough information in my opinion. You should mention examples of what is missing (or not have the comment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458235</commentid>
    <comment_count>14</comment_count>
      <attachid>105494</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-29 09:02:17 -0700</bug_when>
    <thetext>Created attachment 105494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458236</commentid>
    <comment_count>15</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-29 09:03:47 -0700</bug_when>
    <thetext>Comments addressed in new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458304</commentid>
    <comment_count>16</comment_count>
      <attachid>105494</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-29 11:16:18 -0700</bug_when>
    <thetext>Comment on attachment 105494
Patch

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

I think we should avoid overloading the term &quot;synthetic event&quot;.  That already means events created from document.createEvent() via script.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:-132
&gt; -    m_shiftKey = (e.modifiers &amp; WebInputEvent::ShiftKey);

why do these lines get deleted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458319</commentid>
    <comment_count>17</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-29 11:35:40 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 105494 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105494&amp;action=review
&gt; 
&gt; I think we should avoid overloading the term &quot;synthetic event&quot;.  That already means events created from document.createEvent() via script.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:-132
&gt; &gt; -    m_shiftKey = (e.modifiers &amp; WebInputEvent::ShiftKey);
&gt; 
&gt; why do these lines get deleted?

Because I removed the fields from PlatformGestureEvent that I had added in https://bugs.webkit.org/show_bug.cgi?id=65044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458320</commentid>
    <comment_count>18</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-29 11:35:40 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 105494 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105494&amp;action=review
&gt; 
&gt; I think we should avoid overloading the term &quot;synthetic event&quot;.  That already means events created from document.createEvent() via script.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:-132
&gt; &gt; -    m_shiftKey = (e.modifiers &amp; WebInputEvent::ShiftKey);
&gt; 
&gt; why do these lines get deleted?

Because I removed the fields from PlatformGestureEvent that I had added in https://bugs.webkit.org/show_bug.cgi?id=65044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459719</commentid>
    <comment_count>19</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-31 10:39:18 -0700</bug_when>
    <thetext>After extensive off-line discussion, it has been decided that it is unnecessary to continue with this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104384</attachid>
            <date>2011-08-18 12:33:30 -0700</date>
            <delta_ts>2011-08-24 13:29:19 -0700</delta_ts>
            <desc>Patch, not to be committed. Looking for feedback.</desc>
            <filename>bug-66492-20110818153400.patch</filename>
            <type>text/plain</type>
            <size>22012</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxNjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCAxNjIxNTlmM2I4NzViNzc2MzlhNzIzN2U4YmExNGI4NzY2MzMyNTcwLi4yNjk4NTZh
YjBkNGMxYjZmZjk3ZWFlYjIzOTUzNjI2NjE5MTk0NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC04Nyw2ICs4NywxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVy
ZUV2ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5j
bHVkZSAiU3ludGhldGljR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2Uu
aCIKQEAgLTIyMDEsNiArMjIwNSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50KiB3aGVlbEV2CiB9CiAKICNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisvLyBUT0RPKHJqa3JvZWdlKTogcmV2ZXJ0IHRoc2kg
dG8gc29tZXRoaW5nIG1vcmUgbGlrZSB0aGUgcHJldmlvdXMgdmVyc2lvbgogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2Vz
dHVyZUV2ZW50KQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoaXQgdGVzdCBhbmQgZ28g
dG8gdGhlIGNvcnJlY3Qgc3ViZnJhbWUgcmF0aGVyIHRoYW4gCkBAIC0yMjA4LDggKzIyMTMsMjYg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgIC8vIHRoYXQgaWYgYSBmcmFtZSBnZXRzIGEg
Z2VzdHVyZSBiZWdpbiBnZXN0dXJlLCBpdCBnZXRzIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgLy8g
ZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAotICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkg
ewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB2aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dO
SVpFUikKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50
aGV0aWNHZXN0dXJlRXZlbnQmIHN5bnRoZXRpYykKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgaGl0IHRlc3QgYW5kIGdvIHRvIHRoZSBjb3JyZWN0IHN1YmZyYW1lLgorCisgICAgc3dpdGNo
IChzeW50aGV0aWMudHlwZSgpKSB7CisgICAgY2FzZSBUYXBCZWdpblR5cGU6CisgICAgICAgIC8v
IEZJWE1FOiBzdGFydCB0aW1lciBmb3IgbGluayBoaWdobGlnaHQgbm93LgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlRhcEVuZFR5cGU6IHsK
KyAgICAgICAgLy8gRklYTUU6IGhhbHQgdGltZXIgZm9yIGxpbmsgaGlnaGxpZ2h0aW5nLgogICAg
ICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIG5vdCBoaXQgdGVzdCBtdWx0aXBs
ZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhhcyBiZWVuIGNvcnJlY3RlZCBhcyBzdWdnZXN0ZWQg
YWJvdmUuCiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVF
dmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24s
IE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRL
ZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0
dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwg
Z2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVz
c2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJl
RXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRh
S2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CkBAIC0yMjE5LDIxICsyMjQyLDIwIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
ZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgU3ludGhldGlj
R2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CiAgICAgICAgIGNvbnN0IGZsb2F0IHRp
Y2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwogICAgICAgICAv
LyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1wbGVtZW50YXRpb24gb25jZSB0aGUgYWJv
dmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQg
c3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRl
bHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyB0aWNrRGl2aXNvciwgZ2VzdHVyZUV2ZW50
LmRlbHRhWSgpIC8gdGlja0Rpdmlzb3IsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0Fj
Y2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsK
ICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEJlZ2luVHlwZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBl
OgotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAgICAgIGlm
ICghdmlldykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2aWV3LT5oYW5k
bGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Y2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICBjYXNlIFN5
bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6R2VzdHVyZUJlZ2luVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVF
dmVudDo6R2VzdHVyZUNoYW5nZVR5cGU6CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6
Okdlc3R1ZUVuZFR5cGU6CisgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgZmxpY2ssIHpvb20s
IGV0Yy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGNmMmZlODE0M2UyY2Y5YTViY2IwNDg4
NzA2M2EzY2RmM2Y2MWIzMTUuLjRkZDBhZGUwYzc3MjFjZmM3NDE1NGVjMmFkZGU5MGZkMzAyMWQ2
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNzksNiArNzksOSBAQCBjbGFz
cyBXaWRnZXQ7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogY2xhc3MgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorY2xhc3Mg
U3ludGhldGljR2VzdHVyZUV2ZW50OworI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogZXh0ZXJuIGNvbnN0IGludCBMaW5rRHJhZ0h5c3RlcmVzaXM7CkBAIC0xNjEsNiArMTY0LDkg
QEAgcHVibGljOgogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICBib29sIGhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCisjaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBib29sIGhhbmRsZVN5bnRoZXRpY0V2ZW50KGNv
bnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1H
ZXN0dXJlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2
ZW50LmgKaW5kZXggMThiN2QxYWEyZDFlZGY5YTgzZGVmMmYyNjZmMjUwOTAzNzk2ODQ3Yi4uMDBm
MTBjYjE4YTRlZTA0Zjk3ZDk2OGJlOWNkYjI1NGU2ODQ5YjVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCkBAIC0zNyw4ICszNyw2IEBAIHB1
YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBTY3JvbGxCZWdpblR5cGUsCiAgICAgICAg
IFNjcm9sbEVuZFR5cGUsCi0gICAgICAgIFNjcm9sbFVwZGF0ZVR5cGUsCi0gICAgICAgIFRhcFR5
cGUKICAgICB9OwogCiAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoKQpAQCAtNDcsMTcgKzQ1LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlw
ZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgZmxvYXQgZGVsdGFYLCBjb25z
dCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgbWV0YUtleSkKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0
IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25z
dCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1f
cG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3Np
dGlvbikKICAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCi0gICAgICAgICwgbV9kZWx0
YVgoZGVsdGFYKQotICAgICAgICAsIG1fZGVsdGFZKGRlbHRhWSkKLSAgICAgICAgLCBtX3NoaWZ0
S2V5KHNoaWZ0S2V5KQotICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICAgICAsIG1f
YWx0S2V5KGFsdEtleSkKLSAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKICAgICB7CiAgICAg
fQogCkBAIC04MCwxMiArNzIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UG9pbnQgbV9wb3NpdGlv
bjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgIGRvdWJsZSBtX3RpbWVzdGFt
cDsKLSAgICBmbG9hdCBtX2RlbHRhWDsKLSAgICBmbG9hdCBtX2RlbHRhWTsKLSAgICBib29sIG1f
c2hpZnRLZXk7Ci0gICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgYm9vbCBtX2FsdEtleTsKLSAgICBi
b29sIG1fbWV0YUtleTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaAppbmRleCAw
Yjg2YTkyNzZmYjZiZGVmOWI3YzM3ODgzYzUwOTNmNzdlMDRjYjNjLi42OTliN2FlNjg0M2M2NTZi
NmUzMjY1MWI3ZjM3Y2UyZTE1YzlhZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZu
ZGVmIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAogI2RlZmluZSBQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyX2gKIAotI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjaW5jbHVk
ZSAiU3ludGhldGljR2VzdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IGNyZWF0ZSgpOwog
ICAgIHZpcnR1YWwgflBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKTsKIAotICAgIHR5cGVkZWYg
UGFzc093blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gUGFzc0dlc3R1cmVzOwor
ICAgIHR5cGVkZWYgUGFzc093blB0cjxWZWN0b3I8U3ludGhldGljR2VzdHVyZUV2ZW50PiA+IFBh
c3NHZXN0dXJlczsKIAogICAgIC8vIEludm9rZWQgZm9yIGVhY2ggdG91Y2ggZXZlbnQgYW5kIHJl
dHVybnMgMCBvciBtb3JlIHJlc3VsdGluZyBnZXN0dXJlcy4KICAgICB2aXJ0dWFsIFBhc3NHZXN0
dXJlcyBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3ludGhldGljR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWFmMTQ0NDNjNDQ4Mjhl
NWMxMmFkZDQ2NzIwNzI2MDBmYTIxODkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3ludGhldGljR2VzdHVyZUV2ZW50LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTeW50aGV0aWNHZXN0dXJlRXZlbnRfaAorI2RlZmluZSBTeW50aGV0aWNHZXN0dXJlRXZl
bnRfaAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisKKyNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRXZlbnRIYW5kbGVyOworY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OworCitjbGFzcyBT
eW50aGV0aWNHZXN0dXJlRXZlbnQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAg
IFRhcEJlZ2luVHlwZSwKKyAgICAgICAgVGFwRW5kVHlwZSwKKyAgICAgICAgU2Nyb2xsQmVnaW5U
eXBlLAorICAgICAgICBTY3JvbGxFbmRUeXBlLAorICAgICAgICBTY3JvbGxVcGRhdGVUeXBlLAor
ICAgICAgICBHZXN0dXJlQmVnaW5UeXBlLAorICAgICAgICBHZXN0dXJlQ2hhbmdlVHlwZSwKKyAg
ICAgICAgR2VzdHVlRW5kVHlwZSwKKyAgICB9OworCisgICAgU3ludGhldGljR2VzdHVyZUV2ZW50
KCkKKyAgICAgICAgOiBtX3R5cGUoU2Nyb2xsQmVnaW5UeXBlKQorICAgICAgICAsIG1fdGltZXN0
YW1wKDApCisgICAgeworICAgIH0KKworICAgIFN5bnRoZXRpY0dlc3R1cmVFdmVudChUeXBlIHR5
cGUsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQor
ICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisg
ICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKKyAgICAgICAgLCBtX3Rp
bWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbV9kZWx0YShkZWx0YSkKKyAgICAgICAgLCBt
X3NoaWZ0S2V5KHNoaWZ0S2V5KQorICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQorICAgICAg
ICAsIG1fYWx0S2V5KGFsdEtleSkKKyAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKKyAgICB7
CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCisgICAgY29uc3QgRmxvYXRQb2ludCYg
Z2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9IC8vIFNj
cmVlbiBjb29yZGluYXRlcy4KKyAgICBjb25zdCAgRmxvYXRTaXplJiBkZWx0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsdGE7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lc3RhbXA7IH0KKworICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3No
aWZ0S2V5OyB9CisgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9
CisgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsgfQorICAgIGJvb2wg
bWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
VHlwZSBtX3R5cGU7CisgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQg
bV9nbG9iYWxQb3NpdGlvbjsKKyAgICBGbG9hdFNpemUgbV9kZWx0YTsKKyAgICBkb3VibGUgbV90
aW1lc3RhbXA7CisgICAgCisgICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wgbV9jdHJsS2V5
OworICAgIGJvb2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX21ldGFLZXk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
I2VuZGlmIC8vIFN5bnRoZXRpY0dlc3R1cmVFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5kZXggYzZjYzJi
NWYzNGI0MmU2NGMyNTU4NWQ5Zjc4Yzk1Y2I5YTYxZTc1ZC4uMGQ5MzdiZjZkODFlYWJhMDk0NDRl
NDY1MTVhZGZmNTVjY2E1MmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtNzAsNyArNzAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpID0gMDsKICNlbmRpZgogI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmKSA9IDA7CiAjZW5k
aWYKIAogICAgICAgICAvLyBTY3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTA1ODIwMWQ5YWE3YTg5ZTNkMGUwOWJmYWE0ZjM0NWE3
ZDEyNzQ0Ny4uNjJlOTA5MTBjZGI5MjFlOTY1M2U5YmMxZDBmOGU3MDI0OGJiYzYwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJHZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgiCiAKLSNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGSVhNRTogQ29udmVydCB0byBtZXRob2RzLgpA
QCAtMTA0LDcgKzEwMSw3IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6aXNJbnNpZGVN
YW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwCiAKIHZvaWQgSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBn
ZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50
LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1f
Y3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoU3lu
dGhldGljR2VzdHVyZUV2ZW50KFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwRW5kVHlwZSwgdG91
Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCBG
bG9hdFBvaW50KCksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkp
OwogfQogCiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmIGV2ZW50LCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCkBAIC0xMjYsMTIgKzEy
MywxMSBAQCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbgogICAgIHJldHVybiBnZXN0dXJlcy5yZWxl
YXNlKCk7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2Vz
dHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1
cmVzKQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRTY3JvbGxVcGRhdGVHZXN0
dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVy
ZXMpCiB7Ci0gICAgZmxvYXQgZGVsdGFYKHRvdWNoUG9pbnQucG9zKCkueCgpIC0gbV9maXJzdFRv
dWNoUG9zaXRpb24ueCgpKTsKLSAgICBmbG9hdCBkZWx0YVkodG91Y2hQb2ludC5wb3MoKS55KCkg
LSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOworICAgIEZsb2F0U2l6ZSBkZWx0YSh0b3VjaFBv
aW50LnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSwgdG91Y2hQb2ludC5wb3Mo
KS55KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOwogCi0gICAgZ2VzdHVyZXMtPmFwcGVu
ZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91
Y2hUaW1lLCBkZWx0YVgsIGRlbHRhWSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwg
bV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50aGV0aWNHZXN0dXJlRXZlbnQo
U3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlLCB0b3VjaFBvaW50LnBvcygp
LCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhLCBtX3NoaWZ0
S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICBtX2ZpcnN0VG91Y2hQ
b3NpdGlvbiA9IHRvdWNoUG9pbnQucG9zKCk7CiB9CiAKQEAgLTE1OSwxMSArMTU1LDE0IEBAIHVu
c2lnbmVkIGludCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpzaWduYXR1cmUoU3RhdGUgZ2VzdHVy
ZVN0YXRlLCB1bnNpZ25lZCBpZCwKIHN0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgZ2VzdHVy
ZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlBlbmRpbmdTeW50
aGV0aWNDbGljayk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50aGV0aWNHZXN0dXJlRXZlbnQo
U3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBCZWdpblR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRv
dWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgRmxvYXRQb2ludCgpLCBtX3No
aWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIHN0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBn
ZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJl
UmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CisgICAgaWYgKG1fc3RhdGUgPT0gU2Ny
b2xsKQorICAgICAgICBnZXN0dXJlcy0+YXBwZW5kKFN5bnRoZXRpY0dlc3R1cmVFdmVudChTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNo
UG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgRmxvYXRQb2ludCgpLCBtX3NoaWZ0
S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICBnZXN0dXJlUmVjb2du
aXplci0+cmVzZXQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xODYsNyArMTg1LDggQEAg
c3RhdGljIGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1
cmVSZWNvZ25pemVyLCBjb25zdCBQbGEKICAgICB9CiAKICAgICBpZiAocG9pbnQuc3RhdGUoKSA9
PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQgJiYgIWdlc3R1cmVSZWNvZ25pemVyLT5p
c0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKLSAgICAgICAgZ2VzdHVyZVJlY29nbml6
ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmUocG9pbnQsIGdlc3R1cmVzKTsKKyAgICAgICAgZ2VzdHVy
ZXMtPmFwcGVuZChTeW50aGV0aWNHZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpT
Y3JvbGxCZWdpblR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCks
IG1fbGFzdFRvdWNoVGltZSwgRmxvYXRQb2ludCgpLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1f
YWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNj
cm9sbFVwZGF0ZUdlc3R1cmUocG9pbnQsIGdlc3R1cmVzKTsKICAgICAgICAgZ2VzdHVyZVJlY29n
bml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlNjcm9sbCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAppbmRleCBiZWFjNDY1
M2UzOTc0ZTQxNDdmYTk3ZWIyMDM1ZDEyOTFmZDM3YzUwLi5iZjBjMGY1NjgxMzIwZDQ1Yjc0Yjk1
NWVlYjE4MzAzOTlhY2IzMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU2Nyb2xsCiAgICAgfTsKIAotICAgIHR5cGVkZWYgVmVj
dG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PiogR2VzdHVyZXM7CisgICAgdHlwZWRlZiBWZWN0b3I8
U3ludGhldGljR2VzdHVyZUV2ZW50PiogR2VzdHVyZXM7CiAgICAgdHlwZWRlZiBib29sICgqR2Vz
dHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKIAogICAgIH5Jbm5lckdlc3R1cmVSZWNvZ25p
emVyKCk7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5DbGlja1RpbWVX
aW5kb3coKTsKICAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYpOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFz
c0dlc3R1cmVzICBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7Ci0gICAgdm9pZCBhcHBlbmRTY3JvbGxH
ZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lkIGFw
cGVuZFNjcm9sbFVwZGF0ZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVy
ZXMpOwogICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgdmFsdWUpIHsgbV9zdGF0ZSA9IHZhbHVlOyB9
CiAgICAgU3RhdGUgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAK
aW5kZXggMjFjNDZlNjcxZWQ5NDM4Y2M2YmI0ZWIyNThkOTc1YzZmZDliMmQwNy4uMDIzOTNlNjBj
ZDcwNzNlNTM5ODcxZWFjOTVmNmQ0NjU2NDMzMTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcApAQCAtMjk0LDI1ICsyOTQs
MjggQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmKQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKIC8vIEZJWE1F
OiBSZWZhY3RvciB0aGlzIGNvZGUgdG8gc2hhcmUgZnVuY3Rpb25hbGl0eSB3aXRoIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50LgotYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCitib29s
IFBvcHVwQ29udGFpbmVyOjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0
dXJlRXZlbnQmIHN5bnRoZXRpYykKIHsKLSAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkp
IHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7Ci0gICAgICAgIFBs
YXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBn
ZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50
LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgp
LCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50
ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBn
ZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVu
dC50aW1lc3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChn
ZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExl
ZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJl
RXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFs
dEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkp
OworICAgIHN3aXRjaCAoc3ludGhldGljLnR5cGUoKSkgeworICAgIGNhc2UgU3ludGhldGljR2Vz
dHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VNb3ZlKHN5bnRoZXRpYy5wb3NpdGlvbigpLCBzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSwg
Tm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBzeW50aGV0aWMu
c2hpZnRLZXkoKSwgc3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGljLmFsdEtleSgpLCBzeW50
aGV0aWMubWV0YUtleSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihzeW50aGV0aWMucG9zaXRpb24oKSwgc3ludGhldGlj
Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlj
a0NvdW50ICovIDEsIHN5bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBz
eW50aGV0aWMuYWx0S2V5KCksIHN5bnRoZXRpYy5tZXRhS2V5KCksIHN5bnRoZXRpYy50aW1lc3Rh
bXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChzeW50aGV0aWMu
cG9zaXRpb24oKSwgc3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNl
RXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBzeW50aGV0aWMuc2hpZnRLZXkoKSwg
c3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGljLmFsdEtleSgpLCBzeW50aGV0aWMubWV0YUtl
eSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOwogICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVF
dmVudChmYWtlTW91c2VNb3ZlKTsKICAgICAgICAgaGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1v
dXNlRG93bik7CiAgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKLSAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRo
ZXRpY1doZWVsRXZlbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9i
YWxQb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVko
KSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8gMTIwLjBmLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkg
LyAxMjAuMGYsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNl
LCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKKyAgICBjYXNlIFN5bnRo
ZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChzeW50aGV0aWMucG9zaXRpb24oKSwgc3ludGhl
dGljLmdsb2JhbFBvc2l0aW9uKCksIHN5bnRoZXRpYy5kZWx0YVgoKSwgc3ludGhldGljLmRlbHRh
WSgpLCBzeW50aGV0aWMuZGVsdGFYKCkgLyAxMjAuMGYsIHN5bnRoZXRpYy5kZWx0YVkoKSAvIDEy
MC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIHN5
bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5
KCksIHN5bnRoZXRpYy5tZXRhS2V5KCkpOwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRo
ZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZl
bnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Ny
b2xsRW5kVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6R2VzdHVyZUJlZ2lu
VHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6R2VzdHVyZUNoYW5nZVR5cGU6
CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6Okdlc3R1ZUVuZFR5cGU6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMmJmYmY0N2I0MWFiYzRjZDliOWYwNDc4ZTc5OWY2
ZWY1YjU2MDEzZi4uYjc3NTIzZmM0ZmMxYWQ2NTc3ZGY4Mzg1YWY3YTg5YmQ1Nzc1N2ZlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNzgwLDkgKzc4
MCw5IEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYg
ZXZlbnQpCiAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcik7
CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIE93blB0cjxWZWN0b3I8V2Vi
Q29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNv
Z25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBk
ZWZhdWx0UHJldmVudGVkKSk7CisgICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpTeW50aGV0aWNH
ZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNz
VG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBkZWZhdWx0UHJldmVudGVk
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkgPSAwOyBpIDwgZ2VzdHVyZUV2ZW50cy0+c2l6
ZSgpOyBpKyspCi0gICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnRzLT5hdChpKSk7CisgICAgICAgIG1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVN5bnRoZXRpY0V2
ZW50KGdlc3R1cmVFdmVudHMtPmF0KGkpKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGRlZmF1bHRQ
cmV2ZW50ZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105058</attachid>
            <date>2011-08-24 13:29:23 -0700</date>
            <delta_ts>2011-08-24 14:43:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66492-20110824162957.patch</filename>
            <type>text/plain</type>
            <size>55447</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNmJmMTBhZmQ1ZTc1NjhlNDc4MDEy
ZjQwNzUyMGJiYzVmYTMxNjM4Li5lNjNjYzViZGU0ZjI0N2UzNDc0NGFjMDc3ZTZiYjU1YjViZjc5
MzJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMjQgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBhIGxheW91dCB0ZXN0IG9i
c29sZXRlZCBieSByZW1vdmluZworICAgICAgICBzeW50aGV0aWMgZ2VzdHVyZSBldmVudHMgZnJv
bSBQbGF0Zm9ybUdlc3R1cmVFdmVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2st
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvZ2VzdHVyZS1jbGljay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisKIDIwMTEtMDgtMjQgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5pbmcgbWVkaWEvdmlkZW8t
Y3VycmVudFRpbWUtc2V0Lmh0bWwgZHVlIHRvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1ZmExYTcxZTMwMjliODU2YTExOTRm
YWJkZmQ4ZTAyYmIyMzBhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xp
Y2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0
cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLUdlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2su
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGlj
ay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWRjYzVhNjA4YWQ5YzIxNjAy
YTlhMDgzMjc3MWI3ZmVhOTgyZTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVy
ZS1jbGljay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCk7Ij4KLTxkaXYgaWQ9Imdlc3R1cmUiPgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotdmFyIGV4cGVjdGVkTW91c2VF
dmVudHMgPSA0OwotdmFyIG1vdXNlRXZlbnRzUmVjZWl2ZWQgPSAwOwotdmFyIGV2ZW50VHlwZXMg
PSBbICdtb3VzZW1vdmUnLCAnbW91c2Vkb3duJywgJ21vdXNldXAnLCAnY2xpY2snIF07Ci0KLWZ1
bmN0aW9uIGdlc3R1cmVFdmVudENhbGxiYWNrKGV2ZW50KQotewotICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50eXBlJywg
ZXZlbnRUeXBlc1ttb3VzZUV2ZW50c1JlY2VpdmVkXSk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVu
dC5jbGllbnRYJywgJzEwJyk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRZJywgJzEy
Jyk7Ci0gICAgICAgIG1vdXNlRXZlbnRzUmVjZWl2ZWQrKzsKLSAgICB9IGVsc2UgewotICAgICAg
ICBkZWJ1ZyhldmVudC50eXBlKTsKLSAgICAgICAgZGVidWcoZXZlbnQuY2xpZW50WCk7Ci0gICAg
ICAgIGRlYnVnKGV2ZW50LmNsaWVudFkpOwotICAgIH0KLX0KLQotLy8gQmVjYXVzZSB3ZSBtYXkg
bm90IGhhdmUgYSBnZXN0dXJlIHJlY29nbml6ZXIsIHdlIHNlbmQgYSBrZXkgcHJlc3MKLS8vIGV2
ZW50IHRvIGVuZCB0aGUgdGVzdCB3aXRob3V0IHRlbXBvcmFsIGZsYWtpbmVzcy4KLWZ1bmN0aW9u
IHF1aXRLZXlUb0VuZFRlc3QoZXZlbnQpIHsKLSAgICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGVuZFRlc3QoKQotewotICAgIGlmIChtb3VzZUV2ZW50c1JlY2VpdmVkIDwgZXhwZWN0ZWRNb3Vz
ZUV2ZW50cykgewotICAgICAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRl
ZCBvbiB0aGlzIHBsYXRmb3JtLicpOwotICAgIH0KLSAgICAvLyBCYWlsLgotICAgIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Ci0gICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZXN0dXJlJyk7Ci0gICAg
ZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBm
YWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZ2VzdHVyZUV2ZW50Q2Fs
bGJhY2ssIGZhbHNlKTsKLSAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGdlc3R1
cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
bW92ZSIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHF1aXRLZXlUb0VuZFRlc3QsIGZhbHNlKTsKLQotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgfQotCi0gICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4iKTsKLSAg
ICAgICAgLy8gQSAndGFwJyBnZXN0dXJlIGV2ZW50IHNob3VsZCBnZW5lcmF0ZSBhIHNlcXVlbmNl
IG9mIG1vdXNlIGV2ZW50cy4KLSAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVRhcCgxMCwgMTIp
OwotICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMCk7Ci0gICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJyAnKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIp
Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1
cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyMWRkODYwYmFkY2E2NWUyYmMwMjI0MDI0NDg0NDJi
NjFiYTIxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dl
c3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2Vtb3ZlIgotUEFTUyBldmVudC5j
bGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBp
cyAibW91c2Vkb3duIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVu
dFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2V1cCIKLVBBU1MgZXZlbnQuY2xpZW50
WCBpcyAxMAotUEFTUyBldmVudC5jbGllbnRZIGlzIDEyCi1QQVNTIGV2ZW50LnR5cGUgaXMgImNs
aWNrIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYWQyZjIzZDY1NzdiNWEzMTA1MjJlZDZkYzMyYjQzOThhZDk4MTA2MS4uYjNkNTk4
OGNlY2UzODZmNjlhNzRjODE2ZDQxYTQ1NTMyNTZlMTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY1IEBACisyMDExLTA4LTI0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBVc2UgYSBzeW50aGV0aWMgZXZlbnQgdHlwZSBmb3IgZ2VzdHVyZXMgZ2Vu
ZXJhdGVkIGJ5IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NDkyCisgICAgICAgCisgICAgICAgIFBlciBkaXNj
dXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NDoK
KyAgICAgICAgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIFN5bnRoZXRpY0dlc3R1cmVFdmVudCBm
b3IgZXZlbnRzCisgICAgICAgIGdlbmVyYXRlZCBieSBhIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIgaW5zdGFuY2UuIFNlcGFyYXRpbmcKKyAgICAgICAgc3ludGhldGljIGV2ZW50cyBmcm9tIGVt
YmVkZGVyLXNvdXJjZWQgUGxhdGZvcm1HZXN0dXJlRXZlbnRzCisgICAgICAgIGVsaW1pbmF0ZXMg
YnVncyBjYXVzZWQgYnkgbWl4aW5nIHRoZSBzaWRlIGVmZmVjdHMgb2Ygc3ludGhlc2l6ZWQKKyAg
ICAgICAgYW5kIHBsYXRmb3JtIGdlc3R1cmVzIGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBlbmFi
bGUKKyAgICAgICAgR0VTVFVSRV9SRUNPR05JWkVSIGluZGVwZW5kZW50bHkgb2YgR0VTVFVSRV9F
VkVOVFMuCisgICAgICAgIAorICAgICAgICBTeW50aGV0aWMgZ2VzdHVyZXMgY29udGludWUgdG8g
YmUgdGVzdGVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZVN5bnRoZXRpY0V2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFu
ZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6OlN5bnRoZXRpY0dlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
dGhldGljR2VzdHVyZUV2ZW50Ojpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0
aWNHZXN0dXJlRXZlbnQ6Omdsb2JhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bnRo
ZXRpY0dlc3R1cmVFdmVudDo6ZGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2Vz
dHVyZUV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVy
ZUV2ZW50OjpzaGlmdEtleSk6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZl
bnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50Ojph
bHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50OjptZXRhS2V5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRUYXBTdGFy
dEdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
OjphcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xs
R2VzdHVyZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjph
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxFbmQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2sp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmluU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlU3ludGhldGljRXZl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oOgorCiAyMDExLTA4LTI0ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSlNIVE1MSW1hZ2VFbGVtZW50IChhbmQgYXNzb2Np
YXRlZCBOb2RlKSBpcyBhYmFuZG9uZWQgd2hlbiBpbWFnZSBsb2FkIGlzIGNhbmNlbGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggOWQ3YjBjYzBlYzNhOTMwZjY2Yjk5ZjUzNzAzMWUyMGMyNTM5ODIzNy4u
ZTY3ZTc2OTQxYzA3ODI2NzdlMDM3ZDVhMDYwM2JjNDFmNjdkNTkyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNzA1LDYgKzcwNSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2VhcmNoUG9wdXBN
ZW51LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
U3lzdGVtVGltZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaGVtZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9UaGVtZVR5cGVzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDA4ZmQyNzc0MzI0MjczYmVlZGIxODNhNzhiNTNiNDQwMTFhNGI1MmUuLjA0NzIw
ZmU5MmRjZTE1MmZkZjQ4MzU2ODg3ZTM5YjczMjRjOGExODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTg3LDYgKzg3LDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNp
bmNsdWRlICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5j
ZS5oIgpAQCAtMjIwMSw2ICsyMjA1LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVl
bEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5vZGUsIFdoZWVsRXZlbnQqIHdoZWVsRXYKIH0KIAog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKy8vIFRPRE8ocmprcm9lZ2UpOiByZXZlcnQgdGhz
aSB0byBzb21ldGhpbmcgbW9yZSBsaWtlIHRoZSBwcmV2aW91cyB2ZXJzaW9uCiBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhpdCB0ZXN0IGFuZCBn
byB0byB0aGUgY29ycmVjdCBzdWJmcmFtZSByYXRoZXIgdGhhbiAKQEAgLTIyMDgsMzMgKzIyMTMs
NTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgIC8vIHRoYXQgaWYgYSBmcmFtZSBnZXRz
IGEgZ2VzdHVyZSBiZWdpbiBnZXN0dXJlLCBpdCBnZXRzIHRoZSBjb3JyZXNwb25kaW5nCiAgICAg
Ly8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAotICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUo
KSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKLSAgICAgICAg
Ly8gRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGlt
ZXMgb25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3Zl
LgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQu
cG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3Vz
ZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCks
IGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2
ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1
cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50
LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgp
LCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQg
Ki8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdl
c3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50
LnRpbWVzdGFtcCgpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Cisg
ICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2aWV3LT5oYW5kbGVH
ZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmIHN5bnRoZXRpYykK
K3sKKyAgICBzd2l0Y2ggKHN5bnRoZXRpYy50eXBlKCkpIHsKKyAgICBjYXNlIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6VGFwQmVnaW5UeXBlOgorICAgICAgICAvLyBGSVhNRTogQWRkIGEgbGluayBz
ZWxlY3Rpb24gcHJldmlldy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgU3ludGhl
dGljR2VzdHVyZUV2ZW50OjpUYXBFbmRUeXBlOiB7CisgICAgICAgIC8vIEZJWE1FOiBIaXQgdGVz
dCBvbmx5IG9uY2UgZm9yIGFsbCB0aHJlZSBldmVudHMuCisgICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudCBmYWtlTW91c2VNb3ZlKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRpb24oKSks
IHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSksIE5vQnV0dG9uLCBN
b3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCks
IHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFL
ZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZURvd24ocm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91
bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9iYWxQb3NpdGlvbigpKSwgTGVmdEJ1dHRvbiwgTW91
c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCks
IHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFL
ZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZVVwKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRpb24oKSksIHJvdW5k
ZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSksIExlZnRCdXR0b24sIE1vdXNl
RXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBzeW50aGV0aWMuc2hpZnRLZXkoKSwg
c3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGljLmFsdEtleSgpLCBzeW50aGV0aWMubWV0YUtl
eSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOwogICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3Vz
ZU1vdmUpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CiAg
ICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVw
ZGF0ZVR5cGU6IHsKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2
ZW50Ojp0aWNrTXVsdGlwbGllcjsKLSAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBpbnRl
cmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJlc3Nl
ZC4KLSAgICAgICAgSW50UG9pbnQgcG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueCgpICsg
Z2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQucG9zaXRpb24oKS55KCkgKyBnZXN0
dXJlRXZlbnQuZGVsdGFZKCkpOwotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGlj
V2hlZWxFdmVudChwb2ludCwgcG9pbnQsIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2
ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyB0aWNrRGl2aXNvciwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWSgpIC8gdGlja0Rpdmlzb3IsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAv
KiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2
ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtl
eSgpKTsKKyAgICAgICAgLy8gRklYTUU6IFNjcm9sbCBieSBwbHVtYmluZyBTeW50aGV0aWNHZXN0
dXJlRXZlbnRzIHRvIFNjcm9sbEFuaW1hdG9yLgorICAgICAgICBGbG9hdFBvaW50IGZwKHN5bnRo
ZXRpYy5wb3NpdGlvbigpKTsKKyAgICAgICAgLy8gZnAubW92ZShzeW50aGV0aWMuZGVsdGEoKSk7
CisgICAgICAgIC8vIEludFBvaW50IHBvaW50KHJvdW5kZWRJbnRQb2ludChmcCkpOworICAgICAg
ICAKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFdmVudEhhbmRsZXI6OmhhbmRsZVN5bnRoZXRp
Y0V2ZW50IFNjcm9sbFVwZGF0ZVR5cGVcblx0ZGVsdGEgJWYsICVmXG4iLCBzeW50aGV0aWMuZGVs
dGEoKS53aWR0aCgpLCBzeW50aGV0aWMuZGVsdGEoKS5oZWlnaHQoKSk7CisgICAgICAgIAorICAg
ICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChyb3VuZGVkSW50UG9p
bnQoc3ludGhldGljLnBvc2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2Jh
bFBvc2l0aW9uKCkpLCBzeW50aGV0aWMuZGVsdGEoKS53aWR0aCgpLCBzeW50aGV0aWMuZGVsdGEo
KS5oZWlnaHQoKSwgc3ludGhldGljLmRlbHRhKCkud2lkdGgoKSAvIHRpY2tEaXZpc29yLCBzeW50
aGV0aWMuZGVsdGEoKS5oZWlnaHQoKSAvIHRpY2tEaXZpc29yLCBTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudCwgLyogaXNBY2NlcHRlZCAqLyBmYWxzZSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRo
ZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSk7
CiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3Jv
bGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlw
ZToKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgICAgICBp
ZiAoIXZpZXcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmlldy0+aGFu
ZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVFdmVudCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgY2FzZSBT
eW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBTeW50aGV0aWNH
ZXN0dXJlRXZlbnQ6Okdlc3R1cmVCZWdpblR5cGU6CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJl
RXZlbnQ6Okdlc3R1cmVDaGFuZ2VUeXBlOgorICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50
OjpHZXN0dWVFbmRUeXBlOgorICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFkZGl0aW9uYWwg
c3ludGhldGljIGdlc3R1cmVzLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggY2YyZmU4MTQz
ZTJjZjlhNWJjYjA0ODg3MDYzYTNjZGYzZjYxYjMxNS4uNGRkMGFkZTBjNzcyMWNmYzc0MTU0ZWMy
YWRkZTkwZmQzMDIxZDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC03OSw2
ICs3OSw5IEBAIGNsYXNzIFdpZGdldDsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBjbGFz
cyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCitjbGFzcyBTeW50aGV0aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiBleHRlcm4gY29uc3QgaW50IExpbmtEcmFnSHlzdGVyZXNpczsKQEAg
LTE2MSw2ICsxNjQsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAg
IGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIGJvb2wgaGFuZGxlU3lu
dGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaAppbmRleCAxOGI3ZDFhYTJkMWVkZjlhODNkZWYyZjI2NmYyNTA5
MDM3OTY4NDdiLi4xZTQwYWRmZDdmNjExYjQwZDE0NTEzMWY5NDJhOTljNjEwNDllYjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTM3
LDggKzM3LDYgQEAgcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFNjcm9sbEJlZ2lu
VHlwZSwKICAgICAgICAgU2Nyb2xsRW5kVHlwZSwKLSAgICAgICAgU2Nyb2xsVXBkYXRlVHlwZSwK
LSAgICAgICAgVGFwVHlwZQogICAgIH07CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCgpCkBA
IC00NywxNyArNDUsMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBQbGF0Zm9ybUdl
c3R1cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBmbG9h
dCBkZWx0YVgsIGNvbnN0IGZsb2F0IGRlbHRhWSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5
cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIGNvbnN0IGRvdWJsZSB0aW1lc3RhbXApCiAgICAgICAgIDogbV90eXBlKHR5cGUp
CiAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgLCBtX2dsb2JhbFBvc2l0
aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKLSAg
ICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCi0gICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQotICAg
ICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkp
Ci0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5
KQogICAgIHsKICAgICB9CiAKQEAgLTY3LDI1ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlv
bjsgfSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KLQotICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsdGFYOyB9Ci0gICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWx0YVk7IH0KLSAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsg
fQotICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJv
b2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXko
KSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KLQogcHJvdGVjdGVkOgogICAgIFR5cGUgbV90
eXBlOwogICAgIEludFBvaW50IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3Np
dGlvbjsKICAgICBkb3VibGUgbV90aW1lc3RhbXA7Ci0gICAgZmxvYXQgbV9kZWx0YVg7Ci0gICAg
ZmxvYXQgbV9kZWx0YVk7Ci0gICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgIGJvb2wgbV9jdHJsS2V5
OwotICAgIGJvb2wgbV9hbHRLZXk7Ci0gICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMGI4NmE5Mjc2ZmI2YmRlZjliN2MzNzg4M2M1MDkz
Zjc3ZTA0Y2IzYy4uNjk5YjdhZTY4NDNjNjU2YjZlMzI2NTFiN2YzN2NlMmUxNWM5YWY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
X2gKICNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCiAKLSNpbmNsdWRlICJQbGF0
Zm9ybUdlc3R1cmVFdmVudC5oIgorI2luY2x1ZGUgIlN5bnRoZXRpY0dlc3R1cmVFdmVudC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyKCk7CiAKLSAgICB0eXBlZGVmIFBhc3NPd25QdHI8VmVjdG9yPFBsYXRmb3JtR2Vz
dHVyZUV2ZW50PiA+IFBhc3NHZXN0dXJlczsKKyAgICB0eXBlZGVmIFBhc3NPd25QdHI8VmVjdG9y
PFN5bnRoZXRpY0dlc3R1cmVFdmVudD4gPiBQYXNzR2VzdHVyZXM7CiAKICAgICAvLyBJbnZva2Vk
IGZvciBlYWNoIHRvdWNoIGV2ZW50IGFuZCByZXR1cm5zIDAgb3IgbW9yZSByZXN1bHRpbmcgZ2Vz
dHVyZXMuCiAgICAgdmlydHVhbCBQYXNzR2VzdHVyZXMgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0
dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA1NTM4
ZWZkZDFhY2Q5ZDEzY2YyODZjNmRhZDA1MWUxODhmMTNlNzNhLi5kNzRhMzE0YWM2ZWM1NmJmMjVj
NDZkOTkyZTcxNDI1NWI5OTliOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCkBAIC0zNyw2ICszNywxMyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKKyNpbmNsdWRlICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisvLyByZW1v
dmUKKyNpbmNsdWRlIDxzdGRpby5oPgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xMTksNiArMTI2LDEyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmKQoreworfQor
I2VuZGlmCisKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OmN1cnJlbnRQb3NpdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50UG9z
WSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2NjczODFi
MzExZDkyZjU1OThjMTdlMjI0YzBiZTBjNTY2NDU1MWI2Li5hYmUwZjk4MDdjMmViZTQ3ZmI5NzY5
ZDg4M2VlYWFkOTc2M2IyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgU2Nyb2xsYmFyOwogI2lmIEVOQUJMRShHRVNU
VVJFX0VWRU5UUykKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCisjaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNl
bmRpZgogCiBjbGFzcyBTY3JvbGxBbmltYXRvciB7CiBwdWJsaWM6CkBAIC02Nyw2ICs3MCw5IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCisj
aWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2b2lkIGhhbmRsZVN5bnRoZXRpY0V2
ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICBGbG9hdFBv
aW50IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAppbmRleCA1MDkyYjA1Y2RiMzI2Njg5NDI2YWYzYTc1ZTU3YzkzYjM4NzYx
MzRhLi5jZTk0Mzk4ZDcwNWEyYjg2NTYyODA0NjM3NmYwNzg4MTExZTNhN2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTQwLDYgKzQwLDkgQEAgY2xhc3Mg
U2Nyb2xsQW5pbWF0b3I7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xhc3Mg
R3JhcGhpY3NMYXllcjsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitj
bGFzcyBTeW50aGV0aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKIAogY2xhc3MgU2Nyb2xsYWJsZUFy
ZWEgewogcHVibGljOgpAQCAtNTYsNiArNTksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQogICAgIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAg
IHZvaWQgaGFuZGxlU3ludGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50Jik7
CisjZW5kaWYKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgaWYgeW91IGNhbiBz
Y3JvbGwgcGFzdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4KICAgICBib29sIGNvbnN0cmFpbnNT
Y3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Nyb2xs
aW5nVG9Db250ZW50RWRnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3ludGhldGljR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TeW50aGV0
aWNHZXN0dXJlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjE5MTA4NDU0NGM2OTEwZWExYzllNzEzOGM3
MjE4NjIzZWQ5YjViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3ludGhldGljR2VzdHVyZUV2ZW50LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTeW50aGV0
aWNHZXN0dXJlRXZlbnRfaAorI2RlZmluZSBTeW50aGV0aWNHZXN0dXJlRXZlbnRfaAorI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRI
YW5kbGVyOworY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OworCitjbGFzcyBTeW50aGV0aWNHZXN0
dXJlRXZlbnQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFRhcEJlZ2luVHlw
ZSwKKyAgICAgICAgVGFwRW5kVHlwZSwKKyAgICAgICAgU2Nyb2xsQmVnaW5UeXBlLAorICAgICAg
ICBTY3JvbGxFbmRUeXBlLAorICAgICAgICBTY3JvbGxVcGRhdGVUeXBlLAorICAgICAgICBHZXN0
dXJlQmVnaW5UeXBlLAorICAgICAgICBHZXN0dXJlQ2hhbmdlVHlwZSwKKyAgICAgICAgR2VzdHVl
RW5kVHlwZSwKKyAgICB9OworCisgICAgU3ludGhldGljR2VzdHVyZUV2ZW50KCkKKyAgICAgICAg
OiBtX3R5cGUoU2Nyb2xsQmVnaW5UeXBlKQorICAgICAgICAsIG1fdGltZXN0YW1wKDApCisgICAg
eworICAgIH0KKworICAgIFN5bnRoZXRpY0dlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29u
c3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IG1f
dHlwZSh0eXBlKQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgbV9n
bG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKKyAgICAgICAgLCBtX2RlbHRhKGRlbHRhKQor
ICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICAgICAgLCBtX3NoaWZ0S2V5KHNo
aWZ0S2V5KQorICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQorICAgICAgICAsIG1fYWx0S2V5
KGFsdEtleSkKKyAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKKyAgICB7CisgICAgfQorICAg
IAorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9IC8vIFBs
YXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgorICAgIGNvbnN0IEZsb2F0UG9pbnQmIGdsb2JhbFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29v
cmRpbmF0ZXMuCisgICAgY29uc3QgRmxvYXRTaXplJiBkZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVsdGE7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3Rh
bXA7IH0KKworICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9
CisgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9CisgICAgYm9v
bCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsgfQorICAgIGJvb2wgbWV0YUtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQorCitwcm90ZWN0ZWQ6CisgICAgVHlwZSBtX3R5
cGU7CisgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQgbV9nbG9iYWxQ
b3NpdGlvbjsKKyAgICBGbG9hdFNpemUgbV9kZWx0YTsKKyAgICBkb3VibGUgbV90aW1lc3RhbXA7
CisgICAgCisgICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wgbV9jdHJsS2V5OworICAgIGJv
b2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX21ldGFLZXk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2VuZGlmIC8v
IFN5bnRoZXRpY0dlc3R1cmVFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5kZXggYzZjYzJiNWYzNGI0MmU2
NGMyNTU4NWQ5Zjc4Yzk1Y2I5YTYxZTc1ZC4uYTc2OGVkMDQ0ZDljNGRkODYyZGMzZGNjNjQxOWY3
MTA3N2ZhODRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtMzYsOSArMzYsMTIgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQ7Ci0jaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAg
Y2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQorICAgIGNsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgogICAg
IGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKICAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTY2LDExICs2OSwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICAgICAg
dmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYp
ID0gMDsKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKSA9IDA7CisjZW5k
aWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
VG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKSA9IDA7CiAjZW5kaWYKICNpZiBF
TkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikgPSAwOworICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlU3ludGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50
JikgPSAwOwogI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgcHVibGljIG1ldGhv
ZHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJl
UmVjb2duaXplckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCmluZGV4IDE3ZGI1YjU2M2ZjNjY4ZWU0MTI2
MjdmMTdkOGZjMTY2MTZjOGY4Y2EuLjBlNWE3OTFlZmEzYmE1MDU4YTIwODdiYzM5NWE4YzRmNTE2
ZjA5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCkBAIC0zMSw5ICszMSw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5o
IgogCi0jaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1X
aGVlbEV2ZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IENvbnZlcnQg
dG8gbWV0aG9kcy4KQEAgLTEwMyw5ICsxMDAsMTUgQEAgYm9vbCBJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjppc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHAK
ICAgICByZXR1cm4gbWFuaGF0dGFuRGlzdGFuY2UgPCBtYXhpbXVtVG91Y2hNb3ZlSW5QaXhlbHNG
b3JDbGljazsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRDbGlja0dl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIElubmVyR2Vz
dHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQordm9pZCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjphcHBlbmRUYXBTdGFydEdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmIHRvdWNoUG9pbnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVz
KQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlRhcFR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVu
UG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC4wZiwgMC4wZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5
LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50aGV0aWNH
ZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBCZWdpblR5cGUsIEZsb2F0UG9p
bnQodG91Y2hQb2ludC5wb3MoKSksIEZsb2F0UG9pbnQodG91Y2hQb2ludC5zY3JlZW5Qb3MoKSks
IG1fbGFzdFRvdWNoVGltZSwgRmxvYXRTaXplKCksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9h
bHRLZXksIG1fbWV0YUtleSkpOworfQorCit2b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFw
cGVuZFRhcEVuZEdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9p
bnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQoreworICAgIC8v
IEZJWE1FOiBtYWtlIGNlcnRhaW4gdGhhdCBzY3JlZW4gcG9zaXRpb25zIGFyZSB2YWxpZC4KKyAg
ICBnZXN0dXJlcy0+YXBwZW5kKFN5bnRoZXRpY0dlc3R1cmVFdmVudChTeW50aGV0aWNHZXN0dXJl
RXZlbnQ6OlRhcEVuZFR5cGUsIEZsb2F0UG9pbnQoZmlyc3RUb3VjaFBvc2l0aW9uKCkpLCBGbG9h
dFBvaW50KGZpcnN0VG91Y2hQb3NpdGlvbigpKSwgbV9sYXN0VG91Y2hUaW1lLCBGbG9hdFNpemUo
KSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKQEAgLTExNSw3ICsxMTgsNyBAQCBQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6cHJvY2Vzc1RvdWNoRXZlbgogICAgIG1fc2hpZnRLZXkgPSBldmVudC5zaGlmdEtleSgpOwog
ICAgIG1fbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkoKTsKIAotICAgIE93blB0cjxWZWN0b3I8UGxh
dGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFBsYXRm
b3JtR2VzdHVyZUV2ZW50PigpKTsKKyAgICBPd25QdHI8VmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVF
dmVudD4gPiBnZXN0dXJlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3ludGhldGljR2VzdHVyZUV2
ZW50PigpKTsKICAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1Ub3VjaFBvaW50PiYgcG9pbnRzID0g
ZXZlbnQudG91Y2hQb2ludHMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRz
LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCA9IHBv
aW50c1tpXTsKQEAgLTEyNywyNSArMTMwLDIyIEBAIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6
OlBhc3NHZXN0dXJlcyBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVuCiAg
ICAgcmV0dXJuIGdlc3R1cmVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgSW50UG9pbnQmIHRvdWNoUG9p
bnQsIEdlc3R1cmVzIGdlc3R1cmVzKQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBl
bmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50
LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUsIHRvdWNoUG9p
bnQsIHRvdWNoUG9pbnQsIG1fbGFzdFRvdWNoVGltZSwgMC4wZiwgMC4wZiwgbV9zaGlmdEtleSwg
bV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7Ci0gICAgbV9maXJzdFRvdWNoUG9zaXRp
b24gPSB0b3VjaFBvaW50OwotICAgIG1fbGFzdFRvdWNoUG9zaXRpb24gPSBtX2ZpcnN0VG91Y2hQ
b3NpdGlvbjsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFN5bnRoZXRpY0dlc3R1cmVFdmVudChTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50
LnBvcygpKSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hU
aW1lLCBGbG9hdFNpemUoKSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRh
S2V5KSk7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2Vz
dHVyZUVuZChjb25zdCBJbnRQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCit2
b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAg
ICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxFbmRUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoUG9z
aXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC4wZiwgMC4wZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5
LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50aGV0aWNH
ZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlLCBGbG9hdFBv
aW50KHRvdWNoUG9pbnQucG9zKCkpLCBGbG9hdFBvaW50KHRvdWNoUG9pbnQuc2NyZWVuUG9zKCkp
LCBtX2xhc3RUb3VjaFRpbWUsIEZsb2F0U2l6ZSgpLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1f
YWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjph
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKGNvbnN0IEludFBvaW50JiB0b3VjaFBvaW50LCBHZXN0
dXJlcyBnZXN0dXJlcykKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xs
R2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1
cmVzIGdlc3R1cmVzKQogewotICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LngoKSAtIG1fbGFz
dFRvdWNoUG9zaXRpb24ueCgpKTsKLSAgICBmbG9hdCBkZWx0YVkodG91Y2hQb2ludC55KCkgLSBt
X2xhc3RUb3VjaFBvc2l0aW9uLnkoKSk7CisgICAgRmxvYXRTaXplIGRlbHRhKHRvdWNoUG9pbnQu
cG9zKCkueCgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueCgpLCB0b3VjaFBvaW50LnBvcygpLnko
KSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLnkoKSk7CiAKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBl
LCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fbGFzdFRvdWNo
VGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1f
bWV0YUtleSkpOwotICAgIG1fbGFzdFRvdWNoUG9zaXRpb24gPSB0b3VjaFBvaW50OworICAgIGdl
c3R1cmVzLT5hcHBlbmQoU3ludGhldGljR2VzdHVyZUV2ZW50KFN5bnRoZXRpY0dlc3R1cmVFdmVu
dDo6U2Nyb2xsVXBkYXRlVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnBvcygpKSwgRmxvYXRQ
b2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hUaW1lLCBkZWx0YSwgbV9z
aGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgbV9maXJzdFRv
dWNoUG9zaXRpb24gPSB0b3VjaFBvaW50LnBvcygpOwogfQogCiB2b2lkIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6OnVwZGF0ZVZhbHVlcyhjb25zdCBkb3VibGUgdG91Y2hUaW1lLCBjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQpCkBAIC0xNjksMTYgKzE2OSwxOCBAQCB1bnNpZ25l
ZCBpbnQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6c2lnbmF0dXJlKFN0YXRlIGdlc3R1cmVTdGF0
ZSwgdW5zaWduZWQgaWQsCiAgICAgcmV0dXJuIDEgKyAoKHRvdWNoVHlwZSAmIDB4NykgPDwgMSB8
IChoYW5kbGVkID8gMSA8PCA0IDogMCkgfCAoKGlkICYgMHhmZmYpIDw8IDUgKSB8IChnZXN0dXJl
U3RhdGUgPDwgMTcpKTsKIH0KIAotc3RhdGljIGJvb2wgdG91Y2hEb3duKElubmVyR2VzdHVyZVJl
Y29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJ
bm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKK3N0YXRpYyBib29sIHRv
dWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpH
ZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKKyAgICBnZXN0dXJl
UmVjb2duaXplci0+YXBwZW5kVGFwU3RhcnRHZXN0dXJlRXZlbnQodG91Y2hQb2ludCwgZ2VzdHVy
ZXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGJvb2wgc2Nyb2xsRW5kKElubmVy
R2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNo
UG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykK
IHsKLSAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChwb2ludC5w
b3MoKSwgZ2VzdHVyZXMpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxHZXN0
dXJlRW5kKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgZ2VzdHVyZVJlY29nbml6ZXItPnNldFN0YXRl
KElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVyZSk7CisgICAgZ2VzdHVyZVJlY29nbml6
ZXItPnJlc2V0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTIsNyArMTk0LDcgQEAg
c3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6
ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2gKIHsKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXItPmlz
SW5DbGlja1RpbWVXaW5kb3coKSAmJiBnZXN0dXJlUmVjb2duaXplci0+aXNJbnNpZGVNYW5oYXR0
YW5TcXVhcmUocG9pbnQpKSB7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJ
bm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpOwotICAgICAgICBnZXN0dXJlUmVjb2du
aXplci0+YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQocG9pbnQsIGdlc3R1cmVzKTsKKyAgICAgICAg
Z2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFRhcEVuZEdlc3R1cmVFdmVudChwb2ludCwgZ2VzdHVy
ZXMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG5vR2VzdHVyZShn
ZXN0dXJlUmVjb2duaXplciwgcG9pbnQsIGdlc3R1cmVzKTsKQEAgLTIwNiw4ICsyMDgsOCBAQCBz
dGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVy
ZVJlY29nbml6ZXIsIGNvbnN0IFBsYQogICAgIH0KIAogICAgIGlmIChwb2ludC5zdGF0ZSgpID09
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCAmJiAhZ2VzdHVyZVJlY29nbml6ZXItPmlz
SW5zaWRlTWFuaGF0dGFuU3F1YXJlKHBvaW50KSkgewotICAgICAgICBnZXN0dXJlUmVjb2duaXpl
ci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGdlc3R1cmVSZWNvZ25pemVyLT5maXJzdFRvdWNo
UG9zaXRpb24oKSwgZ2VzdHVyZXMpOwotICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5k
U2Nyb2xsR2VzdHVyZVVwZGF0ZShwb2ludC5wb3MoKSwgZ2VzdHVyZXMpOworICAgICAgICBnZXN0
dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKHBvaW50LCBnZXN0dXJlcyk7
CisgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKHBv
aW50LCBnZXN0dXJlcyk7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpTY3JvbGwpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC0yMTYsNyArMjE4LDcgQEAgc3RhdGljIGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2Vz
dHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGEKIAogc3RhdGljIGJv
b2wgaW5TY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdl
c3R1cmVzIGdlc3R1cmVzKQogewotICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxH
ZXN0dXJlVXBkYXRlKHBvaW50LnBvcygpLCBnZXN0dXJlcyk7CisgICAgZ2VzdHVyZVJlY29nbml6
ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUocG9pbnQsIGdlc3R1cmVzKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCmluZGV4IGZkNDZmZTc5MGM2ZjMw
NzA1ODQ3ZGE2ZTE0OTQ1YjMwYTZjYTJlZTYuLjE4ZDI1YWQ5YmFjMjFmYjM4YmM4NjIxNjQxM2Zi
YjgwYzk0MmVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKQEAgLTM0LDEyICszNCwxMiBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKIAogI2luY2x1ZGUgIlBs
YXRmb3JtVG91Y2hFdmVudC5oIgotI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVRvdWNoUG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OworY2xhc3MgU3ludGhl
dGljR2VzdHVyZUV2ZW50OwogCiBjbGFzcyBJbm5lckdlc3R1cmVSZWNvZ25pemVyIHsKIHB1Ymxp
YzoKQEAgLTQ5LDE5ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIFNjcm9sbAogICAgIH07CiAK
LSAgICB0eXBlZGVmIFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4qIEdlc3R1cmVzOworICAg
IHR5cGVkZWYgVmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVFdmVudD4qIEdlc3R1cmVzOwogICAgIHR5
cGVkZWYgYm9vbCAoKkdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24pKElubmVyR2VzdHVyZVJlY29n
bml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAKICAgICB+SW5u
ZXJHZXN0dXJlUmVjb2duaXplcigpOwogCi0gICAgdm9pZCBhcHBlbmRDbGlja0dlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0KCk7CiAgICAgYm9vbCBpc0luQ2xpY2tUaW1lV2luZG93KCk7CiAgICAgYm9vbCBpc0lu
c2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKICAgICB2aXJ0
dWFsIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyAgcHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQ
cmV2ZW50ZWQpOwotICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNvbnN0IEludFBv
aW50JiwgR2VzdHVyZXMpOwotICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChjb25zdCBJ
bnRQb2ludCYsIEdlc3R1cmVzKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUo
Y29uc3QgSW50UG9pbnQmLCBHZXN0dXJlcyk7CisgICAgdm9pZCBhcHBlbmRUYXBTdGFydEdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CisgICAgdm9pZCBh
cHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVy
ZXMpOworICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNvbnN0IFBsYXRmb3JtVG91
Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5kU2Nyb2xs
R2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAgICAg
dm9pZCBzZXRTdGF0ZShTdGF0ZSB2YWx1ZSkgeyBtX3N0YXRlID0gdmFsdWU7IH0KICAgICBTdGF0
ZSBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCmluZGV4IDIxYzQ2ZTY3MWVkOTQz
OGNjNmJiNGViMjU4ZDk3NWM2ZmQ5YjJkMDcuLjQ5NmVkYzE2N2ZjNzI4MzJhMmE2Y2I5YzE0Mjhm
MTQzMDBmZTQ4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cENvbnRhaW5lci5jcHAKQEAgLTU0LDYgKzU0LDEwIEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKKyNpbmNsdWRlICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNlbmRp
ZgpAQCAtMjkyLDI3ICsyOTYsMzggQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hF
dmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R0VTVFVSRV9FVkVOVFMpCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKIC8vIEZJWE1FOiBSZWZhY3Rv
ciB0aGlzIGNvZGUgdG8gc2hhcmUgZnVuY3Rpb25hbGl0eSB3aXRoIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlR2VzdHVyZUV2ZW50LgotYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCitib29sIFBvcHVwQ29u
dGFpbmVyOjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQm
IHN5bnRoZXRpYykKIHsKLSAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKLSAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZl
bnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
RG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdl
c3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZl
bnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3Rh
bXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgIHN3
aXRjaCAoc3ludGhldGljLnR5cGUoKSkgeworICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50
OjpUYXBFbmRUeXBlOiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3Zl
KHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChz
eW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8q
IGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5
KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSwgc3ludGhldGljLnRp
bWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24ocm91
bmRlZEludFBvaW50KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRo
ZXRpYy5nbG9iYWxQb3NpdGlvbigpKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8q
IGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5
KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSwgc3ludGhldGljLnRp
bWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKHJvdW5k
ZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChzeW50aGV0
aWMuZ2xvYmFsUG9zaXRpb24oKSksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBzeW50aGV0aWMuc2hpZnRLZXkoKSwgc3ludGhldGljLmN0cmxLZXko
KSwgc3ludGhldGljLmFsdEtleSgpLCBzeW50aGV0aWMubWV0YUtleSgpLCBzeW50aGV0aWMudGlt
ZXN0YW1wKCkpOwogICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3Zl
KTsKICAgICAgICAgaGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAgICAg
IGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5
cGU6IHsKLSAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQoZ2Vz
dHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBnZXN0
dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRl
bHRhWCgpIC8gMTIwLjBmLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkgLyAxMjAuMGYsIFNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6
U2Nyb2xsVXBkYXRlVHlwZTogeworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGlj
V2hlZWxFdmVudChyb3VuZGVkSW50UG9pbnQoc3ludGhldGljLnBvc2l0aW9uKCkpLCByb3VuZGVk
SW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHJv
dW5kZihzeW50aGV0aWMuZGVsdGEoKS53aWR0aCgpKSksIHN0YXRpY19jYXN0PGludD4ocm91bmRm
KHN5bnRoZXRpYy5kZWx0YSgpLmhlaWdodCgpKSksIHN5bnRoZXRpYy5kZWx0YSgpLndpZHRoKCkg
LyAxMjAuMGYsIHN5bnRoZXRpYy5kZWx0YSgpLmhlaWdodCgpIC8gMTIwLjBmLCBTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCwgLyogaXNBY2NlcHRlZCAqLyBmYWxzZSwgc3ludGhldGljLnNoaWZ0S2V5
KCksIHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1l
dGFLZXkoKSk7CiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Ny
b2xsRW5kVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwQmVnaW5UeXBl
OgorICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAg
Y2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6Okdlc3R1cmVCZWdpblR5cGU6CisgICAgY2FzZSBTeW50aGV0aWNH
ZXN0dXJlRXZlbnQ6Okdlc3R1cmVDaGFuZ2VUeXBlOgorICAgIGNhc2UgU3ludGhldGljR2VzdHVy
ZUV2ZW50OjpHZXN0dWVFbmRUeXBlOgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29u
dGFpbmVyLmgKaW5kZXggNDUyZTFiNDI1NDI2YzlkMzE5YWQzMzVmMjRkN2JmMDlkZTNiM2IwZi4u
MjY4OTY4ZTg1M2QyYTEyMWU1OTQ2OWQ5MmU5MTE0NDFmZGY4MzgyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5oCkBAIC00MSw2ICs0
MSwxMyBAQCBjbGFzcyBDaHJvbWVDbGllbnRDaHJvbWl1bTsKIGNsYXNzIEZyYW1lVmlldzsKIGNs
YXNzIFBvcHVwTWVudUNsaWVudDsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2NsYXNz
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OworI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dO
SVpFUikKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgorCiBjbGFzcyBQb3B1
cENvbnRhaW5lciA6IHB1YmxpYyBGcmFtZWxlc3NTY3JvbGxWaWV3IHsKIHB1YmxpYzoKICAgICBl
bnVtIFBvcHVwVHlwZSB7CkBAIC02NSw5ICs3MiwxMiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmKTsKICNlbmRpZgotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgorI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZVN5bnRoZXRpY0V2
ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBQb3B1
cENvbnRhaW5lciBtZXRob2RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cExpc3RCb3guY3BwCmluZGV4IDIwMTUwNjRjZGMxOGUyNTkyMDUyNWYzMGE0Nzkz
OTMwNTdlMTIwNjguLjFlNTBkZGQ2NGNiMGFlMGUzZmMwYjUyOTQ4ODk4M2FjNTQwNGJiODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNw
cApAQCAtNTQsNiArNTQsMTAgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2luY2x1ZGUgIlN5bnRo
ZXRpY0dlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
I2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2VuZGlmCkBAIC0xODUsMTMgKzE4OSwy
MCBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRv
dWNoRXZlbnQmKQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKQogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2Jvb2wgUG9w
dXBMaXN0Qm94OjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZl
bnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBpc0No
YXJhY3RlclR5cGVFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGV2ZW50KQogewog
ICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGV2ZW50IGlzIGEgY2hhcmFjdGVyLXR5cGVkIGV2ZW50
IG9yIG5vdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0
Qm94LmgKaW5kZXggNGNlYzNhNDFhZTcwNTFhNjAxOTA5ZjFhMDE1OWY2OTYyYTFiMWU0Ni4uZDlk
OWJhOGNiYzVjZTdiNGYyZDUxZjlkYzBjZWI0NjdlY2Y0MTg2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmgKQEAgLTU0LDYgKzU0LDkgQEAg
Y2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGNs
YXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiAjZW5kaWYKQEAgLTEy
Myw5ICsxMjYsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmly
dHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNUVVJF
X0VWRU5UUykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVS
KQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNH
ZXN0dXJlRXZlbnQmKTsKKyNlbmRpZgogCiAgICAgLy8gU2Nyb2xsVmlldwogICAgIHZpcnR1YWwg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBlYzRjYWQ1ZmJkZDdmZmUyMjU4YjNjMzNmODM4NjdjNWIxNTgzMTk0Li44NjE0ZTRiM2Ex
YWI5Njg3YjdjNWY4Njg1MjIwM2NkNjkwZjQ4NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTA4LTI0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgYSBzeW50aGV0aWMgZXZlbnQgdHlwZSBmb3Ig
Z2VzdHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBnZXN0dXJlCisgICAgICAgIHJlY29nbml6ZXIgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NDkyCisKKyAgICAgICAgUGVy
IGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1
MDQ0OgorICAgICAgICB0aGlzIHVwZGF0ZXMgdXNlcnMgb2YgR2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bSBmb3IgaXRzIGNyZWF0aW9uCisgICAgICAgIG9mIFN5bnRoZXRpY0dlc3R1cmVFdmVudCBp
bnN0ZWFkIG9mIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGFuZCBhbHNvCisgICAgICAgIHVwZGF0ZXMg
dGhlIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gdW5pdCB0ZXN0cyBhcHByb3ByaWF0ZWx5Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmVhdHVy
ZXMuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOgorICAgICAgICAqIHNy
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3Jt
R2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAg
ICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudUltcGw6OlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBs
OjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9Jbm5lckdl
c3R1cmVSZWNvZ25pemVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCiAy
MDExLTA4LTI0ICBKZXJlbXkgQXB0aG9ycCAgPGplcmVteWFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBFeHBvc2UgZnVsbHNjcmVlbiBBUEkgb24gV2ViRWxlbWVudC9XZWJEb2N1bWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDE3YjhlY2Y1YmRhOTlhNzJiNzg3M2FlNDIy
OTE2ZmYzNmMyOGVlODAuLjBlOTE2ZTJmZTI2OTUyZDY2YTBjNmFhNjNhNmZmMWQ5Nzk5ZGYwYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTUwLDcgKzUwLDcgQEAKICAg
ICAgICdFTkFCTEVfRklMRV9TWVNURU09MScsCiAgICAgICAnRU5BQkxFX0ZJTFRFUlM9MScsCiAg
ICAgICAnRU5BQkxFX0dFT0xPQ0FUSU9OPTEnLAotICAgICAgJ0VOQUJMRV9HRVNUVVJFX0VWRU5U
Uz0xJywKKyAgICAgICdFTkFCTEVfR0VTVFVSRV9FVkVOVFM9MCcsCiAgICAgICAnRU5BQkxFX0dF
U1RVUkVfUkVDT0dOSVpFUj0xJywKICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAogICAg
ICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCmluZGV4IGM0OWFmNDA3MDZkZTA2MmRmNTE2OWE4Nzhm
NGRiYmUxNjI3MzM1MTcuLjExZTZlNGZkMzA5ZDg4YTI2ZDI2NzkxNjlmODNhYTMzOWQ3OWRjNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKQEAg
LTEwMywxMyArMTAzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CiAg
ICAgICAgIEdlc3R1cmVTY3JvbGxCZWdpbiwKICAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKLSAg
ICAgICAgR2VzdHVyZVRhcCwKIAogICAgICAgICAvLyBXZWJUb3VjaEV2ZW50CiAgICAgICAgIFRv
dWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwKICAgICAgICAgVG91Y2hFbmQsCiAgICAgICAg
IFRvdWNoQ2FuY2VsLAorICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IGluc2VydCBXZWJTeW50
aGV0aWNHZXN0dXJlRXZlbnQKICAgICB9OwogCiAgICAgZW51bSBNb2RpZmllcnMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwCmluZGV4IDBkZGVhMDI0NGE4OTgyMjRkNDBhZjFmOGYyZDVjZGM2ZWQwMGM3NmMuLmYxNDg1
MTM5NDViMjIwYWZkZjM2YTY4ZTMyZmQ4OGZkYTI3YmVhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTEy
MCwxOSArMTIwLDEyIEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0
dXJlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXCiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlVGFwOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwVHlwZTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIG1fcG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRG
cm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQb2ludChlLngsIGUueSkpOwogICAgIG1fZ2xvYmFsUG9z
aXRpb24gPSBJbnRQb2ludChlLmdsb2JhbFgsIGUuZ2xvYmFsWSk7CiAgICAgbV90aW1lc3RhbXAg
PSBlLnRpbWVTdGFtcFNlY29uZHM7Ci0gICAgbV9zaGlmdEtleSA9IChlLm1vZGlmaWVycyAmIFdl
YklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsKLSAgICBtX2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBX
ZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAgICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAm
IFdlYklucHV0RXZlbnQ6OkFsdEtleSk7Ci0gICAgbV9tZXRhS2V5ID0gKGUubW9kaWZpZXJzICYg
V2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAppbmRleCA2NzVjNDNhYmZlOTQ4Mjcz
MGM3OWVkNTM0YjI4MzE1Y2NkMTU2MmQ5Li5iZWI5Y2VjMDVlOTgyMjM0ZTJjZDY3YzhmYzhmZjU5
N2E0MGVjMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1
cE1lbnVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1l
bnVJbXBsLmNwcApAQCAtMTM0LDExICsxMzQsMTQgQEAgdm9pZCBXZWJQb3B1cE1lbnVJbXBsOjpN
b3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgbV93aWRnZXQt
PmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZl
bnQpKTsKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGJvb2wgV2ViUG9wdXBNZW51
SW1wbDo6R2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7CiAgICAg
cmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVHZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRC
dWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwogfQorI2VuZGlmCiAKKy8vIEZJWE1FOiBBZGQgdGhl
IGFiaWxpdHkgdG8gaW5qZWN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCBpbnN0YW5jZXMgZnJvbSBs
YXlvdXQgdGVzdHMuCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgV2ViUG9wdXBNZW51
SW1wbDo6VG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKIHsKQEAgLTE0Niw5
ICsxNDksOSBAQCBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQoY29uc3QgV2ViVG91
Y2hFdmVudCYgZXZlbnQpCiAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50
QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpOwogICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZChtX3dp
ZGdldC0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcikpOwogI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCi0gICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQp
KTsKKyAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlN5bnRoZXRpY0dlc3R1cmVFdmVudD4gPiBn
ZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKICAgICBmb3IgKHVu
c2lnbmVkIGludCAgaSA9IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKLSAgICAg
ICAgbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudCgoKmdlc3R1cmVFdmVudHMpW2ldKTsKKyAg
ICAgICAgbV93aWRnZXQtPmhhbmRsZVN5bnRoZXRpY0V2ZW50KCgqZ2VzdHVyZUV2ZW50cylbaV0p
OwogI2VuZGlmCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CkBAIC0yNzQsOSArMjc3
LDkgQEAgYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklu
cHV0RXZlbnQmIGlucHV0RXZlbnQpCiAKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0g
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgorI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykgICAgCiAgICAgICAgIHJldHVybiBHZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0
IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7Ci0KKyNlbmRpZgogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6VW5kZWZpbmVkOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VFbnRl
cjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNvbnRleHRNZW51OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGI4N2ZkZDBjZTQzODM4NjE4MTkyNjUz
ODZhNmQ0ZWQ5MzhlZmU5OTAuLmZkMmZiNzhmMWYyZTkyMzI5OWFhNThjMWM1M2YxY2RjODU1NmYy
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTc4
Miw5ICs3ODIsOSBAQCBib29sIFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNo
RXZlbnQmIGV2ZW50KQogICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IG1haW5GcmFtZUltcGwo
KS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudEJ1
aWxkZXIpOwogCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBPd25QdHI8VmVj
dG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0
dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVp
bGRlciwgZGVmYXVsdFByZXZlbnRlZCkpOworICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6U3lu
dGhldGljR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFBy
ZXZlbnRlZCkpOwogICAgIGZvciAodW5zaWduZWQgaW50ICBpID0gMDsgaSA8IGdlc3R1cmVFdmVu
dHMtPnNpemUoKTsgaSsrKQotICAgICAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50cy0+YXQoaSkpOworICAg
ICAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVTeW50
aGV0aWNFdmVudChnZXN0dXJlRXZlbnRzLT5hdChpKSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBk
ZWZhdWx0UHJldmVudGVkOwpAQCAtMTI4Miw3ICsxMjgyLDYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6
aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3Jv
bGxCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgogICAgICAgICBoYW5kbGVkID0gZ2VzdHVy
ZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCkp
OwogICAgICAgICBicmVhazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAppbmRleCA3ZGYz
MWUyNzc2MWY0MmRmNGZjNjA5MjcxODFkNmYyMTNlOWFhNGIyLi45ZjhjNzkyNDliMjhmNTdjYWI0
NDg3ZTg3OGI2OGFiZjYzNzNjOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcApAQCAtMjc0LDE0
ICsyNzQsMTQgQEAgVEVTVF9GKFRlc3RHZXN0dXJlUmVjb2duaXplciwgZ2VzdHVyZVNjcm9sbEV2
ZW50cykKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBtb3ZlKDEwLCA1MCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNo
RXZlbnQgbW92ZUV2ZW50KFdlYkNvcmU6OlRvdWNoTW92ZSwgbW92ZSk7Ci0gICAgT3duUHRyPFZl
Y3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlU3RhcnQoZ20ucHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7CisgICAgT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZVN0YXJ0KGdt
LnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkpOwogICAgIGJv
b2wgc2Nyb2xsU3RhcnRlZCA9IGZhbHNlLCBzY3JvbGxVcGRhdGVkID0gZmFsc2U7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnZXN0dXJlU3RhcnQtPnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIHN3aXRjaCAoKCpnZXN0dXJlU3RhcnQpW2ldLnR5cGUoKSkgewotICAgICAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgICAgIGNhc2UgU3lu
dGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CiAgICAgICAgICAgICBzY3JvbGxT
dGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOgorICAgICAgICBjYXNlIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZToKICAgICAgICAgICAgIHNjcm9sbFVwZGF0ZWQg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yOTYsMTAg
KzI5NiwxMCBAQCBURVNUX0YoVGVzdEdlc3R1cmVSZWNvZ25pemVyLCBnZXN0dXJlU2Nyb2xsRXZl
bnRzKQogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlKTsKICAgICBi
b29sIHNjcm9sbEVuZCA9IGZhbHNlOwotICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmVzKHJlbGVhc2VFdmVudCwgZmFsc2UpKTsKKyAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlN5
bnRoZXRpY0dlc3R1cmVFdmVudD4gPiBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgZ2VzdHVyZUVuZC0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoICgoKmdl
c3R1cmVFbmQpW2ldLnR5cGUoKSkgewotICAgICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpTY3JvbGxFbmRUeXBlOgorICAgICAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Ny
b2xsRW5kVHlwZToKICAgICAgICAgICAgIHNjcm9sbEVuZCA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0N2VmZTc0YjBlM2E4N2QzYTk0OTk0OWI4ZTM0MTczZDc3MGFi
M2I2Li5jMGFkNTc0NWUxMDIxZDc0YzI5M2JiZTRmYzQ5Mzk5ZmQ4YzE4NThmIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDgtMjQgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJlbW92ZXMgb2Jzb2xldGUgUGxhdGZvcm1HZXN0dXJlRXZlbnQgc3VidHlwZXMgZnJv
bSB0aGUgRXZlbnRTZW5kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2NDkyCisgICAgICAgCisgICAgICAgIEluIHNlcGFyYXRpbmcgb3V0IHN5bnRo
ZXNpemVkIGdlc3R1cmUgZXZlbnRzIGZyb20gcGxhdGZvcm0gZ2VzdHVyZQorICAgICAgICBldmVu
dHMsIHN5bnRoZXRpYyBQbGF0Zm9ybUdlc3R1cmVFdmVudHMgdHlwZXMgd2VyZSByZW1vdmVkLiBU
aGlzIGNoYW5nZQorICAgICAgICB1cGRhdGVzIEV2ZW50U2VuZGVyIGFwcHJvcHJpYXRlbHkuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVudFNlbmRlcjo6
RXZlbnRTZW5kZXIpOgorCiAyMDExLTA4LTIzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBub3RpZmljYXRpb25zIGFwcGVhciBpbiB0aW1l
IG9yZGVyIGFnYWluLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5k
ZXIuY3BwCmluZGV4IDZkYWY2MTY5NTYxZGMxNTE4MDcwZjdkMGI3ZjA5NTBjODc5Mjg1ZmMuLjIy
OTA5NTBkM2FhZGE4MTg0NDZhODFjN2I5OGNjNzBlZjI0ZDE3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKQEAgLTI4MCw3ICsyODAsNiBAQCBF
dmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9k
KCJ1cGRhdGVUb3VjaFBvaW50IiwgJkV2ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBvaW50KTsKICAg
ICBiaW5kTWV0aG9kKCJnZXN0dXJlU2Nyb2xsQmVnaW4iLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVT
Y3JvbGxCZWdpbik7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVNjcm9sbEVuZCIsICZFdmVudFNl
bmRlcjo6Z2VzdHVyZVNjcm9sbEVuZCk7Ci0gICAgYmluZE1ldGhvZCgiZ2VzdHVyZVRhcCIsICZF
dmVudFNlbmRlcjo6Z2VzdHVyZVRhcCk7CiAgICAgYmluZE1ldGhvZCgiem9vbVBhZ2VJbiIsICZF
dmVudFNlbmRlcjo6em9vbVBhZ2VJbik7CiAgICAgYmluZE1ldGhvZCgiem9vbVBhZ2VPdXQiLCAm
RXZlbnRTZW5kZXI6Onpvb21QYWdlT3V0KTsKICAgICBiaW5kTWV0aG9kKCJzY2FsZVBhZ2VCeSIs
ICZFdmVudFNlbmRlcjo6c2NhbGVQYWdlQnkpOwpAQCAtMTAzMywxMiArMTAzMiw2IEBAIHZvaWQg
RXZlbnRTZW5kZXI6Omdlc3R1cmVTY3JvbGxFbmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxFbmQsIGFyZ3VtZW50cyk7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVU
YXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
LXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVRhcCwgYXJndW1lbnRzKTsKLX0KLQogdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVy
ZUV2ZW50KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMpCiB7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNb
MF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105070</attachid>
            <date>2011-08-24 14:44:01 -0700</date>
            <delta_ts>2011-08-25 10:22:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66492-20110824174435.patch</filename>
            <type>text/plain</type>
            <size>55026</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNmJmMTBhZmQ1ZTc1NjhlNDc4MDEy
ZjQwNzUyMGJiYzVmYTMxNjM4Li5lNjNjYzViZGU0ZjI0N2UzNDc0NGFjMDc3ZTZiYjU1YjViZjc5
MzJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMjQgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBhIGxheW91dCB0ZXN0IG9i
c29sZXRlZCBieSByZW1vdmluZworICAgICAgICBzeW50aGV0aWMgZ2VzdHVyZSBldmVudHMgZnJv
bSBQbGF0Zm9ybUdlc3R1cmVFdmVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2st
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvZ2VzdHVyZS1jbGljay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisKIDIwMTEtMDgtMjQgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5pbmcgbWVkaWEvdmlkZW8t
Y3VycmVudFRpbWUtc2V0Lmh0bWwgZHVlIHRvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1ZmExYTcxZTMwMjliODU2YTExOTRm
YWJkZmQ4ZTAyYmIyMzBhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xp
Y2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0
cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLUdlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2su
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGlj
ay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWRjYzVhNjA4YWQ5YzIxNjAy
YTlhMDgzMjc3MWI3ZmVhOTgyZTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVy
ZS1jbGljay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCk7Ij4KLTxkaXYgaWQ9Imdlc3R1cmUiPgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotdmFyIGV4cGVjdGVkTW91c2VF
dmVudHMgPSA0OwotdmFyIG1vdXNlRXZlbnRzUmVjZWl2ZWQgPSAwOwotdmFyIGV2ZW50VHlwZXMg
PSBbICdtb3VzZW1vdmUnLCAnbW91c2Vkb3duJywgJ21vdXNldXAnLCAnY2xpY2snIF07Ci0KLWZ1
bmN0aW9uIGdlc3R1cmVFdmVudENhbGxiYWNrKGV2ZW50KQotewotICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50eXBlJywg
ZXZlbnRUeXBlc1ttb3VzZUV2ZW50c1JlY2VpdmVkXSk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVu
dC5jbGllbnRYJywgJzEwJyk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRZJywgJzEy
Jyk7Ci0gICAgICAgIG1vdXNlRXZlbnRzUmVjZWl2ZWQrKzsKLSAgICB9IGVsc2UgewotICAgICAg
ICBkZWJ1ZyhldmVudC50eXBlKTsKLSAgICAgICAgZGVidWcoZXZlbnQuY2xpZW50WCk7Ci0gICAg
ICAgIGRlYnVnKGV2ZW50LmNsaWVudFkpOwotICAgIH0KLX0KLQotLy8gQmVjYXVzZSB3ZSBtYXkg
bm90IGhhdmUgYSBnZXN0dXJlIHJlY29nbml6ZXIsIHdlIHNlbmQgYSBrZXkgcHJlc3MKLS8vIGV2
ZW50IHRvIGVuZCB0aGUgdGVzdCB3aXRob3V0IHRlbXBvcmFsIGZsYWtpbmVzcy4KLWZ1bmN0aW9u
IHF1aXRLZXlUb0VuZFRlc3QoZXZlbnQpIHsKLSAgICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGVuZFRlc3QoKQotewotICAgIGlmIChtb3VzZUV2ZW50c1JlY2VpdmVkIDwgZXhwZWN0ZWRNb3Vz
ZUV2ZW50cykgewotICAgICAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRl
ZCBvbiB0aGlzIHBsYXRmb3JtLicpOwotICAgIH0KLSAgICAvLyBCYWlsLgotICAgIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Ci0gICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZXN0dXJlJyk7Ci0gICAg
ZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBm
YWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZ2VzdHVyZUV2ZW50Q2Fs
bGJhY2ssIGZhbHNlKTsKLSAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGdlc3R1
cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
bW92ZSIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHF1aXRLZXlUb0VuZFRlc3QsIGZhbHNlKTsKLQotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgfQotCi0gICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4iKTsKLSAg
ICAgICAgLy8gQSAndGFwJyBnZXN0dXJlIGV2ZW50IHNob3VsZCBnZW5lcmF0ZSBhIHNlcXVlbmNl
IG9mIG1vdXNlIGV2ZW50cy4KLSAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVRhcCgxMCwgMTIp
OwotICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMCk7Ci0gICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJyAnKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIp
Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1
cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyMWRkODYwYmFkY2E2NWUyYmMwMjI0MDI0NDg0NDJi
NjFiYTIxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dl
c3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2Vtb3ZlIgotUEFTUyBldmVudC5j
bGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBp
cyAibW91c2Vkb3duIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVu
dFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2V1cCIKLVBBU1MgZXZlbnQuY2xpZW50
WCBpcyAxMAotUEFTUyBldmVudC5jbGllbnRZIGlzIDEyCi1QQVNTIGV2ZW50LnR5cGUgaXMgImNs
aWNrIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYWQyZjIzZDY1NzdiNWEzMTA1MjJlZDZkYzMyYjQzOThhZDk4MTA2MS4uYjNkNTk4
OGNlY2UzODZmNjlhNzRjODE2ZDQxYTQ1NTMyNTZlMTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY1IEBACisyMDExLTA4LTI0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBVc2UgYSBzeW50aGV0aWMgZXZlbnQgdHlwZSBmb3IgZ2VzdHVyZXMgZ2Vu
ZXJhdGVkIGJ5IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NDkyCisgICAgICAgCisgICAgICAgIFBlciBkaXNj
dXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NDoK
KyAgICAgICAgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIFN5bnRoZXRpY0dlc3R1cmVFdmVudCBm
b3IgZXZlbnRzCisgICAgICAgIGdlbmVyYXRlZCBieSBhIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIgaW5zdGFuY2UuIFNlcGFyYXRpbmcKKyAgICAgICAgc3ludGhldGljIGV2ZW50cyBmcm9tIGVt
YmVkZGVyLXNvdXJjZWQgUGxhdGZvcm1HZXN0dXJlRXZlbnRzCisgICAgICAgIGVsaW1pbmF0ZXMg
YnVncyBjYXVzZWQgYnkgbWl4aW5nIHRoZSBzaWRlIGVmZmVjdHMgb2Ygc3ludGhlc2l6ZWQKKyAg
ICAgICAgYW5kIHBsYXRmb3JtIGdlc3R1cmVzIGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBlbmFi
bGUKKyAgICAgICAgR0VTVFVSRV9SRUNPR05JWkVSIGluZGVwZW5kZW50bHkgb2YgR0VTVFVSRV9F
VkVOVFMuCisgICAgICAgIAorICAgICAgICBTeW50aGV0aWMgZ2VzdHVyZXMgY29udGludWUgdG8g
YmUgdGVzdGVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZVN5bnRoZXRpY0V2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFu
ZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6OlN5bnRoZXRpY0dlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
dGhldGljR2VzdHVyZUV2ZW50Ojpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0
aWNHZXN0dXJlRXZlbnQ6Omdsb2JhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bnRo
ZXRpY0dlc3R1cmVFdmVudDo6ZGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2Vz
dHVyZUV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVy
ZUV2ZW50OjpzaGlmdEtleSk6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZl
bnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50Ojph
bHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50OjptZXRhS2V5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRUYXBTdGFy
dEdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
OjphcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xs
R2VzdHVyZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjph
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxFbmQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2sp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmluU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlU3ludGhldGljRXZl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oOgorCiAyMDExLTA4LTI0ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSlNIVE1MSW1hZ2VFbGVtZW50IChhbmQgYXNzb2Np
YXRlZCBOb2RlKSBpcyBhYmFuZG9uZWQgd2hlbiBpbWFnZSBsb2FkIGlzIGNhbmNlbGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggOWQ3YjBjYzBlYzNhOTMwZjY2Yjk5ZjUzNzAzMWUyMGMyNTM5ODIzNy4u
ZTY3ZTc2OTQxYzA3ODI2NzdlMDM3ZDVhMDYwM2JjNDFmNjdkNTkyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNzA1LDYgKzcwNSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2VhcmNoUG9wdXBN
ZW51LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
U3lzdGVtVGltZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaGVtZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9UaGVtZVR5cGVzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDA4ZmQyNzc0MzI0MjczYmVlZGIxODNhNzhiNTNiNDQwMTFhNGI1MmUuLjI1MWUy
YWQ0OWYxMGQ0YTI1MjM0MWNiYTcyN2EzZDFiNTY2ZDY5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTg3LDYgKzg3LDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNp
bmNsdWRlICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5j
ZS5oIgpAQCAtMjIwMSw2ICsyMjA1LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVl
bEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5vZGUsIFdoZWVsRXZlbnQqIHdoZWVsRXYKIH0KIAog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKy8vIFRPRE8ocmprcm9lZ2UpOiByZXZlcnQgdGhz
aSB0byBzb21ldGhpbmcgbW9yZSBsaWtlIHRoZSBwcmV2aW91cyB2ZXJzaW9uCiBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhpdCB0ZXN0IGFuZCBn
byB0byB0aGUgY29ycmVjdCBzdWJmcmFtZSByYXRoZXIgdGhhbiAKQEAgLTIyMDgsMzMgKzIyMTMs
NDUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgIC8vIHRoYXQgaWYgYSBmcmFtZSBnZXRz
IGEgZ2VzdHVyZSBiZWdpbiBnZXN0dXJlLCBpdCBnZXRzIHRoZSBjb3JyZXNwb25kaW5nCiAgICAg
Ly8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAotICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUo
KSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKLSAgICAgICAg
Ly8gRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGlt
ZXMgb25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3Zl
LgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQu
cG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3Vz
ZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCks
IGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2
ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1
cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50
LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgp
LCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQg
Ki8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdl
c3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50
LnRpbWVzdGFtcCgpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Cisg
ICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2aWV3LT5oYW5kbGVH
ZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmIHN5bnRoZXRpYykK
K3sKKyAgICBzd2l0Y2ggKHN5bnRoZXRpYy50eXBlKCkpIHsKKyAgICBjYXNlIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6VGFwQmVnaW5UeXBlOgorICAgICAgICAvLyBGSVhNRTogQWRkIGEgbGluayBz
ZWxlY3Rpb24gcHJldmlldy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgU3ludGhl
dGljR2VzdHVyZUV2ZW50OjpUYXBFbmRUeXBlOiB7CisgICAgICAgIC8vIEZJWE1FOiBIaXQgdGVz
dCBvbmx5IG9uY2UgZm9yIGFsbCB0aHJlZSBldmVudHMuCisgICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudCBmYWtlTW91c2VNb3ZlKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRpb24oKSks
IHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSksIE5vQnV0dG9uLCBN
b3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCks
IHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFL
ZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZURvd24ocm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91
bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9iYWxQb3NpdGlvbigpKSwgTGVmdEJ1dHRvbiwgTW91
c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCks
IHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFL
ZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZVVwKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRpb24oKSksIHJvdW5k
ZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSksIExlZnRCdXR0b24sIE1vdXNl
RXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBzeW50aGV0aWMuc2hpZnRLZXkoKSwg
c3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGljLmFsdEtleSgpLCBzeW50aGV0aWMubWV0YUtl
eSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOwogICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3Vz
ZU1vdmUpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CiAg
ICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVw
ZGF0ZVR5cGU6IHsKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2
ZW50Ojp0aWNrTXVsdGlwbGllcjsKLSAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBpbnRl
cmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJlc3Nl
ZC4KLSAgICAgICAgSW50UG9pbnQgcG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueCgpICsg
Z2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQucG9zaXRpb24oKS55KCkgKyBnZXN0
dXJlRXZlbnQuZGVsdGFZKCkpOwotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGlj
V2hlZWxFdmVudChwb2ludCwgcG9pbnQsIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2
ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyB0aWNrRGl2aXNvciwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWSgpIC8gdGlja0Rpdmlzb3IsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAv
KiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2
ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtl
eSgpKTsKKyAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQocm91
bmRlZEludFBvaW50KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRo
ZXRpYy5nbG9iYWxQb3NpdGlvbigpKSwgc3ludGhldGljLmRlbHRhKCkud2lkdGgoKSwgc3ludGhl
dGljLmRlbHRhKCkuaGVpZ2h0KCksIHN5bnRoZXRpYy5kZWx0YSgpLndpZHRoKCkgLyB0aWNrRGl2
aXNvciwgc3ludGhldGljLmRlbHRhKCkuaGVpZ2h0KCkgLyB0aWNrRGl2aXNvciwgU2Nyb2xsQnlQ
aXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIHN5bnRoZXRpYy5zaGlmdEtl
eSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCksIHN5bnRoZXRpYy5t
ZXRhS2V5KCkpOwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNj
cm9sbEVuZFR5cGU6Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsK
LSAgICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IHZpZXctPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgor
ICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgorICAgIGNhc2Ug
U3ludGhldGljR2VzdHVyZUV2ZW50OjpHZXN0dXJlQmVnaW5UeXBlOgorICAgIGNhc2UgU3ludGhl
dGljR2VzdHVyZUV2ZW50OjpHZXN0dXJlQ2hhbmdlVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6R2VzdHVlRW5kVHlwZToKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBh
ZGRpdGlvbmFsIHN5bnRoZXRpYyBnZXN0dXJlcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4
IGNmMmZlODE0M2UyY2Y5YTViY2IwNDg4NzA2M2EzY2RmM2Y2MWIzMTUuLjRkZDBhZGUwYzc3MjFj
ZmM3NDE1NGVjMmFkZGU5MGZkMzAyMWQ2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aApAQCAtNzksNiArNzksOSBAQCBjbGFzcyBXaWRnZXQ7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQogY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQorY2xhc3MgU3ludGhldGljR2VzdHVyZUV2ZW50OworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogZXh0ZXJuIGNvbnN0IGludCBMaW5rRHJhZ0h5c3Rl
cmVzaXM7CkBAIC0xNjEsNiArMTY0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykKICAgICBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYpOwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBib29s
IGhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBib29sIHNlbmRDb250ZXh0TWVu
dUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKaW5kZXggMThiN2QxYWEyZDFlZGY5YTgzZGVm
MmYyNjZmMjUwOTAzNzk2ODQ3Yi4uMWU0MGFkZmQ3ZjYxMWI0MGQxNDUxMzFmOTQyYTk5YzYxMDQ5
ZWI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVu
dC5oCkBAIC0zNyw4ICszNyw2IEBAIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBT
Y3JvbGxCZWdpblR5cGUsCiAgICAgICAgIFNjcm9sbEVuZFR5cGUsCi0gICAgICAgIFNjcm9sbFVw
ZGF0ZVR5cGUsCi0gICAgICAgIFRhcFR5cGUKICAgICB9OwogCiAgICAgUGxhdGZvcm1HZXN0dXJl
RXZlbnQoKQpAQCAtNDcsMTcgKzQ1LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
UGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwg
Y29uc3QgZmxvYXQgZGVsdGFYLCBjb25zdCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICBQbGF0Zm9ybUdlc3R1
cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICwgbV9n
bG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1l
c3RhbXApCi0gICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQotICAgICAgICAsIG1fZGVsdGFZKGRl
bHRhWSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQotICAgICAgICAsIG1fY3RybEtl
eShjdHJsS2V5KQotICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKLSAgICAgICAgLCBtX21ldGFL
ZXkobWV0YUtleSkKICAgICB7CiAgICAgfQogCkBAIC02NywyNSArNTksMTEgQEAgcHVibGljOgog
ICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsUG9zaXRpb247IH0gLy8gU2NyZWVuIGNvb3JkaW5hdGVzLgogCiAgICAgZG91YmxlIHRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9Ci0KLSAgICBmbG9hdCBkZWx0YVgo
KSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQotICAgIGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsdGFZOyB9Ci0gICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hpZnRLZXk7IH0KLSAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7
IH0KLSAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9Ci0gICAgYm9v
bCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9Ci0KIHByb3RlY3RlZDoKICAg
ICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2ludCBtX3Bvc2l0aW9uOwogICAgIEludFBvaW50IG1f
Z2xvYmFsUG9zaXRpb247CiAgICAgZG91YmxlIG1fdGltZXN0YW1wOwotICAgIGZsb2F0IG1fZGVs
dGFYOwotICAgIGZsb2F0IG1fZGVsdGFZOwotICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICBib29s
IG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0S2V5OwotICAgIGJvb2wgbV9tZXRhS2V5OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDBiODZhOTI3NmZiNmJkZWY5Yjdj
Mzc4ODNjNTA5M2Y3N2UwNGNiM2MuLjY5OWI3YWU2ODQzYzY1NmI2ZTMyNjUxYjdmMzdjZTJlMTVj
OWFmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcl9oCiAjZGVmaW5lIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAogCi0jaW5j
bHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNpbmNsdWRlICJTeW50aGV0aWNHZXN0dXJl
RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+UGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcigpOwogCi0gICAgdHlwZWRlZiBQYXNzT3duUHRyPFZlY3RvcjxQ
bGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBQYXNzR2VzdHVyZXM7CisgICAgdHlwZWRlZiBQYXNzT3du
UHRyPFZlY3RvcjxTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gUGFzc0dlc3R1cmVzOwogCiAgICAg
Ly8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCBhbmQgcmV0dXJucyAwIG9yIG1vcmUgcmVz
dWx0aW5nIGdlc3R1cmVzLgogICAgIHZpcnR1YWwgUGFzc0dlc3R1cmVzIHByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJl
dmVudGVkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
aW5kZXggNTUzOGVmZGQxYWNkOWQxM2NmMjg2YzZkYWQwNTFlMTg4ZjEzZTczYS4uZWE1ZWU1ZWFj
NDliZDcxOTZjODA0Y2Y3ZTk0YmRjNzRhY2Q5OWJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCisjaW5jbHVkZSAiU3ludGhldGljR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5LDYg
KzEyMywxMiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQordm9pZCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlU3ludGhldGljRXZlbnQoY29u
c3QgU3ludGhldGljR2VzdHVyZUV2ZW50JikKK3sKK30KKyNlbmRpZgorCiBGbG9hdFBvaW50IFNj
cm9sbEFuaW1hdG9yOjpjdXJyZW50UG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBGbG9h
dFBvaW50KG1fY3VycmVudFBvc1gsIG1fY3VycmVudFBvc1kpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNjY3MzgxYjMxMWQ5MmY1NTk4YzE3ZTIyNGMwYmUw
YzU2NjQ1NTFiNi4uYWJlMGY5ODA3YzJlYmU0N2ZiOTc2OWQ4ODNlZWFhZDk3NjNiMjQyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC00NCw2ICs0NCw5IEBA
IGNsYXNzIFNjcm9sbGJhcjsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBjbGFzcyBQbGF0
Zm9ybUdlc3R1cmVFdmVudDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CitjbGFzcyBTeW50aGV0aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKIAogY2xhc3MgU2Nyb2xsQW5p
bWF0b3IgewogcHVibGljOgpAQCAtNjcsNiArNzAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCisgICAgdm9pZCBoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0
dXJlRXZlbnQmKTsKKyNlbmRpZgogCiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24oKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggNTA5
MmIwNWNkYjMyNjY4OTQyNmFmM2E3NWU1N2M5M2IzODc2MTM0YS4uY2U5NDM5OGQ3MDVhMmI4NjU2
MjgwNDYzNzZmMDc4ODExMWUzYTdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCkBAIC00MCw2ICs0MCw5IEBAIGNsYXNzIFNjcm9sbEFuaW1hdG9yOwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorY2xhc3MgU3ludGhldGljR2VzdHVyZUV2
ZW50OworI2VuZGlmCiAKIGNsYXNzIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKQEAgLTU2LDYg
KzU5LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCisj
aWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2b2lkIGhhbmRsZVN5bnRoZXRpY0V2
ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBGdW5j
dGlvbnMgZm9yIGNvbnRyb2xsaW5nIGlmIHlvdSBjYW4gc2Nyb2xsIHBhc3QgdGhlIGVuZCBvZiB0
aGUgZG9jdW1lbnQuCiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N5bnRoZXRpY0dlc3R1cmVFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3ludGhldGljR2VzdHVyZUV2ZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWIxOTEwODQ1NDRjNjkxMGVhMWM5ZTcxMzhjNzIxODYyM2VkOWI1YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N5bnRoZXRpY0dlc3R1cmVFdmVudC5o
CkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3ludGhldGljR2VzdHVyZUV2ZW50X2gKKyNkZWZp
bmUgU3ludGhldGljR2VzdHVyZUV2ZW50X2gKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVS
KQorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50SGFuZGxlcjsKK2NsYXNzIFBsYXRmb3Jt
VG91Y2hFdmVudDsKKworY2xhc3MgU3ludGhldGljR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAg
ICBlbnVtIFR5cGUgeworICAgICAgICBUYXBCZWdpblR5cGUsCisgICAgICAgIFRhcEVuZFR5cGUs
CisgICAgICAgIFNjcm9sbEJlZ2luVHlwZSwKKyAgICAgICAgU2Nyb2xsRW5kVHlwZSwKKyAgICAg
ICAgU2Nyb2xsVXBkYXRlVHlwZSwKKyAgICAgICAgR2VzdHVyZUJlZ2luVHlwZSwKKyAgICAgICAg
R2VzdHVyZUNoYW5nZVR5cGUsCisgICAgICAgIEdlc3R1ZUVuZFR5cGUsCisgICAgfTsKKworICAg
IFN5bnRoZXRpY0dlc3R1cmVFdmVudCgpCisgICAgICAgIDogbV90eXBlKFNjcm9sbEJlZ2luVHlw
ZSkKKyAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQorICAgIHsKKyAgICB9CisKKyAgICBTeW50aGV0
aWNHZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNv
bnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBt
X3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCisgICAgICAgICwgbV9kZWx0YShkZWx0YSkKKyAgICAgICAgLCBtX3RpbWVzdGFtcCh0
aW1lc3RhbXApCisgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgLCBtX2N0
cmxLZXkoY3RybEtleSkKKyAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCisgICAgICAgICwgbV9t
ZXRhS2V5KG1ldGFLZXkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRl
cy4KKyAgICBjb25zdCBGbG9hdFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZ2xvYmFsUG9zaXRpb247IH0gLy8gU2NyZWVuIGNvb3JkaW5hdGVzLgorICAgIGNvbnN0IEZs
b2F0U2l6ZSYgZGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhOyB9CisgICAgZG91YmxlIHRp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisKKyAgICBib29sIHNoaWZ0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9hbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFL
ZXk7IH0KKworcHJvdGVjdGVkOgorICAgIFR5cGUgbV90eXBlOworICAgIEZsb2F0UG9pbnQgbV9w
b3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CisgICAgRmxvYXRTaXpl
IG1fZGVsdGE7CisgICAgZG91YmxlIG1fdGltZXN0YW1wOworICAgIAorICAgIGJvb2wgbV9zaGlm
dEtleTsKKyAgICBib29sIG1fY3RybEtleTsKKyAgICBib29sIG1fYWx0S2V5OworICAgIGJvb2wg
bV9tZXRhS2V5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNlbmRpZiAvLyBTeW50aGV0aWNHZXN0dXJlRXZlbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNz
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNz
U2Nyb2xsVmlldy5oCmluZGV4IGM2Y2MyYjVmMzRiNDJlNjRjMjU1ODVkOWY3OGM5NWNiOWE2MWU3
NWQuLmE3NjhlZDA0NGQ5YzRkZDg2MmRjM2RjYzY0MTlmNzEwNzdmYTg0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3
LmgKQEAgLTM2LDkgKzM2LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBG
cmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50OwotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBjbGFzcyBT
eW50aGV0aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ7CiAgICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCkBAIC02NiwxMSArNjksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlF
dmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKSA9IDA7CisjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikgPSAwOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaEV2ZW50JikgPSAwOwogI2VuZGlmCiAjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVN5bnRoZXRp
Y0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpID0gMDsKICNlbmRpZgogCiAgICAg
ICAgIC8vIFNjcm9sbGFibGVBcmVhIHB1YmxpYyBtZXRob2RzOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9t
aXVtLmNwcAppbmRleCAxN2RiNWI1NjNmYzY2OGVlNDEyNjI3ZjE3ZDhmYzE2NjE2YzhmOGNhLi4w
ZTVhNzkxZWZhM2JhNTA1OGEyMDg3YmMzOTVhOGM0ZjUxNmYwOTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtLmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCIKIAotI2luY2x1ZGUgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBDb252ZXJ0IHRvIG1ldGhvZHMuCkBAIC0xMDMsOSAr
MTAwLDE1IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6aXNJbnNpZGVNYW5oYXR0YW5T
cXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwCiAgICAgcmV0dXJuIG1hbmhhdHRhbkRp
c3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxzRm9yQ2xpY2s7CiB9CiAKLXZvaWQgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJl
cyBnZXN0dXJlcykKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kVGFwU3RhcnRH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdl
c3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBw
ZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlLCB0
b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUs
IDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkp
OworICAgIGdlc3R1cmVzLT5hcHBlbmQoU3ludGhldGljR2VzdHVyZUV2ZW50KFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6VGFwQmVnaW5UeXBlLCBGbG9hdFBvaW50KHRvdWNoUG9pbnQucG9zKCkpLCBG
bG9hdFBvaW50KHRvdWNoUG9pbnQuc2NyZWVuUG9zKCkpLCBtX2xhc3RUb3VjaFRpbWUsIEZsb2F0
U2l6ZSgpLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKK30K
Kwordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjpHZXN0dXJlcyBnZXN0dXJlcykKK3sKKyAgICAvLyBGSVhNRTogbWFrZSBjZXJ0YWluIHRo
YXQgc2NyZWVuIHBvc2l0aW9ucyBhcmUgdmFsaWQuCisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50
aGV0aWNHZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBFbmRUeXBlLCBGbG9h
dFBvaW50KGZpcnN0VG91Y2hQb3NpdGlvbigpKSwgRmxvYXRQb2ludChmaXJzdFRvdWNoUG9zaXRp
b24oKSksIG1fbGFzdFRvdWNoVGltZSwgRmxvYXRTaXplKCksIG1fc2hpZnRLZXksIG1fY3RybEtl
eSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
OjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRG
b3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBib29sIGRlZmF1bHRQ
cmV2ZW50ZWQpCkBAIC0xMTUsNyArMTE4LDcgQEAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6
UGFzc0dlc3R1cmVzIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW4KICAg
ICBtX3NoaWZ0S2V5ID0gZXZlbnQuc2hpZnRLZXkoKTsKICAgICBtX21ldGFLZXkgPSBldmVudC5t
ZXRhS2V5KCk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdl
c3R1cmVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4oKSk7Cisg
ICAgT3duUHRyPFZlY3RvcjxTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMgPSBhZG9w
dFB0cihuZXcgVmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVFdmVudD4oKSk7CiAgICAgY29uc3QgVmVj
dG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaW50cy5zaXplKCk7IGkrKykgewogICAgICAg
ICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHAgPSBwb2ludHNbaV07CkBAIC0xMjcsMjUgKzEz
MCwyMiBAQCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbgogICAgIHJldHVybiBnZXN0dXJlcy5yZWxl
YXNlKCk7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2Vz
dHVyZUJlZ2luKGNvbnN0IEludFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
K3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7
Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlLCB0b3VjaFBvaW50LCB0b3VjaFBvaW50LCBtX2xhc3RU
b3VjaFRpbWUsIDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1f
bWV0YUtleSkpOwotICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludDsKLSAgICBt
X2xhc3RUb3VjaFBvc2l0aW9uID0gbV9maXJzdFRvdWNoUG9zaXRpb247CisgICAgZ2VzdHVyZXMt
PmFwcGVuZChTeW50aGV0aWNHZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3Jv
bGxCZWdpblR5cGUsIEZsb2F0UG9pbnQodG91Y2hQb2ludC5wb3MoKSksIEZsb2F0UG9pbnQodG91
Y2hQb2ludC5zY3JlZW5Qb3MoKSksIG1fbGFzdFRvdWNoVGltZSwgRmxvYXRTaXplKCksIG1fc2hp
ZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCi12b2lkIElubmVy
R2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgSW50UG9pbnQm
IHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91
Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0
Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgbV9m
aXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUs
IDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkp
OworICAgIGdlc3R1cmVzLT5hcHBlbmQoU3ludGhldGljR2VzdHVyZUV2ZW50KFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnBvcygpKSwg
RmxvYXRQb2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hUaW1lLCBGbG9h
dFNpemUoKSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9
CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0
ZShjb25zdCBJbnRQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCit2b2lkIElu
bmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBm
bG9hdCBkZWx0YVgodG91Y2hQb2ludC54KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLngoKSk7Ci0g
ICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQueSgpIC0gbV9sYXN0VG91Y2hQb3NpdGlvbi55KCkp
OworICAgIEZsb2F0U2l6ZSBkZWx0YSh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1fZmlyc3RUb3Vj
aFBvc2l0aW9uLngoKSwgdG91Y2hQb2ludC5wb3MoKS55KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlv
bi55KCkpOwogCi0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24s
IG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhWCwgZGVsdGFZLCBt
X3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKLSAgICBtX2xhc3RU
b3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludDsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFN5bnRoZXRp
Y0dlc3R1cmVFdmVudChTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGUsIEZs
b2F0UG9pbnQodG91Y2hQb2ludC5wb3MoKSksIEZsb2F0UG9pbnQodG91Y2hQb2ludC5zY3JlZW5Q
b3MoKSksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGEsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9h
bHRLZXksIG1fbWV0YUtleSkpOworICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2lu
dC5wb3MoKTsKIH0KIAogdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjp1cGRhdGVWYWx1ZXMo
Y29uc3QgZG91YmxlIHRvdWNoVGltZSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBv
aW50KQpAQCAtMTY5LDE2ICsxNjksMTggQEAgdW5zaWduZWQgaW50IElubmVyR2VzdHVyZVJlY29n
bml6ZXI6OnNpZ25hdHVyZShTdGF0ZSBnZXN0dXJlU3RhdGUsIHVuc2lnbmVkIGlkLAogICAgIHJl
dHVybiAxICsgKCh0b3VjaFR5cGUgJiAweDcpIDw8IDEgfCAoaGFuZGxlZCA/IDEgPDwgNCA6IDAp
IHwgKChpZCAmIDB4ZmZmKSA8PCA1ICkgfCAoZ2VzdHVyZVN0YXRlIDw8IDE3KSk7CiB9CiAKLXN0
YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2du
aXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6
R2VzdHVyZXMgZ2VzdHVyZXMpCitzdGF0aWMgYm9vbCB0b3VjaERvd24oSW5uZXJHZXN0dXJlUmVj
b2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91
Y2hQb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAg
ICAgZ2VzdHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlBl
bmRpbmdTeW50aGV0aWNDbGljayk7CisgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFRhcFN0
YXJ0R2VzdHVyZUV2ZW50KHRvdWNoUG9pbnQsIGdlc3R1cmVzKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHN0YXRpYyBib29sIHNjcm9sbEVuZChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0
dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgSW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZVJlY29nbml6
ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQocG9pbnQucG9zKCksIGdlc3R1cmVzKTsKKyAgICBn
ZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZChwb2ludCwgZ2VzdHVyZXMp
OwogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVy
OjpOb0dlc3R1cmUpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5yZXNldCgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRpYyBib29sIGNsaWNrKElubmVy
R2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNo
CiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5pc0luQ2xpY2tUaW1lV2luZG93KCkgJiYg
Z2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHBvaW50KSkgewogICAg
ICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6
Tm9HZXN0dXJlKTsKLSAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZENsaWNrR2VzdHVy
ZUV2ZW50KHBvaW50LCBnZXN0dXJlcyk7CisgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBl
bmRUYXBFbmRHZXN0dXJlRXZlbnQocG9pbnQsIGdlc3R1cmVzKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBub0dlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIsIHBvaW50
LCBnZXN0dXJlcyk7CkBAIC0yMDYsOCArMjA4LDggQEAgc3RhdGljIGJvb2wgaXNDbGlja09yU2Ny
b2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGEK
ICAgICB9CiAKICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQgJiYgIWdlc3R1cmVSZWNvZ25pemVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShw
b2ludCkpIHsKLSAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVC
ZWdpbihnZXN0dXJlUmVjb2duaXplci0+Zmlyc3RUb3VjaFBvc2l0aW9uKCksIGdlc3R1cmVzKTsK
LSAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUocG9p
bnQucG9zKCksIGdlc3R1cmVzKTsKKyAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNj
cm9sbEdlc3R1cmVCZWdpbihwb2ludCwgZ2VzdHVyZXMpOworICAgICAgICBnZXN0dXJlUmVjb2du
aXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShwb2ludCwgZ2VzdHVyZXMpOwogICAgICAg
ICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6U2Ny
b2xsKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjE2LDcgKzIxOCw3IEBAIHN0
YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJl
UmVjb2duaXplciwgY29uc3QgUGxhCiAKIHN0YXRpYyBib29sIGluU2Nyb2xsKElubmVyR2VzdHVy
ZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
IHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAg
ICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShwb2ludC5wb3Mo
KSwgZ2VzdHVyZXMpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxHZXN0dXJl
VXBkYXRlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW0uaAppbmRleCBmZDQ2ZmU3OTBjNmYzMDcwNTg0N2RhNmUxNDk0NWIzMGE2Y2Ey
ZWU2Li4xOGQyNWFkOWJhYzIxZmIzOGJjODYyMTY0MTNmYmI4MGM5NDJlZGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKLSNp
bmNsdWRlICJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaFBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDsKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKIAogY2xh
c3MgSW5uZXJHZXN0dXJlUmVjb2duaXplciB7CiBwdWJsaWM6CkBAIC00OSwxOSArNDksMjAgQEAg
cHVibGljOgogICAgICAgICBTY3JvbGwKICAgICB9OwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UGxh
dGZvcm1HZXN0dXJlRXZlbnQ+KiBHZXN0dXJlczsKKyAgICB0eXBlZGVmIFZlY3RvcjxTeW50aGV0
aWNHZXN0dXJlRXZlbnQ+KiBHZXN0dXJlczsKICAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJh
bnNpdGlvbkZ1bmN0aW9uKShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50JiwgR2VzdHVyZXMpOwogCiAgICAgfklubmVyR2VzdHVyZVJlY29nbml6ZXIoKTsK
IAotICAgIHZvaWQgYXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50JiwgR2VzdHVyZXMpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIGJvb2wgaXNJ
bkNsaWNrVGltZVdpbmRvdygpOwogICAgIGJvb2wgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyOjpQYXNzR2VzdHVyZXMgIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKLSAgICB2b2lkIGFw
cGVuZFNjcm9sbEdlc3R1cmVCZWdpbihjb25zdCBJbnRQb2ludCYsIEdlc3R1cmVzKTsKLSAgICB2
b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgSW50UG9pbnQmLCBHZXN0dXJlcyk7Ci0g
ICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKGNvbnN0IEludFBvaW50JiwgR2VzdHVy
ZXMpOworICAgIHZvaWQgYXBwZW5kVGFwU3RhcnRHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5kVGFwRW5kR2VzdHVyZUV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lkIGFwcGVuZFNj
cm9sbEdlc3R1cmVCZWdpbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7Cisg
ICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYs
IEdlc3R1cmVzKTsKKyAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgdmFs
dWUpIHsgbV9zdGF0ZSA9IHZhbHVlOyB9CiAgICAgU3RhdGUgc3RhdGUoKSB7IHJldHVybiBtX3N0
YXRlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
Q29udGFpbmVyLmNwcAppbmRleCAyMWM0NmU2NzFlZDk0MzhjYzZiYjRlYjI1OGQ5NzVjNmZkOWIy
ZDA3Li40OTZlZGMxNjdmYzcyODMyYTJhNmNiOWMxNDI4ZjE0MzAwZmU0ODBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCkBA
IC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVkZSAiU3ludGhldGlj
R2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5j
bHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCiAjZW5kaWYKQEAgLTI5MiwyNyArMjk2LDM4IEBA
IGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3Vj
aEV2ZW50JikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBQ
b3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShHRVNU
VVJFX1JFQ09HTklaRVIpCiAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIHNoYXJlIGZ1
bmN0aW9uYWxpdHkgd2l0aCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KLWJvb2wg
UG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQorYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlU3ludGhldGlj
RXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50JiBzeW50aGV0aWMpCiB7Ci0gICAgc3dp
dGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwVHlwZTogewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShn
ZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5v
QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAg
ICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0
aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2
ZW50UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwg
Z2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZl
bnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVF
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8q
IGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5j
dHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwg
Z2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICBzd2l0Y2ggKHN5bnRoZXRpYy50eXBlKCkp
IHsKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwRW5kVHlwZTogeworICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShyb3VuZGVkSW50UG9pbnQoc3ludGhl
dGljLnBvc2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0aW9u
KCkpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIHN5bnRo
ZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCks
IHN5bnRoZXRpYy5tZXRhS2V5KCksIHN5bnRoZXRpYy50aW1lc3RhbXAoKSk7CisgICAgICAgIFBs
YXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMu
cG9zaXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSks
IExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIHN5bnRo
ZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCks
IHN5bnRoZXRpYy5tZXRhS2V5KCksIHN5bnRoZXRpYy50aW1lc3RhbXAoKSk7CisgICAgICAgIFBs
YXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChyb3VuZGVkSW50UG9pbnQoc3ludGhldGljLnBv
c2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCkpLCBM
ZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhl
dGljLnNoaWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwg
c3ludGhldGljLm1ldGFLZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsKICAgICAgICAgLy8g
aGFuZGxlTW91c2VNb3ZlRXZlbnQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNl
RG93bkV2ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBn
ZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0
dXJlRXZlbnQuZGVsdGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIDEyMC4wZiwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWSgpIC8gMTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNB
Y2NlcHRlZCAqLyBmYWxzZSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5j
dHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSk7
CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQocm91bmRlZEludFBv
aW50KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9i
YWxQb3NpdGlvbigpKSwgc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoc3ludGhldGljLmRlbHRhKCku
d2lkdGgoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihzeW50aGV0aWMuZGVsdGEoKS5oZWln
aHQoKSkpLCBzeW50aGV0aWMuZGVsdGEoKS53aWR0aCgpIC8gMTIwLjBmLCBzeW50aGV0aWMuZGVs
dGEoKS5oZWlnaHQoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNj
ZXB0ZWQgKi8gZmFsc2UsIHN5bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgp
LCBzeW50aGV0aWMuYWx0S2V5KCksIHN5bnRoZXRpYy5tZXRhS2V5KCkpOwogICAgICAgICBoYW5k
bGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgot
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBT
eW50aGV0aWNHZXN0dXJlRXZlbnQ6OlRhcEJlZ2luVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2
ZW50OjpTY3JvbGxFbmRUeXBlOgorICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpHZXN0
dXJlQmVnaW5UeXBlOgorICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpHZXN0dXJlQ2hh
bmdlVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6R2VzdHVlRW5kVHlwZToK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5oCmluZGV4IDQ1MmUxYjQy
NTQyNmM5ZDMxOWFkMzM1ZjI0ZDdiZjA5ZGUzYjNiMGYuLjI2ODk2OGU4NTNkMmExMjFlNTk0Njlk
OTJlOTExNDQxZmRmODM4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBDb250YWluZXIuaApAQCAtNDEsNiArNDEsMTMgQEAgY2xhc3MgQ2hyb21lQ2xp
ZW50Q2hyb21pdW07CiBjbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsK
KyNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitjbGFzcyBTeW50aGV0aWNH
ZXN0dXJlRXZlbnQ7CisjZW5kaWYKKwogY2xhc3MgUG9wdXBDb250YWluZXIgOiBwdWJsaWMgRnJh
bWVsZXNzU2Nyb2xsVmlldyB7CiBwdWJsaWM6CiAgICAgZW51bSBQb3B1cFR5cGUgewpAQCAtNjUs
OSArNzIsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVh
bCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0
dXJlRXZlbnQmKTsKKyNlbmRpZgogCiAgICAgLy8gUG9wdXBDb250YWluZXIgbWV0aG9kcwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcApp
bmRleCAyMDE1MDY0Y2RjMThlMjU5MjA1MjVmMzBhNDc5MzkzMDU3ZTEyMDY4Li4xZTUwZGRkNjRj
YjBhZTBlM2ZjMGI1Mjk0ODg5ODNhYzU0MDRiYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKQEAgLTU0LDYgKzU0LDEwIEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdF
U1RVUkVfUkVDT0dOSVpFUikKKyNpbmNsdWRlICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNo
RXZlbnQuaCIKICNlbmRpZgpAQCAtMTg1LDEzICsxODksMjAgQEAgYm9vbCBQb3B1cExpc3RCb3g6
OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCiBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlU3ludGhl
dGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJUeXBlRXZlbnQoY29uc3Qg
UGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICAvLyBDaGVjayB3aGV0aGVyIHRo
ZSBldmVudCBpcyBhIGNoYXJhY3Rlci10eXBlZCBldmVudCBvciBub3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oCmluZGV4IDRjZWMzYTQxYWU3
MDUxYTYwMTkwOWYxYTAxNTlmNjk2MmExYjFlNDYuLmQ5ZDliYThjYmM1Y2U3YjRmMmQ1MWY5ZGMw
Y2ViNDY3ZWNmNDE4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwTGlzdEJveC5oCkBAIC01NCw2ICs1NCw5IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitjbGFzcyBTeW50aGV0
aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogY2xhc3Mg
UGxhdGZvcm1Ub3VjaEV2ZW50OwogI2VuZGlmCkBAIC0xMjMsOSArMTI2LDEyIEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKEdFU1RV
UkVfUkVDT0dOSVpFUikKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCBi
b29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlU3ludGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYK
IAogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3co
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWM0Y2FkNWZiZGQ3ZmZlMjI1
OGIzYzMzZjgzODY3YzViMTU4MzE5NC4uODYxNGU0YjNhMWFiOTY4N2I3YzVmODY4NTIyMDNjZDY5
MGY0ODc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
MS0wOC0yNCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgVXNlIGEgc3ludGhldGljIGV2ZW50IHR5cGUgZm9yIGdlc3R1cmVzIGdlbmVyYXRlZCBieSB0
aGUgZ2VzdHVyZQorICAgICAgICByZWNvZ25pemVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NjQ5MgorCisgICAgICAgIFBlciBkaXNjdXNzaW9uIGluIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NDoKKyAgICAgICAgdGhpcyB1cGRh
dGVzIHVzZXJzIG9mIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0gZm9yIGl0cyBjcmVhdGlvbgor
ICAgICAgICBvZiBTeW50aGV0aWNHZXN0dXJlRXZlbnQgaW5zdGVhZCBvZiBQbGF0Zm9ybUdlc3R1
cmVFdmVudCBhbmQgYWxzbworICAgICAgICB1cGRhdGVzIHRoZSBHZXN0dXJlUmVjb2duaXplckNo
cm9taXVtIHVuaXQgdGVzdHMgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVi
bGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5w
dXRFdmVudCk6CisgICAgICAgICogdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVF9GKToKKwogMjAxMS0wOC0yNCAgSmVyZW15IEFwdGhv
cnAgIDxqZXJlbXlhQGdvb2dsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIGZ1bGxzY3JlZW4gQVBJ
IG9uIFdlYkVsZW1lbnQvV2ViRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQppbmRleCAxN2I4ZWNmNWJkYTk5YTcyYjc4NzNhZTQyMjkxNmZmMzZjMjhlZTgwLi4wZTkxNmUy
ZmUyNjk1MmQ2NmEwYzZhYTYzYTZmZjFkOTc5OWRmMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCkBAIC01MCw3ICs1MCw3IEBACiAgICAgICAnRU5BQkxFX0ZJTEVfU1lTVEVN
PTEnLAogICAgICAgJ0VOQUJMRV9GSUxURVJTPTEnLAogICAgICAgJ0VOQUJMRV9HRU9MT0NBVElP
Tj0xJywKLSAgICAgICdFTkFCTEVfR0VTVFVSRV9FVkVOVFM9MScsCisgICAgICAnRU5BQkxFX0dF
U1RVUkVfRVZFTlRTPTAnLAogICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVI9MScsCiAg
ICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRT0xJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQu
aAppbmRleCBjNDlhZjQwNzA2ZGUwNjJkZjUxNjlhODc4ZjRkYmJlMTYyNzMzNTE3Li4xMWU2ZTRm
ZDMwOWQ4OGEyNmQyNjc5MTY5ZjgzYWEzMzlkNzlkYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCkBAIC0xMDMsMTMgKzEwMywxNCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIFdlYkdlc3R1cmVFdmVudAogICAgICAgICBHZXN0dXJlU2Nyb2xsQmVn
aW4sCiAgICAgICAgIEdlc3R1cmVTY3JvbGxFbmQsCi0gICAgICAgIEdlc3R1cmVUYXAsCiAKICAg
ICAgICAgLy8gV2ViVG91Y2hFdmVudAogICAgICAgICBUb3VjaFN0YXJ0LAogICAgICAgICBUb3Vj
aE1vdmUsCiAgICAgICAgIFRvdWNoRW5kLAogICAgICAgICBUb3VjaENhbmNlbCwKKyAgICAgICAg
CisgICAgICAgIC8vIEZJWE1FOiBpbnNlcnQgV2ViU3ludGhldGljR2VzdHVyZUV2ZW50CiAgICAg
fTsKIAogICAgIGVudW0gTW9kaWZpZXJzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCAwZGRlYTAyNDRhODk4
MjI0ZDQwYWYxZjhmMmQ1Y2RjNmVkMDBjNzZjLi5mMTQ4NTEzOTQ1YjIyMGFmZGYzNmE2OGUzMmZk
ODhmZGEyN2JlYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0xMjAsMTkgKzEyMCwxMiBAQCBQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQq
IHdpZGdldCwgY29uc3QgVwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKLSAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
ICAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50
UG9pbnQoZS54LCBlLnkpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5nbG9i
YWxYLCBlLmdsb2JhbFkpOwogICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOwot
ICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7
Ci0gICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtl
eSk7Ci0gICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkp
OwotICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBvcHVwTWVudUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBN
ZW51SW1wbC5jcHAKaW5kZXggNjc1YzQzYWJmZTk0ODI3MzBjNzllZDUzNGIyODMxNWNjZDE1NjJk
OS4uYmViOWNlYzA1ZTk4MjIzNGUyY2Q2N2M4ZmM4ZmY1OTdhNDBlYzMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKQEAgLTEzNCwxMSAr
MTM0LDE0IEBAIHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCBXZWJNb3Vz
ZVdoZWVsRXZlbnQmIGV2ZW50KQogICAgIG1fd2lkZ2V0LT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRm
b3JtV2hlZWxFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUo
R0VTVFVSRV9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6Okdlc3R1cmVFdmVudChjb25z
dCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBtX3dpZGdldC0+aGFuZGxl
R2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQp
KTsKIH0KKyNlbmRpZgogCisvLyBGSVhNRTogQWRkIHRoZSBhYmlsaXR5IHRvIGluamVjdCBTeW50
aGV0aWNHZXN0dXJlRXZlbnQgaW5zdGFuY2VzIGZyb20gbGF5b3V0IHRlc3RzLgogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQoY29uc3Qg
V2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7CkBAIC0xNDYsOSArMTQ5LDkgQEAgYm9vbCBXZWJQb3B1
cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIFBs
YXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgdG91Y2hFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50
KTsKICAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQobV93aWRnZXQtPmhhbmRsZVRvdWNoRXZlbnQo
dG91Y2hFdmVudEJ1aWxkZXIpKTsKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAg
IE93blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2
ZW50cyhtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRv
dWNoRXZlbnRCdWlsZGVyLCBkZWZhdWx0UHJldmVudGVkKSk7CisgICAgT3duUHRyPFZlY3RvcjxX
ZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVS
ZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVy
LCBkZWZhdWx0UHJldmVudGVkKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkgPSAwOyBpIDwg
Z2VzdHVyZUV2ZW50cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgIG1fd2lkZ2V0LT5oYW5kbGVHZXN0
dXJlRXZlbnQoKCpnZXN0dXJlRXZlbnRzKVtpXSk7CisgICAgICAgIG1fd2lkZ2V0LT5oYW5kbGVT
eW50aGV0aWNFdmVudCgoKmdlc3R1cmVFdmVudHMpW2ldKTsKICNlbmRpZgogICAgIHJldHVybiBk
ZWZhdWx0UHJldmVudGVkOwogfQpAQCAtMjc0LDkgKzI3Nyw5IEBAIGJvb2wgV2ViUG9wdXBNZW51
SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQog
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVRhcDoKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpICAgIAogICAgICAgICByZXR1
cm4gR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5w
dXRFdmVudCkpOwotCisjZW5kaWYKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZDoK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRW50ZXI6CiAgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpDb250ZXh0TWVudToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCBiODdmZGQwY2U0MzgzODYxODE5MjY1Mzg2YTZkNGVkOTM4ZWZlOTkwLi5mZDJm
Yjc4ZjFmMmU5MjMyOTlhYTU4YzFjNTNmMWNkYzg1NTZmMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03ODIsOSArNzgyLDkgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6dG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICBib29s
IGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKTsKIAogI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCi0gICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQp
KTsKKyAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlN5bnRoZXRpY0dlc3R1cmVFdmVudD4gPiBn
ZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKICAgICBmb3IgKHVu
c2lnbmVkIGludCAgaSA9IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKLSAgICAg
ICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVy
ZUV2ZW50KGdlc3R1cmVFdmVudHMtPmF0KGkpKTsKKyAgICAgICAgbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlU3ludGhldGljRXZlbnQoZ2VzdHVyZUV2ZW50
cy0+YXQoaSkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKQEAgLTEy
ODIsNyArMTI4Miw2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3Qg
V2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CiAgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVRhcDoKICAgICAgICAgaGFuZGxlZCA9IGdlc3R1cmVFdmVudCgqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJl
UmVjb2duaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdl
c3R1cmVSZWNvZ25pemVyVGVzdC5jcHAKaW5kZXggN2RmMzFlMjc3NjFmNDJkZjRmYzYwOTI3MTgx
ZDZmMjEzZTlhYTRiMi4uOWY4Yzc5MjQ5YjI4ZjU3Y2FiNDQ4N2U4NzhiNjhhYmY2MzczYzk2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdlc3R1cmVSZWNv
Z25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Jbm5lckdl
c3R1cmVSZWNvZ25pemVyVGVzdC5jcHAKQEAgLTI3NCwxNCArMjc0LDE0IEBAIFRFU1RfRihUZXN0
R2VzdHVyZVJlY29nbml6ZXIsIGdlc3R1cmVTY3JvbGxFdmVudHMpCiAKICAgICBCdWlsZGFibGVQ
bGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hN
b3ZlZCk7CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IG1vdmVFdmVudChXZWJDb3Jl
OjpUb3VjaE1vdmUsIG1vdmUpOwotICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVy
ZXMobW92ZUV2ZW50LCBmYWxzZSkpOworICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6U3ludGhl
dGljR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdl
c3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsKICAgICBib29sIHNjcm9sbFN0YXJ0ZWQgPSBmYWxz
ZSwgc2Nyb2xsVXBkYXRlZCA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgZ2VzdHVyZVN0YXJ0LT5zaXplKCk7IGkrKykgewogICAgICAgICBzd2l0Y2ggKCgqZ2VzdHVy
ZVN0YXJ0KVtpXS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsQmVnaW5UeXBlOgorICAgICAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Ny
b2xsQmVnaW5UeXBlOgogICAgICAgICAgICAgc2Nyb2xsU3RhcnRlZCA9IHRydWU7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBk
YXRlVHlwZToKKyAgICAgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGU6CiAgICAgICAgICAgICBzY3JvbGxVcGRhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjk2LDEwICsyOTYsMTAgQEAgVEVTVF9GKFRlc3RH
ZXN0dXJlUmVjb2duaXplciwgZ2VzdHVyZVNjcm9sbEV2ZW50cykKICAgICBCdWlsZGFibGVQbGF0
Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hS
ZWxlYXNlZCk7CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChX
ZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSk7CiAgICAgYm9vbCBzY3JvbGxFbmQgPSBmYWxzZTsK
LSAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1
cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNl
KSk7CisgICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4g
Z2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwg
ZmFsc2UpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVFbmQtPnNp
emUoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoKCpnZXN0dXJlRW5kKVtpXS50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICAg
ICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAgICAg
ICBzY3JvbGxFbmQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdl
ZmU3NGIwZTNhODdkM2E5NDk5NDliOGUzNDE3M2Q3NzBhYjNiNi4uZDNjZTdlMGQ1MjdmODRiZmRh
MWZhMjY0M2UyY2NiZWYyZTNiZTlkZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA4LTI0ICBSb2JlcnQgS3Jv
ZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmVzIG9ic29sZXRl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50IHN1YnR5cGVzIGZyb20gdGhlIEV2ZW50U2VuZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjQ5MgorICAgICAg
ICAKKyAgICAgICAgSW4gc2VwYXJhdGluZyBvdXQgc3ludGhlc2l6ZWQgZ2VzdHVyZSBldmVudHMg
ZnJvbSBwbGF0Zm9ybSBnZXN0dXJlCisgICAgICAgIGV2ZW50cywgc3ludGhldGljIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50cyB0eXBlcyB3ZXJlIHJlbW92ZWQuIFRoaXMgY2hhbmdlCisgICAgICAgIHVw
ZGF0ZXMgRXZlbnRTZW5kZXIgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50
U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6CisKIDIwMTEt
MDgtMjMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBNYWtlIG5vdGlmaWNhdGlvbnMgYXBwZWFyIGluIHRpbWUgb3JkZXIgYWdhaW4uCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggNmRhZjYxNjk1
NjFkYzE1MTgwNzBmN2QwYjdmMDk1MGM4NzkyODVmYy4uMjI5MDk1MGQzYWFkYTgxODQ0NmE4MWM3
Yjk4Y2M3MGVmMjRkMTc4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcApAQCAtMjgwLDcgKzI4MCw2IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRl
cihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInVwZGF0ZVRvdWNoUG9pbnQiLCAm
RXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVT
Y3JvbGxCZWdpbiIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVNjcm9sbEJlZ2luKTsKICAgICBiaW5k
TWV0aG9kKCJnZXN0dXJlU2Nyb2xsRW5kIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlU2Nyb2xsRW5k
KTsKLSAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVGFwIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFw
KTsKICAgICBiaW5kTWV0aG9kKCJ6b29tUGFnZUluIiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZUlu
KTsKICAgICBiaW5kTWV0aG9kKCJ6b29tUGFnZU91dCIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VP
dXQpOwogICAgIGJpbmRNZXRob2QoInNjYWxlUGFnZUJ5IiwgJkV2ZW50U2VuZGVyOjpzY2FsZVBh
Z2VCeSk7CkBAIC0xMDMzLDEyICsxMDMyLDYgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZVNj
cm9sbEVuZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAg
ICBnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZCwgYXJndW1lbnRz
KTsKIH0KIAotdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIGdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwLCBhcmd1bWVu
dHMpOwotfQotCiB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6
VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cykKIHsKICAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1
bWVudHNbMV0uaXNOdW1iZXIoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105205</attachid>
            <date>2011-08-25 10:12:05 -0700</date>
            <delta_ts>2011-08-29 09:02:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66492-20110825131240.patch</filename>
            <type>text/plain</type>
            <size>54772</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNmJmMTBhZmQ1ZTc1NjhlNDc4MDEy
ZjQwNzUyMGJiYzVmYTMxNjM4Li5lNjNjYzViZGU0ZjI0N2UzNDc0NGFjMDc3ZTZiYjU1YjViZjc5
MzJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMjQgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBhIGxheW91dCB0ZXN0IG9i
c29sZXRlZCBieSByZW1vdmluZworICAgICAgICBzeW50aGV0aWMgZ2VzdHVyZSBldmVudHMgZnJv
bSBQbGF0Zm9ybUdlc3R1cmVFdmVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2st
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvZ2VzdHVyZS1jbGljay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisKIDIwMTEtMDgtMjQgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5pbmcgbWVkaWEvdmlkZW8t
Y3VycmVudFRpbWUtc2V0Lmh0bWwgZHVlIHRvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1ZmExYTcxZTMwMjliODU2YTExOTRm
YWJkZmQ4ZTAyYmIyMzBhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xp
Y2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0
cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLUdlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2su
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGlj
ay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWRjYzVhNjA4YWQ5YzIxNjAy
YTlhMDgzMjc3MWI3ZmVhOTgyZTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVy
ZS1jbGljay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCk7Ij4KLTxkaXYgaWQ9Imdlc3R1cmUiPgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotdmFyIGV4cGVjdGVkTW91c2VF
dmVudHMgPSA0OwotdmFyIG1vdXNlRXZlbnRzUmVjZWl2ZWQgPSAwOwotdmFyIGV2ZW50VHlwZXMg
PSBbICdtb3VzZW1vdmUnLCAnbW91c2Vkb3duJywgJ21vdXNldXAnLCAnY2xpY2snIF07Ci0KLWZ1
bmN0aW9uIGdlc3R1cmVFdmVudENhbGxiYWNrKGV2ZW50KQotewotICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50eXBlJywg
ZXZlbnRUeXBlc1ttb3VzZUV2ZW50c1JlY2VpdmVkXSk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVu
dC5jbGllbnRYJywgJzEwJyk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRZJywgJzEy
Jyk7Ci0gICAgICAgIG1vdXNlRXZlbnRzUmVjZWl2ZWQrKzsKLSAgICB9IGVsc2UgewotICAgICAg
ICBkZWJ1ZyhldmVudC50eXBlKTsKLSAgICAgICAgZGVidWcoZXZlbnQuY2xpZW50WCk7Ci0gICAg
ICAgIGRlYnVnKGV2ZW50LmNsaWVudFkpOwotICAgIH0KLX0KLQotLy8gQmVjYXVzZSB3ZSBtYXkg
bm90IGhhdmUgYSBnZXN0dXJlIHJlY29nbml6ZXIsIHdlIHNlbmQgYSBrZXkgcHJlc3MKLS8vIGV2
ZW50IHRvIGVuZCB0aGUgdGVzdCB3aXRob3V0IHRlbXBvcmFsIGZsYWtpbmVzcy4KLWZ1bmN0aW9u
IHF1aXRLZXlUb0VuZFRlc3QoZXZlbnQpIHsKLSAgICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGVuZFRlc3QoKQotewotICAgIGlmIChtb3VzZUV2ZW50c1JlY2VpdmVkIDwgZXhwZWN0ZWRNb3Vz
ZUV2ZW50cykgewotICAgICAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRl
ZCBvbiB0aGlzIHBsYXRmb3JtLicpOwotICAgIH0KLSAgICAvLyBCYWlsLgotICAgIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Ci0gICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZXN0dXJlJyk7Ci0gICAg
ZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBm
YWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZ2VzdHVyZUV2ZW50Q2Fs
bGJhY2ssIGZhbHNlKTsKLSAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGdlc3R1
cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
bW92ZSIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHF1aXRLZXlUb0VuZFRlc3QsIGZhbHNlKTsKLQotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgfQotCi0gICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4iKTsKLSAg
ICAgICAgLy8gQSAndGFwJyBnZXN0dXJlIGV2ZW50IHNob3VsZCBnZW5lcmF0ZSBhIHNlcXVlbmNl
IG9mIG1vdXNlIGV2ZW50cy4KLSAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVRhcCgxMCwgMTIp
OwotICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMCk7Ci0gICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJyAnKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIp
Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1
cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyMWRkODYwYmFkY2E2NWUyYmMwMjI0MDI0NDg0NDJi
NjFiYTIxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dl
c3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2Vtb3ZlIgotUEFTUyBldmVudC5j
bGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBp
cyAibW91c2Vkb3duIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVu
dFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2V1cCIKLVBBU1MgZXZlbnQuY2xpZW50
WCBpcyAxMAotUEFTUyBldmVudC5jbGllbnRZIGlzIDEyCi1QQVNTIGV2ZW50LnR5cGUgaXMgImNs
aWNrIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYWQyZjIzZDY1NzdiNWEzMTA1MjJlZDZkYzMyYjQzOThhZDk4MTA2MS4uYjNkNTk4
OGNlY2UzODZmNjlhNzRjODE2ZDQxYTQ1NTMyNTZlMTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY1IEBACisyMDExLTA4LTI0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBVc2UgYSBzeW50aGV0aWMgZXZlbnQgdHlwZSBmb3IgZ2VzdHVyZXMgZ2Vu
ZXJhdGVkIGJ5IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NDkyCisgICAgICAgCisgICAgICAgIFBlciBkaXNj
dXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NDoK
KyAgICAgICAgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIFN5bnRoZXRpY0dlc3R1cmVFdmVudCBm
b3IgZXZlbnRzCisgICAgICAgIGdlbmVyYXRlZCBieSBhIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIgaW5zdGFuY2UuIFNlcGFyYXRpbmcKKyAgICAgICAgc3ludGhldGljIGV2ZW50cyBmcm9tIGVt
YmVkZGVyLXNvdXJjZWQgUGxhdGZvcm1HZXN0dXJlRXZlbnRzCisgICAgICAgIGVsaW1pbmF0ZXMg
YnVncyBjYXVzZWQgYnkgbWl4aW5nIHRoZSBzaWRlIGVmZmVjdHMgb2Ygc3ludGhlc2l6ZWQKKyAg
ICAgICAgYW5kIHBsYXRmb3JtIGdlc3R1cmVzIGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBlbmFi
bGUKKyAgICAgICAgR0VTVFVSRV9SRUNPR05JWkVSIGluZGVwZW5kZW50bHkgb2YgR0VTVFVSRV9F
VkVOVFMuCisgICAgICAgIAorICAgICAgICBTeW50aGV0aWMgZ2VzdHVyZXMgY29udGludWUgdG8g
YmUgdGVzdGVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZVN5bnRoZXRpY0V2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFu
ZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6OlN5bnRoZXRpY0dlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
dGhldGljR2VzdHVyZUV2ZW50Ojpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0
aWNHZXN0dXJlRXZlbnQ6Omdsb2JhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bnRo
ZXRpY0dlc3R1cmVFdmVudDo6ZGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2Vz
dHVyZUV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVy
ZUV2ZW50OjpzaGlmdEtleSk6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZl
bnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50Ojph
bHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50OjptZXRhS2V5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRUYXBTdGFy
dEdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
OjphcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xs
R2VzdHVyZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjph
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxFbmQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2sp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmluU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlU3ludGhldGljRXZl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oOgorCiAyMDExLTA4LTI0ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSlNIVE1MSW1hZ2VFbGVtZW50IChhbmQgYXNzb2Np
YXRlZCBOb2RlKSBpcyBhYmFuZG9uZWQgd2hlbiBpbWFnZSBsb2FkIGlzIGNhbmNlbGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggOWQ3YjBjYzBlYzNhOTMwZjY2Yjk5ZjUzNzAzMWUyMGMyNTM5ODIzNy4u
ZTY3ZTc2OTQxYzA3ODI2NzdlMDM3ZDVhMDYwM2JjNDFmNjdkNTkyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNzA1LDYgKzcwNSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2VhcmNoUG9wdXBN
ZW51LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
U3lzdGVtVGltZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UaGVtZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9UaGVtZVR5cGVzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDA4ZmQyNzc0MzI0MjczYmVlZGIxODNhNzhiNTNiNDQwMTFhNGI1MmUuLmNkM2Uy
MDFlZGI4NDVkYzJlNzIxZDdiMDBhYTE0NWQyZDNlZmEyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTg3LDYgKzg3LDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNp
bmNsdWRlICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5j
ZS5oIgpAQCAtMjIwOCwzMyArMjIxMiw0MiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAg
Ly8gdGhhdCBpZiBhIGZyYW1lIGdldHMgYSBnZXN0dXJlIGJlZ2luIGdlc3R1cmUsIGl0IGdldHMg
dGhlIGNvcnJlc3BvbmRpbmcKICAgICAvLyBlbmQgZ2VzdHVyZSBhcyB3ZWxsLgogCi0gICAgc3dp
dGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwVHlwZTogewotICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIG5v
dCBoaXQgdGVzdCBtdWx0aXBsZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhhcyBiZWVuIGNvcnJl
Y3RlZCBhcyBzdWdnZXN0ZWQgYWJvdmUuCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtl
TW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9z
aXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBn
ZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2
ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0
YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0
b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5z
aGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCks
IGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAg
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRS
ZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQu
bWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgIEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHZpZXctPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOworICAgIHJl
dHVybiB0cnVlOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dl
c3R1cmVFdmVudCYgc3ludGhldGljKQoreworICAgIHN3aXRjaCAoc3ludGhldGljLnR5cGUoKSkg
eworICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBCZWdpblR5cGU6CisgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBsaW5rIHNlbGVjdGlvbiBwcmV2aWV3LgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlRhcEVuZFR5cGU6IHsKKyAg
ICAgICAgLy8gRklYTUU6IEhpdCB0ZXN0IG9ubHkgb25jZSBmb3IgYWxsIHRocmVlIGV2ZW50cy4K
KyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUocm91bmRlZEludFBvaW50
KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9iYWxQ
b3NpdGlvbigpKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAx
LCBzeW50aGV0aWMuc2hpZnRLZXkoKSwgc3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGljLmFs
dEtleSgpLCBzeW50aGV0aWMubWV0YUtleSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOworICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihyb3VuZGVkSW50UG9pbnQoc3lu
dGhldGljLnBvc2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0
aW9uKCkpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAx
LCBzeW50aGV0aWMuc2hpZnRLZXkoKSwgc3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGljLmFs
dEtleSgpLCBzeW50aGV0aWMubWV0YUtleSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOworICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAocm91bmRlZEludFBvaW50KHN5bnRo
ZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9iYWxQb3NpdGlv
bigpKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEs
IHN5bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0
S2V5KCksIHN5bnRoZXRpYy5tZXRhS2V5KCksIHN5bnRoZXRpYy50aW1lc3RhbXAoKSk7CiAgICAg
ICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NF
dmVudChmYWtlTW91c2VEb3duKTsKICAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFr
ZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgU3ludGhldGljR2Vz
dHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CiAgICAgICAgIGNvbnN0IGZsb2F0IHRpY2tE
aXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwotICAgICAgICAvLyBG
SVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1wbGVtZW50YXRpb24gb25jZSB0aGUgYWJvdmUg
Zml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgotICAgICAgICBJbnRQb2ludCBwb2ludChnZXN0dXJl
RXZlbnQucG9zaXRpb24oKS54KCkgKyBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVu
dC5wb3NpdGlvbigpLnkoKSArIGdlc3R1cmVFdmVudC5kZWx0YVkoKSk7Ci0gICAgICAgIFBsYXRm
b3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHBvaW50LCBwb2ludCwgZ2VzdHVyZUV2
ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgo
KSAvIHRpY2tEaXZpc29yLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkgLyB0aWNrRGl2aXNvciwgU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVu
dC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5
KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQg
c3ludGhldGljV2hlZWxFdmVudChyb3VuZGVkSW50UG9pbnQoc3ludGhldGljLnBvc2l0aW9uKCkp
LCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCkpLCBzeW50aGV0aWMu
ZGVsdGEoKS53aWR0aCgpLCBzeW50aGV0aWMuZGVsdGEoKS5oZWlnaHQoKSwgc3ludGhldGljLmRl
bHRhKCkud2lkdGgoKSAvIHRpY2tEaXZpc29yLCBzeW50aGV0aWMuZGVsdGEoKS5oZWlnaHQoKSAv
IHRpY2tEaXZpc29yLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNBY2NlcHRlZCAqLyBm
YWxzZSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRp
Yy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSk7CiAgICAgICAgIGhhbmRsZVdoZWVsRXZl
bnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKLSAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgICAgICBpZiAoIXZpZXcpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmlldy0+aGFuZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVF
dmVudCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2
ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgY2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNj
cm9sbEVuZFR5cGU6CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWRkaXRpb25hbCBzeW50
aGV0aWMgZ2VzdHVyZXMuCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBjZjJmZTgxNDNlMmNm
OWE1YmNiMDQ4ODcwNjNhM2NkZjNmNjFiMzE1Li40ZGQwYWRlMGM3NzIxY2ZjNzQxNTRlYzJhZGRl
OTBmZDMwMjFkNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTc5LDYgKzc5
LDkgQEAgY2xhc3MgV2lkZ2V0OwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGNsYXNzIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKIGV4dGVybiBjb25zdCBpbnQgTGlua0RyYWdIeXN0ZXJlc2lzOwpAQCAtMTYx
LDYgKzE2NCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgYm9v
bCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgYm9vbCBoYW5kbGVTeW50aGV0
aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmKTsKKyNlbmRpZgogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVFdmVudC5oCmluZGV4IDE4YjdkMWFhMmQxZWRmOWE4M2RlZjJmMjY2ZjI1MDkwMzc5
Njg0N2IuLjFlNDBhZGZkN2Y2MTFiNDBkMTQ1MTMxZjk0MmE5OWM2MTA0OWViNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtMzcsOCAr
MzcsNiBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2Nyb2xsQmVnaW5UeXBl
LAogICAgICAgICBTY3JvbGxFbmRUeXBlLAotICAgICAgICBTY3JvbGxVcGRhdGVUeXBlLAotICAg
ICAgICBUYXBUeXBlCiAgICAgfTsKIAogICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KCkKQEAgLTQ3
LDE3ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRl
bHRhWCwgY29uc3QgZmxvYXQgZGVsdGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlwZSB0
eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAg
ICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24o
Z2xvYmFsUG9zaXRpb24pCiAgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAg
ICAsIG1fZGVsdGFYKGRlbHRhWCkKLSAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkpCi0gICAgICAg
ICwgbV9zaGlmdEtleShzaGlmdEtleSkKLSAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAg
ICAgICAgLCBtX2FsdEtleShhbHRLZXkpCi0gICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCiAg
ICAgewogICAgIH0KIApAQCAtNjcsMjUgKzU5LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9
IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVzdGFtcDsgfQotCi0gICAgZmxvYXQgZGVsdGFYKCkgY29uc3QgeyByZXR1
cm4gbV9kZWx0YVg7IH0KLSAgICBmbG9hdCBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRh
WTsgfQotICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0g
ICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgYm9vbCBh
bHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsgfQotICAgIGJvb2wgbWV0YUtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgSW50UG9pbnQgbV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9u
OwogICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKLSAgICBmbG9hdCBtX2RlbHRhWDsKLSAgICBmbG9h
dCBtX2RlbHRhWTsKLSAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgYm9vbCBtX2N0cmxLZXk7Ci0g
ICAgYm9vbCBtX2FsdEtleTsKLSAgICBib29sIG1fbWV0YUtleTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXIuaAppbmRleCAwYjg2YTkyNzZmYjZiZGVmOWI3YzM3ODgzYzUwOTNmNzdl
MDRjYjNjLi42OTliN2FlNjg0M2M2NTZiNmUzMjY1MWI3ZjM3Y2UyZTE1YzlhZjgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5o
CkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAog
I2RlZmluZSBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKIAotI2luY2x1ZGUgIlBsYXRmb3Jt
R2VzdHVyZUV2ZW50LmgiCisjaW5jbHVkZSAiU3ludGhldGljR2VzdHVyZUV2ZW50LmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIoKTsKIAotICAgIHR5cGVkZWYgUGFzc093blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJl
RXZlbnQ+ID4gUGFzc0dlc3R1cmVzOworICAgIHR5cGVkZWYgUGFzc093blB0cjxWZWN0b3I8U3lu
dGhldGljR2VzdHVyZUV2ZW50PiA+IFBhc3NHZXN0dXJlczsKIAogICAgIC8vIEludm9rZWQgZm9y
IGVhY2ggdG91Y2ggZXZlbnQgYW5kIHJldHVybnMgMCBvciBtb3JlIHJlc3VsdGluZyBnZXN0dXJl
cy4KICAgICB2aXJ0dWFsIFBhc3NHZXN0dXJlcyBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVz
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDU1MzhlZmRk
MWFjZDlkMTNjZjI4NmM2ZGFkMDUxZTE4OGYxM2U3M2EuLmVhNWVlNWVhYzQ5YmQ3MTk2YzgwNGNm
N2U5NGJkYzc0YWNkOTliYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
I2luY2x1ZGUgIlN5bnRoZXRpY0dlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExOSw2ICsxMjMsMTIgQEAgdm9p
ZCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK3Zv
aWQgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dl
c3R1cmVFdmVudCYpCit7Cit9CisjZW5kaWYKKwogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6
Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gRmxvYXRQb2ludChtX2N1cnJl
bnRQb3NYLCBtX2N1cnJlbnRQb3NZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCmluZGV4IDY2NzM4MWIzMTFkOTJmNTU5OGMxN2UyMjRjMGJlMGM1NjY0NTUxYjYuLmFi
ZTBmOTgwN2MyZWJlNDdmYjk3NjlkODgzZWVhYWQ5NzYzYjI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtNDQsNiArNDQsOSBAQCBjbGFzcyBTY3JvbGxi
YXI7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorY2xhc3MgU3ludGhl
dGljR2VzdHVyZUV2ZW50OworI2VuZGlmCiAKIGNsYXNzIFNjcm9sbEFuaW1hdG9yIHsKIHB1Ymxp
YzoKQEAgLTY3LDYgKzcwLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHZv
aWQgaGFuZGxlU3ludGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50Jik7Cisj
ZW5kaWYKIAogICAgIEZsb2F0UG9pbnQgY3VycmVudFBvc2l0aW9uKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDUwOTJiMDVjZGIzMjY2ODk0
MjZhZjNhNzVlNTdjOTNiMzg3NjEzNGEuLmNlOTQzOThkNzA1YTJiODY1NjI4MDQ2Mzc2ZjA3ODgx
MTFlM2E3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAt
NDAsNiArNDAsOSBAQCBjbGFzcyBTY3JvbGxBbmltYXRvcjsKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiBjbGFzcyBHcmFwaGljc0xheWVyOwogI2VuZGlmCisjaWYgRU5BQkxFKEdF
U1RVUkVfUkVDT0dOSVpFUikKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgog
CiBjbGFzcyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CkBAIC01Niw2ICs1OSw5IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNU
VVJFX1JFQ09HTklaRVIpCisgICAgdm9pZCBoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50
aGV0aWNHZXN0dXJlRXZlbnQmKTsKKyNlbmRpZgogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250
cm9sbGluZyBpZiB5b3UgY2FuIHNjcm9sbCBwYXN0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Lgog
ICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N5bnRoZXRpY0dlc3R1cmVFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NzYxOTBj
NWE4NWRmYmZlMjNkOTRlMzFhZTg3YTUyMmYwYzIxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaApAQCAtMCwwICsxLDEw
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFN5bnRoZXRpY0dlc3R1cmVFdmVudF9oCisjZGVmaW5lIFN5bnRoZXRpY0dl
c3R1cmVFdmVudF9oCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKworI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBFdmVudEhhbmRsZXI7CitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CisK
K2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsK
KyAgICAgICAgVGFwQmVnaW5UeXBlLAorICAgICAgICBUYXBFbmRUeXBlLAorICAgICAgICBTY3Jv
bGxCZWdpblR5cGUsCisgICAgICAgIFNjcm9sbEVuZFR5cGUsCisgICAgICAgIFNjcm9sbFVwZGF0
ZVR5cGUsCisgICAgfTsKKworICAgIFN5bnRoZXRpY0dlc3R1cmVFdmVudCgpCisgICAgICAgIDog
bV90eXBlKFNjcm9sbEJlZ2luVHlwZSkKKyAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQorICAgIHsK
KyAgICB9CisKKyAgICBTeW50aGV0aWNHZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBGbG9h
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0
IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGJvb2wgc2hpZnRLZXks
IGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3R5
cGUodHlwZSkKKyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCisgICAgICAgICwgbV9kZWx0YShkZWx0YSkKKyAg
ICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbV9zaGlmdEtleShzaGlm
dEtleSkKKyAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKKyAgICAgICAgLCBtX2FsdEtleShh
bHRLZXkpCisgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAgeworICAgIH0KKyAgICAK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfSAvLyBQbGF0
Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KKyAgICBjb25zdCBGbG9hdFBvaW50JiBnbG9iYWxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0gLy8gU2NyZWVuIGNvb3Jk
aW5hdGVzLgorICAgIGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2Rl
bHRhOyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1w
OyB9CisKKyAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQor
ICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQorICAgIGJvb2wg
YWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBj
b25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KKworcHJvdGVjdGVkOgorICAgIFR5cGUgbV90eXBl
OworICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG1fZ2xvYmFsUG9z
aXRpb247CisgICAgRmxvYXRTaXplIG1fZGVsdGE7CisgICAgZG91YmxlIG1fdGltZXN0YW1wOwor
ICAgIAorICAgIGJvb2wgbV9zaGlmdEtleTsKKyAgICBib29sIG1fY3RybEtleTsKKyAgICBib29s
IG1fYWx0S2V5OworICAgIGJvb2wgbV9tZXRhS2V5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNlbmRpZiAvLyBT
eW50aGV0aWNHZXN0dXJlRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCmluZGV4IGM2Y2MyYjVmMzRiNDJlNjRj
MjU1ODVkOWY3OGM5NWNiOWE2MWU3NWQuLmE3NjhlZDA0NGQ5YzRkZDg2MmRjM2RjYzY0MTlmNzEw
NzdmYTg0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKQEAgLTM2LDkgKzM2LDEyIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50OwotI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIGNs
YXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKKyAgICBjbGFzcyBTeW50aGV0aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKICAgICBj
bGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50
OwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC02NiwxMSArNjksMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKSA9
IDA7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikgPSAwOworI2VuZGlm
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVRv
dWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikgPSAwOwogI2VuZGlmCiAjaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCBib29sIGhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYp
ID0gMDsKICNlbmRpZgogCiAgICAgICAgIC8vIFNjcm9sbGFibGVBcmVhIHB1YmxpYyBtZXRob2Rz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9H
ZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAppbmRleCAxN2RiNWI1NjNmYzY2OGVlNDEyNjI3
ZjE3ZDhmYzE2NjE2YzhmOGNhLi4zZDBjNWZkNmVmMmE2NjZiYjFmZmI4OGI5ZDFlYzFhYTUwZjY1
MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJl
UmVjb2duaXplckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCIK
IAotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hl
ZWxFdmVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBDb252ZXJ0IHRv
IG1ldGhvZHMuCkBAIC0xMDMsOSArMTAwLDE0IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwCiAg
ICAgcmV0dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxzRm9y
Q2xpY2s7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kQ2xpY2tHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1
cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2du
aXplcjo6YXBwZW5kVGFwU3RhcnRHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykK
IHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBUeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBv
cygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwg
bV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoU3ludGhldGljR2Vz
dHVyZUV2ZW50KFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwQmVnaW5UeXBlLCBGbG9hdFBvaW50
KHRvdWNoUG9pbnQucG9zKCkpLCBGbG9hdFBvaW50KHRvdWNoUG9pbnQuc2NyZWVuUG9zKCkpLCBt
X2xhc3RUb3VjaFRpbWUsIEZsb2F0U2l6ZSgpLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0
S2V5LCBtX21ldGFLZXkpKTsKK30KKwordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBl
bmRUYXBFbmRHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50
LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKK3sKKyAgICBnZXN0
dXJlcy0+YXBwZW5kKFN5bnRoZXRpY0dlc3R1cmVFdmVudChTeW50aGV0aWNHZXN0dXJlRXZlbnQ6
OlRhcEVuZFR5cGUsIEZsb2F0UG9pbnQoZmlyc3RUb3VjaFBvc2l0aW9uKCkpLCBGbG9hdFBvaW50
KG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uKSwgbV9sYXN0VG91Y2hUaW1lLCBGbG9hdFNpemUo
KSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKQEAgLTExNSw3ICsxMTcsNyBAQCBQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6cHJvY2Vzc1RvdWNoRXZlbgogICAgIG1fc2hpZnRLZXkgPSBldmVudC5zaGlmdEtleSgpOwog
ICAgIG1fbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkoKTsKIAotICAgIE93blB0cjxWZWN0b3I8UGxh
dGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFBsYXRm
b3JtR2VzdHVyZUV2ZW50PigpKTsKKyAgICBPd25QdHI8VmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVF
dmVudD4gPiBnZXN0dXJlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3ludGhldGljR2VzdHVyZUV2
ZW50PigpKTsKICAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1Ub3VjaFBvaW50PiYgcG9pbnRzID0g
ZXZlbnQudG91Y2hQb2ludHMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRz
LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCA9IHBv
aW50c1tpXTsKQEAgLTEyNywyNSArMTI5LDIyIEBAIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6
OlBhc3NHZXN0dXJlcyBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVuCiAg
ICAgcmV0dXJuIGdlc3R1cmVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgSW50UG9pbnQmIHRvdWNoUG9p
bnQsIEdlc3R1cmVzIGdlc3R1cmVzKQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBl
bmRTY3JvbGxHZXN0dXJlQmVnaW4oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50
LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUsIHRvdWNoUG9p
bnQsIHRvdWNoUG9pbnQsIG1fbGFzdFRvdWNoVGltZSwgMC4wZiwgMC4wZiwgbV9zaGlmdEtleSwg
bV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7Ci0gICAgbV9maXJzdFRvdWNoUG9zaXRp
b24gPSB0b3VjaFBvaW50OwotICAgIG1fbGFzdFRvdWNoUG9zaXRpb24gPSBtX2ZpcnN0VG91Y2hQ
b3NpdGlvbjsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFN5bnRoZXRpY0dlc3R1cmVFdmVudChTeW50
aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50
LnBvcygpKSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hU
aW1lLCBGbG9hdFNpemUoKSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRh
S2V5KSk7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2Vz
dHVyZUVuZChjb25zdCBJbnRQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCit2
b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAg
ICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxFbmRUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoUG9z
aXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC4wZiwgMC4wZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5
LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50aGV0aWNH
ZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlLCBGbG9hdFBv
aW50KHRvdWNoUG9pbnQucG9zKCkpLCBGbG9hdFBvaW50KHRvdWNoUG9pbnQuc2NyZWVuUG9zKCkp
LCBtX2xhc3RUb3VjaFRpbWUsIEZsb2F0U2l6ZSgpLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1f
YWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjph
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKGNvbnN0IEludFBvaW50JiB0b3VjaFBvaW50LCBHZXN0
dXJlcyBnZXN0dXJlcykKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xs
R2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1
cmVzIGdlc3R1cmVzKQogewotICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LngoKSAtIG1fbGFz
dFRvdWNoUG9zaXRpb24ueCgpKTsKLSAgICBmbG9hdCBkZWx0YVkodG91Y2hQb2ludC55KCkgLSBt
X2xhc3RUb3VjaFBvc2l0aW9uLnkoKSk7CisgICAgRmxvYXRTaXplIGRlbHRhKHRvdWNoUG9pbnQu
cG9zKCkueCgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueCgpLCB0b3VjaFBvaW50LnBvcygpLnko
KSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLnkoKSk7CiAKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBl
LCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fbGFzdFRvdWNo
VGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1f
bWV0YUtleSkpOwotICAgIG1fbGFzdFRvdWNoUG9zaXRpb24gPSB0b3VjaFBvaW50OworICAgIGdl
c3R1cmVzLT5hcHBlbmQoU3ludGhldGljR2VzdHVyZUV2ZW50KFN5bnRoZXRpY0dlc3R1cmVFdmVu
dDo6U2Nyb2xsVXBkYXRlVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnBvcygpKSwgRmxvYXRQ
b2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hUaW1lLCBkZWx0YSwgbV9z
aGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgbV9maXJzdFRv
dWNoUG9zaXRpb24gPSB0b3VjaFBvaW50LnBvcygpOwogfQogCiB2b2lkIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6OnVwZGF0ZVZhbHVlcyhjb25zdCBkb3VibGUgdG91Y2hUaW1lLCBjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQpCkBAIC0xNTQsNiArMTUzLDcgQEAgdm9pZCBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjp1cGRhdGVWYWx1ZXMoY29uc3QgZG91YmxlIHRvdWNoVGltZSwg
Y29uc3QgUGxhdGZvcm0KICAgICBpZiAoc3RhdGUoKSA9PSBOb0dlc3R1cmUpIHsKICAgICAgICAg
bV9maXJzdFRvdWNoVGltZSA9IHRvdWNoVGltZTsKICAgICAgICAgbV9maXJzdFRvdWNoUG9zaXRp
b24gPSB0b3VjaFBvaW50LnBvcygpOworICAgICAgICBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlv
biA9IHRvdWNoUG9pbnQuc2NyZWVuUG9zKCk7CiAgICAgfQogfQogCkBAIC0xNjksMTYgKzE2OSwx
OCBAQCB1bnNpZ25lZCBpbnQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6c2lnbmF0dXJlKFN0YXRl
IGdlc3R1cmVTdGF0ZSwgdW5zaWduZWQgaWQsCiAgICAgcmV0dXJuIDEgKyAoKHRvdWNoVHlwZSAm
IDB4NykgPDwgMSB8IChoYW5kbGVkID8gMSA8PCA0IDogMCkgfCAoKGlkICYgMHhmZmYpIDw8IDUg
KSB8IChnZXN0dXJlU3RhdGUgPDwgMTcpKTsKIH0KIAotc3RhdGljIGJvb2wgdG91Y2hEb3duKElu
bmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRv
dWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKK3N0
YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2du
aXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVS
ZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBnZXN0dXJlUmVjb2duaXplci0+
c2V0U3RhdGUoSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsK
KyAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kVGFwU3RhcnRHZXN0dXJlRXZlbnQodG91Y2hQ
b2ludCwgZ2VzdHVyZXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGJvb2wgc2Ny
b2xsRW5kKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJl
cyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVy
ZUVuZChwb2ludC5wb3MoKSwgZ2VzdHVyZXMpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBl
bmRTY3JvbGxHZXN0dXJlRW5kKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgZ2VzdHVyZVJlY29nbml6
ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVyZSk7CisgICAgZ2Vz
dHVyZVJlY29nbml6ZXItPnJlc2V0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTIs
NyArMTk0LDcgQEAgc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2Vz
dHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2gKIHsKICAgICBpZiAoZ2VzdHVyZVJl
Y29nbml6ZXItPmlzSW5DbGlja1RpbWVXaW5kb3coKSAmJiBnZXN0dXJlUmVjb2duaXplci0+aXNJ
bnNpZGVNYW5oYXR0YW5TcXVhcmUocG9pbnQpKSB7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVy
LT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpOwotICAgICAgICBn
ZXN0dXJlUmVjb2duaXplci0+YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQocG9pbnQsIGdlc3R1cmVz
KTsKKyAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFRhcEVuZEdlc3R1cmVFdmVudChw
b2ludCwgZ2VzdHVyZXMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IG5vR2VzdHVyZShnZXN0dXJlUmVjb2duaXplciwgcG9pbnQsIGdlc3R1cmVzKTsKQEAgLTIwNiw4
ICsyMDgsOCBAQCBzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2du
aXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYQogICAgIH0KIAogICAgIGlmIChwb2lu
dC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCAmJiAhZ2VzdHVyZVJl
Y29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHBvaW50KSkgewotICAgICAgICBnZXN0
dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGdlc3R1cmVSZWNvZ25pemVy
LT5maXJzdFRvdWNoUG9zaXRpb24oKSwgZ2VzdHVyZXMpOwotICAgICAgICBnZXN0dXJlUmVjb2du
aXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShwb2ludC5wb3MoKSwgZ2VzdHVyZXMpOwor
ICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKHBvaW50
LCBnZXN0dXJlcyk7CisgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxHZXN0
dXJlVXBkYXRlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5z
ZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpTY3JvbGwpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0yMTYsNyArMjE4LDcgQEAgc3RhdGljIGJvb2wgaXNDbGlja09yU2Ny
b2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGEK
IAogc3RhdGljIGJvb2wgaW5TY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJl
Y29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQsIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQogewotICAgIGdlc3R1cmVSZWNvZ25pemVyLT5h
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKHBvaW50LnBvcygpLCBnZXN0dXJlcyk7CisgICAgZ2Vz
dHVyZVJlY29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUocG9pbnQsIGdlc3R1cmVz
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCmluZGV4IGZk
NDZmZTc5MGM2ZjMwNzA1ODQ3ZGE2ZTE0OTQ1YjMwYTZjYTJlZTYuLmQ2YTE0ZjI3YjIwM2IxOGYz
OTA2ZmY5ODg4MTJmZjMxMGE1ZDE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKQEAgLTM0
LDEyICszNCwxMiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKIAog
I2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgotI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50Owor
Y2xhc3MgU3ludGhldGljR2VzdHVyZUV2ZW50OwogCiBjbGFzcyBJbm5lckdlc3R1cmVSZWNvZ25p
emVyIHsKIHB1YmxpYzoKQEAgLTQ5LDE5ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIFNjcm9s
bAogICAgIH07CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4qIEdl
c3R1cmVzOworICAgIHR5cGVkZWYgVmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVFdmVudD4qIEdlc3R1
cmVzOwogICAgIHR5cGVkZWYgYm9vbCAoKkdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24pKElubmVy
R2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7
CiAKICAgICB+SW5uZXJHZXN0dXJlUmVjb2duaXplcigpOwogCi0gICAgdm9pZCBhcHBlbmRDbGlj
a0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAgICAg
dmlydHVhbCB2b2lkIHJlc2V0KCk7CiAgICAgYm9vbCBpc0luQ2xpY2tUaW1lV2luZG93KCk7CiAg
ICAgYm9vbCBpc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
KTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyAg
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBi
b29sIGRlZmF1bHRQcmV2ZW50ZWQpOwotICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2lu
KGNvbnN0IEludFBvaW50JiwgR2VzdHVyZXMpOwotICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVy
ZUVuZChjb25zdCBJbnRQb2ludCYsIEdlc3R1cmVzKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdl
c3R1cmVVcGRhdGUoY29uc3QgSW50UG9pbnQmLCBHZXN0dXJlcyk7CisgICAgdm9pZCBhcHBlbmRU
YXBTdGFydEdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7
CisgICAgdm9pZCBhcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5kU2Nyb2xsR2VzdHVyZUJlZ2luKGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lkIGFwcGVuZFNjcm9sbEdl
c3R1cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQg
YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0
dXJlcyk7CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSB2YWx1ZSkgeyBtX3N0YXRlID0gdmFsdWU7
IH0KICAgICBTdGF0ZSBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIApAQCAtNzYsNiArNzcs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXVEY6Okhhc2hNYXA8aW50LCBHZXN0dXJlVHJhbnNpdGlv
bkZ1bmN0aW9uPiBtX2VkZ2VGdW5jdGlvbnM7CiAgICAgSW50UG9pbnQgbV9maXJzdFRvdWNoUG9z
aXRpb247CisgICAgSW50UG9pbnQgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb247CiAgICAgZG91
YmxlIG1fZmlyc3RUb3VjaFRpbWU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBJbnRQb2ludCBt
X2xhc3RUb3VjaFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBDb250YWluZXIuY3BwCmluZGV4IDIxYzQ2ZTY3MWVkOTQzOGNjNmJiNGViMjU4
ZDk3NWM2ZmQ5YjJkMDcuLjUwZDI2ZTdjOWYxZGJhY2E0M2EwYjQ5ZmY2MGMyZTg5N2IxM2E0YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRh
aW5lci5jcHAKQEAgLTU0LDYgKzU0LDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZl
bnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpbmNsdWRl
ICJTeW50aGV0aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNlbmRpZgpAQCAtMjkyLDI3
ICsyOTYsMzUgQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoRXZlbnQmKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIGNvZGUg
dG8gc2hhcmUgZnVuY3Rpb25hbGl0eSB3aXRoIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2
ZW50LgotYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5k
bGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmIHN5bnRoZXRpYykK
IHsKLSAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtl
TW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9z
aXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBn
ZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2
ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0
YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0
b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5z
aGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCks
IGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAg
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRS
ZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQu
bWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgIHN3aXRjaCAoc3ludGhl
dGljLnR5cGUoKSkgeworICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBFbmRUeXBl
OiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKHJvdW5kZWRJbnRQ
b2ludChzeW50aGV0aWMucG9zaXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMuZ2xv
YmFsUG9zaXRpb24oKSksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQg
Ki8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRp
Yy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsK
KyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24ocm91bmRlZEludFBvaW50
KHN5bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9iYWxQ
b3NpdGlvbigpKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQg
Ki8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRp
Yy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsK
KyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKHJvdW5kZWRJbnRQb2ludChz
eW50aGV0aWMucG9zaXRpb24oKSksIHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9z
aXRpb24oKSksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAq
LyAxLCBzeW50aGV0aWMuc2hpZnRLZXkoKSwgc3ludGhldGljLmN0cmxLZXkoKSwgc3ludGhldGlj
LmFsdEtleSgpLCBzeW50aGV0aWMubWV0YUtleSgpLCBzeW50aGV0aWMudGltZXN0YW1wKCkpOwog
ICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3ZlKTsKICAgICAgICAg
aGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAgICAgIGhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKLSAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQoZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZGVs
dGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8gMTIw
LjBmLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkgLyAxMjAuMGYsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2
ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQu
bWV0YUtleSgpKTsKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZTogeworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChy
b3VuZGVkSW50UG9pbnQoc3ludGhldGljLnBvc2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3lu
dGhldGljLmdsb2JhbFBvc2l0aW9uKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihzeW50aGV0
aWMuZGVsdGEoKS53aWR0aCgpKSksIHN0YXRpY19jYXN0PGludD4ocm91bmRmKHN5bnRoZXRpYy5k
ZWx0YSgpLmhlaWdodCgpKSksIHN5bnRoZXRpYy5kZWx0YSgpLndpZHRoKCkgLyAxMjAuMGYsIHN5
bnRoZXRpYy5kZWx0YSgpLmhlaWdodCgpIC8gMTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCwgLyogaXNBY2NlcHRlZCAqLyBmYWxzZSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRoZXRp
Yy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSk7CiAg
ICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxC
ZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToK
KyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwQmVnaW5UeXBlOgorICAgIGNhc2Ug
U3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgY2FzZSBTeW50aGV0
aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuaAppbmRleCA0NTJlMWI0MjU0MjZjOWQzMTlhZDMzNWYyNGQ3YmYwOWRl
M2IzYjBmLi4yNjg5NjhlODUzZDJhMTIxZTU5NDY5ZDkyZTkxMTQ0MWZkZjgzODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmgKQEAg
LTQxLDYgKzQxLDEzIEBAIGNsYXNzIENocm9tZUNsaWVudENocm9taXVtOwogY2xhc3MgRnJhbWVW
aWV3OwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVS
RV9SRUNPR05JWkVSKQorY2xhc3MgU3ludGhldGljR2VzdHVyZUV2ZW50OworI2VuZGlmCisKIGNs
YXNzIFBvcHVwQ29udGFpbmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgewogcHVibGlj
OgogICAgIGVudW0gUG9wdXBUeXBlIHsKQEAgLTY1LDkgKzcyLDEyIEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCisj
aWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU3lu
dGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogICAg
IC8vIFBvcHVwQ29udGFpbmVyIG1ldGhvZHMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKaW5kZXggMjAxNTA2NGNkYzE4ZTI1OTIwNTI1
ZjMwYTQ3OTM5MzA1N2UxMjA2OC4uMWU1MGRkZDY0Y2IwYWUwZTNmYzBiNTI5NDg4OTgzYWM1NDA0
YmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBM
aXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExp
c3RCb3guY3BwCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2
ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVk
ZSAiU3ludGhldGljR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCiAjZW5kaWYKQEAgLTE4NSwx
MyArMTg5LDIwIEBAIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYpCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogYm9vbCBQb3B1cExpc3RCb3g6Omhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCiB7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
Ym9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dl
c3R1cmVFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIHN0YXRpYyBi
b29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiB7CiAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgZXZlbnQgaXMgYSBjaGFyYWN0ZXItdHlw
ZWQgZXZlbnQgb3Igbm90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guaAppbmRleCA0Y2VjM2E0MWFlNzA1MWE2MDE5MDlmMWEwMTU5ZjY5NjJhMWIx
ZTQ2Li5kOWQ5YmE4Y2JjNWNlN2I0ZjJkNTFmOWRjMGNlYjQ2N2VjZjQxODY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guaApAQCAtNTQsNiAr
NTQsOSBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQogY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQorY2xhc3MgU3ludGhldGljR2VzdHVyZUV2ZW50OworI2VuZGlmCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKICNlbmRp
ZgpAQCAtMTIzLDkgKzEyNiwxMiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZl
bnQmKTsKICNlbmRpZgotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JF
Q09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0IFN5
bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBTY3JvbGxWaWV3CiAgICAg
dmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGVjNGNhZDVmYmRkN2ZmZTIyNThiM2MzM2Y4Mzg2N2M1YjE1ODMxOTQuLjg2
MTRlNGIzYTFhYjk2ODdiN2M1Zjg2ODUyMjAzY2Q2OTBmNDg3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDgtMjQgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBhIHN5bnRoZXRpYyBldmVudCB0
eXBlIGZvciBnZXN0dXJlcyBnZW5lcmF0ZWQgYnkgdGhlIGdlc3R1cmUKKyAgICAgICAgcmVjb2du
aXplciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY0OTIKKworICAg
ICAgICBQZXIgZGlzY3Vzc2lvbiBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjUwNDQ6CisgICAgICAgIHRoaXMgdXBkYXRlcyB1c2VycyBvZiBHZXN0dXJlUmVjb2du
aXplckNocm9taXVtIGZvciBpdHMgY3JlYXRpb24KKyAgICAgICAgb2YgU3ludGhldGljR2VzdHVy
ZUV2ZW50IGluc3RlYWQgb2YgUGxhdGZvcm1HZXN0dXJlRXZlbnQgYW5kIGFsc28KKyAgICAgICAg
dXBkYXRlcyB0aGUgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSB1bml0IHRlc3RzIGFwcHJvcHJp
YXRlbHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIp
OgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51SW1wbDo6VG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudUltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHRlc3Rz
L0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Rf
Rik6CisKIDIwMTEtMDgtMjQgIEplcmVteSBBcHRob3JwICA8amVyZW15YUBnb29nbGUuY29tPgog
CiAgICAgICAgIEV4cG9zZSBmdWxsc2NyZWVuIEFQSSBvbiBXZWJFbGVtZW50L1dlYkRvY3VtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMTdiOGVjZjViZGE5OWE3MmI3
ODczYWU0MjI5MTZmZjM2YzI4ZWU4MC4uMGU5MTZlMmZlMjY5NTJkNjZhMGM2YWE2M2E2ZmYxZDk3
OTlkZjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNTAsNyArNTAs
NyBAQAogICAgICAgJ0VOQUJMRV9GSUxFX1NZU1RFTT0xJywKICAgICAgICdFTkFCTEVfRklMVEVS
Uz0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCi0gICAgICAnRU5BQkxFX0dFU1RV
UkVfRVZFTlRTPTEnLAorICAgICAgJ0VOQUJMRV9HRVNUVVJFX0VWRU5UUz0wJywKICAgICAgICdF
TkFCTEVfR0VTVFVSRV9SRUNPR05JWkVSPTEnLAogICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9
MCcsCiAgICAgICAnRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MScsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKaW5kZXggYzQ5YWY0MDcwNmRlMDYyZGY1
MTY5YTg3OGY0ZGJiZTE2MjczMzUxNy4uMTFlNmU0ZmQzMDlkODhhMjZkMjY3OTE2OWY4M2FhMzM5
ZDc5ZGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaApAQCAtMTAzLDEzICsxMDMsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZWJHZXN0dXJl
RXZlbnQKICAgICAgICAgR2VzdHVyZVNjcm9sbEJlZ2luLAogICAgICAgICBHZXN0dXJlU2Nyb2xs
RW5kLAotICAgICAgICBHZXN0dXJlVGFwLAogCiAgICAgICAgIC8vIFdlYlRvdWNoRXZlbnQKICAg
ICAgICAgVG91Y2hTdGFydCwKICAgICAgICAgVG91Y2hNb3ZlLAogICAgICAgICBUb3VjaEVuZCwK
ICAgICAgICAgVG91Y2hDYW5jZWwsCisgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogaW5zZXJ0
IFdlYlN5bnRoZXRpY0dlc3R1cmVFdmVudAogICAgIH07CiAKICAgICBlbnVtIE1vZGlmaWVycyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAKaW5kZXggMGRkZWEwMjQ0YTg5ODIyNGQ0MGFmMWY4ZjJkNWNkYzZlZDAwYzc2
Yy4uZjE0ODUxMzk0NWIyMjBhZmRmMzZhNjhlMzJmZDg4ZmRhMjdiZWEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cApAQCAtMTIwLDE5ICsxMjAsMTIgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0
Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFcKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CiAgICAgICAgIG1fdHlwZSA9IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6Ci0gICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBUeXBlOwotICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50KGUueCwgZS55KSk7CiAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKICAgICBtX3Rp
bWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKLSAgICBtX3NoaWZ0S2V5ID0gKGUubW9kaWZp
ZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOwotICAgIG1fY3RybEtleSA9IChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwotICAgIG1fYWx0S2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKLSAgICBtX21ldGFLZXkgPSAoZS5tb2Rp
ZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCmluZGV4IDY3NWM0M2Fi
ZmU5NDgyNzMwYzc5ZWQ1MzRiMjgzMTVjY2QxNTYyZDkuLmJlYjljZWMwNWU5ODIyMzRlMmNkNjdj
OGZjOGZmNTk3YTQwZWMzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBvcHVwTWVudUltcGwuY3BwCkBAIC0xMzQsMTEgKzEzNCwxNCBAQCB2b2lkIFdlYlBvcHVwTWVu
dUltcGw6Ok1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKICAgICBt
X3dpZGdldC0+aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lk
Z2V0LCBldmVudCkpOwogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogYm9vbCBXZWJQ
b3B1cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkK
IHsKICAgICByZXR1cm4gbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9CisjZW5kaWYKIAorLy8gRklYTUU6
IEFkZCB0aGUgYWJpbGl0eSB0byBpbmplY3QgU3ludGhldGljR2VzdHVyZUV2ZW50IGluc3RhbmNl
cyBmcm9tIGxheW91dCB0ZXN0cy4KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBXZWJQ
b3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQogewpA
QCAtMTQ2LDkgKzE0OSw5IEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6VG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRv
dWNoRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCk7CiAgICAgYm9vbCBkZWZhdWx0UHJldmVu
dGVkKG1fd2lkZ2V0LT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKSk7CiAjaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFBy
ZXZlbnRlZCkpOworICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2
ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZl
bnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFByZXZlbnRlZCkpOwogICAg
IGZvciAodW5zaWduZWQgaW50ICBpID0gMDsgaSA8IGdlc3R1cmVFdmVudHMtPnNpemUoKTsgaSsr
KQotICAgICAgICBtX3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KCgqZ2VzdHVyZUV2ZW50cylb
aV0pOworICAgICAgICBtX3dpZGdldC0+aGFuZGxlU3ludGhldGljRXZlbnQoKCpnZXN0dXJlRXZl
bnRzKVtpXSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KQEAgLTI3
NCw5ICsyNzcsOSBAQCBib29sIFdlYlBvcHVwTWVudUltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29u
c3QgV2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKIAogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKSAgICAKICAgICAgICAgcmV0dXJuIEdlc3R1cmVFdmVudCgqc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLQorI2VuZGlmCiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQ6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpN
b3VzZUVudGVyOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q29udGV4dE1lbnU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjg3ZmRkMGNlNDM4Mzg2
MTgxOTI2NTM4NmE2ZDRlZDkzOGVmZTk5MC4uZmQyZmI3OGYxZjJlOTIzMjk5YWE1OGMxYzUzZjFj
ZGM4NTU2ZjJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtNzgyLDkgKzc4Miw5IEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNoRXZlbnQoY29uc3Qg
V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0gbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0b3Vj
aEV2ZW50QnVpbGRlcik7CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIE93
blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50
cyhtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNo
RXZlbnRCdWlsZGVyLCBkZWZhdWx0UHJldmVudGVkKSk7CisgICAgT3duUHRyPFZlY3RvcjxXZWJD
b3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNv
Z25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBk
ZWZhdWx0UHJldmVudGVkKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkgPSAwOyBpIDwgZ2Vz
dHVyZUV2ZW50cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnRzLT5hdChp
KSk7CisgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVN5bnRoZXRpY0V2ZW50KGdlc3R1cmVFdmVudHMtPmF0KGkpKTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CkBAIC0xMjgyLDcgKzEyODIsNiBAQCBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CiAgICAgICAgIGhhbmRsZWQg
PSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1
dEV2ZW50KSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCmlu
ZGV4IDdkZjMxZTI3NzYxZjQyZGY0ZmM2MDkyNzE4MWQ2ZjIxM2U5YWE0YjIuLjlmOGM3OTI0OWIy
OGY1N2NhYjQ0ODdlODc4YjY4YWJmNjM3M2M5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCkBA
IC0yNzQsMTQgKzI3NCwxNCBAQCBURVNUX0YoVGVzdEdlc3R1cmVSZWNvZ25pemVyLCBnZXN0dXJl
U2Nyb2xsRXZlbnRzKQogCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAs
IDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQpOwogICAgIEJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6VG91Y2hNb3ZlLCBtb3ZlKTsKLSAgICBP
d25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVTdGFy
dChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsKKyAg
ICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlN5bnRoZXRpY0dlc3R1cmVFdmVudD4gPiBnZXN0dXJl
U3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7
CiAgICAgYm9vbCBzY3JvbGxTdGFydGVkID0gZmFsc2UsIHNjcm9sbFVwZGF0ZWQgPSBmYWxzZTsK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVTdGFydC0+c2l6ZSgpOyBp
KyspIHsKICAgICAgICAgc3dpdGNoICgoKmdlc3R1cmVTdGFydClbaV0udHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICAgICAg
Y2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKICAgICAgICAgICAg
IHNjcm9sbFN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgICAgIGNhc2UgU3lu
dGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOgogICAgICAgICAgICAgc2Nyb2xs
VXBkYXRlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAg
LTI5NiwxMCArMjk2LDEwIEBAIFRFU1RfRihUZXN0R2VzdHVyZVJlY29nbml6ZXIsIGdlc3R1cmVT
Y3JvbGxFdmVudHMpCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJlbGVhc2UoMTAs
IDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwogICAgIEJ1aWxkYWJsZVBs
YXRmb3JtVG91Y2hFdmVudCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6VG91Y2hFbmQsIHJlbGVhc2Up
OwogICAgIGJvb2wgc2Nyb2xsRW5kID0gZmFsc2U7Ci0gICAgT3duUHRyPFZlY3RvcjxXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOworICAgIE93blB0cjxWZWN0b3I8V2Vi
Q29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBnZXN0dXJlRW5kLT5zaXplKCk7IGkrKykgewogICAgICAgICBzd2l0
Y2ggKCgqZ2VzdHVyZUVuZClbaV0udHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2
ZW50OjpTY3JvbGxFbmRUeXBlOgogICAgICAgICAgICAgc2Nyb2xsRW5kID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ3ZWZlNzRiMGUzYTg3ZDNhOTQ5OTQ5YjhlMzQx
NzNkNzcwYWIzYjYuLmQzY2U3ZTBkNTI3Zjg0YmZkYTFmYTI2NDNlMmNjYmVmMmUzYmU5ZGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMS0wOC0yNCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVtb3ZlcyBvYnNvbGV0ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudCBzdWJ0
eXBlcyBmcm9tIHRoZSBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjY0OTIKKyAgICAgICAgCisgICAgICAgIEluIHNlcGFyYXRpbmcg
b3V0IHN5bnRoZXNpemVkIGdlc3R1cmUgZXZlbnRzIGZyb20gcGxhdGZvcm0gZ2VzdHVyZQorICAg
ICAgICBldmVudHMsIHN5bnRoZXRpYyBQbGF0Zm9ybUdlc3R1cmVFdmVudHMgdHlwZXMgd2VyZSBy
ZW1vdmVkLiBUaGlzIGNoYW5nZQorICAgICAgICB1cGRhdGVzIEV2ZW50U2VuZGVyIGFwcHJvcHJp
YXRlbHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVu
dFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorCiAyMDExLTA4LTIzICBEaW1pdHJpIEdsYXprb3YgIDxk
Z2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBub3RpZmljYXRpb25zIGFwcGVh
ciBpbiB0aW1lIG9yZGVyIGFnYWluLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RXZlbnRTZW5kZXIuY3BwCmluZGV4IDZkYWY2MTY5NTYxZGMxNTE4MDcwZjdkMGI3ZjA5NTBjODc5
Mjg1ZmMuLjIyOTA5NTBkM2FhZGE4MTg0NDZhODFjN2I5OGNjNzBlZjI0ZDE3OGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKQEAgLTI4MCw3ICsy
ODAsNiBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBi
aW5kTWV0aG9kKCJ1cGRhdGVUb3VjaFBvaW50IiwgJkV2ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBv
aW50KTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlU2Nyb2xsQmVnaW4iLCAmRXZlbnRTZW5kZXI6
Omdlc3R1cmVTY3JvbGxCZWdpbik7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVNjcm9sbEVuZCIs
ICZFdmVudFNlbmRlcjo6Z2VzdHVyZVNjcm9sbEVuZCk7Ci0gICAgYmluZE1ldGhvZCgiZ2VzdHVy
ZVRhcCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcCk7CiAgICAgYmluZE1ldGhvZCgiem9vbVBh
Z2VJbiIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VJbik7CiAgICAgYmluZE1ldGhvZCgiem9vbVBh
Z2VPdXQiLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlT3V0KTsKICAgICBiaW5kTWV0aG9kKCJzY2Fs
ZVBhZ2VCeSIsICZFdmVudFNlbmRlcjo6c2NhbGVQYWdlQnkpOwpAQCAtMTAzMywxMiArMTAzMiw2
IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVTY3JvbGxFbmQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVTY3JvbGxFbmQsIGFyZ3VtZW50cyk7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXI6
Omdlc3R1cmVUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBnZXN0dXJlRXZlbnQoV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVRhcCwgYXJndW1lbnRzKTsKLX0KLQogdm9pZCBFdmVudFNlbmRl
cjo6Z2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFh
cmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105494</attachid>
            <date>2011-08-29 09:02:17 -0700</date>
            <delta_ts>2011-08-29 11:16:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66492-20110829120254.patch</filename>
            <type>text/plain</type>
            <size>54824</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5NzgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0N2NlZWNlYTI0ZjY4OTFkZDA5NGNj
Yjc3OTNhMTg3NGQzOGMxZmYzLi42OTQxMmVjODZmOTgyNzdiZTIzM2M1ZmIzYWYwZDI3Y2YwMTIz
NGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMjkgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBhIGxheW91dCB0ZXN0IG9i
c29sZXRlZCBieSByZW1vdmluZworICAgICAgICBzeW50aGV0aWMgZ2VzdHVyZSBldmVudHMgZnJv
bSBQbGF0Zm9ybUdlc3R1cmVFdmVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2st
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvZ2VzdHVyZS1jbGljay5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisKIDIwMTEtMDgtMjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiA8YnV0dG9uIGhpZGRlbj4uLjwvYnV0
dG9uPiBoYXMgYSBkaWZmZXJlbnQgY29tcHV0ZWQgImRpc3BsYXkiIHZhbHVlIHRoYW4gIm5vbmUi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1
cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzc1ZmExYTcxZTMwMjliODU2YTExOTRmYWJkZmQ4ZTAyYmIyMzBhMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4K
LQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLUdlc3R1cmUgbWFuYWdlciBub3QgaW1w
bGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGljay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNWRjYzVhNjA4YWQ5YzIxNjAyYTlhMDgzMjc3MWI3ZmVhOTgyZTM2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1jbGljay5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNzUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KLTxkaXYgaWQ9Imdlc3R1cmUi
PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
Ci08c2NyaXB0PgotdmFyIGV4cGVjdGVkTW91c2VFdmVudHMgPSA0OwotdmFyIG1vdXNlRXZlbnRz
UmVjZWl2ZWQgPSAwOwotdmFyIGV2ZW50VHlwZXMgPSBbICdtb3VzZW1vdmUnLCAnbW91c2Vkb3du
JywgJ21vdXNldXAnLCAnY2xpY2snIF07Ci0KLWZ1bmN0aW9uIGdlc3R1cmVFdmVudENhbGxiYWNr
KGV2ZW50KQotewotICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdldmVudC50eXBlJywgZXZlbnRUeXBlc1ttb3VzZUV2ZW50c1JlY2Vp
dmVkXSk7Ci0gICAgICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRYJywgJzEwJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdldmVudC5jbGllbnRZJywgJzEyJyk7Ci0gICAgICAgIG1vdXNlRXZlbnRzUmVj
ZWl2ZWQrKzsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZyhldmVudC50eXBlKTsKLSAgICAg
ICAgZGVidWcoZXZlbnQuY2xpZW50WCk7Ci0gICAgICAgIGRlYnVnKGV2ZW50LmNsaWVudFkpOwot
ICAgIH0KLX0KLQotLy8gQmVjYXVzZSB3ZSBtYXkgbm90IGhhdmUgYSBnZXN0dXJlIHJlY29nbml6
ZXIsIHdlIHNlbmQgYSBrZXkgcHJlc3MKLS8vIGV2ZW50IHRvIGVuZCB0aGUgdGVzdCB3aXRob3V0
IHRlbXBvcmFsIGZsYWtpbmVzcy4KLWZ1bmN0aW9uIHF1aXRLZXlUb0VuZFRlc3QoZXZlbnQpIHsK
LSAgICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVuZFRlc3QoKQotewotICAgIGlmIChtb3Vz
ZUV2ZW50c1JlY2VpdmVkIDwgZXhwZWN0ZWRNb3VzZUV2ZW50cykgewotICAgICAgICBkZWJ1Zygn
R2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtLicpOwotICAg
IH0KLSAgICAvLyBCYWlsLgotICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0gICAgaXNT
dWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdnZXN0dXJlJyk7Ci0gICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0gICAgZGl2LmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgZ2VzdHVyZUV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKLSAgICBkaXYuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Ci0g
ICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIGdlc3R1cmVFdmVudENhbGxiYWNr
LCBmYWxzZSk7Ci0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHF1aXRL
ZXlUb0VuZFRlc3QsIGZhbHNlKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotCi0gICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBi
YXNpYyBnZXN0dXJlIGNhbGxiYWNrcy4iKTsKLSAgICAgICAgLy8gQSAndGFwJyBnZXN0dXJlIGV2
ZW50IHNob3VsZCBnZW5lcmF0ZSBhIHNlcXVlbmNlIG9mIG1vdXNlIGV2ZW50cy4KLSAgICAgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZVRhcCgxMCwgMTIpOwotICAgICAgICBldmVudFNlbmRlci5sZWFw
Rm9yd2FyZCgxMCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAg
VGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIpCi0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0
dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIy
MWRkODYwYmFkY2E2NWUyYmMwMjI0MDI0NDg0NDJiNjFiYTIxMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2dlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhpcyB0ZXN0cyBiYXNpYyBnZXN0dXJlIGNh
bGxiYWNrcy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgZXZlbnQudHlw
ZSBpcyAibW91c2Vtb3ZlIgotUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNs
aWVudFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBpcyAibW91c2Vkb3duIgotUEFTUyBldmVudC5j
bGllbnRYIGlzIDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIKLVBBU1MgZXZlbnQudHlwZSBp
cyAibW91c2V1cCIKLVBBU1MgZXZlbnQuY2xpZW50WCBpcyAxMAotUEFTUyBldmVudC5jbGllbnRZ
IGlzIDEyCi1QQVNTIGV2ZW50LnR5cGUgaXMgImNsaWNrIgotUEFTUyBldmVudC5jbGllbnRYIGlz
IDEwCi1QQVNTIGV2ZW50LmNsaWVudFkgaXMgMTIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJhZDAyMDBmYzRmNWViYzQw
NDEyZDZjOTE4Mzk4ODY2YTNhNGRiYy4uMDM3NzJjZjQ1MzdiYjA4OTRhMWI4YTg0OWNjN2JjZjA5
YWNlNGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDExLTA4LTI5ICBSb2JlcnQg
S3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgYSBzeW50aGV0
aWMgZXZlbnQgdHlwZSBmb3IgZ2VzdHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBnZXN0dXJlIHJlY29n
bml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2
NDkyCisgICAgICAgCisgICAgICAgIFBlciBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NDoKKyAgICAgICAgdGhpcyBjaGFuZ2UgaW50cm9k
dWNlcyBhIFN5bnRoZXRpY0dlc3R1cmVFdmVudCBmb3IgZXZlbnRzCisgICAgICAgIGdlbmVyYXRl
ZCBieSBhIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIgaW5zdGFuY2UuIFNlcGFyYXRpbmcKKyAg
ICAgICAgc3ludGhldGljIGV2ZW50cyBmcm9tIGVtYmVkZGVyLXNvdXJjZWQgUGxhdGZvcm1HZXN0
dXJlRXZlbnRzCisgICAgICAgIGVsaW1pbmF0ZXMgYnVncyBjYXVzZWQgYnkgbWl4aW5nIHRoZSBz
aWRlIGVmZmVjdHMgb2Ygc3ludGhlc2l6ZWQKKyAgICAgICAgYW5kIHBsYXRmb3JtIGdlc3R1cmVz
IGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBlbmFibGUKKyAgICAgICAgR0VTVFVSRV9SRUNPR05J
WkVSIGluZGVwZW5kZW50bHkgb2YgR0VTVFVSRV9FVkVOVFMuCisgICAgICAgIAorICAgICAgICBT
eW50aGV0aWMgZ2VzdHVyZXMgY29udGludWUgdG8gYmUgdGVzdGVkIGJ5IGV4aXN0aW5nIGxheW91
dCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVN5bnRoZXRpY0V2ZW50KToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFuZGxlU3ludGhldGljRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TeW50aGV0aWNHZXN0dXJlRXZlbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlN5bnRoZXRp
Y0dlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6
OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50Ojpwb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6Omdsb2JhbFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bnRoZXRpY0dlc3R1cmVFdmVudDo6ZGVsdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50Ojp0aW1lc3RhbXApOgorICAg
ICAgICAoV2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50OjpzaGlmdEtleSk6CisgICAgICAg
IChXZWJDb3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
U3ludGhldGljR2VzdHVyZUV2ZW50OjptZXRhS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdl
c3R1cmVSZWNvZ25pemVyOjphcHBlbmRUYXBTdGFydEdlc3R1cmVFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2VzdHVyZUVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlj
a09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmluU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6aGFuZGxlU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1BvcHVwQ29udGFpbmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlU3lu
dGhldGljRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5o
OgorCiAyMDExLTA4LTI5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogPGJ1dHRvbiBoaWRkZW4+Li48L2J1dHRvbj4gaGFz
IGEgZGlmZmVyZW50IGNvbXB1dGVkICJkaXNwbGF5IiB2YWx1ZSB0aGFuICJub25lIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGMwNmNlNGI2MzJlYjUyZTJlYjYxNDUzMWJiNmZiOGY1MDM2Nzg2NTAuLmRh
ZjliYTU3ZWUzYzQ4YTM4MWYwNjA1ZDEwNGY2NzA5MzU2ZmFjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTcwNiw2ICs3MDYsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVu
dS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vU3ludGhldGljR2VzdHVyZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1N5
c3RlbVRpbWUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vVGhlbWUuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vVGhlbWVUeXBlcy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCAwOGZkMjc3NDMyNDI3M2JlZWRiMTgzYTc4YjUzYjQ0MDExYTRiNTJlLi40MmRjYzEy
M2NkODZhODYxZmUwOTRmZGE4MTdhMjZmNDZlNGRmNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC04Nyw2ICs4NywxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVy
ZUV2ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5j
bHVkZSAiU3ludGhldGljR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2Uu
aCIKQEAgLTIyMDgsMzMgKzIyMTIsNDQgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgIC8v
IHRoYXQgaWYgYSBmcmFtZSBnZXRzIGEgZ2VzdHVyZSBiZWdpbiBnZXN0dXJlLCBpdCBnZXRzIHRo
ZSBjb3JyZXNwb25kaW5nCiAgICAgLy8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAotICAgIHN3aXRj
aCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcFR5cGU6IHsKLSAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3Qg
aGl0IHRlc3QgbXVsdGlwbGUgdGltZXMgb25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0
ZWQgYXMgc3VnZ2VzdGVkIGFib3ZlLgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1v
dXNlTW92ZShnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0
aW9uKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9u
LCBNb3VzZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCks
IGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVs
ZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1
cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1l
dGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcg
PSBtX2ZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICB2aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0
dXJlRXZlbnQmIHN5bnRoZXRpYykKK3sKKyAgICBzd2l0Y2ggKHN5bnRoZXRpYy50eXBlKCkpIHsK
KyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwQmVnaW5UeXBlOgorICAgICAgICAv
LyBGSVhNRTogQWRkIGEgbGluayBzZWxlY3Rpb24gcHJldmlldy4KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBFbmRUeXBlOiB7CisgICAg
ICAgIC8vIEZJWE1FOiBIaXQgdGVzdCBvbmx5IG9uY2UgZm9yIGFsbCB0aHJlZSBldmVudHMuCisg
ICAgICAgIEludFBvaW50IHBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRp
b24oKSkpOworICAgICAgICBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbihyb3VuZGVkSW50UG9pbnQo
c3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCkpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZU1vdmUocG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBOb0J1dHRvbiwgTW91c2VF
dmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIHN5bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50
aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCksIHN5bnRoZXRpYy5tZXRhS2V5KCks
IHN5bnRoZXRpYy50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtl
TW91c2VEb3duKHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgTW91c2VFdmVu
dFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5bnRo
ZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXkoKSwg
c3ludGhldGljLnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VN
b3VzZVVwKHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJl
bGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIHN5bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0
aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCksIHN5bnRoZXRpYy5tZXRhS2V5KCksIHN5
bnRoZXRpYy50aW1lc3RhbXAoKSk7CiAgICAgICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7
CiAgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKICAgICAgICAg
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlw
ZTogeworICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7
CiAgICAgICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRp
Y2tNdWx0aXBsaWVyOwotICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1w
bGVtZW50YXRpb24gb25jZSB0aGUgYWJvdmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgotICAg
ICAgICBJbnRQb2ludCBwb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKS54KCkgKyBnZXN0dXJl
RXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLnkoKSArIGdlc3R1cmVFdmVu
dC5kZWx0YVkoKSk7Ci0gICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2
ZW50KHBvaW50LCBwb2ludCwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVs
dGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIHRpY2tEaXZpc29yLCBnZXN0dXJlRXZlbnQu
ZGVsdGFZKCkgLyB0aWNrRGl2aXNvciwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNj
ZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3Ry
bEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOwor
ICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChyb3VuZGVkSW50
UG9pbnQoc3ludGhldGljLnBvc2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmds
b2JhbFBvc2l0aW9uKCkpLCBzeW50aGV0aWMuZGVsdGEoKS53aWR0aCgpLCBzeW50aGV0aWMuZGVs
dGEoKS5oZWlnaHQoKSwgc3ludGhldGljLmRlbHRhKCkud2lkdGgoKSAvIHRpY2tEaXZpc29yLCBz
eW50aGV0aWMuZGVsdGEoKS5oZWlnaHQoKSAvIHRpY2tEaXZpc29yLCBTY3JvbGxCeVBpeGVsV2hl
ZWxFdmVudCwgLyogaXNBY2NlcHRlZCAqLyBmYWxzZSwgc3ludGhldGljLnNoaWZ0S2V5KCksIHN5
bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhldGljLm1ldGFLZXko
KSk7CiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpT
Y3JvbGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5k
VHlwZToKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgICAg
ICBpZiAoIXZpZXcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmlldy0+
aGFuZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVFdmVudCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgY2Fz
ZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgICAgIC8vIEZJWE1F
OiBDb25uZWN0IHRoZXNlIGV2ZW50cyBhcHByb3ByaWF0ZWx5IHRvIFNjcm9sbEFuaW1hdG9yLgor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggY2YyZmU4MTQzZTJjZjlhNWJjYjA0ODg3MDYzYTNj
ZGYzZjYxYjMxNS4uNGRkMGFkZTBjNzcyMWNmYzc0MTU0ZWMyYWRkZTkwZmQzMDIxZDY1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC03OSw2ICs3OSw5IEBAIGNsYXNzIFdpZGdl
dDsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitjbGFzcyBTeW50aGV0
aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBleHRl
cm4gY29uc3QgaW50IExpbmtEcmFnSHlzdGVyZXNpczsKQEAgLTE2MSw2ICsxNjQsOSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIGJvb2wgaGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQorICAgIGJvb2wgaGFuZGxlU3ludGhldGljRXZlbnQoY29uc3QgU3lu
dGhldGljR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApp
bmRleCAxOGI3ZDFhYTJkMWVkZjlhODNkZWYyZjI2NmYyNTA5MDM3OTY4NDdiLi4xZTQwYWRmZDdm
NjExYjQwZDE0NTEzMWY5NDJhOTljNjEwNDllYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTM3LDggKzM3LDYgQEAgcHVibGljOgog
ICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFNjcm9sbEJlZ2luVHlwZSwKICAgICAgICAgU2Nyb2xs
RW5kVHlwZSwKLSAgICAgICAgU2Nyb2xsVXBkYXRlVHlwZSwKLSAgICAgICAgVGFwVHlwZQogICAg
IH07CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCgpCkBAIC00NywxNyArNDUsMTEgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUs
IGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBjb25zdCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBmbG9hdCBkZWx0YVgsIGNvbnN0IGZsb2F0
IGRlbHRhWSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBt
ZXRhS2V5KQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IGRvdWJs
ZSB0aW1lc3RhbXApCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9wb3NpdGlv
bihwb3NpdGlvbikKICAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQog
ICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKLSAgICAgICAgLCBtX2RlbHRhWChkZWx0
YVgpCi0gICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQotICAgICAgICAsIG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAgICwgbV9hbHRLZXko
YWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQogICAgIHsKICAgICB9CiAKQEAg
LTY3LDI1ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29vcmRp
bmF0ZXMuCiAKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3Rh
bXA7IH0KLQotICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9Ci0g
ICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KLSAgICBib29sIHNo
aWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgIGJvb2wgY3RybEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21l
dGFLZXk7IH0KLQogcHJvdGVjdGVkOgogICAgIFR5cGUgbV90eXBlOwogICAgIEludFBvaW50IG1f
cG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBkb3VibGUgbV90
aW1lc3RhbXA7Ci0gICAgZmxvYXQgbV9kZWx0YVg7Ci0gICAgZmxvYXQgbV9kZWx0YVk7Ci0gICAg
Ym9vbCBtX3NoaWZ0S2V5OwotICAgIGJvb2wgbV9jdHJsS2V5OwotICAgIGJvb2wgbV9hbHRLZXk7
Ci0gICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgK
aW5kZXggMGI4NmE5Mjc2ZmI2YmRlZjliN2MzNzg4M2M1MDkzZjc3ZTA0Y2IzYy4uNjk5YjdhZTY4
NDNjNjU2YjZlMzI2NTFiN2YzN2NlMmUxNWM5YWY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMzEsNyArMzEsNyBA
QAogI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKICNkZWZpbmUgUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcl9oCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgor
I2luY2x1ZGUgIlN5bnRoZXRpY0dlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBjcmVh
dGUoKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CiAKLSAgICB0
eXBlZGVmIFBhc3NPd25QdHI8VmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IFBhc3NHZXN0
dXJlczsKKyAgICB0eXBlZGVmIFBhc3NPd25QdHI8VmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVFdmVu
dD4gPiBQYXNzR2VzdHVyZXM7CiAKICAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50
IGFuZCByZXR1cm5zIDAgb3IgbW9yZSByZXN1bHRpbmcgZ2VzdHVyZXMuCiAgICAgdmlydHVhbCBQ
YXNzR2VzdHVyZXMgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRv
dWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA1NTM4ZWZkZDFhY2Q5ZDEzY2YyODZjNmRh
ZDA1MWUxODhmMTNlNzNhLi5lYTVlZTVlYWM0OWJkNzE5NmM4MDRjZjdlOTRiZGM3NGFjZDk5YmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0zNyw2
ICszNywxMCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpbmNsdWRlICJTeW50aGV0
aWNHZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMTksNiArMTIzLDEyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCit2b2lkIFNjcm9sbEFuaW1hdG9y
OjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmKQorewor
fQorI2VuZGlmCisKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OmN1cnJlbnRQb3NpdGlvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQobV9jdXJyZW50UG9zWCwgbV9jdXJyZW50
UG9zWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2Njcz
ODFiMzExZDkyZjU1OThjMTdlMjI0YzBiZTBjNTY2NDU1MWI2Li5hYmUwZjk4MDdjMmViZTQ3ZmI5
NzY5ZDg4M2VlYWFkOTc2M2IyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgU2Nyb2xsYmFyOwogI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCisjaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsK
KyNlbmRpZgogCiBjbGFzcyBTY3JvbGxBbmltYXRvciB7CiBwdWJsaWM6CkBAIC02Nyw2ICs3MCw5
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlm
CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2b2lkIGhhbmRsZVN5bnRoZXRp
Y0V2ZW50KGNvbnN0IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICBGbG9h
dFBvaW50IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAppbmRleCA1MDkyYjA1Y2RiMzI2Njg5NDI2YWYzYTc1ZTU3YzkzYjM4
NzYxMzRhLi5jZTk0Mzk4ZDcwNWEyYjg2NTYyODA0NjM3NmYwNzg4MTExZTNhN2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTQwLDYgKzQwLDkgQEAgY2xh
c3MgU2Nyb2xsQW5pbWF0b3I7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xh
c3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CitjbGFzcyBTeW50aGV0aWNHZXN0dXJlRXZlbnQ7CisjZW5kaWYKIAogY2xhc3MgU2Nyb2xsYWJs
ZUFyZWEgewogcHVibGljOgpAQCAtNTYsNiArNTksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQogICAgIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
ICAgIHZvaWQgaGFuZGxlU3ludGhldGljRXZlbnQoY29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50
Jik7CisjZW5kaWYKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgaWYgeW91IGNh
biBzY3JvbGwgcGFzdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4KICAgICBib29sIGNvbnN0cmFp
bnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Ny
b2xsaW5nVG9Db250ZW50RWRnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3ludGhldGljR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TeW50
aGV0aWNHZXN0dXJlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDc2MTkwYzVhODVkZmJmZTIzZDk0ZTMx
YWU4N2E1MjJmMGMyMWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3ludGhldGljR2VzdHVyZUV2ZW50LmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTeW50
aGV0aWNHZXN0dXJlRXZlbnRfaAorI2RlZmluZSBTeW50aGV0aWNHZXN0dXJlRXZlbnRfaAorI2lm
IEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisj
aW5jbHVkZSAiRmxvYXRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZl
bnRIYW5kbGVyOworY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OworCitjbGFzcyBTeW50aGV0aWNH
ZXN0dXJlRXZlbnQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFRhcEJlZ2lu
VHlwZSwKKyAgICAgICAgVGFwRW5kVHlwZSwKKyAgICAgICAgU2Nyb2xsQmVnaW5UeXBlLAorICAg
ICAgICBTY3JvbGxFbmRUeXBlLAorICAgICAgICBTY3JvbGxVcGRhdGVUeXBlLAorICAgIH07CisK
KyAgICBTeW50aGV0aWNHZXN0dXJlRXZlbnQoKQorICAgICAgICA6IG1fdHlwZShTY3JvbGxCZWdp
blR5cGUpCisgICAgICAgICwgbV90aW1lc3RhbXAoMCkKKyAgICB7CisgICAgfQorCisgICAgU3lu
dGhldGljR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEZsb2F0UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBkb3VibGUgdGltZXN0YW1w
LCBjb25zdCBGbG9hdFNpemUmIGRlbHRhLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAg
ICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQorICAgICAgICAsIG1fZGVsdGEoZGVsdGEpCisgICAgICAgICwgbV90aW1lc3Rh
bXAodGltZXN0YW1wKQorICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCisgICAgICAgICwg
bV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQorICAgICAgICAs
IG1fbWV0YUtleShtZXRhS2V5KQorICAgIHsKKyAgICB9CisgICAgCisgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRp
bmF0ZXMuCisgICAgY29uc3QgRmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KKyAgICBjb25z
dCBGbG9hdFNpemUmIGRlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YTsgfQorICAgIGRvdWJs
ZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorCisgICAgYm9vbCBz
aGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXko
KSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWx0S2V5OyB9CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhS2V5OyB9CisKK3Byb3RlY3RlZDoKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBGbG9hdFBvaW50
IG1fcG9zaXRpb247CisgICAgRmxvYXRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOworICAgIEZsb2F0
U2l6ZSBtX2RlbHRhOworICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKKyAgICAKKyAgICBib29sIG1f
c2hpZnRLZXk7CisgICAgYm9vbCBtX2N0cmxLZXk7CisgICAgYm9vbCBtX2FsdEtleTsKKyAgICBi
b29sIG1fbWV0YUtleTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjZW5kaWYgLy8gU3ludGhldGljR2VzdHVyZUV2
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1l
bGVzc1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1l
bGVzc1Njcm9sbFZpZXcuaAppbmRleCBjNmNjMmI1ZjM0YjQyZTY0YzI1NTg1ZDlmNzhjOTVjYjlh
NjFlNzVkLi5hNzY4ZWQwNDRkOWM0ZGQ4NjJkYzNkY2M2NDE5ZjcxMDc3ZmE4NGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xs
Vmlldy5oCkBAIC0zNiw5ICszNiwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgRnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudDsKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05J
WkVSKQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICBjbGFzcyBQbGF0Zm9ybUdlc3R1
cmVFdmVudDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgY2xh
c3MgU3ludGhldGljR2VzdHVyZUV2ZW50OworI2VuZGlmCiAgICAgY2xhc3MgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQpAQCAtNjYsMTEgKzY5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
S2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpID0gMDsKKyNlbmRpZgogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYpID0gMDsKICNlbmRpZgogI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTeW50
aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmKSA9IDA7CiAjZW5kaWYKIAog
ICAgICAgICAvLyBTY3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKaW5kZXggMTdkYjViNTYzZmM2NjhlZTQxMjYyN2YxN2Q4ZmMxNjYxNmM4Zjhj
YS4uM2QwYzVmZDZlZjJhNjY2YmIxZmZiODhiOWQxZWMxYWE1MGY2NTI5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKQEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJHZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGSVhNRTogQ29udmVydCB0byBtZXRob2RzLgpAQCAtMTAz
LDkgKzEwMCwxNCBAQCBib29sIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmlzSW5zaWRlTWFuaGF0
dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcAogICAgIHJldHVybiBtYW5oYXR0
YW5EaXN0YW5jZSA8IG1heGltdW1Ub3VjaE1vdmVJblBpeGVsc0ZvckNsaWNrOwogfQogCi12b2lk
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2Vz
dHVyZXMgZ2VzdHVyZXMpCit2b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFRhcFN0
YXJ0R2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZXMt
PmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlw
ZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hU
aW1lLCAwLjBmLCAwLjBmLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFL
ZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFN5bnRoZXRpY0dlc3R1cmVFdmVudChTeW50aGV0
aWNHZXN0dXJlRXZlbnQ6OlRhcEJlZ2luVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnBvcygp
KSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hUaW1lLCBG
bG9hdFNpemUoKSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7
Cit9CisKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kVGFwRW5kR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgSW5uZXJHZXN0dXJlUmVj
b2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCit7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChTeW50
aGV0aWNHZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50OjpUYXBFbmRUeXBlLCBGbG9h
dFBvaW50KGZpcnN0VG91Y2hQb3NpdGlvbigpKSwgRmxvYXRQb2ludChtX2ZpcnN0VG91Y2hTY3Jl
ZW5Qb3NpdGlvbiksIG1fbGFzdFRvdWNoVGltZSwgRmxvYXRTaXplKCksIG1fc2hpZnRLZXksIG1f
Y3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiBQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBib29sIGRl
ZmF1bHRQcmV2ZW50ZWQpCkBAIC0xMTUsNyArMTE3LDcgQEAgUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcjo6UGFzc0dlc3R1cmVzIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnByb2Nlc3NUb3VjaEV2
ZW4KICAgICBtX3NoaWZ0S2V5ID0gZXZlbnQuc2hpZnRLZXkoKTsKICAgICBtX21ldGFLZXkgPSBl
dmVudC5tZXRhS2V5KCk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50
PiA+IGdlc3R1cmVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4o
KSk7CisgICAgT3duUHRyPFZlY3RvcjxTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFN5bnRoZXRpY0dlc3R1cmVFdmVudD4oKSk7CiAgICAgY29u
c3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRz
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaW50cy5zaXplKCk7IGkrKykgewog
ICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHAgPSBwb2ludHNbaV07CkBAIC0xMjcs
MjUgKzEyOSwyMiBAQCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbgogICAgIHJldHVybiBnZXN0dXJl
cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Ny
b2xsR2VzdHVyZUJlZ2luKGNvbnN0IEludFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0
dXJlcykKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2VzdHVyZUJl
Z2luKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVy
ZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlLCB0b3VjaFBvaW50LCB0b3VjaFBvaW50LCBt
X2xhc3RUb3VjaFRpbWUsIDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRL
ZXksIG1fbWV0YUtleSkpOwotICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludDsK
LSAgICBtX2xhc3RUb3VjaFBvc2l0aW9uID0gbV9maXJzdFRvdWNoUG9zaXRpb247CisgICAgZ2Vz
dHVyZXMtPmFwcGVuZChTeW50aGV0aWNHZXN0dXJlRXZlbnQoU3ludGhldGljR2VzdHVyZUV2ZW50
OjpTY3JvbGxCZWdpblR5cGUsIEZsb2F0UG9pbnQodG91Y2hQb2ludC5wb3MoKSksIEZsb2F0UG9p
bnQodG91Y2hQb2ludC5zY3JlZW5Qb3MoKSksIG1fbGFzdFRvdWNoVGltZSwgRmxvYXRTaXplKCks
IG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCi12b2lk
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgSW50
UG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQordm9pZCBJbm5lckdlc3R1cmVS
ZWNvZ25pemVyOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVu
ZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlw
ZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2xhc3RUb3Vj
aFRpbWUsIDAuMGYsIDAuMGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoU3ludGhldGljR2VzdHVyZUV2ZW50KFN5bnRo
ZXRpY0dlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnBv
cygpKSwgRmxvYXRQb2ludCh0b3VjaFBvaW50LnNjcmVlblBvcygpKSwgbV9sYXN0VG91Y2hUaW1l
LCBGbG9hdFNpemUoKSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2VzdHVy
ZVVwZGF0ZShjb25zdCBJbnRQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCit2
b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsK
LSAgICBmbG9hdCBkZWx0YVgodG91Y2hQb2ludC54KCkgLSBtX2xhc3RUb3VjaFBvc2l0aW9uLngo
KSk7Ci0gICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQueSgpIC0gbV9sYXN0VG91Y2hQb3NpdGlv
bi55KCkpOworICAgIEZsb2F0U2l6ZSBkZWx0YSh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1fZmly
c3RUb3VjaFBvc2l0aW9uLngoKSwgdG91Y2hQb2ludC5wb3MoKS55KCkgLSBtX2ZpcnN0VG91Y2hQ
b3NpdGlvbi55KCkpOwogCi0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVu
dChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZSwgbV9maXJzdFRvdWNoUG9z
aXRpb24sIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhWCwgZGVs
dGFZLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKLSAgICBt
X2xhc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludDsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFN5
bnRoZXRpY0dlc3R1cmVFdmVudChTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5
cGUsIEZsb2F0UG9pbnQodG91Y2hQb2ludC5wb3MoKSksIEZsb2F0UG9pbnQodG91Y2hQb2ludC5z
Y3JlZW5Qb3MoKSksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGEsIG1fc2hpZnRLZXksIG1fY3RybEtl
eSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91
Y2hQb2ludC5wb3MoKTsKIH0KIAogdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjp1cGRhdGVW
YWx1ZXMoY29uc3QgZG91YmxlIHRvdWNoVGltZSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0
b3VjaFBvaW50KQpAQCAtMTU0LDYgKzE1Myw3IEBAIHZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJsZSB0b3VjaFRpbWUsIGNvbnN0IFBsYXRmb3JtCiAg
ICAgaWYgKHN0YXRlKCkgPT0gTm9HZXN0dXJlKSB7CiAgICAgICAgIG1fZmlyc3RUb3VjaFRpbWUg
PSB0b3VjaFRpbWU7CiAgICAgICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5w
b3MoKTsKKyAgICAgICAgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24gPSB0b3VjaFBvaW50LnNj
cmVlblBvcygpOwogICAgIH0KIH0KIApAQCAtMTY5LDE2ICsxNjksMTggQEAgdW5zaWduZWQgaW50
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnNpZ25hdHVyZShTdGF0ZSBnZXN0dXJlU3RhdGUsIHVu
c2lnbmVkIGlkLAogICAgIHJldHVybiAxICsgKCh0b3VjaFR5cGUgJiAweDcpIDw8IDEgfCAoaGFu
ZGxlZCA/IDEgPDwgNCA6IDApIHwgKChpZCAmIDB4ZmZmKSA8PCA1ICkgfCAoZ2VzdHVyZVN0YXRl
IDw8IDE3KSk7CiB9CiAKLXN0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25p
emVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCitzdGF0aWMgYm9vbCB0b3VjaERv
d24oSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVy
ZXMgZ2VzdHVyZXMpCiB7CiAgICAgZ2VzdHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2Vz
dHVyZVJlY29nbml6ZXI6OlBlbmRpbmdTeW50aGV0aWNDbGljayk7CisgICAgZ2VzdHVyZVJlY29n
bml6ZXItPmFwcGVuZFRhcFN0YXJ0R2VzdHVyZUV2ZW50KHRvdWNoUG9pbnQsIGdlc3R1cmVzKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sIHNjcm9sbEVuZChJbm5lckdlc3R1
cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiBwb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0g
ICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQocG9pbnQucG9zKCks
IGdlc3R1cmVzKTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZUVu
ZChwb2ludCwgZ2VzdHVyZXMpOwogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5y
ZXNldCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRp
YyBib29sIGNsaWNrKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBj
b25zdCBQbGF0Zm9ybVRvdWNoCiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5pc0luQ2xp
Y2tUaW1lV2luZG93KCkgJiYgZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1
YXJlKHBvaW50KSkgewogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6Tm9HZXN0dXJlKTsKLSAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXIt
PmFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KHBvaW50LCBnZXN0dXJlcyk7CisgICAgICAgIGdlc3R1
cmVSZWNvZ25pemVyLT5hcHBlbmRUYXBFbmRHZXN0dXJlRXZlbnQocG9pbnQsIGdlc3R1cmVzKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBub0dlc3R1cmUoZ2VzdHVy
ZVJlY29nbml6ZXIsIHBvaW50LCBnZXN0dXJlcyk7CkBAIC0yMDYsOCArMjA4LDggQEAgc3RhdGlj
IGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGEKICAgICB9CiAKICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQgJiYgIWdlc3R1cmVSZWNvZ25pemVyLT5pc0luc2lk
ZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKLSAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFw
cGVuZFNjcm9sbEdlc3R1cmVCZWdpbihnZXN0dXJlUmVjb2duaXplci0+Zmlyc3RUb3VjaFBvc2l0
aW9uKCksIGdlc3R1cmVzKTsKLSAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUocG9pbnQucG9zKCksIGdlc3R1cmVzKTsKKyAgICAgICAgZ2VzdHVyZVJl
Y29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbihwb2ludCwgZ2VzdHVyZXMpOworICAg
ICAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShwb2ludCwg
Z2VzdHVyZXMpOwogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6U2Nyb2xsKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MjE2LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhCiAKIHN0YXRpYyBib29sIGlu
U2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJl
cyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVy
ZVVwZGF0ZShwb2ludC5wb3MoKSwgZ2VzdHVyZXMpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5h
cHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAppbmRleCBmZDQ2ZmU3OTBjNmYzMDcwNTg0
N2RhNmUxNDk0NWIzMGE2Y2EyZWU2Li5kNmExNGYyN2IyMDNiMThmMzkwNmZmOTg4ODEyZmYzMTBh
NWQxOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0
dXJlUmVjb2duaXplckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9y
bVRvdWNoRXZlbnQuaCIKLSNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Ub3VjaFBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKK2NsYXNzIFN5bnRoZXRpY0dl
c3R1cmVFdmVudDsKIAogY2xhc3MgSW5uZXJHZXN0dXJlUmVjb2duaXplciB7CiBwdWJsaWM6CkBA
IC00OSwxOSArNDksMjAgQEAgcHVibGljOgogICAgICAgICBTY3JvbGwKICAgICB9OwogCi0gICAg
dHlwZWRlZiBWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+KiBHZXN0dXJlczsKKyAgICB0eXBl
ZGVmIFZlY3RvcjxTeW50aGV0aWNHZXN0dXJlRXZlbnQ+KiBHZXN0dXJlczsKICAgICB0eXBlZGVm
IGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKShJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogCiAgICAgfklubmVyR2Vz
dHVyZVJlY29nbml6ZXIoKTsKIAotICAgIHZvaWQgYXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpOwogICAgIGJvb2wgaXNJbkNsaWNrVGltZVdpbmRvdygpOwogICAgIGJvb2wgaXNJbnNpZGVN
YW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgIHByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVu
dGVkKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbihjb25zdCBJbnRQb2ludCYs
IEdlc3R1cmVzKTsKLSAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgSW50UG9p
bnQmLCBHZXN0dXJlcyk7Ci0gICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKGNvbnN0
IEludFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5kVGFwU3RhcnRHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOworICAgIHZvaWQgYXBwZW5k
VGFwRW5kR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsK
KyAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmLCBHZXN0dXJlcyk7CisgICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlRW5kKGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKKyAgICB2b2lkIGFwcGVuZFNjcm9sbEdlc3R1
cmVVcGRhdGUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogICAgIHZvaWQg
c2V0U3RhdGUoU3RhdGUgdmFsdWUpIHsgbV9zdGF0ZSA9IHZhbHVlOyB9CiAgICAgU3RhdGUgc3Rh
dGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CiAKQEAgLTc2LDYgKzc3LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgV1RGOjpIYXNoTWFwPGludCwgR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbj4gbV9lZGdl
RnVuY3Rpb25zOwogICAgIEludFBvaW50IG1fZmlyc3RUb3VjaFBvc2l0aW9uOworICAgIEludFBv
aW50IG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uOwogICAgIGRvdWJsZSBtX2ZpcnN0VG91Y2hU
aW1lOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgSW50UG9pbnQgbV9sYXN0VG91Y2hQb3NpdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFp
bmVyLmNwcAppbmRleCAyMWM0NmU2NzFlZDk0MzhjYzZiYjRlYjI1OGQ5NzVjNmZkOWIyZDA3Li41
MGQyNmU3YzlmMWRiYWNhNDNhMGI0OWZmNjBjMmU4OTdiMTNhNGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCkBAIC01NCw2
ICs1NCwxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVkZSAiU3ludGhldGljR2VzdHVy
ZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAi
UGxhdGZvcm1Ub3VjaEV2ZW50LmgiCiAjZW5kaWYKQEAgLTI5MiwyNyArMjk2LDM1IEBAIGJvb2wg
UG9wdXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50
JikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBQb3B1cENv
bnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShHRVNUVVJFX1JF
Q09HTklaRVIpCiAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIHNoYXJlIGZ1bmN0aW9u
YWxpdHkgd2l0aCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KLWJvb2wgUG9wdXBD
b250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQorYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlU3ludGhldGljRXZlbnQo
Y29uc3QgU3ludGhldGljR2VzdHVyZUV2ZW50JiBzeW50aGV0aWMpCiB7Ci0gICAgc3dpdGNoIChn
ZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFw
VHlwZTogewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9u
LCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0
S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2Vz
dHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCks
IGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJl
c3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0
YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNr
Q291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5
KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVy
ZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICBzd2l0Y2ggKHN5bnRoZXRpYy50eXBlKCkpIHsKKyAg
ICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVFdmVudDo6VGFwRW5kVHlwZTogeworICAgICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShyb3VuZGVkSW50UG9pbnQoc3ludGhldGljLnBv
c2l0aW9uKCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCkpLCBO
b0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIHN5bnRoZXRpYy5z
aGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCksIHN5bnRo
ZXRpYy5tZXRhS2V5KCksIHN5bnRoZXRpYy50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VEb3duKHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMucG9zaXRp
b24oKSksIHJvdW5kZWRJbnRQb2ludChzeW50aGV0aWMuZ2xvYmFsUG9zaXRpb24oKSksIExlZnRC
dXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIHN5bnRoZXRpYy5z
aGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50aGV0aWMuYWx0S2V5KCksIHN5bnRo
ZXRpYy5tZXRhS2V5KCksIHN5bnRoZXRpYy50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VVcChyb3VuZGVkSW50UG9pbnQoc3ludGhldGljLnBvc2l0aW9u
KCkpLCByb3VuZGVkSW50UG9pbnQoc3ludGhldGljLmdsb2JhbFBvc2l0aW9uKCkpLCBMZWZ0QnV0
dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgc3ludGhldGljLnNo
aWZ0S2V5KCksIHN5bnRoZXRpYy5jdHJsS2V5KCksIHN5bnRoZXRpYy5hbHRLZXkoKSwgc3ludGhl
dGljLm1ldGFLZXkoKSwgc3ludGhldGljLnRpbWVzdGFtcCgpKTsKICAgICAgICAgLy8gaGFuZGxl
TW91c2VNb3ZlRXZlbnQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNlRG93bkV2
ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChmYWtl
TW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3JtV2hlZWxF
dmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJl
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZl
bnQuZGVsdGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIDEyMC4wZiwgZ2VzdHVyZUV2ZW50
LmRlbHRhWSgpIC8gMTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNBY2NlcHRl
ZCAqLyBmYWxzZSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5
KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSk7CisgICAg
Y2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQocm91bmRlZEludFBvaW50KHN5
bnRoZXRpYy5wb3NpdGlvbigpKSwgcm91bmRlZEludFBvaW50KHN5bnRoZXRpYy5nbG9iYWxQb3Np
dGlvbigpKSwgc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoc3ludGhldGljLmRlbHRhKCkud2lkdGgo
KSkpLCBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihzeW50aGV0aWMuZGVsdGEoKS5oZWlnaHQoKSkp
LCBzeW50aGV0aWMuZGVsdGEoKS53aWR0aCgpIC8gMTIwLjBmLCBzeW50aGV0aWMuZGVsdGEoKS5o
ZWlnaHQoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQg
Ki8gZmFsc2UsIHN5bnRoZXRpYy5zaGlmdEtleSgpLCBzeW50aGV0aWMuY3RybEtleSgpLCBzeW50
aGV0aWMuYWx0S2V5KCksIHN5bnRoZXRpYy5tZXRhS2V5KCkpOwogICAgICAgICBoYW5kbGVXaGVl
bEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNh
c2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBTeW50aGV0
aWNHZXN0dXJlRXZlbnQ6OlRhcEJlZ2luVHlwZToKKyAgICBjYXNlIFN5bnRoZXRpY0dlc3R1cmVF
dmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2ZW50OjpT
Y3JvbGxFbmRUeXBlOgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmgK
aW5kZXggNDUyZTFiNDI1NDI2YzlkMzE5YWQzMzVmMjRkN2JmMDlkZTNiM2IwZi4uMjY4OTY4ZTg1
M2QyYTEyMWU1OTQ2OWQ5MmU5MTE0NDFmZGY4MzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5oCkBAIC00MSw2ICs0MSwxMyBAQCBj
bGFzcyBDaHJvbWVDbGllbnRDaHJvbWl1bTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIFBvcHVw
TWVudUNsaWVudDsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2NsYXNzIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OworI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2Ns
YXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgorCiBjbGFzcyBQb3B1cENvbnRhaW5l
ciA6IHB1YmxpYyBGcmFtZWxlc3NTY3JvbGxWaWV3IHsKIHB1YmxpYzoKICAgICBlbnVtIFBvcHVw
VHlwZSB7CkBAIC02NSw5ICs3MiwxMiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNo
RXZlbnQmKTsKICNlbmRpZgotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgRU5B
QkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZVN5bnRoZXRpY0V2ZW50KGNvbnN0
IFN5bnRoZXRpY0dlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBQb3B1cENvbnRhaW5l
ciBtZXRob2RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cExpc3RCb3guY3BwCmluZGV4IDIwMTUwNjRjZGMxOGUyNTkyMDUyNWYzMGE0NzkzOTMwNTdlMTIw
NjguLjFlNTBkZGQ2NGNiMGFlMGUzZmMwYjUyOTQ4ODk4M2FjNTQwNGJiODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcApAQCAtNTQs
NiArNTQsMTAgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2luY2x1ZGUgIlN5bnRoZXRpY0dlc3R1
cmVFdmVudC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUg
IlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2VuZGlmCkBAIC0xODUsMTMgKzE4OSwyMCBAQCBib29s
IFBvcHVwTGlzdEJveDo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQm
KQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2Jvb2wgUG9wdXBMaXN0Qm94
OjpoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZlbnQmKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlclR5
cGVFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIC8vIENo
ZWNrIHdoZXRoZXIgdGhlIGV2ZW50IGlzIGEgY2hhcmFjdGVyLXR5cGVkIGV2ZW50IG9yIG5vdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmgKaW5k
ZXggNGNlYzNhNDFhZTcwNTFhNjAxOTA5ZjFhMDE1OWY2OTYyYTFiMWU0Ni4uZDlkOWJhOGNiYzVj
ZTdiNGYyZDUxZjlkYzBjZWI0NjdlY2Y0MTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmgKQEAgLTU0LDYgKzU0LDkgQEAgY2xhc3MgUGxh
dGZvcm1Nb3VzZUV2ZW50OwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGNsYXNzIFBsYXRm
b3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikK
K2NsYXNzIFN5bnRoZXRpY0dlc3R1cmVFdmVudDsKKyNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiAjZW5kaWYKQEAgLTEyMyw5ICsxMjYs
MTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
ICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVTeW50aGV0aWNFdmVudChjb25zdCBTeW50aGV0aWNHZXN0dXJlRXZl
bnQmKTsKKyNlbmRpZgogCiAgICAgLy8gU2Nyb2xsVmlldwogICAgIHZpcnR1YWwgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNDZm
YjEzYzliNzhmODBjYjljZmEyYWMxYTYwMDA1NjcyM2Y1ODdjLi4xMTQ4ZWVjYjZlYjJhZWIwNDBm
N2VhYWUzYjZiYzczMGE0MTI1ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDExLTA4LTI5ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBVc2UgYSBzeW50aGV0aWMgZXZlbnQgdHlwZSBmb3IgZ2VzdHVyZXMg
Z2VuZXJhdGVkIGJ5IHRoZSBnZXN0dXJlCisgICAgICAgIHJlY29nbml6ZXIgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NDkyCisKKyAgICAgICAgUGVyIGRpc2N1c3Np
b24gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0OgorICAg
ICAgICB0aGlzIHVwZGF0ZXMgdXNlcnMgb2YgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSBmb3Ig
aXRzIGNyZWF0aW9uCisgICAgICAgIG9mIFN5bnRoZXRpY0dlc3R1cmVFdmVudCBpbnN0ZWFkIG9m
IFBsYXRmb3JtR2VzdHVyZUV2ZW50IGFuZCBhbHNvCisgICAgICAgIHVwZGF0ZXMgdGhlIEdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW0gdW5pdCB0ZXN0cyBhcHByb3ByaWF0ZWx5LgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToK
KyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOgorICAgICAgICAqIHNyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUV2
ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBzcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6
OlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJ
bnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9Jbm5lckdlc3R1cmVSZWNv
Z25pemVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDExLTA4LTI3
ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZWFjaCB0
aGUgdXBkYXRlIGFuZCBidWlsZCBzY3JpcHRzIGhvdyB0byBoYW5kbGUgZGVwZW5kZW5jaWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMjcxN2M1MDU1YjM5NGJhNjI5ZGY2
YjI4Mjc3OWFmMWY4MzVkNDVjMi4uYTE5ZjI5OThjYWM2YzJmY2NhOTZhYjZiYThjNzdmZjIyN2Qz
ODQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNTEsNyArNTEsNyBA
QAogICAgICAgJ0VOQUJMRV9GSUxURVJTPTEnLAogICAgICAgJ0VOQUJMRV9GVUxMU0NSRUVOX0FQ
ST0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCi0gICAgICAnRU5BQkxFX0dFU1RV
UkVfRVZFTlRTPTEnLAorICAgICAgJ0VOQUJMRV9HRVNUVVJFX0VWRU5UUz0wJywKICAgICAgICdF
TkFCTEVfR0VTVFVSRV9SRUNPR05JWkVSPTEnLAogICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9
MCcsCiAgICAgICAnRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MScsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKaW5kZXggYzQ5YWY0MDcwNmRlMDYyZGY1
MTY5YTg3OGY0ZGJiZTE2MjczMzUxNy4uMTFlNmU0ZmQzMDlkODhhMjZkMjY3OTE2OWY4M2FhMzM5
ZDc5ZGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaApAQCAtMTAzLDEzICsxMDMsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZWJHZXN0dXJl
RXZlbnQKICAgICAgICAgR2VzdHVyZVNjcm9sbEJlZ2luLAogICAgICAgICBHZXN0dXJlU2Nyb2xs
RW5kLAotICAgICAgICBHZXN0dXJlVGFwLAogCiAgICAgICAgIC8vIFdlYlRvdWNoRXZlbnQKICAg
ICAgICAgVG91Y2hTdGFydCwKICAgICAgICAgVG91Y2hNb3ZlLAogICAgICAgICBUb3VjaEVuZCwK
ICAgICAgICAgVG91Y2hDYW5jZWwsCisgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogaW5zZXJ0
IFdlYlN5bnRoZXRpY0dlc3R1cmVFdmVudAogICAgIH07CiAKICAgICBlbnVtIE1vZGlmaWVycyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAKaW5kZXggMGRkZWEwMjQ0YTg5ODIyNGQ0MGFmMWY4ZjJkNWNkYzZlZDAwYzc2
Yy4uZjE0ODUxMzk0NWIyMjBhZmRmMzZhNjhlMzJmZDg4ZmRhMjdiZWEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cApAQCAtMTIwLDE5ICsxMjAsMTIgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0
Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFcKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CiAgICAgICAgIG1fdHlwZSA9IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6Ci0gICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBUeXBlOwotICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50KGUueCwgZS55KSk7CiAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKICAgICBtX3Rp
bWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKLSAgICBtX3NoaWZ0S2V5ID0gKGUubW9kaWZp
ZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOwotICAgIG1fY3RybEtleSA9IChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwotICAgIG1fYWx0S2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKLSAgICBtX21ldGFLZXkgPSAoZS5tb2Rp
ZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCmluZGV4IDY3NWM0M2Fi
ZmU5NDgyNzMwYzc5ZWQ1MzRiMjgzMTVjY2QxNTYyZDkuLmJlYjljZWMwNWU5ODIyMzRlMmNkNjdj
OGZjOGZmNTk3YTQwZWMzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBvcHVwTWVudUltcGwuY3BwCkBAIC0xMzQsMTEgKzEzNCwxNCBAQCB2b2lkIFdlYlBvcHVwTWVu
dUltcGw6Ok1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKICAgICBt
X3dpZGdldC0+aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lk
Z2V0LCBldmVudCkpOwogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogYm9vbCBXZWJQ
b3B1cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkK
IHsKICAgICByZXR1cm4gbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9CisjZW5kaWYKIAorLy8gRklYTUU6
IEFkZCB0aGUgYWJpbGl0eSB0byBpbmplY3QgU3ludGhldGljR2VzdHVyZUV2ZW50IGluc3RhbmNl
cyBmcm9tIGxheW91dCB0ZXN0cy4KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBXZWJQ
b3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQogewpA
QCAtMTQ2LDkgKzE0OSw5IEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6VG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRv
dWNoRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCk7CiAgICAgYm9vbCBkZWZhdWx0UHJldmVu
dGVkKG1fd2lkZ2V0LT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKSk7CiAjaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFBy
ZXZlbnRlZCkpOworICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6U3ludGhldGljR2VzdHVyZUV2
ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZl
bnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFByZXZlbnRlZCkpOwogICAg
IGZvciAodW5zaWduZWQgaW50ICBpID0gMDsgaSA8IGdlc3R1cmVFdmVudHMtPnNpemUoKTsgaSsr
KQotICAgICAgICBtX3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KCgqZ2VzdHVyZUV2ZW50cylb
aV0pOworICAgICAgICBtX3dpZGdldC0+aGFuZGxlU3ludGhldGljRXZlbnQoKCpnZXN0dXJlRXZl
bnRzKVtpXSk7CiAjZW5kaWYKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KQEAgLTI3
NCw5ICsyNzcsOSBAQCBib29sIFdlYlBvcHVwTWVudUltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29u
c3QgV2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKIAogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bEVuZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKSAgICAKICAgICAgICAgcmV0dXJuIEdlc3R1cmVFdmVudCgqc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKLQorI2VuZGlmCiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQ6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpN
b3VzZUVudGVyOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q29udGV4dE1lbnU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggY2U0YjNmMWVlYzk0M2Y0
YjJiZTk0NzJjNDQ4YmQxNDVlOWFiZWFlNC4uYjM4OGMyYmMxMmNhZmZmYTljZDhiZTg5NDAwYzU2
N2IxY2VkOWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtNzY0LDkgKzc2NCw5IEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNoRXZlbnQoY29uc3Qg
V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0gbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0b3Vj
aEV2ZW50QnVpbGRlcik7CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIE93
blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50
cyhtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNo
RXZlbnRCdWlsZGVyLCBkZWZhdWx0UHJldmVudGVkKSk7CisgICAgT3duUHRyPFZlY3RvcjxXZWJD
b3JlOjpTeW50aGV0aWNHZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNv
Z25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBk
ZWZhdWx0UHJldmVudGVkKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkgPSAwOyBpIDwgZ2Vz
dHVyZUV2ZW50cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnRzLT5hdChp
KSk7CisgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVN5bnRoZXRpY0V2ZW50KGdlc3R1cmVFdmVudHMtPmF0KGkpKTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CkBAIC0xMjY0LDcgKzEyNjQsNiBAQCBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CiAgICAgICAgIGhhbmRsZWQg
PSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1
dEV2ZW50KSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCmlu
ZGV4IDdkZjMxZTI3NzYxZjQyZGY0ZmM2MDkyNzE4MWQ2ZjIxM2U5YWE0YjIuLjlmOGM3OTI0OWIy
OGY1N2NhYjQ0ODdlODc4YjY4YWJmNjM3M2M5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCkBA
IC0yNzQsMTQgKzI3NCwxNCBAQCBURVNUX0YoVGVzdEdlc3R1cmVSZWNvZ25pemVyLCBnZXN0dXJl
U2Nyb2xsRXZlbnRzKQogCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAs
IDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQpOwogICAgIEJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6VG91Y2hNb3ZlLCBtb3ZlKTsKLSAgICBP
d25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVTdGFy
dChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVFdmVudCwgZmFsc2UpKTsKKyAg
ICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlN5bnRoZXRpY0dlc3R1cmVFdmVudD4gPiBnZXN0dXJl
U3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7
CiAgICAgYm9vbCBzY3JvbGxTdGFydGVkID0gZmFsc2UsIHNjcm9sbFVwZGF0ZWQgPSBmYWxzZTsK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVTdGFydC0+c2l6ZSgpOyBp
KyspIHsKICAgICAgICAgc3dpdGNoICgoKmdlc3R1cmVTdGFydClbaV0udHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICAgICAg
Y2FzZSBTeW50aGV0aWNHZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKICAgICAgICAgICAg
IHNjcm9sbFN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgICAgIGNhc2UgU3lu
dGhldGljR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOgogICAgICAgICAgICAgc2Nyb2xs
VXBkYXRlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAg
LTI5NiwxMCArMjk2LDEwIEBAIFRFU1RfRihUZXN0R2VzdHVyZVJlY29nbml6ZXIsIGdlc3R1cmVT
Y3JvbGxFdmVudHMpCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJlbGVhc2UoMTAs
IDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwogICAgIEJ1aWxkYWJsZVBs
YXRmb3JtVG91Y2hFdmVudCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6VG91Y2hFbmQsIHJlbGVhc2Up
OwogICAgIGJvb2wgc2Nyb2xsRW5kID0gZmFsc2U7Ci0gICAgT3duUHRyPFZlY3RvcjxXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOworICAgIE93blB0cjxWZWN0b3I8V2Vi
Q29yZTo6U3ludGhldGljR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBnZXN0dXJlRW5kLT5zaXplKCk7IGkrKykgewogICAgICAgICBzd2l0
Y2ggKCgqZ2VzdHVyZUVuZClbaV0udHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgICAgIGNhc2UgU3ludGhldGljR2VzdHVyZUV2
ZW50OjpTY3JvbGxFbmRUeXBlOgogICAgICAgICAgICAgc2Nyb2xsRW5kID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZmYjNmMjMyMzNmYzc2MzgzMTM0NDkxYjdlNDU3
NTM2YzVjODAwMzAuLmQyZjJiYmM2NmNiMTFhY2ZkODUyZWNkMzBjN2ZmMWZkOGZkMmM2MDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMS0wOC0yOSAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVtb3ZlcyBvYnNvbGV0ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudCBzdWJ0
eXBlcyBmcm9tIHRoZSBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjY0OTIKKyAgICAgICAgCisgICAgICAgIEluIHNlcGFyYXRpbmcg
b3V0IHN5bnRoZXNpemVkIGdlc3R1cmUgZXZlbnRzIGZyb20gcGxhdGZvcm0gZ2VzdHVyZQorICAg
ICAgICBldmVudHMsIHN5bnRoZXRpYyBQbGF0Zm9ybUdlc3R1cmVFdmVudHMgdHlwZXMgd2VyZSBy
ZW1vdmVkLiBUaGlzIGNoYW5nZQorICAgICAgICB1cGRhdGVzIEV2ZW50U2VuZGVyIGFwcHJvcHJp
YXRlbHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVu
dFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorCiAyMDExLTA4LTI3ICBQZXRlciBCZXZlcmxvbyAgPHBl
dGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBidWlsZCBib3QgZm9yIENocm9taXVt
IHdpdGggT1MoQU5EUk9JRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50
U2VuZGVyLmNwcAppbmRleCA2ZGFmNjE2OTU2MWRjMTUxODA3MGY3ZDBiN2YwOTUwYzg3OTI4NWZj
Li4yMjkwOTUwZDNhYWRhODE4NDQ2YTgxYzdiOThjYzcwZWYyNGQxNzhlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC0yODAsNyArMjgwLDYg
QEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1l
dGhvZCgidXBkYXRlVG91Y2hQb2ludCIsICZFdmVudFNlbmRlcjo6dXBkYXRlVG91Y2hQb2ludCk7
CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVNjcm9sbEJlZ2luIiwgJkV2ZW50U2VuZGVyOjpnZXN0
dXJlU2Nyb2xsQmVnaW4pOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVTY3JvbGxFbmQiLCAmRXZl
bnRTZW5kZXI6Omdlc3R1cmVTY3JvbGxFbmQpOwotICAgIGJpbmRNZXRob2QoImdlc3R1cmVUYXAi
LCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUYXApOwogICAgIGJpbmRNZXRob2QoInpvb21QYWdlSW4i
LCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlSW4pOwogICAgIGJpbmRNZXRob2QoInpvb21QYWdlT3V0
IiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZU91dCk7CiAgICAgYmluZE1ldGhvZCgic2NhbGVQYWdl
QnkiLCAmRXZlbnRTZW5kZXI6OnNjYWxlUGFnZUJ5KTsKQEAgLTEwMzMsMTIgKzEwMzIsNiBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlU2Nyb2xsRW5kKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIGdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kLCBhcmd1bWVudHMpOwogfQogCi12b2lkIEV2ZW50U2VuZGVyOjpnZXN0
dXJlVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCi17Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVUYXAsIGFyZ3VtZW50cyk7Ci19Ci0KIHZvaWQgRXZlbnRTZW5kZXI6Omdl
c3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzKQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1l
bnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpKQo=
</data>
<flag name="review"
          id="101674"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>