<?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>148963</bug_id>
          
          <creation_ts>2015-09-08 09:47:15 -0700</creation_ts>
          <short_desc>Implement EventSenderProxy for WebKitTestRunner on iOS</short_desc>
          <delta_ts>2015-12-09 18:02:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>enrica</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1124261</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-08 09:47:15 -0700</bug_when>
    <thetext>The methods in EventSenderProxyIOS.mm are currently unimplemented, preventing us from testing iOS using JavaScript via window.eventSender.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124263</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-08 09:48:26 -0700</bug_when>
    <thetext>Note: This will also require some (unobtrusive) changes to UIKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124337</commentid>
    <comment_count>2</comment_count>
      <attachid>260776</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-08 11:49:20 -0700</bug_when>
    <thetext>Created attachment 260776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124362</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-08 13:09:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/22615821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124375</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-08 13:39:43 -0700</bug_when>
    <thetext>WebFrame::fromCoreFrame(*frameRespondingToClick)-&gt;firstLayerTreeTransactionIDAfterDidCommitLoad() when it is called in the body&apos;s onload handler. This currently causes tests that tap elements immediately after onload to fail.

I&apos;m investigating why this is the case, and how we can fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124376</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-08 13:42:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; WebFrame::fromCoreFrame(*frameRespondingToClick)-
&gt; &gt;firstLayerTreeTransactionIDAfterDidCommitLoad() when it is called in the
&gt; body&apos;s onload handler. This currently causes tests that tap elements
&gt; immediately after onload to fail.
&gt; 
&gt; I&apos;m investigating why this is the case, and how we can fix it.

(the comment on the top was cut off. Here&apos;s what I meant to write):

The current issue is that WebPage::commitPotentialTap hits an early return due to lastLayerTreeTransactionId &lt; WebFrame::fromCoreFrame(*frameRespondingToClick)-&gt;firstLayerTreeTransactionIDAfterDidCommitLoad() when it is called in the body&apos;s onload handler. This currently causes tests that tap elements immediately after onload to fail.

I&apos;m investigating why this is the case, and how we can fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124630</commentid>
    <comment_count>6</comment_count>
      <attachid>260776</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-09 09:12:50 -0700</bug_when>
    <thetext>Comment on attachment 260776
Patch

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

&gt; LayoutTests/fast/forms/disabled-search-input.html:46
&gt; -    }, 0);
&gt; +    }, 500);

This is not right. Nothing in regression tests is guaranteed to happen within 500 ms - there are many processes competing for the CPU, and with hyperthreading, some of the virtual cores can be very slow. Furthermore, CPU load increases even further when there is a crash, or even media playing.

&gt; LayoutTests/platform/ios-simulator/TestExpectations:1767
&gt; -fast/forms/disabled-search-input.html [ Failure ]
&gt; +fast/forms/disabled-search-input.html [ Pass ]

We now need separate results per iOS version, as we can&apos;t get this pass without UIKit changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124631</commentid>
    <comment_count>7</comment_count>
      <attachid>260776</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-09 09:17:52 -0700</bug_when>
    <thetext>Comment on attachment 260776
Patch

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

&gt;&gt; LayoutTests/fast/forms/disabled-search-input.html:46
&gt;&gt; +    }, 500);
&gt; 
&gt; This is not right. Nothing in regression tests is guaranteed to happen within 500 ms - there are many processes competing for the CPU, and with hyperthreading, some of the virtual cores can be very slow. Furthermore, CPU load increases even further when there is a crash, or even media playing.

Sorry about that -- I don&apos;t intend on landing with this timeout here. There&apos;s one last major issue I&apos;ve been investigating regarding WKTR, which is that sending a tap immediately on body load by calling eventSender.mouseDown, eventSender.mouseUp causes us to hit an early return and ignore the tap. I added the timeout here for now just to circumvent this and fix the rest of the issues with eventSender. When I figure out how to best address this, the timeout will not be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124934</commentid>
    <comment_count>8</comment_count>
      <attachid>260937</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-10 10:22:22 -0700</bug_when>
    <thetext>Created attachment 260937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124935</commentid>
    <comment_count>9</comment_count>
      <attachid>260938</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-10 10:25:25 -0700</bug_when>
    <thetext>Created attachment 260938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124938</commentid>
    <comment_count>10</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-10 10:29:14 -0700</bug_when>
    <thetext>I addressed the early return in commitPotentialTap by forcing a paint and spinning until the paint finishes the first time we try to interact with the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125052</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-10 15:41:17 -0700</bug_when>
    <thetext>It seems the repainting strategy only works when the test uses eventSender in a setTimeout after the body loads. Investigating further into this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125288</commentid>
    <comment_count>12</comment_count>
      <attachid>261024</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-11 16:15:54 -0700</bug_when>
    <thetext>Created attachment 261024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125291</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-11 16:31:06 -0700</bug_when>
    <thetext>The latest patches addresses the above problem. As long as eventSender is used after the body loads (which it should be for these tests), no more flakiness is observed. To do this, I block the web process from immediately synchronously messaging the UI process in EventSendingController until the web process has received a &apos;DidUpdate&apos; message from the UI process&apos; drawing area proxy indicating that it is safe to force a compositing layer flush right away. This allows us to start sending touch events in the onload handler of the body element rather than calling eventSender through a setTimeout.

Other outstanding issues:
- EventSender is currently unable to type more than a couple characters before text input starts becoming flaky.
- The testing harness occasionally crashes in Springboard while running the tests, but I&apos;m not currently sure if that&apos;s due to my patch or if it&apos;s a preexisting issue.
- Still need to find a way to correctly map document coords to screen coords so that we can send touch events when the document is zoomed.
- Clean up the key window context ID hack in EventSenderProxy::sendIOHIDEvent which I&apos;m using to make touch events hit-test successfully in UIKit. Namely, figure out why the application&apos;s key window appears to be nil when I try to access it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125434</commentid>
    <comment_count>14</comment_count>
      <attachid>261069</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-12 17:12:01 -0700</bug_when>
    <thetext>Created attachment 261069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125460</commentid>
    <comment_count>15</comment_count>
      <attachid>261079</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-13 00:02:51 -0700</bug_when>
    <thetext>Created attachment 261079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126386</commentid>
    <comment_count>16</comment_count>
      <attachid>261079</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-16 10:28:40 -0700</bug_when>
    <thetext>Comment on attachment 261079
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:1082
&gt; +    void sendForceRepaintWithCallback(RefPtr&lt;VoidCallback&gt;);

Argument types should almost never be RefPtr. Please consider a plain reference or pointer or RefPtr&amp;&amp; or Ref&amp;&amp;. Details at &lt;http://www.webkit.org/coding/RefPtr.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126419</commentid>
    <comment_count>17</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-16 11:44:24 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 261079 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261079&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:1082
&gt; &gt; +    void sendForceRepaintWithCallback(RefPtr&lt;VoidCallback&gt;);
&gt; 
&gt; Argument types should almost never be RefPtr. Please consider a plain
&gt; reference or pointer or RefPtr&amp;&amp; or Ref&amp;&amp;. Details at
&gt; &lt;http://www.webkit.org/coding/RefPtr.html&gt;.

Got it -- I&apos;ll change this. Thanks for the link!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127401</commentid>
    <comment_count>18</comment_count>
      <attachid>261580</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-19 11:17:17 -0700</bug_when>
    <thetext>Created attachment 261580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127404</commentid>
    <comment_count>19</comment_count>
      <attachid>261582</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-19 11:26:42 -0700</bug_when>
    <thetext>Created attachment 261582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127405</commentid>
    <comment_count>20</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-19 11:30:19 -0700</bug_when>
    <thetext>This patch makes it unnecessary to expose the size of the HID event queue in UIKit by adding WK API functions that allow us to wait until WebKit receives touch and key events. This also solves the problem of key events flaking when sending more than a few at a time, which is a big plus.

After r189959, the weird key window context id hack I was using to make touch events hit-test properly is also no longer needed. Thanks Simon!

I&apos;m in the process of landing the necessary UIKeyboardImpl changes in UIKit, which will need to happen before this patch can land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128586</commentid>
    <comment_count>21</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-09-24 14:21:44 -0700</bug_when>
    <thetext>I don&apos;t think it is necessary to expose the ability to show the keyboard on programmatic focus via the eventSendingController.
This should be a preference set at the level of the TestController like many other ones (see resetPreferencesToConsistentValues in TestController.cpp).
This was you don&apos;t need to modify the actual tests and simplifies your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128707</commentid>
    <comment_count>22</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-25 09:12:57 -0700</bug_when>
    <thetext>Good point -- this should also make it not necessary to plumb the focus enabling message from the web process to UI process.

My only concern is that we may want to write platform iOS tests in the future where we test that the keyboard does not show when an input has autofocus or the focus() method is programmatically called. However, these tests should be much more rare than existing tests that expect the keyboard to come up during programmatic focus, so it probably makes sense to make the TestController allow programmatic focus to assist the keyboard by preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135135</commentid>
    <comment_count>23</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-20 22:58:55 -0700</bug_when>
    <thetext>Closing as invalid, since we&apos;ve switched over to UI-side-script-driven testing instead of the existing synchronous model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142503</commentid>
    <comment_count>24</comment_count>
      <attachid>261582</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-17 02:37:34 -0800</bug_when>
    <thetext>Comment on attachment 261582
Patch

Cleared review? from attachment 261582 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260776</attachid>
            <date>2015-09-08 11:49:20 -0700</date>
            <delta_ts>2015-09-10 10:22:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150908114919.patch</filename>
            <type>text/plain</type>
            <size>26048</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDQ5N2Y4ODY3YjI3MjkwOWViNmJlNmRhMGYwYWI1OGFh
Njk3MGJmZC4uMTFhNGQ0ZWEyNzc5Y2I4OWNkZWVjZjlmMzdlMTAxYzAxZGM0NTFlNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGZvciBXZWJLaXRUZXN0UnVubmVy
IG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAg
ICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIgaW5pdF0pOgorICAgICAgICAoLVtLZXlib2Fy
ZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRXYXNTaG93bjpdKToKKyAgICAgICAgKC1bS2V5Ym9hcmRT
dGF0ZUxpc3RlbmVyIGtleWJvYXJkV2FzSGlkZGVuOl0pOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6c2hvdWxkQ29udGludWVXYWl0aW5nKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
bW91c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToK
KyAgICAgICAgKFdUUjo6c2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdUUjo6aGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnNlbmRJT0hJREV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2Vu
ZElPSElES2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlU2Nyb2xsQnkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5Ojpjb250aW51b3VzTW91c2VTY3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0
VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNo
UG9pbnRSYWRpdXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5Ojp0b3VjaENhbmNlbCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OmNsZWFyVG91Y2hQb2ludHMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxl
YXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRv
dWNoUG9pbnQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTA4LTMxICBKYXNvbiBNYXJjZWxsICA8
am1hcmNlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGlmeSBwcmVwYXJlLUNoYW5nZWxvZyB0
byBiZSBhd2FyZSBvZiBmaWxlcyB0aGF0IGFyZSBtYXJrZWQgYXMgdGVzdHMgYXMgd2VsbCBhcyBm
aWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCAyMzEx
MGFiYjI1MmM2NTk4NzFlZWI1ZDhkMjdmN2Y4NDliZGMwZDllLi43NDU1ZTZhMzhjZDFhYTM4Yzgw
YzE3NTY2Y2QzMjhhM2NmZDUxYmM2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2Vu
ZGVyUHJveHkuaApAQCAtMzksNiArMzksMTMgQEAKICNpbmNsdWRlICJFV2ViS2l0Mi5oIgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxJT0tpdC9oaWQvSU9ISURFdmVudC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKK09CSkNfQ0xBU1MgS2V5Ym9h
cmRTdGF0ZUxpc3RlbmVyOworCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdENvbnRyb2xs
ZXI7CkBAIC00OSw2ICs1NiwxNSBAQCBzdHJ1Y3QgV1RSRXZlbnRRdWV1ZUl0ZW07CiBzdHJ1Y3Qg
V1RSRXZlbnQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKK2VudW0geworICAgIEtleWJv
YXJkSXNSZWFkeSA9IDEgPDwgMCwKKyAgICBISURFdmVudFF1ZXVlSXNFbXB0eSA9IDEgPDwgMSwK
KyAgICBLZXlJbnB1dEhhc0JlZW5Qcm9jZXNzZWQgPSAxIDw8IDIKK307Cit0eXBlZGVmIHVuc2ln
bmVkIFdhaXRPbkNvbmRpdGlvbkZsYWdzOworI2VuZGlmCisKIGNsYXNzIEV2ZW50U2VuZGVyUHJv
eHkgewogcHVibGljOgogICAgIGV4cGxpY2l0IEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xs
ZXIqKTsKQEAgLTEwOSw2ICsxMjUsMTMgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZW5kSU9ISURFdmVudChJT0hJREV2ZW50UmVmKTsK
KyAgICB2b2lkIHNlbmRJT0hJREtleWJvYXJkRXZlbnQodWludDY0X3QgdGltZXN0YW1wLCB1aW50
MzJfdCB1c2FnZSwgYm9vbCBpc0tleURvd24pOworICAgIHZvaWQgd2FpdE9uQ29uZGl0aW9uc1dp
dGhUaW1lb3V0KGRvdWJsZSB0aW1lb3V0SW5TZWNvbmRzLCBXYWl0T25Db25kaXRpb25GbGFncykg
Y29uc3Q7CisgICAgYm9vbCBzaG91bGRDb250aW51ZVdhaXRpbmcoV2FpdE9uQ29uZGl0aW9uRmxh
Z3MpIGNvbnN0OworI2VuZGlmCisKICAgICBkb3VibGUgbV90aW1lOwogICAgIFdLUG9pbnQgbV9w
b3NpdGlvbjsKICAgICBib29sIG1fbGVmdE1vdXNlQnV0dG9uRG93bjsKQEAgLTEzMCw2ICsxNTMs
MTEgQEAgcHJpdmF0ZToKICAgICBFaW5hX0xpc3QqIG1fdG91Y2hQb2ludHM7CiAjZW5kaWYKICNl
bmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFJldGFpblB0cjxLZXlib2FyZFN0YXRlTGlz
dGVuZXI+IG1fa2V5Ym9hcmRMaXN0ZW5lcjsKKyAgICB1aW50MzJfdCBtX2tleVdpbmRvd0NvbnRl
eHRJRDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9T
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5k
ZXJQcm94eUlPUy5tbQppbmRleCBjYWIzZjE4YjM2NTlmNDkxNmJkNTAwODc5Mjg2ZDZhMjdjMGM5
ZjkxLi41ODY0ODIxMDc1ZGZjMzY3MjE0MjhlMzg2OTIwYWIxMDIzYmI4ZmZkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclBy
b3h5SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0V2ZW50U2VuZGVyUHJveHlJT1MubW0KQEAgLTI2LDEzICsyNiw1NyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJFdmVudFNlbmRlclByb3h5LmgiCiAKKyNpbXBvcnQgPEJhY2tCb2Fy
ZFNlcnZpY2VzL0JLU0hJREV2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNO
b3RpZmljYXRpb24uaD4KKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+Cisj
aW1wb3J0IDxtYWNoL21hY2hfdGltZS5oPgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAj
aW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCi0j
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uX1By
aXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRJbXBsLmg+CisjaW1wb3J0IDxVSUtp
dC9VSVdpbmRvd19Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tFdmVudC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAKLW5h
bWVzcGFjZSBXVFIgeworQGludGVyZmFjZSBLZXlib2FyZFN0YXRlTGlzdGVuZXIgOiBOU09iamVj
dAorQHByb3BlcnR5IEJPT0wgaXNLZXlib2FyZFJlYWR5OworLSAoaW5zdGFuY2V0eXBlKWluaXQ7
CistICh2b2lkKWtleWJvYXJkV2FzU2hvd246KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0aW9u
OworLSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRp
b247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBLZXlib2FyZFN0YXRlTGlzdGVuZXIgOiBOU09i
amVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOwor
ICAgIGlmIChzZWxmKSB7CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNTaG93
bjopIG5hbWU6VUlLZXlib2FyZERpZFNob3dOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNIaWRkZW46KSBuYW1lOlVJS2V5Ym9hcmRE
aWRIaWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgICAgICBzZWxmLmlzS2V5Ym9hcmRS
ZWFkeSA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClrZXlib2Fy
ZFdhc1Nob3duOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlvbgoreyAKKyAgICAvLyBQcmVw
YXJlIFVJS2l0IGZvciBzeW5jaHJvbm91cyB0ZXh0IGlucHV0IGV2ZW50IHByb2Nlc3NpbmcuCisg
ICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gc2V0RXhwZWN0c1N5bmNocm9ub3Vz
VGV4dElucHV0OllFU107CisgICAgc2VsZi5pc0tleWJvYXJkUmVhZHkgPSBZRVM7Cit9CisKKy0g
KHZvaWQpa2V5Ym9hcmRXYXNIaWRkZW46KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0aW9uCit7
CisgICAgc2VsZi5pc0tleWJvYXJkUmVhZHkgPSBOTzsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdU
UiB7IAorCisvLyBUaGVzZSB0aW1lb3V0cyAoaW4gc2Vjb25kcykgYXJlIGFyYml0cmFyeSwgYnV0
IGFyZSBtdWNoIGxvbmdlciB0aGFuIFdLVFIgc2hvdWxkIHJlcXVpcmUuCitjb25zdCBkb3VibGUg
dGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1ZXVlZCA9IDU7Citjb25zdCBkb3VibGUgdGltZW91
dERlbGF5Rm9yS2V5Ym9hcmRSZWFkeSA9IDU7CiAKIEV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2Vu
ZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKQogICAgIDogbV90ZXN0Q29u
dHJvbGxlcih0ZXN0Q29udHJvbGxlcikKQEAgLTQ0LDYgKzg4LDggQEAgRXZlbnRTZW5kZXJQcm94
eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCiAgICAg
LCBtX2NsaWNrUG9zaXRpb24oKQogICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0
dG9uTm9CdXR0b24pCiAgICAgLCBldmVudE51bWJlcigwKQorICAgICwgbV9rZXlib2FyZExpc3Rl
bmVyKGFkb3B0TlMoW1tLZXlib2FyZFN0YXRlTGlzdGVuZXIgYWxsb2NdIGluaXRdKSkKKyAgICAs
IG1fa2V5V2luZG93Q29udGV4dElEKDApCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1fdGVzdENvbnRy
b2xsZXIpOwogICAgIFVOVVNFRF9QQVJBTShtX2xlZnRNb3VzZUJ1dHRvbkRvd24pOwpAQCAtNjgs
MTkgKzExNCwxMTEgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9y
QnV0dG9uKGludCBidXR0b24pCiAgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRvbjsKIH0KIAorYm9v
bCBFdmVudFNlbmRlclByb3h5OjpzaG91bGRDb250aW51ZVdhaXRpbmcodW5zaWduZWQgY29uZGl0
aW9ucykgY29uc3QKK3sKKyAgICBib29sIHNob3VsZFdhaXQgPSBmYWxzZTsKKyAgICBpZiAoY29u
ZGl0aW9ucyAmIEtleWJvYXJkSXNSZWFkeSkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSAhW21fa2V5
Ym9hcmRMaXN0ZW5lciBpc0tleWJvYXJkUmVhZHldOworICAgIGlmIChjb25kaXRpb25zICYgSElE
RXZlbnRRdWV1ZUlzRW1wdHkpCisgICAgICAgIHNob3VsZFdhaXQgfD0gW1tVSUFwcGxpY2F0aW9u
IHNoYXJlZEFwcGxpY2F0aW9uXSBudW1iZXJPZlF1ZXVlZEhJREV2ZW50c10gPiAwOworICAgIGlm
IChjb25kaXRpb25zICYgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkKQorICAgICAgICBzaG91bGRX
YWl0IHw9IFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIGhhc1BlbmRpbmdJbnB1dENv
bXBsZXRpb25IYW5kbGVyXTsKKyAgICByZXR1cm4gc2hvdWxkV2FpdDsKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5Ojp3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQoZG91YmxlIHRpbWVvdXRJ
blNlY29uZHMsIHVuc2lnbmVkIGNvbmRpdGlvbnMpIGNvbnN0Cit7CisgICAgTlNEYXRlICp0aW1l
b3V0RGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzp0aW1lb3V0SW5T
ZWNvbmRzXTsKKyAgICB3aGlsZSAoW3RpbWVvdXREYXRlIGNvbXBhcmU6W05TRGF0ZSBkYXRlXV0g
PT0gTlNPcmRlcmVkRGVzY2VuZGluZyAmJiBzaG91bGRDb250aW51ZVdhaXRpbmcoY29uZGl0aW9u
cykpCisgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVs
dFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6dGltZW91dERhdGVdOworfQorCiB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIFdLV2ViVmlldyogd2ViVmll
dyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAg
IFVJV2luZG93KiB3aW5kb3cgPSBbd2ViVmlldyB3aW5kb3ddOworICAgIENHUG9pbnQgYWJzb2x1
dGVQb2ludCA9IFt3aW5kb3cgY29udmVydFBvaW50OkNHUG9pbnRNYWtlKG1fcG9zaXRpb24ueCwg
bV9wb3NpdGlvbi55KSB0b1ZpZXc6d2luZG93XTsKKyAgICB1aW50NjRfdCBhYnNvbHV0ZU1hY2hU
aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgSU9ISURFdmVudFJlZiBpb1RvdWNoRXZl
bnQgPSBJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwK
KyAgICAgICAgYWJzb2x1dGVNYWNoVGltZSwKKyAgICAgICAga0lPSElERGlnaXRpemVyVHJhbnNk
dWNlclR5cGVIYW5kLAorICAgICAgICAwLCAvLyBJbmRleAorICAgICAgICAwLCAvLyBJZGVudGl0
eQorICAgICAgICBrSU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAvLyBFdmVudCBtYXNrCisgICAg
ICAgIDAsIC8vIEJ1dHRvbiBtYXNrCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisg
ICAgICAgIDAsIC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6
LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXNzdXJlCisgICAgICAgIDAsIC8vIFR3aXN0CisgICAg
ICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICB0cnVlLCAvLyBJ
cyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOwor
ICAgIElPSElERXZlbnRSZWYgaW9Ub3VjaFBvaW50RXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRlRGln
aXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgYWJzb2x1dGVN
YWNoVGltZSwKKyAgICAgICAgMSwgLy8gSW5kZXgKKyAgICAgICAgMiwgLy8gSWRlbnRpdHkKKyAg
ICAgICAga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAgICAgICBh
YnNvbHV0ZVBvaW50LngsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIGFic29sdXRlUG9p
bnQueSwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHotYXhp
cykKKyAgICAgICAgMCwgLy8gUHJlc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAgICAgICB0
cnVlLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICB0cnVlLCAvLyBJcyB0cmFu
c2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgIElP
SElERXZlbnRTZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudEZpZWxk
RGlnaXRpemVyTWFqb3JSYWRpdXMsIDUpOworICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKGlv
VG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIDUp
OworICAgIElPSElERXZlbnRBcHBlbmRFdmVudChpb1RvdWNoRXZlbnQsIGlvVG91Y2hQb2ludEV2
ZW50LCBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgIHNlbmRJT0hJREV2ZW50KGlvVG91Y2hF
dmVudCk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvckhJ
REV2ZW50RGVxdWV1ZWQsIEhJREV2ZW50UXVldWVJc0VtcHR5KTsKIH0KIAogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnMpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgV0tXZWJWaWV3KiB3ZWJWaWV3
ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAg
VUlXaW5kb3cqIHdpbmRvdyA9IFt3ZWJWaWV3IHdpbmRvd107CisgICAgQ0dQb2ludCBhYnNvbHV0
ZVBvaW50ID0gW3dpbmRvdyBjb252ZXJ0UG9pbnQ6Q0dQb2ludE1ha2UobV9wb3NpdGlvbi54LCBt
X3Bvc2l0aW9uLnkpIHRvVmlldzp3aW5kb3ddOworICAgIHVpbnQ2NF90IGFic29sdXRlTWFjaFRp
bWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKKyAgICBJT0hJREV2ZW50UmVmIGlvVG91Y2hFdmVu
dCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAor
ICAgICAgICBhYnNvbHV0ZU1hY2hUaW1lLAorICAgICAgICBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1
Y2VyVHlwZUhhbmQsIC8vIFRyYW5zZHVjZXIgdHlwZQorICAgICAgICAwLCAvLyBJbmRleAorICAg
ICAgICAwLCAvLyBJZGVudGl0eQorICAgICAgICBrSU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAv
LyBFdmVudCBtYXNrCisgICAgICAgIDAsIC8vIEJ1dHRvbiBtYXNrCisgICAgICAgIDAsIC8vIFBv
c2l0aW9uICh4LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAg
IDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXNzdXJlCisgICAgICAg
IDAsIC8vIFR3aXN0CisgICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPwor
ICAgICAgICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNlciB0b3VjaGluZz8KKyAgICAgICAga0lPSElE
RXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2ZW50UmVmIGlvVG91Y2hQb2ludEV2ZW50ID0g
SU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQs
CisgICAgICAgIGFic29sdXRlTWFjaFRpbWUsCisgICAgICAgIDEsIC8vIEluZGV4CisgICAgICAg
IDIsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJRERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2
ZW50IG1hc2sKKyAgICAgICAgYWJzb2x1dGVQb2ludC54LCAvLyBQb3NpdGlvbiAoeC1heGlzKQor
ICAgICAgICBhYnNvbHV0ZVBvaW50LnksIC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAs
IC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXN1cmUKKyAgICAgICAgMCwg
Ly8gVHdpc3QKKyAgICAgICAgZmFsc2UsIC8vIElzIHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAg
ICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVu
dE9wdGlvbk5vbmUpOworICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2ludEV2
ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIDUpOworICAgIElPSElE
RXZlbnRTZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGln
aXRpemVyTWlub3JSYWRpdXMsIDUpOworICAgIElPSElERXZlbnRBcHBlbmRFdmVudChpb1RvdWNo
RXZlbnQsIGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgIHNl
bmRJT0hJREV2ZW50KGlvVG91Y2hFdmVudCk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1l
b3V0KHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVxdWV1ZWQsIEhJREV2ZW50UXVldWVJc0VtcHR5
KTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91
YmxlIHkpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgbV9wb3NpdGlvbi54ID0geDsKKyAgICBt
X3Bvc2l0aW9uLnkgPSB5ICsgNDQ7IC8vIEZJWE1FIFRoaXMgaGFjayBvbmx5ICJ3b3JrcyIgd2hl
biBub3Qgem9vbWVkIGluLiBJIG5lZWQgdG8gZmluZCBhIHdheSB0byByZWxpYWJseSBtYXAgZnJv
bSBkb2N1bWVudCBjb29yZHMgdG8gc2NyZWVuIGNvb3Jkcy4KIH0KIAogdm9pZCBFdmVudFNlbmRl
clByb3h5OjpsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKQpAQCAtODgsOSArMjI2LDE5MyBA
QCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCiAg
ICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKIH0KIAorc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3RlcihOU1N0cmluZyoga2V5
KQoreworICAgIGlmIChba2V5IGxlbmd0aF0gIT0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGludCBrZXlDb2RlID0gW2tleSBjaGFyYWN0ZXJBdEluZGV4OjBdOworICAgIGlmICg2NSA8
PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gOTApCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHN3
aXRjaCAoa2V5Q29kZSkgeworICAgIGNhc2UgJ2AnOgorICAgIGNhc2UgJyEnOgorICAgIGNhc2Ug
J0AnOgorICAgIGNhc2UgJyMnOgorICAgIGNhc2UgJyQnOgorICAgIGNhc2UgJyUnOgorICAgIGNh
c2UgJ14nOgorICAgIGNhc2UgJyYnOgorICAgIGNhc2UgJyonOgorICAgIGNhc2UgJygnOgorICAg
IGNhc2UgJyknOgorICAgIGNhc2UgJ18nOgorICAgIGNhc2UgJysnOgorICAgIGNhc2UgJ3snOgor
ICAgIGNhc2UgJ30nOgorICAgIGNhc2UgJ3wnOgorICAgIGNhc2UgJzonOgorICAgIGNhc2UgJyIn
OgorICAgIGNhc2UgJzwnOgorICAgIGNhc2UgJz4nOgorICAgIGNhc2UgJz8nOgorICAgIGNhc2Ug
J34nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
c3RhdGljIGlubGluZSB1aW50MzJfdCBoaWRVc2FnZUNvZGVGb3JDaGFyYWN0ZXIoTlNTdHJpbmcq
IGtleSkKK3sKKyAgICBjb25zdCBpbnQgdXBwZXJjYXNlQWxwaGFiZXRpY09mZnNldCA9ICdBJyAt
IGtISURVc2FnZV9LZXlib2FyZEE7CisgICAgY29uc3QgaW50IGxvd2VyY2FzZUFscGhhYmV0aWNP
ZmZzZXQgPSAnYScgLSBrSElEVXNhZ2VfS2V5Ym9hcmRBOworICAgIGNvbnN0IGludCBudW1lcmlj
Tm9uWmVyb09mZnNldCA9ICcxJyAtIGtISURVc2FnZV9LZXlib2FyZDE7CisgICAgaWYgKFtrZXkg
bGVuZ3RoXSA9PSAxKSB7CisgICAgICAgIC8vIEhhbmRsZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVy
cyBhbmQgYmFzaWMgc3ltYm9scy4KKyAgICAgICAgaW50IGtleUNvZGUgPSBba2V5IGNoYXJhY3Rl
ckF0SW5kZXg6MF07CisgICAgICAgIGlmICg5NyA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gMTIy
KSAvLyBIYW5kbGUgYS16LgorICAgICAgICAgICAgcmV0dXJuIGtleUNvZGUgLSBsb3dlcmNhc2VB
bHBoYWJldGljT2Zmc2V0OworCisgICAgICAgIGlmICg2NSA8PSBrZXlDb2RlICYmIGtleUNvZGUg
PD0gOTApIC8vIEhhbmRsZSBBLVouCisgICAgICAgICAgICByZXR1cm4ga2V5Q29kZSAtIHVwcGVy
Y2FzZUFscGhhYmV0aWNPZmZzZXQ7CisKKyAgICAgICAgaWYgKDQ5IDw9IGtleUNvZGUgJiYga2V5
Q29kZSA8PSA1NykgLy8gSGFuZGxlIDEtOS4KKyAgICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0g
bnVtZXJpY05vblplcm9PZmZzZXQ7IAorCisgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgY2Fz
ZXMuCisgICAgICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgICAgICBjYXNlICdgJzoKKyAgICAg
ICAgY2FzZSAnfic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkR3JhdmVB
Y2NlbnRBbmRUaWxkZTsKKyAgICAgICAgY2FzZSAnISc6CisgICAgICAgICAgICByZXR1cm4ga0hJ
RFVzYWdlX0tleWJvYXJkMTsKKyAgICAgICAgY2FzZSAnQCc6CisgICAgICAgICAgICByZXR1cm4g
a0hJRFVzYWdlX0tleWJvYXJkMjsKKyAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkMzsKKyAgICAgICAgY2FzZSAnJCc6CisgICAgICAgICAgICBy
ZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkNDsKKyAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAg
ICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkNTsKKyAgICAgICAgY2FzZSAnXic6CisgICAgICAg
ICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkNjsKKyAgICAgICAgY2FzZSAnJic6CisgICAg
ICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkNzsKKyAgICAgICAgY2FzZSAnKic6Cisg
ICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkODsKKyAgICAgICAgY2FzZSAnKCc6
CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkOTsKKyAgICAgICAgY2FzZSAn
KSc6CisgICAgICAgIGNhc2UgJzAnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXli
b2FyZDA7CisgICAgICAgIGNhc2UgJy0nOgorICAgICAgICBjYXNlICdfJzoKKyAgICAgICAgICAg
IHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRIeXBoZW47CisgICAgICAgIGNhc2UgJz0nOgorICAg
ICAgICBjYXNlICcrJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRFcXVh
bFNpZ247CisgICAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmRUYWI7CisgICAgICAgIGNhc2UgJ1snOgorICAgICAgICBjYXNlICd7JzoKKyAgICAg
ICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRPcGVuQnJhY2tldDsKKyAgICAgICAgY2Fz
ZSAnXSc6CisgICAgICAgIGNhc2UgJ30nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9L
ZXlib2FyZENsb3NlQnJhY2tldDsKKyAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICBjYXNlICd8
JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRCYWNrc2xhc2g7CisgICAg
ICAgIGNhc2UgJzsnOgorICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgIHJldHVybiBrSElE
VXNhZ2VfS2V5Ym9hcmRTZW1pY29sb247CisgICAgICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgY2Fz
ZSAnIic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUXVvdGU7CisgICAg
ICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgcmV0dXJuIGtI
SURVc2FnZV9LZXlib2FyZFJldHVybk9yRW50ZXI7CisgICAgICAgIGNhc2UgJywnOgorICAgICAg
ICBjYXNlICc8JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRDb21tYTsK
KyAgICAgICAgY2FzZSAnLic6CisgICAgICAgIGNhc2UgJz4nOgorICAgICAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZFBlcmlvZDsKKyAgICAgICAgY2FzZSAnLyc6CisgICAgICAgIGNh
c2UgJz8nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFNsYXNoOworICAg
ICAgICBjYXNlICcgJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRTcGFj
ZWJhcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBpbnQgZnVuY3Rpb25LZXlPZmZzZXQg
PSBrSElEVXNhZ2VfS2V5Ym9hcmRGMTsKKyAgICBmb3IgKGludCBmdW5jdGlvbktleUluZGV4ID0g
MTsgZnVuY3Rpb25LZXlJbmRleCA8PSAxMjsgKytmdW5jdGlvbktleUluZGV4KSB7CisgICAgICAg
IGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYl
ZCIsIGZ1bmN0aW9uS2V5SW5kZXhdXSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbktleU9m
ZnNldCArIGZ1bmN0aW9uS2V5SW5kZXggLSAxOworICAgIH0KKyAgICBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJlc2NhcGUiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEVz
Y2FwZTsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyZXR1cm4iXSB8fCBba2V5IGlz
RXF1YWxUb1N0cmluZzpAImVudGVyIl0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmRSZXR1cm5PckVudGVyOworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJv
dyJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkTGVmdEFycm93OworICAgIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkKKyAgICAgICAgcmV0dXJuIGtI
SURVc2FnZV9LZXlib2FyZFJpZ2h0QXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAidXBBcnJvdyJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkVXBBcnJvdzsK
KyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkKKyAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZERvd25BcnJvdzsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJkZWxldGUiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZERlbGV0
ZU9yQmFja3NwYWNlOyAKKyAgICAvLyBUaGUgc2ltdWxhdG9yIGtleWJvYXJkIGludGVycHJldHMg
Ym90aCBsZWZ0IGFuZCByaWdodCBtb2RpZmllciBrZXlzIHVzaW5nIHRoZSBsZWZ0IHZlcnNpb24g
b2YgdGhlIHVzYWdlIGNvZGUuCisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENv
bnRyb2wiXSB8fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKQorICAgICAg
ICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkTGVmdENvbnRyb2w7CisgICAgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dFNoaWZ0Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQ7Cisg
ICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdIHx8IFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRBbHQiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExl
ZnRBbHQ7CisKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlE
b3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVk
IGtleUxvY2F0aW9uKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIHdhaXRPbkNvbmRpdGlvbnNX
aXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JLZXlib2FyZFJlYWR5LCBLZXlib2FyZElzUmVhZHkp
OworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6
dG9TVEQoa2V5KS5jX3N0cigpIGVuY29kaW5nOltOU1N0cmluZyBkZWZhdWx0Q1N0cmluZ0VuY29k
aW5nXV07CisgICAgYm9vbCBzaG91bGRXcmFwV2l0aFNoaWZ0ID0gc2hvdWxkV3JhcFdpdGhTaGlm
dEtleUV2ZW50Rm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CisgICAgdWludDMyX3QgdXNhZ2UgPSBo
aWRVc2FnZUNvZGVGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKKyAgICB1aW50NjRfdCBhYnNvbHV0
ZU1hY2hUaW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgaWYgKHNob3VsZFdyYXBXaXRo
U2hpZnQpCisgICAgICAgIHNlbmRJT0hJREtleWJvYXJkRXZlbnQoYWJzb2x1dGVNYWNoVGltZSwg
a0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0LCB0cnVlKTsKKworICAgIHNlbmRJT0hJREtleWJv
YXJkRXZlbnQoYWJzb2x1dGVNYWNoVGltZSwgdXNhZ2UsIHRydWUpOworICAgIHNlbmRJT0hJREtl
eWJvYXJkRXZlbnQoYWJzb2x1dGVNYWNoVGltZSwgdXNhZ2UsIGZhbHNlKTsKKworICAgIGlmIChz
aG91bGRXcmFwV2l0aFNoaWZ0KQorICAgICAgICBzZW5kSU9ISURLZXlib2FyZEV2ZW50KGFic29s
dXRlTWFjaFRpbWUsIGtISURVc2FnZV9LZXlib2FyZExlZnRTaGlmdCwgZmFsc2UpOworCisgICAg
d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVxdWV1
ZWQsIEhJREV2ZW50UXVldWVJc0VtcHR5IHwgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkKTsKK30K
Kwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kSU9ISURFdmVudChJT0hJREV2ZW50UmVmIGV2
ZW50KQoreworICAgIEFTU0VSVChldmVudCk7CisgICAgaWYgKCFtX2tleVdpbmRvd0NvbnRleHRJ
RCkgeworICAgICAgICAvLyBGSVhNRSBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHRvdWNoIGV2ZW50
cyB3b3JrLiBXaGF0IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB3aW5kb3dzPworICAgICAgICBBU1NF
UlQoW1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS53aW5kb3dzIGNvdW50XSA+IDAp
OworICAgICAgICBtX2tleVdpbmRvd0NvbnRleHRJRCA9IFtVSUFwcGxpY2F0aW9uIHNoYXJlZEFw
cGxpY2F0aW9uXS53aW5kb3dzWzBdLl9jb250ZXh0SWQ7CisgICAgfQorICAgIGlmIChJT0hJREV2
ZW50R2V0VHlwZShldmVudCkgPT0ga0lPSElERXZlbnRUeXBlRGlnaXRpemVyKQorICAgICAgICBC
S1NISURFdmVudFNldERpZ2l0aXplckluZm8oZXZlbnQsIG1fa2V5V2luZG93Q29udGV4dElELCBm
YWxzZSwgZmFsc2UsIE5VTEwsIDAsIDApOworCisgICAgW1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFw
cGxpY2F0aW9uXSBfZW5xdWV1ZUhJREV2ZW50OmV2ZW50XTsKK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5OjpzZW5kSU9ISURLZXlib2FyZEV2ZW50KHVpbnQ2NF90IHRpbWVzdGFtcCwgdWludDMy
X3QgdXNhZ2UsIGJvb2wgaXNLZXlEb3duKQoreworICAgIHNlbmRJT0hJREV2ZW50KElPSElERXZl
bnRDcmVhdGVLZXlib2FyZEV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIHRpbWVz
dGFtcCwKKyAgICAgICAga0hJRFBhZ2VfS2V5Ym9hcmRPcktleXBhZCwKKyAgICAgICAgdXNhZ2Us
CisgICAgICAgIGlzS2V5RG93biwKKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKSk7CiB9
CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYxMWM0M2QxZjQ5OWZmYTBkOTUx
ZmRhM2YwMzhhMTRhNmYwNzBmNTQuLmZiMTgyMTc1N2I3NWFiM2I2N2Y5MGFkNzVkODBkYTY2MGUz
ZWZlYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Miw2ICs0Miwx
MCBAQAogCQkyOUE4RkNFNTE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlTWFjLm1tICovOyB9OwogCQkyRENFMkNEMzFCODQ1MkY4MDBDN0Y4MzIgLyogVGVzdENvbnRy
b2xsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEQ0UyQ0QxMUI4NDUyNDUwMEM3RjgzMiAvKiBUZXN0Q29udHJvbGxlckNvY29hLm1tICov
OyB9OwogCQkyRENFMkNENDFCODQ1MzBBMDBDN0Y4MzIgLyogVGVzdENvbnRyb2xsZXJDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQ0UyQ0Qx
MUI4NDUyNDUwMEM3RjgzMiAvKiBUZXN0Q29udHJvbGxlckNvY29hLm1tICovOyB9OworCQkyRTBD
NzdDMzFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5
IC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMkUwQzc3QzQxQjlGNUU4RjAwNTY0RUE5IC8q
IElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMEM3N0MyMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87
IH07CisJCTJFMEM3N0M2MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICov
OyB9OworCQkyRTBDNzdDNzFCOUY1RUJCMDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayAq
LzsgfTsKIAkJMkUzNEM5MDAxOEI2ODgwODAwMDA2N0JCIC8qIFdlYktpdFRlc3RSdW5uZXJJbmpl
Y3RlZEJ1bmRsZS5idW5kbGUgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMjUxODYyMTFEMTVENTQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGUuYnVuZGxlICovOyB9OwogCQkyRTYzRUQ4QTE4OTFBRDdFMDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJJT1MubW0gKi87IH07CiAJCTJFNjNFRDhCMTg5MUFEN0UwMDJBN0FGQyAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLzsgfTsKQEAgLTE3NCw2ICsxNzgsOCBAQAogCQkyOUE4
RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRENFMkNEMTFCODQ1MjQ1MDBDN0Y4MzIgLyogVGVzdENvbnRyb2xsZXJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RDb250cm9sbGVy
Q29jb2EubW07IHBhdGggPSBjb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CisJCTJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yazsgcGF0
aCA9IFBsYXRmb3Jtcy9pUGhvbmVTaW11bGF0b3IucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvaVBo
b25lU2ltdWxhdG9yOS4wLnNkay9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9CYWNr
Qm9hcmRTZXJ2aWNlcy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBERVZFTE9QRVJfRElSOyB9Owog
CQkyRTYzRUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VENzYx
ODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDc3MTg5MUFDRTkw
MDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk1LDEwICszMDEsMTIgQEAKIAkJCWlzYSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMEM3N0MzMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkyRUU1MkNFNTE4OTBBOUE4MDAxMEVEMjEg
LyogQ29yZUdyYXBoaWNzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTJFRTUyQ0U3
MTg5MEE5QTgwMDEwRUQyMSAvKiBVSUtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQlFMUFDNjlGMjFBRkIzQjVCMDBGNkQ1NjcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAogCQkJCTJFRTUyQ0UzMTg5MEE5QTgwMDEwRUQyMSAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTJFMEM3N0M3MUI5RjVFQkIwMDU2NEVBOSAvKiBC
YWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMxNSw5ICsz
MjMsMTEgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMEM3N0M0MUI5RjVFOEYw
MDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlCQzI1MTk0
MDExRDE1RDhCMDAyRUJDMDEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8sCiAJCQkJQTY2NEJDNzYxM0E1RjNBOTAwOUE3QjI1IC8qIGxpYldlYkNvcmVUZXN0U3Vw
cG9ydC5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJCTBGNTE2OUNDMTQ0NTIyMkQwMEUwQTlE
NyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMkUwQzc3QzYxQjlG
NUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtNDQ5LDYgKzQ1OSw4IEBACiAJCTJFRTUyQ0UxMTg5MEE5QTgwMDEwRUQyMSAvKiBG
cmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkyRTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3Jr
ICovLAorCQkJCTJFMEM3N0MyMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8s
CiAJCQkJMkVFNTJDRTIxODkwQTlBODAwMTBFRDIxIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICov
LAogCQkJCTJFRTUyQ0U0MTg5MEE5QTgwMDEwRUQyMSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3Jr
ICovLAogCQkJCTJFRTUyQ0U2MTg5MEE5QTgwMDEwRUQyMSAvKiBVSUtpdC5mcmFtZXdvcmsgKi8s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNmQ5ZjFmYzIwM2EwMDFmMmNlNzgyMzBmZmEyYWM2NjY4ZGJlOTg2MS4uYzRhZTIw
OGM2YTE5NDdhNTkxNDFiNTJkN2RlNTE2NWU1ZGI2ZDk1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGZvciBXZWJLaXRUZXN0UnVubmVyIG9u
IGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNS0wOC0zMSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2luZG93cyBleHBl
Y3RhdGlvbiBmb3IgZmFzdC9ldmVudHMvd2hlZWxldmVudC1iYXNpYy5odG1sIGFmdGVyIHIxODg3
OTMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1p
bnB1dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQu
aHRtbAppbmRleCA4NmVmNTZhNWY3MDkyMDYyNzM4MDhhZTM3ZDQ3ODVlYTJlYTg4Nzg3Li5lZjkz
MTNiYTNjODJlZjI4YjAzNzMyMDA1N2Y1NjA4OGIwOTM3NDk3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0bWwKQEAgLTQzLDcgKzQzLDcg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsK
ICAgICAgICAgbG9nKCdUaGUgaW5uZXIgdGV4dCBlbGVtZW50IG9mIHRoZSBzZWFyY2ggaW5wdXQg
c2hvdWxkIG5ldmVyIGJlIDAtaGVpZ2h0JywgaW5wdXQudmFsdWUgPT0gJ2EnKTsKICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgMCk7CisgICAgfSwgNTAwKTsKIH0KIAog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9y
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggOThiM2ZjNThiNTRhZmM4NGI1Y2UxNzhjNDIxYWVlNmZiYmFk
OTM1MS4uZWEzMWI0YWJlNTgwYTM1MzNlMWYxOGJiNTRiYTEzYWFmYzgzYTRhYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTc2NCw3ICsxNzY0LDcgQEAgZmFzdC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS1zdGVwdXAt
c3RlcGRvd24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS12
YWx1ZS1zYW5pdGl6YXRpb24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9p
bnB1dC12YWx1ZWFzZGF0ZS1kYXRldGltZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2Rh
dGV0aW1lL2lucHV0LXZhbHVlYXNudW1iZXItZGF0ZXRpbWUuaHRtbCBbIEZhaWx1cmUgXQotZmFz
dC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9mb3Jt
cy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9lbXB0eS10
ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9lbnRl
ci1jbGlja3MtYnV0dG9ucy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2ZpZWxkc2V0LWxl
Z2VuZC1wYWRkaW5nLXVuY2xpcHBlZC1maWVsZHNldC1ib3JkZXIuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260937</attachid>
            <date>2015-09-10 10:22:22 -0700</date>
            <delta_ts>2015-09-10 10:25:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150910102217.patch</filename>
            <type>text/plain</type>
            <size>34408</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1OTFlODgy
ZjYuLmU0OTgwMGUzMTBkMmE5Y2EwYTdhZDZhZjQ1MWQ2ZTU0M2U4MGU5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
cHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9j
YWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2lu
Z1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5k
Rm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA3NTNjODAxMDE5ZGJlZTJmZTc1YzU3ZjBkM2EyMzhjMDgyZTM4MDViLi5m
ZWZhYjU0NmRlYjlmNzJkODFlZTBkN2MwZDlkMTU3MWViN2RmMzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDc2LDYgKzEwNzYsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNlbmRG
b3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soUmVmUHRyPFZvaWRDYWxsYmFjaz4pOworCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2Vi
UGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDI3MjU2MDZlZGQyYzQ4YmYwZWYwODQ2YmJlOGUyNGM0MzQ1ZDlkMGUuLmVkYjU4YTliMzBj
NzA0NTJmMzBlZTBjODcwODI3ZjU4MmEzMzQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNjksNiArMTY5LDE2IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWN0YXRpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzZW5kRm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrKQoreworICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3Rv
cmVVcGRhdGVPbk5leHRQYWludCgpOworICAgIG1fZHJhd2luZ0FyZWEtPmRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ0RyYXdpbmcoW2NhbGxiYWNrXSAoQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewor
ICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CisgICAgfSk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KSwgbV9wYWdlSUQpOworfQorCisKIHZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNv
bnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFy
a2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJU
ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEF1dG9jb3JyZWN0
aW9uQ29udGV4dENhbGxiYWNrPihjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2Q0MzRkMmRhYmNmMzY4NTlhNjc0
Njk2NTI5ZjkzZDM4ZTQ0NmQwOS4uMmNhMmVlYTc1MWQ1M2I2OWRkNGYzOWI2NWRiYmM4ZjI2NTlj
NmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KQEAgLTE0Niw2ICsxNDYsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFt
ZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1f
cGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2Fs
bGJhY2soUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9jYWxsYmFja3MucHV0KGNh
bGxiYWNrKTsKKyAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25O
ZXh0UGFpbnQoKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNl
UmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCiAjaWYgIVVTRShBU1lOQ19OU1RF
WFRJTlBVVENMSUVOVCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJl
cGxhY2VtZW50UmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ5ZWY3OWMwOWQ5ZDI3ZTU2YzE4ODRkMWUz
M2VlOTg2NjI4Zjk0ZjMuLjZlZmI3ZjBkY2JlMDE5Yzk2NWVmYTBlYWZkMjZhZTJmY2I4NmU1NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0xNjAsNiArMTYwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5n
IHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQodWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmZlODkyOTQ5YTcwNzlhM2NhZDUw
OGI1ODIzYzA5NGEwMTljYmM2My4uZGViMTE5ZTg4NDY0NjUxMmUwYzY2ZTM0NGJhNGY2NGJjNThh
MmFiZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGZvciBXZWJL
aXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5
SU9TLm1tOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIgaW5pdF0pOgorICAgICAg
ICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRXYXNTaG93bjpdKToKKyAgICAgICAg
KC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2FzSGlkZGVuOl0pOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0aW5nKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6c2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9y
Q2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6aGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMpOgorICAgICAgICAoV1RS
OjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91c2VTY3JvbGxCeSk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnNldFRvdWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3Zl
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTA5LTA5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBiaXQgcm90IG9u
IGJvdCB3YXRjaGVyJ3MgZGFzaGJvYXJkIHBhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVu
dFNlbmRlclByb3h5LmgKaW5kZXggNzBkOTQwMTRjOGQ3NTBjYjdkNjU3MDgwNDUyOGUyMDhjYzJm
NGE1NC4uZmU4ZTQ1MTNmYjYzZGE0NmZiMmU0ZGU1YTdjZTQ5NzBkYTMxZjI3NSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTQwLDEwICs0MCwxOCBAQAog
I2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBv
cnQgPElPS2l0L2hpZC9JT0hJREV2ZW50Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpD
X0NMQVNTIEtleWJvYXJkU3RhdGVMaXN0ZW5lcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RSIHsK
IAogY2xhc3MgVGVzdENvbnRyb2xsZXI7CkBAIC0xMjUsNiArMTMzLDE1IEBAIHByaXZhdGU6CiAj
ZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgc2VuZElPSElERXZl
bnQoSU9ISURFdmVudFJlZik7CisgICAgdm9pZCBzZW5kSU9ISURLZXlib2FyZEV2ZW50KHVpbnQ2
NF90IHRpbWVzdGFtcCwgdWludDMyX3QgdXNhZ2UsIGJvb2wgaXNLZXlEb3duKTsKKyAgICB2b2lk
IHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dChkb3VibGUgdGltZW91dEluU2Vjb25kcywgdW5z
aWduZWQgY29uZGl0aW9ucykgY29uc3Q7CisgICAgYm9vbCBzaG91bGRDb250aW51ZVdhaXRpbmco
dW5zaWduZWQgY29uZGl0aW9ucykgY29uc3Q7CisgICAgdm9pZCBmb3JjZVBhZ2VSZXBhaW50QW5k
V2FpdElmTmVjZXNzYXJ5KCk7CisgICAgc3RhdGljIHZvaWQgZm9yY2VQYWdlUmVwYWludENhbGxi
YWNrKFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpOworI2VuZGlmCisKICAgICBkb3VibGUgbV90
aW1lOwogICAgIFdLUG9pbnQgbV9wb3NpdGlvbjsKICAgICBib29sIG1fbGVmdE1vdXNlQnV0dG9u
RG93bjsKQEAgLTE0Niw2ICsxNjMsMTIgQEAgcHJpdmF0ZToKICAgICBFaW5hX0xpc3QqIG1fdG91
Y2hQb2ludHM7CiAjZW5kaWYKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFJldGFp
blB0cjxLZXlib2FyZFN0YXRlTGlzdGVuZXI+IG1fa2V5Ym9hcmRMaXN0ZW5lcjsKKyAgICB1aW50
MzJfdCBtX2tleVdpbmRvd0NvbnRleHRJRCB7IDAgfTsKKyAgICBib29sIG1fZGlkUGVyZm9ybUlu
aXRpYWxSZXBhaW50IHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9F
dmVudFNlbmRlclByb3h5SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQppbmRleCBhYzU0YTFjNmQ2ZDhjMmM1MGUw
ODFkYjViZGI4MjFkM2U2MDhlYzJkLi5jYzBjZmM0NmEwMzE0OTNhODUxOGM2YjFjNTU5YzRlMjUx
Y2JmNmUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KQEAgLTI2LDE0ICsyNiw2
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJFdmVudFNlbmRlclByb3h5LmgiCiAK
KyNpbXBvcnQgPEJhY2tCb2FyZFNlcnZpY2VzL0JLU0hJREV2ZW50X1ByaXZhdGUuaD4KKyNpbXBv
cnQgPEZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaD4KKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJ
RFVzYWdlVGFibGVzLmg+CisjaW1wb3J0IDxtYWNoL21hY2hfdGltZS5oPgogI2ltcG9ydCAiUGxh
dGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRl
c3RDb250cm9sbGVyLmgiCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDxVSUtp
dC9VSUFwcGxpY2F0aW9uX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRJbXBs
Lmg+CisjaW1wb3J0IDxVSUtpdC9VSVdpbmRvd19Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Lmg+CisKK0BpbnRlcmZhY2UgS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIDogTlNPYmpl
Y3QKK0Bwcm9wZXJ0eSBCT09MIGlzS2V5Ym9hcmRSZWFkeTsKKy0gKGluc3RhbmNldHlwZSlpbml0
OworLSAodm9pZClrZXlib2FyZFdhc1Nob3duOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlv
bjsKKy0gKHZvaWQpa2V5Ym9hcmRXYXNIaWRkZW46KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0
aW9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIDogTlNP
YmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
KyAgICBpZiAoc2VsZikgeworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGtleWJvYXJkV2FzU2hv
d246KSBuYW1lOlVJS2V5Ym9hcmREaWRTaG93Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAg
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGtleWJvYXJkV2FzSGlkZGVuOikgbmFtZTpVSUtleWJvYXJk
RGlkSGlkZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICAgICAgc2VsZi5pc0tleWJvYXJk
UmVhZHkgPSBOTzsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpa2V5Ym9h
cmRXYXNTaG93bjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRpb24KK3sKKyAgICAvLyBQcmVw
YXJlIFVJS2l0IGZvciBzeW5jaHJvbm91cyB0ZXh0IGlucHV0IGV2ZW50IHByb2Nlc3NpbmcuCisg
ICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gc2V0RXhwZWN0c1N5bmNocm9ub3Vz
VGV4dElucHV0OllFU107CisgICAgc2VsZi5pc0tleWJvYXJkUmVhZHkgPSBZRVM7Cit9CisKKy0g
KHZvaWQpa2V5Ym9hcmRXYXNIaWRkZW46KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0aW9uCit7
CisgICAgc2VsZi5pc0tleWJvYXJkUmVhZHkgPSBOTzsKK30KK0BlbmQKIAogbmFtZXNwYWNlIFdU
UiB7CiAKK2VudW0geworICAgIEtleWJvYXJkSXNSZWFkeSA9IDEgPDwgMCwKKyAgICBISURFdmVu
dFF1ZXVlSXNFbXB0eSA9IDEgPDwgMSwKKyAgICBLZXlJbnB1dEhhc0JlZW5Qcm9jZXNzZWQgPSAx
IDw8IDIsCisgICAgSW5pdGlhbFJlcGFpbnRIYXNDb21wbGV0ZWQgPSAxIDw8IDMKK307Cit0eXBl
ZGVmIHVuc2lnbmVkIFdhaXRPbkNvbmRpdGlvbkZsYWdzOworCisvLyBUaGVzZSB0aW1lb3V0cyAo
aW4gc2Vjb25kcykgYXJlIGFyYml0cmFyeSwgYnV0IGFyZSBtdWNoIGxvbmdlciB0aGFuIFdLVFIg
c2hvdWxkIHJlcXVpcmUuCitjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1
ZXVlZCA9IDU7Citjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9yS2V5Ym9hcmRSZWFkeSA9IDU7
Citjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9ySW5pdGlhbFJlcGFpbnQgPSA0OworCiBFdmVu
dFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJv
bGxlcikKICAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCiAgICAgLCBtX3Rp
bWUoMCkKQEAgLTQ0LDggKzk3LDggQEAgRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94
eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCiAgICAgLCBtX2NsaWNrUG9zaXRpb24o
KQogICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24pCiAgICAg
LCBldmVudE51bWJlcigwKQorICAgICwgbV9rZXlib2FyZExpc3RlbmVyKGFkb3B0TlMoW1tLZXli
b2FyZFN0YXRlTGlzdGVuZXIgYWxsb2NdIGluaXRdKSkKIHsKLSAgICBVTlVTRURfUEFSQU0obV90
ZXN0Q29udHJvbGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKG1fbGVmdE1vdXNlQnV0dG9uRG93bik7
CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50TnVtYmVyKTsKIH0KQEAgLTY4LDE5ICsxMjEsMTMyIEBA
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0
dG9uKQogICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247CiB9CiAKK2Jvb2wgRXZlbnRTZW5kZXJQ
cm94eTo6c2hvdWxkQ29udGludWVXYWl0aW5nKHVuc2lnbmVkIGNvbmRpdGlvbnMpIGNvbnN0Cit7
CisgICAgYm9vbCBzaG91bGRXYWl0ID0gZmFsc2U7CisgICAgaWYgKGNvbmRpdGlvbnMgJiBLZXli
b2FyZElzUmVhZHkpCisgICAgICAgIHNob3VsZFdhaXQgfD0gIVttX2tleWJvYXJkTGlzdGVuZXIg
aXNLZXlib2FyZFJlYWR5XTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEhJREV2ZW50UXVldWVJc0Vt
cHR5KQorICAgICAgICBzaG91bGRXYWl0IHw9IFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNh
dGlvbl0gbnVtYmVyT2ZRdWV1ZWRISURFdmVudHNdID4gMDsKKyAgICBpZiAoY29uZGl0aW9ucyAm
IEtleUlucHV0SGFzQmVlblByb2Nlc3NlZCkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSBbW1VJS2V5
Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBoYXNQZW5kaW5nSW5wdXRDb21wbGV0aW9uSGFuZGxl
cl07CisgICAgaWYgKGNvbmRpdGlvbnMgJiBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCkKKyAg
ICAgICAgc2hvdWxkV2FpdCB8PSAhbV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQ7CisgICAgcmV0
dXJuIHNob3VsZFdhaXQ7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Zm9yY2VQYWdlUmVw
YWludEFuZFdhaXRJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fZGlkUGVyZm9ybUluaXRpYWxS
ZXBhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQobV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBFdmVudFNlbmRlclByb3h5
Ojpmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2spOworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGlt
ZW91dCh0aW1lb3V0RGVsYXlGb3JJbml0aWFsUmVwYWludCwgSW5pdGlhbFJlcGFpbnRIYXNDb21w
bGV0ZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OndhaXRPbkNvbmRpdGlvbnNXaXRo
VGltZW91dChkb3VibGUgdGltZW91dEluU2Vjb25kcywgdW5zaWduZWQgY29uZGl0aW9ucykgY29u
c3QKK3sKKyAgICBOU0RhdGUgKnRpbWVvdXREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRl
cnZhbFNpbmNlTm93OnRpbWVvdXRJblNlY29uZHNdOworICAgIHdoaWxlIChbdGltZW91dERhdGUg
Y29tcGFyZTpbTlNEYXRlIGRhdGVdXSA9PSBOU09yZGVyZWREZXNjZW5kaW5nICYmIHNob3VsZENv
bnRpbnVlV2FpdGluZyhjb25kaXRpb25zKSkKKyAgICAgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1
bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTp0aW1lb3V0RGF0
ZV07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Zm9yY2VQYWdlUmVwYWludENhbGxiYWNr
KFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQpCit7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGF0aWNfY2FzdDxFdmVudFNlbmRlclByb3h5Kj4oY29udGV4
dCktPm1fZGlkUGVyZm9ybUluaXRpYWxSZXBhaW50ID0gdHJ1ZTsKK30KKwogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycykKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBmb3JjZVBhZ2VSZXBhaW50
QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisKKyAgICBXS1dlYlZpZXcqIHdlYlZpZXcgPSBtX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBVSVdpbmRvdyog
d2luZG93ID0gW3dlYlZpZXcgd2luZG93XTsKKyAgICBDR1BvaW50IGFic29sdXRlUG9pbnQgPSBb
d2luZG93IGNvbnZlcnRQb2ludDpDR1BvaW50TWFrZShtX3Bvc2l0aW9uLngsIG1fcG9zaXRpb24u
eSkgdG9WaWV3OndpbmRvd107CisgICAgdWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hf
YWJzb2x1dGVfdGltZSgpOworICAgIElPSElERXZlbnRSZWYgaW9Ub3VjaEV2ZW50ID0gSU9ISURF
dmVudENyZWF0ZURpZ2l0aXplckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGFi
c29sdXRlTWFjaFRpbWUsCisgICAgICAgIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBlSGFu
ZCwKKyAgICAgICAgMCwgLy8gSW5kZXgKKyAgICAgICAgMCwgLy8gSWRlbnRpdHkKKyAgICAgICAg
a0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAgICAgICAwLCAvLyBC
dXR0b24gbWFzaworICAgICAgICAwLCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICAwLCAv
LyBQb3NpdGlvbiAoeS1heGlzKQorICAgICAgICAwLCAvLyBQb3NpdGlvbiAoei1heGlzKQorICAg
ICAgICAwLCAvLyBQcmVzc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAgICAgICBmYWxzZSwg
Ly8gSXMgdHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgdHJ1ZSwgLy8gSXMgdHJhbnNkdWNl
ciB0b3VjaGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2
ZW50UmVmIGlvVG91Y2hQb2ludEV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdl
ckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGFic29sdXRlTWFjaFRpbWUsCisg
ICAgICAgIDEsIC8vIEluZGV4CisgICAgICAgIDIsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJ
RERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAgICAgYWJzb2x1dGVQb2lu
dC54LCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICBhYnNvbHV0ZVBvaW50LnksIC8vIFBv
c2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAg
IDAsIC8vIFByZXN1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgdHJ1ZSwgLy8gSXMg
dHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgdHJ1ZSwgLy8gSXMgdHJhbnNkdWNlciB0b3Vj
aGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2ZW50U2V0
RmxvYXRWYWx1ZShpb1RvdWNoUG9pbnRFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1h
am9yUmFkaXVzLCA1KTsKKyAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShpb1RvdWNoUG9pbnRF
dmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1pbm9yUmFkaXVzLCA1KTsKKyAgICBJT0hJ
REV2ZW50QXBwZW5kRXZlbnQoaW9Ub3VjaEV2ZW50LCBpb1RvdWNoUG9pbnRFdmVudCwga0lPSElE
RXZlbnRPcHRpb25Ob25lKTsKKyAgICBzZW5kSU9ISURFdmVudChpb1RvdWNoRXZlbnQpOworICAg
IHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JISURFdmVudERlcXVl
dWVkLCBISURFdmVudFF1ZXVlSXNFbXB0eSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
bW91c2VVcCh1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
KQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIFdLV2ViVmlldyogd2ViVmlldyA9IG1fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFVJV2luZG93KiB3
aW5kb3cgPSBbd2ViVmlldyB3aW5kb3ddOworICAgIENHUG9pbnQgYWJzb2x1dGVQb2ludCA9IFt3
aW5kb3cgY29udmVydFBvaW50OkNHUG9pbnRNYWtlKG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55
KSB0b1ZpZXc6d2luZG93XTsKKyAgICB1aW50NjRfdCBhYnNvbHV0ZU1hY2hUaW1lID0gbWFjaF9h
YnNvbHV0ZV90aW1lKCk7CisgICAgSU9ISURFdmVudFJlZiBpb1RvdWNoRXZlbnQgPSBJT0hJREV2
ZW50Q3JlYXRlRGlnaXRpemVyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgYWJz
b2x1dGVNYWNoVGltZSwKKyAgICAgICAga0lPSElERGlnaXRpemVyVHJhbnNkdWNlclR5cGVIYW5k
LAorICAgICAgICAwLCAvLyBJbmRleAorICAgICAgICAwLCAvLyBJZGVudGl0eQorICAgICAgICBr
SU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAvLyBFdmVudCBtYXNrCisgICAgICAgIDAsIC8vIEJ1
dHRvbiBtYXNrCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIDAsIC8v
IFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAg
ICAgIDAsIC8vIFByZXNzdXJlCisgICAgICAgIDAsIC8vIFR3aXN0CisgICAgICAgIGZhbHNlLCAv
LyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNl
ciB0b3VjaGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2
ZW50UmVmIGlvVG91Y2hQb2ludEV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdl
ckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGFic29sdXRlTWFjaFRpbWUsCisg
ICAgICAgIDEsIC8vIEluZGV4CisgICAgICAgIDIsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJ
RERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAgICAgYWJzb2x1dGVQb2lu
dC54LCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICBhYnNvbHV0ZVBvaW50LnksIC8vIFBv
c2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAg
IDAsIC8vIFByZXN1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgZmFsc2UsIC8vIElz
IHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIHRv
dWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgIElPSElERXZlbnRT
ZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVy
TWFqb3JSYWRpdXMsIDUpOworICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2lu
dEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIDUpOworICAgIElP
SElERXZlbnRBcHBlbmRFdmVudChpb1RvdWNoRXZlbnQsIGlvVG91Y2hQb2ludEV2ZW50LCBrSU9I
SURFdmVudE9wdGlvbk5vbmUpOworICAgIHNlbmRJT0hJREV2ZW50KGlvVG91Y2hFdmVudCk7Cisg
ICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVx
dWV1ZWQsIEhJREV2ZW50UXVldWVJc0VtcHR5KTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5
Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisg
ICAgbV9wb3NpdGlvbi54ID0geDsKKyAgICBtX3Bvc2l0aW9uLnkgPSB5ICsgNDQ7IC8vIEZJWE1F
IFRoaXMgaGFjayBvbmx5ICJ3b3JrcyIgd2hlbiBub3Qgem9vbWVkIGluLiBJIG5lZWQgdG8gZmlu
ZCBhIHdheSB0byByZWxpYWJseSBtYXAgZnJvbSBkb2N1bWVudCBjb29yZHMgdG8gc2NyZWVuIGNv
b3Jkcy4KIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbWlsbGlz
ZWNvbmRzKQpAQCAtODgsOSArMjU0LDE5NCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBG
b3J3YXJkKGludCBtaWxsaXNlY29uZHMpCiAgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEw
MDAuMDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVu
dEZvckNoYXJhY3RlcihOU1N0cmluZyoga2V5KQoreworICAgIGlmIChba2V5IGxlbmd0aF0gIT0g
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGludCBrZXlDb2RlID0gW2tleSBjaGFyYWN0
ZXJBdEluZGV4OjBdOworICAgIGlmICg2NSA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gOTApCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgIGNhc2UgJ2An
OgorICAgIGNhc2UgJyEnOgorICAgIGNhc2UgJ0AnOgorICAgIGNhc2UgJyMnOgorICAgIGNhc2Ug
JyQnOgorICAgIGNhc2UgJyUnOgorICAgIGNhc2UgJ14nOgorICAgIGNhc2UgJyYnOgorICAgIGNh
c2UgJyonOgorICAgIGNhc2UgJygnOgorICAgIGNhc2UgJyknOgorICAgIGNhc2UgJ18nOgorICAg
IGNhc2UgJysnOgorICAgIGNhc2UgJ3snOgorICAgIGNhc2UgJ30nOgorICAgIGNhc2UgJ3wnOgor
ICAgIGNhc2UgJzonOgorICAgIGNhc2UgJyInOgorICAgIGNhc2UgJzwnOgorICAgIGNhc2UgJz4n
OgorICAgIGNhc2UgJz8nOgorICAgIGNhc2UgJ34nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorc3RhdGljIGlubGluZSB1aW50MzJfdCBoaWRVc2Fn
ZUNvZGVGb3JDaGFyYWN0ZXIoTlNTdHJpbmcqIGtleSkKK3sKKyAgICBjb25zdCBpbnQgdXBwZXJj
YXNlQWxwaGFiZXRpY09mZnNldCA9ICdBJyAtIGtISURVc2FnZV9LZXlib2FyZEE7CisgICAgY29u
c3QgaW50IGxvd2VyY2FzZUFscGhhYmV0aWNPZmZzZXQgPSAnYScgLSBrSElEVXNhZ2VfS2V5Ym9h
cmRBOworICAgIGNvbnN0IGludCBudW1lcmljTm9uWmVyb09mZnNldCA9ICcxJyAtIGtISURVc2Fn
ZV9LZXlib2FyZDE7CisgICAgaWYgKFtrZXkgbGVuZ3RoXSA9PSAxKSB7CisgICAgICAgIC8vIEhh
bmRsZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgYmFzaWMgc3ltYm9scy4KKyAgICAgICAg
aW50IGtleUNvZGUgPSBba2V5IGNoYXJhY3RlckF0SW5kZXg6MF07CisgICAgICAgIGlmICg5NyA8
PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gMTIyKSAvLyBIYW5kbGUgYS16LgorICAgICAgICAgICAg
cmV0dXJuIGtleUNvZGUgLSBsb3dlcmNhc2VBbHBoYWJldGljT2Zmc2V0OworCisgICAgICAgIGlm
ICg2NSA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gOTApIC8vIEhhbmRsZSBBLVouCisgICAgICAg
ICAgICByZXR1cm4ga2V5Q29kZSAtIHVwcGVyY2FzZUFscGhhYmV0aWNPZmZzZXQ7CisKKyAgICAg
ICAgaWYgKDQ5IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSA1NykgLy8gSGFuZGxlIDEtOS4KKyAg
ICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0gbnVtZXJpY05vblplcm9PZmZzZXQ7CisKKyAgICAg
ICAgLy8gSGFuZGxlIGFsbCBvdGhlciBjYXNlcy4KKyAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7
CisgICAgICAgIGNhc2UgJ2AnOgorICAgICAgICBjYXNlICd+JzoKKyAgICAgICAgICAgIHJldHVy
biBrSElEVXNhZ2VfS2V5Ym9hcmRHcmF2ZUFjY2VudEFuZFRpbGRlOworICAgICAgICBjYXNlICch
JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQxOworICAgICAgICBjYXNl
ICdAJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQyOworICAgICAgICBj
YXNlICcjJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQzOworICAgICAg
ICBjYXNlICckJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ0OworICAg
ICAgICBjYXNlICclJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ1Owor
ICAgICAgICBjYXNlICdeJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ2
OworICAgICAgICBjYXNlICcmJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmQ3OworICAgICAgICBjYXNlICcqJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5
Ym9hcmQ4OworICAgICAgICBjYXNlICcoJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmQ5OworICAgICAgICBjYXNlICcpJzoKKyAgICAgICAgY2FzZSAnMCc6CisgICAgICAg
ICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkMDsKKyAgICAgICAgY2FzZSAnLSc6CisgICAg
ICAgIGNhc2UgJ18nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEh5cGhl
bjsKKyAgICAgICAgY2FzZSAnPSc6CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZEVxdWFsU2lnbjsKKyAgICAgICAgY2FzZSAnXHQnOgorICAg
ICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFRhYjsKKyAgICAgICAgY2FzZSAnWyc6
CisgICAgICAgIGNhc2UgJ3snOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2Fy
ZE9wZW5CcmFja2V0OworICAgICAgICBjYXNlICddJzoKKyAgICAgICAgY2FzZSAnfSc6CisgICAg
ICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQ2xvc2VCcmFja2V0OworICAgICAgICBj
YXNlICdcXCc6CisgICAgICAgIGNhc2UgJ3wnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2Fn
ZV9LZXlib2FyZEJhY2tzbGFzaDsKKyAgICAgICAgY2FzZSAnOyc6CisgICAgICAgIGNhc2UgJzon
OgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFNlbWljb2xvbjsKKyAgICAg
ICAgY2FzZSAnXCcnOgorICAgICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIHJldHVybiBrSElE
VXNhZ2VfS2V5Ym9hcmRRdW90ZTsKKyAgICAgICAgY2FzZSAnXHInOgorICAgICAgICBjYXNlICdc
bic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmV0dXJuT3JFbnRlcjsK
KyAgICAgICAgY2FzZSAnLCc6CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZENvbW1hOworICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgY2Fz
ZSAnPic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUGVyaW9kOworICAg
ICAgICBjYXNlICcvJzoKKyAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICByZXR1cm4ga0hJ
RFVzYWdlX0tleWJvYXJkU2xhc2g7CisgICAgICAgIGNhc2UgJyAnOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZFNwYWNlYmFyOworICAgICAgICB9CisgICAgfQorICAgIGNv
bnN0IGludCBmdW5jdGlvbktleU9mZnNldCA9IGtISURVc2FnZV9LZXlib2FyZEYxOworICAgIGZv
ciAoaW50IGZ1bmN0aW9uS2V5SW5kZXggPSAxOyBmdW5jdGlvbktleUluZGV4IDw9IDEyOyArK2Z1
bmN0aW9uS2V5SW5kZXgpIHsKKyAgICAgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiVkIiwgZnVuY3Rpb25LZXlJbmRleF1dKQorICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uS2V5T2Zmc2V0ICsgZnVuY3Rpb25LZXlJbmRleCAtIDE7Cisg
ICAgfQorICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKQorICAgICAgICBy
ZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRXNjYXBlOworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAInJldHVybiJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZW50ZXIiXSkKKyAgICAg
ICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFJldHVybk9yRW50ZXI7CisgICAgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmRMZWZ0QXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRB
cnJvdyJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmlnaHRBcnJvdzsKKyAg
ICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pCisgICAgICAgIHJldHVybiBr
SElEVXNhZ2VfS2V5Ym9hcmRVcEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
ImRvd25BcnJvdyJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRG93bkFycm93
OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKQorICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkRGVsZXRlT3JCYWNrc3BhY2U7CisgICAgLy8gVGhlIHNpbXVs
YXRvciBrZXlib2FyZCBpbnRlcnByZXRzIGJvdGggbGVmdCBhbmQgcmlnaHQgbW9kaWZpZXIga2V5
cyB1c2luZyB0aGUgbGVmdCB2ZXJzaW9uIG9mIHRoZSB1c2FnZSBjb2RlLgorICAgIGlmIChba2V5
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJyaWdodENvbnRyb2wiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRD
b250cm9sOworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdIHx8IFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKQorICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkTGVmdFNoaWZ0OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxl
ZnRBbHQiXSB8fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pCisgICAgICAgIHJl
dHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0QWx0OworCisgICAgcmV0dXJuIDA7Cit9CisKIHZv
aWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICAvLyBXcml0ZSBt
ZS4KKyAgICBmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisgICAgd2FpdE9u
Q29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvcktleWJvYXJkUmVhZHksIEtleWJv
YXJkSXNSZWFkeSk7CisgICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ1N0cmluZzp0b1NURChrZXkpLmNfc3RyKCkgZW5jb2Rpbmc6W05TU3RyaW5nIGRlZmF1bHRD
U3RyaW5nRW5jb2RpbmddXTsKKyAgICBib29sIHNob3VsZFdyYXBXaXRoU2hpZnQgPSBzaG91bGRX
cmFwV2l0aFNoaWZ0S2V5RXZlbnRGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKKyAgICB1aW50MzJf
dCB1c2FnZSA9IGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgIHVpbnQ2
NF90IGFic29sdXRlTWFjaFRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKKyAgICBpZiAoc2hv
dWxkV3JhcFdpdGhTaGlmdCkKKyAgICAgICAgc2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0
ZU1hY2hUaW1lLCBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQsIHRydWUpOworCisgICAgc2Vu
ZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgdHJ1ZSk7CisgICAg
c2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgZmFsc2UpOwor
CisgICAgaWYgKHNob3VsZFdyYXBXaXRoU2hpZnQpCisgICAgICAgIHNlbmRJT0hJREtleWJvYXJk
RXZlbnQoYWJzb2x1dGVNYWNoVGltZSwga0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0LCBmYWxz
ZSk7CisKKyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElE
RXZlbnREZXF1ZXVlZCwgSElERXZlbnRRdWV1ZUlzRW1wdHkgfCBLZXlJbnB1dEhhc0JlZW5Qcm9j
ZXNzZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KElPSElE
RXZlbnRSZWYgZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50KTsKKyAgICBpZiAoIW1fa2V5V2lu
ZG93Q29udGV4dElEKSB7CisgICAgICAgIC8vIEZJWE1FIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ug
dG91Y2ggZXZlbnRzIHdvcmsuIFdoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHdpbmRvd3M/Cisg
ICAgICAgIEFTU0VSVChbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLndpbmRvd3Mg
Y291bnRdID4gMCk7CisgICAgICAgIG1fa2V5V2luZG93Q29udGV4dElEID0gW1VJQXBwbGljYXRp
b24gc2hhcmVkQXBwbGljYXRpb25dLndpbmRvd3NbMF0uX2NvbnRleHRJZDsKKyAgICB9CisgICAg
aWYgKElPSElERXZlbnRHZXRUeXBlKGV2ZW50KSA9PSBrSU9ISURFdmVudFR5cGVEaWdpdGl6ZXIp
CisgICAgICAgIEJLU0hJREV2ZW50U2V0RGlnaXRpemVySW5mbyhldmVudCwgbV9rZXlXaW5kb3dD
b250ZXh0SUQsIGZhbHNlLCBmYWxzZSwgTlVMTCwgMCwgMCk7CisKKyAgICBbW1VJQXBwbGljYXRp
b24gc2hhcmVkQXBwbGljYXRpb25dIF9lbnF1ZXVlSElERXZlbnQ6ZXZlbnRdOworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREtleWJvYXJkRXZlbnQodWludDY0X3QgdGltZXN0
YW1wLCB1aW50MzJfdCB1c2FnZSwgYm9vbCBpc0tleURvd24pCit7CisgICAgc2VuZElPSElERXZl
bnQoSU9ISURFdmVudENyZWF0ZUtleWJvYXJkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAg
ICAgICAgdGltZXN0YW1wLAorICAgICAgICBrSElEUGFnZV9LZXlib2FyZE9yS2V5cGFkLAorICAg
ICAgICB1c2FnZSwKKyAgICAgICAgaXNLZXlEb3duLAorICAgICAgICBrSU9ISURFdmVudE9wdGlv
bk5vbmUpKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4
LCBpbnQgeSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTVjYmYxYzJl
YWI4M2RjOTM4Y2UyOWMyNjhlNGMyMmYyY2M2YWQwMS4uOGVmN2Y0MzNjZjQ0NDk2NDk1NjE5Zjk3
N2UyMTlmMGFhMWE5ZGJiOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQ4LDEwICs0OCwxMyBAQAogCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1QTYgLyogSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAvKiBKU0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OwogCQkyOUE4RkNFMjE0NUYwMzdCMDA5MDQ1QTYg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CiAJCTI5QThGQ0U1MTQ1RjA0NjQw
MDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTQxNDVGMDQ2NDAwOTA0
NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi87IH07CisJCTJFMEM3
N0MzMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkg
LyogSU9LaXQuZnJhbWV3b3JrICovOyB9OworCQkyRTBDNzdDNDFCOUY1RThGMDA1NjRFQTkgLyog
SU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayAqLzsg
fTsKKwkJMkUwQzc3QzYxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
MEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgKi87
IH07CisJCTJFMEM3N0M3MUI5RjVFQkIwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICov
OyB9OwogCQkyRTM0QzkwMDE4QjY4ODA4MDAwMDY3QkIgLyogV2ViS2l0VGVzdFJ1bm5lckluamVj
dGVkQnVuZGxlLmJ1bmRsZSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNTE4NjIxMUQxNUQ1NDAwMkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJJbmpl
Y3RlZEJ1bmRsZS5idW5kbGUgKi87IH07CiAJCTJFNjNFRDhBMTg5MUFEN0UwMDJBN0FGQyAvKiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDc1MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcklPUy5tbSAqLzsgfTsKIAkJMkU2M0VEOEIxODkxQUQ3RTAwMkE3QUZDIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2M0VENzcxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VySU9TLm1tICovOyB9OwotCQkyRTYzRUQ4RTE4OTFBRDdFMDAyQTdBRkMg
LyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNlbmRlclBy
b3h5SU9TLm1tICovOyB9OwogCQkyRTYzRUQ4RjE4OTFBRDdFMDAyQTdBRkMgLyogSW5qZWN0ZWRC
dW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gKi87IH07
CiAJCTJFNjNFRDkxMTg5MUFEQUQwMDJBN0FGQyAvKiBQbGF0Zm9ybVdlYlZpZXdJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUU1MkQxMzE4OTBB
OUZCMDAxMEVEMjEgLyogUGxhdGZvcm1XZWJWaWV3SU9TLm1tICovOyB9OwogCQkyRTYzRUQ5MjE4
OTFBREFEMDAyQTdBRkMgLyogVGVzdENvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUU1MkQxNDE4OTBBOUZCMDAxMEVEMjEgLyog
VGVzdENvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0xOTAsMTEgKzE5MywxMyBAQAogCQkyOUE4
RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRENFMkNEMTFCODQ1MjQ1MDBDN0Y4MzIgLyogVGVzdENvbnRyb2xsZXJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RDb250cm9sbGVy
Q29jb2EubW07IHBhdGggPSBjb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CisJCTJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yazsgcGF0
aCA9IFBsYXRmb3Jtcy9pUGhvbmVTaW11bGF0b3IucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvaVBo
b25lU2ltdWxhdG9yOS4wLnNkay9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9CYWNr
Qm9hcmRTZXJ2aWNlcy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBERVZFTE9QRVJfRElSOyB9Owog
CQkyRTYzRUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VENzYx
ODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDc3MTg5MUFDRTkw
MDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYzRUQ3ODE4OTFBQ0U5MDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNlbmRlclBy
b3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRT
ZW5kZXJQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2M0VEN0Ex
ODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudFNlbmRlclByb3h5SU9TLm1tOyBwYXRoID0g
Li4vSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDdCMTg5MUFDRTkwMDJBN0FGQyAvKiBJbmplY3RlZEJ1
bmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluamVj
dGVkQnVuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUU1MkNFMDE4
OTBBOUE4MDAxMEVEMjEgLyogV2ViS2l0VGVzdFJ1bm5lckFwcC5hcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuYXBwbGljYXRpb247IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJBcHAuYXBwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRUU1MkNFMjE4OTBBOUE4MDAxMEVEMjEg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0zMTQsNiArMzE5LDggQEAKIAkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMEM3N0MzMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tp
dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkyRTBDNzdDNzFCOUY1RUJCMDA1NjRF
QTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0z
MzUsOSArMzQyLDExIEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkyRTBDNzdDNDFC
OUY1RThGMDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
QkMyNTE5NDAxMUQxNUQ4QjAwMkVCQzAxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovLAogCQkJCUE2NjRCQzc2MTNBNUYzQTkwMDlBN0IyNSAvKiBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkwRjUxNjlDQzE0NDUyMjJE
MDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTJFMEM3
N0M2MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTQ2MSw3ICs0NzAsNiBAQAogCQkJCTJFNjNFRDc2MTg5MUFDRTkwMDJB
N0FGQyAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oICovLAogCQkJCTJFNjNF
RDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLywK
IAkJCQkyRTYzRUQ3ODE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbSAqLywKLQkJCQkyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94
eUlPUy5tbSAqLywKIAkJCQkyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5k
bGVJT1MubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKQEAgLTQ3MCw2ICs0NzgsOCBAQAog
CQkyRUU1MkNFMTE4OTBBOUE4MDAxMEVEMjEgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5
IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayAqLywKKwkJCQkyRTBDNzdDMjFCOUY1RTg5
MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCTJFRTUyQ0UyMTg5MEE5QTgwMDEw
RUQyMSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKIAkJCQkyRUU1MkNFNDE4OTBBOUE4MDAx
MEVEMjEgLyogQ29yZUdyYXBoaWNzLmZyYW1ld29yayAqLywKIAkJCQkyRUU1MkNFNjE4OTBBOUE4
MDAxMEVEMjEgLyogVUlLaXQuZnJhbWV3b3JrICovLApAQCAtNDg5LDYgKzQ5OSw3IEBACiAJCTJF
RTUyRDEyMTg5MEE5RkIwMDEwRUQyMSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNl
bmRlclByb3h5SU9TLm1tICovLAogCQkJCTJFRTUyQ0VCMTg5MEE5QTgwMDEwRUQyMSAvKiBJbmZv
UGxpc3Quc3RyaW5ncyAqLywKIAkJCQkyRUU1MkQxMzE4OTBBOUZCMDAxMEVEMjEgLyogUGxhdGZv
cm1XZWJWaWV3SU9TLm1tICovLAogCQkJCTJFRTUyRDE0MTg5MEE5RkIwMDEwRUQyMSAvKiBUZXN0
Q29udHJvbGxlcklPUy5tbSAqLywKQEAgLTg5NCw3ICs5MDUsNiBAQAogCQkJCTJFNjNFRDlFMTg5
MUFFQzEwMDJBN0FGQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRTYzRUQ4QTE4OTFBRDdFMDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTYzRUQ4QjE4OTFBRDdFMDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQkyRTYzRUQ4
RTE4OTFBRDdFMDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJFNjNFRDhGMTg5MUFEN0UwMDJBN0FGQyAvKiBJbmplY3RlZEJ1bmRsZUlPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNiAvKiBBY2Nlc3NpYmls
aXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkyMTBFQjAxNDRDQUNCRDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTE4
OSw2ICsxMTk5LDcgQEAKIAkJCQlBMTE1Q0NCODFCOUQ3NjlEMDBFODkxNTkgLyogUHJvZHVjdGlv
biAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwogCQlBMTg1MTAyRDFC
OUFERTQ4MDA3NDRBRUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIldlYktpdFRlc3RSdW5uZXIgKExpYnJhcnkpIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjg2ZTc2NzE3MThhZTMzNTllNTliMDg1N2VkZDQ1ZDQw
MWY5MDBmZi4uZjY1OTk1YjEwMmZjZWU5NmU0ODllYjdmOGY1NGQxNTgzNDRkMWMyZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGZvciBXZWJL
aXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNS0w
OS0wOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBD
U1MgZ2VuZXJhbCBzaWJsaW5nIHNlbGVjdG9ycyBkb2VzIG5vdCB3b3JrIHdpdGhvdXQgQ1NTIEpJ
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5w
dXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0
bWwKaW5kZXggODZlZjU2YTVmNzA5MjA2MjczODA4YWUzN2Q0Nzg1ZWEyZWE4ODc4Ny4uM2MxM2Rl
YmYwYmRmMmQ3NzczY2Y5NjFhNWY2NGI5NTNkZmIzNjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sCkBAIC00Miw3ICs0Miw5IEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsKICAgICAgICAgbG9nKCdUaGUgaW5uZXIgdGV4
dCBlbGVtZW50IG9mIHRoZSBzZWFyY2ggaW5wdXQgc2hvdWxkIG5ldmVyIGJlIDAtaGVpZ2h0Jywg
aW5wdXQudmFsdWUgPT0gJ2EnKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgfSwgMTAwMCk7CiAgICAgfSwgMCk7CiB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA0ZGI2YmMxYTY5MWM0MDE2Yjc4YTQ4MjgwMjJhMDFkYWE2ZmM2NjBiLi43YzhhMzAwYmNlMzNl
ZDAzYWE4MWVmZDMyMmEzMDU1NWM2NmQ1YTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzQ0LDcgKzE3NDQsNyBA
QCBmYXN0L2Zvcm1zL2RhdGV0aW1lL2RhdGV0aW1lLXN0ZXB1cC1zdGVwZG93bi5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2Zvcm1zL2RhdGV0aW1lL2RhdGV0aW1lLXZhbHVlLXNhbml0aXphdGlvbi5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2RhdGV0aW1lL2lucHV0LXZhbHVlYXNkYXRlLWRh
dGV0aW1lLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvZGF0ZXRpbWUvaW5wdXQtdmFsdWVh
c251bWJlci1kYXRldGltZS5odG1sIFsgRmFpbHVyZSBdCi1mYXN0L2Zvcm1zL2Rpc2FibGVkLXNl
YXJjaC1pbnB1dC5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1p
bnB1dC5odG1sIFsgUGFzcyBdCiBmYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNh
YmxlZC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2VudGVyLWNsaWNrcy1idXR0b25zLmh0
bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvZmllbGRzZXQtbGVnZW5kLXBhZGRpbmctdW5jbGlw
cGVkLWZpZWxkc2V0LWJvcmRlci5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260938</attachid>
            <date>2015-09-10 10:25:25 -0700</date>
            <delta_ts>2015-09-11 16:15:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150910102520.patch</filename>
            <type>text/plain</type>
            <size>33735</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1OTFlODgy
ZjYuLmU0OTgwMGUzMTBkMmE5Y2EwYTdhZDZhZjQ1MWQ2ZTU0M2U4MGU5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
cHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9j
YWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2lu
Z1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5k
Rm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA3NTNjODAxMDE5ZGJlZTJmZTc1YzU3ZjBkM2EyMzhjMDgyZTM4MDViLi5m
ZWZhYjU0NmRlYjlmNzJkODFlZTBkN2MwZDlkMTU3MWViN2RmMzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDc2LDYgKzEwNzYsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNlbmRG
b3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soUmVmUHRyPFZvaWRDYWxsYmFjaz4pOworCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2Vi
UGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDI3MjU2MDZlZGQyYzQ4YmYwZWYwODQ2YmJlOGUyNGM0MzQ1ZDlkMGUuLmVkYjU4YTliMzBj
NzA0NTJmMzBlZTBjODcwODI3ZjU4MmEzMzQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNjksNiArMTY5LDE2IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWN0YXRpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzZW5kRm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrKQoreworICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3Rv
cmVVcGRhdGVPbk5leHRQYWludCgpOworICAgIG1fZHJhd2luZ0FyZWEtPmRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ0RyYXdpbmcoW2NhbGxiYWNrXSAoQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewor
ICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CisgICAgfSk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KSwgbV9wYWdlSUQpOworfQorCisKIHZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNv
bnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFy
a2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJU
ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEF1dG9jb3JyZWN0
aW9uQ29udGV4dENhbGxiYWNrPihjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2Q0MzRkMmRhYmNmMzY4NTlhNjc0
Njk2NTI5ZjkzZDM4ZTQ0NmQwOS4uMmNhMmVlYTc1MWQ1M2I2OWRkNGYzOWI2NWRiYmM4ZjI2NTlj
NmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KQEAgLTE0Niw2ICsxNDYsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFt
ZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1f
cGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2Fs
bGJhY2soUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9jYWxsYmFja3MucHV0KGNh
bGxiYWNrKTsKKyAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25O
ZXh0UGFpbnQoKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNl
UmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCiAjaWYgIVVTRShBU1lOQ19OU1RF
WFRJTlBVVENMSUVOVCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJl
cGxhY2VtZW50UmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ5ZWY3OWMwOWQ5ZDI3ZTU2YzE4ODRkMWUz
M2VlOTg2NjI4Zjk0ZjMuLjZlZmI3ZjBkY2JlMDE5Yzk2NWVmYTBlYWZkMjZhZTJmY2I4NmU1NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0xNjAsNiArMTYwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5n
IHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQodWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmZlODkyOTQ5YTcwNzlhM2NhZDUw
OGI1ODIzYzA5NGEwMTljYmM2My4uZGViMTE5ZTg4NDY0NjUxMmUwYzY2ZTM0NGJhNGY2NGJjNThh
MmFiZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGZvciBXZWJL
aXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5
SU9TLm1tOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIgaW5pdF0pOgorICAgICAg
ICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRXYXNTaG93bjpdKToKKyAgICAgICAg
KC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2FzSGlkZGVuOl0pOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0aW5nKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6c2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9y
Q2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6aGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMpOgorICAgICAgICAoV1RS
OjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91c2VTY3JvbGxCeSk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnNldFRvdWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3Zl
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTA5LTA5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBiaXQgcm90IG9u
IGJvdCB3YXRjaGVyJ3MgZGFzaGJvYXJkIHBhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVu
dFNlbmRlclByb3h5LmgKaW5kZXggNzBkOTQwMTRjOGQ3NTBjYjdkNjU3MDgwNDUyOGUyMDhjYzJm
NGE1NC4uZmU4ZTQ1MTNmYjYzZGE0NmZiMmU0ZGU1YTdjZTQ5NzBkYTMxZjI3NSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTQwLDEwICs0MCwxOCBAQAog
I2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBv
cnQgPElPS2l0L2hpZC9JT0hJREV2ZW50Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpD
X0NMQVNTIEtleWJvYXJkU3RhdGVMaXN0ZW5lcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RSIHsK
IAogY2xhc3MgVGVzdENvbnRyb2xsZXI7CkBAIC0xMjUsNiArMTMzLDE1IEBAIHByaXZhdGU6CiAj
ZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgc2VuZElPSElERXZl
bnQoSU9ISURFdmVudFJlZik7CisgICAgdm9pZCBzZW5kSU9ISURLZXlib2FyZEV2ZW50KHVpbnQ2
NF90IHRpbWVzdGFtcCwgdWludDMyX3QgdXNhZ2UsIGJvb2wgaXNLZXlEb3duKTsKKyAgICB2b2lk
IHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dChkb3VibGUgdGltZW91dEluU2Vjb25kcywgdW5z
aWduZWQgY29uZGl0aW9ucykgY29uc3Q7CisgICAgYm9vbCBzaG91bGRDb250aW51ZVdhaXRpbmco
dW5zaWduZWQgY29uZGl0aW9ucykgY29uc3Q7CisgICAgdm9pZCBmb3JjZVBhZ2VSZXBhaW50QW5k
V2FpdElmTmVjZXNzYXJ5KCk7CisgICAgc3RhdGljIHZvaWQgZm9yY2VQYWdlUmVwYWludENhbGxi
YWNrKFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpOworI2VuZGlmCisKICAgICBkb3VibGUgbV90
aW1lOwogICAgIFdLUG9pbnQgbV9wb3NpdGlvbjsKICAgICBib29sIG1fbGVmdE1vdXNlQnV0dG9u
RG93bjsKQEAgLTE0Niw2ICsxNjMsMTIgQEAgcHJpdmF0ZToKICAgICBFaW5hX0xpc3QqIG1fdG91
Y2hQb2ludHM7CiAjZW5kaWYKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFJldGFp
blB0cjxLZXlib2FyZFN0YXRlTGlzdGVuZXI+IG1fa2V5Ym9hcmRMaXN0ZW5lcjsKKyAgICB1aW50
MzJfdCBtX2tleVdpbmRvd0NvbnRleHRJRCB7IDAgfTsKKyAgICBib29sIG1fZGlkUGVyZm9ybUlu
aXRpYWxSZXBhaW50IHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9F
dmVudFNlbmRlclByb3h5SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQppbmRleCBhYzU0YTFjNmQ2ZDhjMmM1MGUw
ODFkYjViZGI4MjFkM2U2MDhlYzJkLi5jYzBjZmM0NmEwMzE0OTNhODUxOGM2YjFjNTU5YzRlMjUx
Y2JmNmUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KQEAgLTI2LDE0ICsyNiw2
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJFdmVudFNlbmRlclByb3h5LmgiCiAK
KyNpbXBvcnQgPEJhY2tCb2FyZFNlcnZpY2VzL0JLU0hJREV2ZW50X1ByaXZhdGUuaD4KKyNpbXBv
cnQgPEZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaD4KKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJ
RFVzYWdlVGFibGVzLmg+CisjaW1wb3J0IDxtYWNoL21hY2hfdGltZS5oPgogI2ltcG9ydCAiUGxh
dGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRl
c3RDb250cm9sbGVyLmgiCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDxVSUtp
dC9VSUFwcGxpY2F0aW9uX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRJbXBs
Lmg+CisjaW1wb3J0IDxVSUtpdC9VSVdpbmRvd19Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Lmg+CisKK0BpbnRlcmZhY2UgS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIDogTlNPYmpl
Y3QKK0Bwcm9wZXJ0eSBCT09MIGlzS2V5Ym9hcmRSZWFkeTsKKy0gKGluc3RhbmNldHlwZSlpbml0
OworLSAodm9pZClrZXlib2FyZFdhc1Nob3duOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlv
bjsKKy0gKHZvaWQpa2V5Ym9hcmRXYXNIaWRkZW46KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0
aW9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIDogTlNP
YmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
KyAgICBpZiAoc2VsZikgeworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGtleWJvYXJkV2FzU2hv
d246KSBuYW1lOlVJS2V5Ym9hcmREaWRTaG93Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAg
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGtleWJvYXJkV2FzSGlkZGVuOikgbmFtZTpVSUtleWJvYXJk
RGlkSGlkZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICAgICAgc2VsZi5pc0tleWJvYXJk
UmVhZHkgPSBOTzsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpa2V5Ym9h
cmRXYXNTaG93bjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRpb24KK3sKKyAgICAvLyBQcmVw
YXJlIFVJS2l0IGZvciBzeW5jaHJvbm91cyB0ZXh0IGlucHV0IGV2ZW50IHByb2Nlc3NpbmcuCisg
ICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gc2V0RXhwZWN0c1N5bmNocm9ub3Vz
VGV4dElucHV0OllFU107CisgICAgc2VsZi5pc0tleWJvYXJkUmVhZHkgPSBZRVM7Cit9CisKKy0g
KHZvaWQpa2V5Ym9hcmRXYXNIaWRkZW46KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0aW9uCit7
CisgICAgc2VsZi5pc0tleWJvYXJkUmVhZHkgPSBOTzsKK30KK0BlbmQKIAogbmFtZXNwYWNlIFdU
UiB7CiAKK2VudW0geworICAgIEtleWJvYXJkSXNSZWFkeSA9IDEgPDwgMCwKKyAgICBISURFdmVu
dFF1ZXVlSXNFbXB0eSA9IDEgPDwgMSwKKyAgICBLZXlJbnB1dEhhc0JlZW5Qcm9jZXNzZWQgPSAx
IDw8IDIsCisgICAgSW5pdGlhbFJlcGFpbnRIYXNDb21wbGV0ZWQgPSAxIDw8IDMKK307Cit0eXBl
ZGVmIHVuc2lnbmVkIFdhaXRPbkNvbmRpdGlvbkZsYWdzOworCisvLyBUaGVzZSB0aW1lb3V0cyAo
aW4gc2Vjb25kcykgYXJlIGFyYml0cmFyeSwgYnV0IGFyZSBtdWNoIGxvbmdlciB0aGFuIFdLVFIg
c2hvdWxkIHJlcXVpcmUuCitjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1
ZXVlZCA9IDU7Citjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9yS2V5Ym9hcmRSZWFkeSA9IDU7
Citjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9ySW5pdGlhbFJlcGFpbnQgPSA0OworCiBFdmVu
dFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJv
bGxlcikKICAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCiAgICAgLCBtX3Rp
bWUoMCkKQEAgLTQ0LDggKzk3LDggQEAgRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94
eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCiAgICAgLCBtX2NsaWNrUG9zaXRpb24o
KQogICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24pCiAgICAg
LCBldmVudE51bWJlcigwKQorICAgICwgbV9rZXlib2FyZExpc3RlbmVyKGFkb3B0TlMoW1tLZXli
b2FyZFN0YXRlTGlzdGVuZXIgYWxsb2NdIGluaXRdKSkKIHsKLSAgICBVTlVTRURfUEFSQU0obV90
ZXN0Q29udHJvbGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKG1fbGVmdE1vdXNlQnV0dG9uRG93bik7
CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50TnVtYmVyKTsKIH0KQEAgLTY4LDE5ICsxMjEsMTMyIEBA
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0
dG9uKQogICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247CiB9CiAKK2Jvb2wgRXZlbnRTZW5kZXJQ
cm94eTo6c2hvdWxkQ29udGludWVXYWl0aW5nKHVuc2lnbmVkIGNvbmRpdGlvbnMpIGNvbnN0Cit7
CisgICAgYm9vbCBzaG91bGRXYWl0ID0gZmFsc2U7CisgICAgaWYgKGNvbmRpdGlvbnMgJiBLZXli
b2FyZElzUmVhZHkpCisgICAgICAgIHNob3VsZFdhaXQgfD0gIVttX2tleWJvYXJkTGlzdGVuZXIg
aXNLZXlib2FyZFJlYWR5XTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEhJREV2ZW50UXVldWVJc0Vt
cHR5KQorICAgICAgICBzaG91bGRXYWl0IHw9IFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNh
dGlvbl0gbnVtYmVyT2ZRdWV1ZWRISURFdmVudHNdID4gMDsKKyAgICBpZiAoY29uZGl0aW9ucyAm
IEtleUlucHV0SGFzQmVlblByb2Nlc3NlZCkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSBbW1VJS2V5
Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBoYXNQZW5kaW5nSW5wdXRDb21wbGV0aW9uSGFuZGxl
cl07CisgICAgaWYgKGNvbmRpdGlvbnMgJiBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCkKKyAg
ICAgICAgc2hvdWxkV2FpdCB8PSAhbV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQ7CisgICAgcmV0
dXJuIHNob3VsZFdhaXQ7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Zm9yY2VQYWdlUmVw
YWludEFuZFdhaXRJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fZGlkUGVyZm9ybUluaXRpYWxS
ZXBhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQobV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBFdmVudFNlbmRlclByb3h5
Ojpmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2spOworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGlt
ZW91dCh0aW1lb3V0RGVsYXlGb3JJbml0aWFsUmVwYWludCwgSW5pdGlhbFJlcGFpbnRIYXNDb21w
bGV0ZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OndhaXRPbkNvbmRpdGlvbnNXaXRo
VGltZW91dChkb3VibGUgdGltZW91dEluU2Vjb25kcywgdW5zaWduZWQgY29uZGl0aW9ucykgY29u
c3QKK3sKKyAgICBOU0RhdGUgKnRpbWVvdXREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRl
cnZhbFNpbmNlTm93OnRpbWVvdXRJblNlY29uZHNdOworICAgIHdoaWxlIChbdGltZW91dERhdGUg
Y29tcGFyZTpbTlNEYXRlIGRhdGVdXSA9PSBOU09yZGVyZWREZXNjZW5kaW5nICYmIHNob3VsZENv
bnRpbnVlV2FpdGluZyhjb25kaXRpb25zKSkKKyAgICAgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1
bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTp0aW1lb3V0RGF0
ZV07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Zm9yY2VQYWdlUmVwYWludENhbGxiYWNr
KFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQpCit7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGF0aWNfY2FzdDxFdmVudFNlbmRlclByb3h5Kj4oY29udGV4
dCktPm1fZGlkUGVyZm9ybUluaXRpYWxSZXBhaW50ID0gdHJ1ZTsKK30KKwogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycykKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBmb3JjZVBhZ2VSZXBhaW50
QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisKKyAgICBXS1dlYlZpZXcqIHdlYlZpZXcgPSBtX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBVSVdpbmRvdyog
d2luZG93ID0gW3dlYlZpZXcgd2luZG93XTsKKyAgICBDR1BvaW50IGFic29sdXRlUG9pbnQgPSBb
d2luZG93IGNvbnZlcnRQb2ludDpDR1BvaW50TWFrZShtX3Bvc2l0aW9uLngsIG1fcG9zaXRpb24u
eSkgdG9WaWV3OndpbmRvd107CisgICAgdWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hf
YWJzb2x1dGVfdGltZSgpOworICAgIElPSElERXZlbnRSZWYgaW9Ub3VjaEV2ZW50ID0gSU9ISURF
dmVudENyZWF0ZURpZ2l0aXplckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGFi
c29sdXRlTWFjaFRpbWUsCisgICAgICAgIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBlSGFu
ZCwKKyAgICAgICAgMCwgLy8gSW5kZXgKKyAgICAgICAgMCwgLy8gSWRlbnRpdHkKKyAgICAgICAg
a0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAgICAgICAwLCAvLyBC
dXR0b24gbWFzaworICAgICAgICAwLCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICAwLCAv
LyBQb3NpdGlvbiAoeS1heGlzKQorICAgICAgICAwLCAvLyBQb3NpdGlvbiAoei1heGlzKQorICAg
ICAgICAwLCAvLyBQcmVzc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAgICAgICBmYWxzZSwg
Ly8gSXMgdHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgdHJ1ZSwgLy8gSXMgdHJhbnNkdWNl
ciB0b3VjaGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2
ZW50UmVmIGlvVG91Y2hQb2ludEV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdl
ckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGFic29sdXRlTWFjaFRpbWUsCisg
ICAgICAgIDEsIC8vIEluZGV4CisgICAgICAgIDIsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJ
RERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAgICAgYWJzb2x1dGVQb2lu
dC54LCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICBhYnNvbHV0ZVBvaW50LnksIC8vIFBv
c2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAg
IDAsIC8vIFByZXN1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgdHJ1ZSwgLy8gSXMg
dHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgdHJ1ZSwgLy8gSXMgdHJhbnNkdWNlciB0b3Vj
aGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2ZW50U2V0
RmxvYXRWYWx1ZShpb1RvdWNoUG9pbnRFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1h
am9yUmFkaXVzLCA1KTsKKyAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShpb1RvdWNoUG9pbnRF
dmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1pbm9yUmFkaXVzLCA1KTsKKyAgICBJT0hJ
REV2ZW50QXBwZW5kRXZlbnQoaW9Ub3VjaEV2ZW50LCBpb1RvdWNoUG9pbnRFdmVudCwga0lPSElE
RXZlbnRPcHRpb25Ob25lKTsKKyAgICBzZW5kSU9ISURFdmVudChpb1RvdWNoRXZlbnQpOworICAg
IHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JISURFdmVudERlcXVl
dWVkLCBISURFdmVudFF1ZXVlSXNFbXB0eSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
bW91c2VVcCh1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
KQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIFdLV2ViVmlldyogd2ViVmlldyA9IG1fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFVJV2luZG93KiB3
aW5kb3cgPSBbd2ViVmlldyB3aW5kb3ddOworICAgIENHUG9pbnQgYWJzb2x1dGVQb2ludCA9IFt3
aW5kb3cgY29udmVydFBvaW50OkNHUG9pbnRNYWtlKG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55
KSB0b1ZpZXc6d2luZG93XTsKKyAgICB1aW50NjRfdCBhYnNvbHV0ZU1hY2hUaW1lID0gbWFjaF9h
YnNvbHV0ZV90aW1lKCk7CisgICAgSU9ISURFdmVudFJlZiBpb1RvdWNoRXZlbnQgPSBJT0hJREV2
ZW50Q3JlYXRlRGlnaXRpemVyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgYWJz
b2x1dGVNYWNoVGltZSwKKyAgICAgICAga0lPSElERGlnaXRpemVyVHJhbnNkdWNlclR5cGVIYW5k
LAorICAgICAgICAwLCAvLyBJbmRleAorICAgICAgICAwLCAvLyBJZGVudGl0eQorICAgICAgICBr
SU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAvLyBFdmVudCBtYXNrCisgICAgICAgIDAsIC8vIEJ1
dHRvbiBtYXNrCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIDAsIC8v
IFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAg
ICAgIDAsIC8vIFByZXNzdXJlCisgICAgICAgIDAsIC8vIFR3aXN0CisgICAgICAgIGZhbHNlLCAv
LyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNl
ciB0b3VjaGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2
ZW50UmVmIGlvVG91Y2hQb2ludEV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdl
ckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGFic29sdXRlTWFjaFRpbWUsCisg
ICAgICAgIDEsIC8vIEluZGV4CisgICAgICAgIDIsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJ
RERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAgICAgYWJzb2x1dGVQb2lu
dC54LCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICBhYnNvbHV0ZVBvaW50LnksIC8vIFBv
c2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAg
IDAsIC8vIFByZXN1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgZmFsc2UsIC8vIElz
IHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIHRv
dWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgIElPSElERXZlbnRT
ZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVy
TWFqb3JSYWRpdXMsIDUpOworICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2lu
dEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIDUpOworICAgIElP
SElERXZlbnRBcHBlbmRFdmVudChpb1RvdWNoRXZlbnQsIGlvVG91Y2hQb2ludEV2ZW50LCBrSU9I
SURFdmVudE9wdGlvbk5vbmUpOworICAgIHNlbmRJT0hJREV2ZW50KGlvVG91Y2hFdmVudCk7Cisg
ICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVx
dWV1ZWQsIEhJREV2ZW50UXVldWVJc0VtcHR5KTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5
Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisg
ICAgbV9wb3NpdGlvbi54ID0geDsKKyAgICBtX3Bvc2l0aW9uLnkgPSB5ICsgNDQ7IC8vIEZJWE1F
IFRoaXMgaGFjayBvbmx5ICJ3b3JrcyIgd2hlbiBub3Qgem9vbWVkIGluLiBJIG5lZWQgdG8gZmlu
ZCBhIHdheSB0byByZWxpYWJseSBtYXAgZnJvbSBkb2N1bWVudCBjb29yZHMgdG8gc2NyZWVuIGNv
b3Jkcy4KIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbWlsbGlz
ZWNvbmRzKQpAQCAtODgsOSArMjU0LDE5NCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBG
b3J3YXJkKGludCBtaWxsaXNlY29uZHMpCiAgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEw
MDAuMDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVu
dEZvckNoYXJhY3RlcihOU1N0cmluZyoga2V5KQoreworICAgIGlmIChba2V5IGxlbmd0aF0gIT0g
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGludCBrZXlDb2RlID0gW2tleSBjaGFyYWN0
ZXJBdEluZGV4OjBdOworICAgIGlmICg2NSA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gOTApCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgIGNhc2UgJ2An
OgorICAgIGNhc2UgJyEnOgorICAgIGNhc2UgJ0AnOgorICAgIGNhc2UgJyMnOgorICAgIGNhc2Ug
JyQnOgorICAgIGNhc2UgJyUnOgorICAgIGNhc2UgJ14nOgorICAgIGNhc2UgJyYnOgorICAgIGNh
c2UgJyonOgorICAgIGNhc2UgJygnOgorICAgIGNhc2UgJyknOgorICAgIGNhc2UgJ18nOgorICAg
IGNhc2UgJysnOgorICAgIGNhc2UgJ3snOgorICAgIGNhc2UgJ30nOgorICAgIGNhc2UgJ3wnOgor
ICAgIGNhc2UgJzonOgorICAgIGNhc2UgJyInOgorICAgIGNhc2UgJzwnOgorICAgIGNhc2UgJz4n
OgorICAgIGNhc2UgJz8nOgorICAgIGNhc2UgJ34nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorc3RhdGljIGlubGluZSB1aW50MzJfdCBoaWRVc2Fn
ZUNvZGVGb3JDaGFyYWN0ZXIoTlNTdHJpbmcqIGtleSkKK3sKKyAgICBjb25zdCBpbnQgdXBwZXJj
YXNlQWxwaGFiZXRpY09mZnNldCA9ICdBJyAtIGtISURVc2FnZV9LZXlib2FyZEE7CisgICAgY29u
c3QgaW50IGxvd2VyY2FzZUFscGhhYmV0aWNPZmZzZXQgPSAnYScgLSBrSElEVXNhZ2VfS2V5Ym9h
cmRBOworICAgIGNvbnN0IGludCBudW1lcmljTm9uWmVyb09mZnNldCA9ICcxJyAtIGtISURVc2Fn
ZV9LZXlib2FyZDE7CisgICAgaWYgKFtrZXkgbGVuZ3RoXSA9PSAxKSB7CisgICAgICAgIC8vIEhh
bmRsZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgYmFzaWMgc3ltYm9scy4KKyAgICAgICAg
aW50IGtleUNvZGUgPSBba2V5IGNoYXJhY3RlckF0SW5kZXg6MF07CisgICAgICAgIGlmICg5NyA8
PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gMTIyKSAvLyBIYW5kbGUgYS16LgorICAgICAgICAgICAg
cmV0dXJuIGtleUNvZGUgLSBsb3dlcmNhc2VBbHBoYWJldGljT2Zmc2V0OworCisgICAgICAgIGlm
ICg2NSA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gOTApIC8vIEhhbmRsZSBBLVouCisgICAgICAg
ICAgICByZXR1cm4ga2V5Q29kZSAtIHVwcGVyY2FzZUFscGhhYmV0aWNPZmZzZXQ7CisKKyAgICAg
ICAgaWYgKDQ5IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSA1NykgLy8gSGFuZGxlIDEtOS4KKyAg
ICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0gbnVtZXJpY05vblplcm9PZmZzZXQ7CisKKyAgICAg
ICAgLy8gSGFuZGxlIGFsbCBvdGhlciBjYXNlcy4KKyAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7
CisgICAgICAgIGNhc2UgJ2AnOgorICAgICAgICBjYXNlICd+JzoKKyAgICAgICAgICAgIHJldHVy
biBrSElEVXNhZ2VfS2V5Ym9hcmRHcmF2ZUFjY2VudEFuZFRpbGRlOworICAgICAgICBjYXNlICch
JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQxOworICAgICAgICBjYXNl
ICdAJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQyOworICAgICAgICBj
YXNlICcjJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQzOworICAgICAg
ICBjYXNlICckJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ0OworICAg
ICAgICBjYXNlICclJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ1Owor
ICAgICAgICBjYXNlICdeJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ2
OworICAgICAgICBjYXNlICcmJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmQ3OworICAgICAgICBjYXNlICcqJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5
Ym9hcmQ4OworICAgICAgICBjYXNlICcoJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmQ5OworICAgICAgICBjYXNlICcpJzoKKyAgICAgICAgY2FzZSAnMCc6CisgICAgICAg
ICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkMDsKKyAgICAgICAgY2FzZSAnLSc6CisgICAg
ICAgIGNhc2UgJ18nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEh5cGhl
bjsKKyAgICAgICAgY2FzZSAnPSc6CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZEVxdWFsU2lnbjsKKyAgICAgICAgY2FzZSAnXHQnOgorICAg
ICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFRhYjsKKyAgICAgICAgY2FzZSAnWyc6
CisgICAgICAgIGNhc2UgJ3snOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2Fy
ZE9wZW5CcmFja2V0OworICAgICAgICBjYXNlICddJzoKKyAgICAgICAgY2FzZSAnfSc6CisgICAg
ICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQ2xvc2VCcmFja2V0OworICAgICAgICBj
YXNlICdcXCc6CisgICAgICAgIGNhc2UgJ3wnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2Fn
ZV9LZXlib2FyZEJhY2tzbGFzaDsKKyAgICAgICAgY2FzZSAnOyc6CisgICAgICAgIGNhc2UgJzon
OgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFNlbWljb2xvbjsKKyAgICAg
ICAgY2FzZSAnXCcnOgorICAgICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIHJldHVybiBrSElE
VXNhZ2VfS2V5Ym9hcmRRdW90ZTsKKyAgICAgICAgY2FzZSAnXHInOgorICAgICAgICBjYXNlICdc
bic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmV0dXJuT3JFbnRlcjsK
KyAgICAgICAgY2FzZSAnLCc6CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZENvbW1hOworICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgY2Fz
ZSAnPic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUGVyaW9kOworICAg
ICAgICBjYXNlICcvJzoKKyAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICByZXR1cm4ga0hJ
RFVzYWdlX0tleWJvYXJkU2xhc2g7CisgICAgICAgIGNhc2UgJyAnOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZFNwYWNlYmFyOworICAgICAgICB9CisgICAgfQorICAgIGNv
bnN0IGludCBmdW5jdGlvbktleU9mZnNldCA9IGtISURVc2FnZV9LZXlib2FyZEYxOworICAgIGZv
ciAoaW50IGZ1bmN0aW9uS2V5SW5kZXggPSAxOyBmdW5jdGlvbktleUluZGV4IDw9IDEyOyArK2Z1
bmN0aW9uS2V5SW5kZXgpIHsKKyAgICAgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiVkIiwgZnVuY3Rpb25LZXlJbmRleF1dKQorICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uS2V5T2Zmc2V0ICsgZnVuY3Rpb25LZXlJbmRleCAtIDE7Cisg
ICAgfQorICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKQorICAgICAgICBy
ZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRXNjYXBlOworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAInJldHVybiJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZW50ZXIiXSkKKyAgICAg
ICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFJldHVybk9yRW50ZXI7CisgICAgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmRMZWZ0QXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRB
cnJvdyJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmlnaHRBcnJvdzsKKyAg
ICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pCisgICAgICAgIHJldHVybiBr
SElEVXNhZ2VfS2V5Ym9hcmRVcEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
ImRvd25BcnJvdyJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRG93bkFycm93
OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKQorICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkRGVsZXRlT3JCYWNrc3BhY2U7CisgICAgLy8gVGhlIHNpbXVs
YXRvciBrZXlib2FyZCBpbnRlcnByZXRzIGJvdGggbGVmdCBhbmQgcmlnaHQgbW9kaWZpZXIga2V5
cyB1c2luZyB0aGUgbGVmdCB2ZXJzaW9uIG9mIHRoZSB1c2FnZSBjb2RlLgorICAgIGlmIChba2V5
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJyaWdodENvbnRyb2wiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRD
b250cm9sOworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdIHx8IFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKQorICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkTGVmdFNoaWZ0OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxl
ZnRBbHQiXSB8fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pCisgICAgICAgIHJl
dHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0QWx0OworCisgICAgcmV0dXJuIDA7Cit9CisKIHZv
aWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICAvLyBXcml0ZSBt
ZS4KKyAgICBmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisgICAgd2FpdE9u
Q29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvcktleWJvYXJkUmVhZHksIEtleWJv
YXJkSXNSZWFkeSk7CisgICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ1N0cmluZzp0b1NURChrZXkpLmNfc3RyKCkgZW5jb2Rpbmc6W05TU3RyaW5nIGRlZmF1bHRD
U3RyaW5nRW5jb2RpbmddXTsKKyAgICBib29sIHNob3VsZFdyYXBXaXRoU2hpZnQgPSBzaG91bGRX
cmFwV2l0aFNoaWZ0S2V5RXZlbnRGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKKyAgICB1aW50MzJf
dCB1c2FnZSA9IGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgIHVpbnQ2
NF90IGFic29sdXRlTWFjaFRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKKyAgICBpZiAoc2hv
dWxkV3JhcFdpdGhTaGlmdCkKKyAgICAgICAgc2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0
ZU1hY2hUaW1lLCBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQsIHRydWUpOworCisgICAgc2Vu
ZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgdHJ1ZSk7CisgICAg
c2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgZmFsc2UpOwor
CisgICAgaWYgKHNob3VsZFdyYXBXaXRoU2hpZnQpCisgICAgICAgIHNlbmRJT0hJREtleWJvYXJk
RXZlbnQoYWJzb2x1dGVNYWNoVGltZSwga0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0LCBmYWxz
ZSk7CisKKyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElE
RXZlbnREZXF1ZXVlZCwgSElERXZlbnRRdWV1ZUlzRW1wdHkgfCBLZXlJbnB1dEhhc0JlZW5Qcm9j
ZXNzZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KElPSElE
RXZlbnRSZWYgZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50KTsKKyAgICBpZiAoIW1fa2V5V2lu
ZG93Q29udGV4dElEKSB7CisgICAgICAgIC8vIEZJWE1FIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ug
dG91Y2ggZXZlbnRzIHdvcmsuIFdoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHdpbmRvd3M/Cisg
ICAgICAgIEFTU0VSVChbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLndpbmRvd3Mg
Y291bnRdID4gMCk7CisgICAgICAgIG1fa2V5V2luZG93Q29udGV4dElEID0gW1VJQXBwbGljYXRp
b24gc2hhcmVkQXBwbGljYXRpb25dLndpbmRvd3NbMF0uX2NvbnRleHRJZDsKKyAgICB9CisgICAg
aWYgKElPSElERXZlbnRHZXRUeXBlKGV2ZW50KSA9PSBrSU9ISURFdmVudFR5cGVEaWdpdGl6ZXIp
CisgICAgICAgIEJLU0hJREV2ZW50U2V0RGlnaXRpemVySW5mbyhldmVudCwgbV9rZXlXaW5kb3dD
b250ZXh0SUQsIGZhbHNlLCBmYWxzZSwgTlVMTCwgMCwgMCk7CisKKyAgICBbW1VJQXBwbGljYXRp
b24gc2hhcmVkQXBwbGljYXRpb25dIF9lbnF1ZXVlSElERXZlbnQ6ZXZlbnRdOworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREtleWJvYXJkRXZlbnQodWludDY0X3QgdGltZXN0
YW1wLCB1aW50MzJfdCB1c2FnZSwgYm9vbCBpc0tleURvd24pCit7CisgICAgc2VuZElPSElERXZl
bnQoSU9ISURFdmVudENyZWF0ZUtleWJvYXJkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAg
ICAgICAgdGltZXN0YW1wLAorICAgICAgICBrSElEUGFnZV9LZXlib2FyZE9yS2V5cGFkLAorICAg
ICAgICB1c2FnZSwKKyAgICAgICAgaXNLZXlEb3duLAorICAgICAgICBrSU9ISURFdmVudE9wdGlv
bk5vbmUpKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4
LCBpbnQgeSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTVjYmYxYzJl
YWI4M2RjOTM4Y2UyOWMyNjhlNGMyMmYyY2M2YWQwMS4uOGVmN2Y0MzNjZjQ0NDk2NDk1NjE5Zjk3
N2UyMTlmMGFhMWE5ZGJiOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQ4LDEwICs0OCwxMyBAQAogCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1QTYgLyogSlNBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNiAvKiBKU0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OwogCQkyOUE4RkNFMjE0NUYwMzdCMDA5MDQ1QTYg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTE0NUYwMzdCMDA5MDQ1QTYgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CiAJCTI5QThGQ0U1MTQ1RjA0NjQw
MDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTQxNDVGMDQ2NDAwOTA0
NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi87IH07CisJCTJFMEM3
N0MzMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkg
LyogSU9LaXQuZnJhbWV3b3JrICovOyB9OworCQkyRTBDNzdDNDFCOUY1RThGMDA1NjRFQTkgLyog
SU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayAqLzsg
fTsKKwkJMkUwQzc3QzYxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
MEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgKi87
IH07CisJCTJFMEM3N0M3MUI5RjVFQkIwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICov
OyB9OwogCQkyRTM0QzkwMDE4QjY4ODA4MDAwMDY3QkIgLyogV2ViS2l0VGVzdFJ1bm5lckluamVj
dGVkQnVuZGxlLmJ1bmRsZSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNTE4NjIxMUQxNUQ1NDAwMkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJJbmpl
Y3RlZEJ1bmRsZS5idW5kbGUgKi87IH07CiAJCTJFNjNFRDhBMTg5MUFEN0UwMDJBN0FGQyAvKiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDc1MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcklPUy5tbSAqLzsgfTsKIAkJMkU2M0VEOEIxODkxQUQ3RTAwMkE3QUZDIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2M0VENzcxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VySU9TLm1tICovOyB9OwotCQkyRTYzRUQ4RTE4OTFBRDdFMDAyQTdBRkMg
LyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNlbmRlclBy
b3h5SU9TLm1tICovOyB9OwogCQkyRTYzRUQ4RjE4OTFBRDdFMDAyQTdBRkMgLyogSW5qZWN0ZWRC
dW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gKi87IH07
CiAJCTJFNjNFRDkxMTg5MUFEQUQwMDJBN0FGQyAvKiBQbGF0Zm9ybVdlYlZpZXdJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUU1MkQxMzE4OTBB
OUZCMDAxMEVEMjEgLyogUGxhdGZvcm1XZWJWaWV3SU9TLm1tICovOyB9OwogCQkyRTYzRUQ5MjE4
OTFBREFEMDAyQTdBRkMgLyogVGVzdENvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUU1MkQxNDE4OTBBOUZCMDAxMEVEMjEgLyog
VGVzdENvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0xOTAsMTEgKzE5MywxMyBAQAogCQkyOUE4
RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRENFMkNEMTFCODQ1MjQ1MDBDN0Y4MzIgLyogVGVzdENvbnRyb2xsZXJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RDb250cm9sbGVy
Q29jb2EubW07IHBhdGggPSBjb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CisJCTJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yazsgcGF0
aCA9IFBsYXRmb3Jtcy9pUGhvbmVTaW11bGF0b3IucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvaVBo
b25lU2ltdWxhdG9yOS4wLnNkay9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9CYWNr
Qm9hcmRTZXJ2aWNlcy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBERVZFTE9QRVJfRElSOyB9Owog
CQkyRTYzRUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VENzYx
ODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDc3MTg5MUFDRTkw
MDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYzRUQ3ODE4OTFBQ0U5MDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNlbmRlclBy
b3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRT
ZW5kZXJQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2M0VEN0Ex
ODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudFNlbmRlclByb3h5SU9TLm1tOyBwYXRoID0g
Li4vSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDdCMTg5MUFDRTkwMDJBN0FGQyAvKiBJbmplY3RlZEJ1
bmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluamVj
dGVkQnVuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUU1MkNFMDE4
OTBBOUE4MDAxMEVEMjEgLyogV2ViS2l0VGVzdFJ1bm5lckFwcC5hcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuYXBwbGljYXRpb247IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJBcHAuYXBwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRUU1MkNFMjE4OTBBOUE4MDAxMEVEMjEg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0zMTQsNiArMzE5LDggQEAKIAkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMEM3N0MzMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tp
dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkyRTBDNzdDNzFCOUY1RUJCMDA1NjRF
QTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0z
MzUsOSArMzQyLDExIEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkyRTBDNzdDNDFC
OUY1RThGMDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
QkMyNTE5NDAxMUQxNUQ4QjAwMkVCQzAxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovLAogCQkJCUE2NjRCQzc2MTNBNUYzQTkwMDlBN0IyNSAvKiBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkwRjUxNjlDQzE0NDUyMjJE
MDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTJFMEM3
N0M2MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTQ2MSw3ICs0NzAsNiBAQAogCQkJCTJFNjNFRDc2MTg5MUFDRTkwMDJB
N0FGQyAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oICovLAogCQkJCTJFNjNF
RDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLywK
IAkJCQkyRTYzRUQ3ODE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbSAqLywKLQkJCQkyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94
eUlPUy5tbSAqLywKIAkJCQkyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5k
bGVJT1MubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKQEAgLTQ3MCw2ICs0NzgsOCBAQAog
CQkyRUU1MkNFMTE4OTBBOUE4MDAxMEVEMjEgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5
IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayAqLywKKwkJCQkyRTBDNzdDMjFCOUY1RTg5
MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCTJFRTUyQ0UyMTg5MEE5QTgwMDEw
RUQyMSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKIAkJCQkyRUU1MkNFNDE4OTBBOUE4MDAx
MEVEMjEgLyogQ29yZUdyYXBoaWNzLmZyYW1ld29yayAqLywKIAkJCQkyRUU1MkNFNjE4OTBBOUE4
MDAxMEVEMjEgLyogVUlLaXQuZnJhbWV3b3JrICovLApAQCAtNDg5LDYgKzQ5OSw3IEBACiAJCTJF
RTUyRDEyMTg5MEE5RkIwMDEwRUQyMSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNl
bmRlclByb3h5SU9TLm1tICovLAogCQkJCTJFRTUyQ0VCMTg5MEE5QTgwMDEwRUQyMSAvKiBJbmZv
UGxpc3Quc3RyaW5ncyAqLywKIAkJCQkyRUU1MkQxMzE4OTBBOUZCMDAxMEVEMjEgLyogUGxhdGZv
cm1XZWJWaWV3SU9TLm1tICovLAogCQkJCTJFRTUyRDE0MTg5MEE5RkIwMDEwRUQyMSAvKiBUZXN0
Q29udHJvbGxlcklPUy5tbSAqLywKQEAgLTg5NCw3ICs5MDUsNiBAQAogCQkJCTJFNjNFRDlFMTg5
MUFFQzEwMDJBN0FGQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRTYzRUQ4QTE4OTFBRDdFMDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTYzRUQ4QjE4OTFBRDdFMDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQkyRTYzRUQ4
RTE4OTFBRDdFMDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJFNjNFRDhGMTg5MUFEN0UwMDJBN0FGQyAvKiBJbmplY3RlZEJ1bmRsZUlPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNiAvKiBBY2Nlc3NpYmls
aXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkyMTBFQjAxNDRDQUNCRDAwODM1
QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTE4
OSw2ICsxMTk5LDcgQEAKIAkJCQlBMTE1Q0NCODFCOUQ3NjlEMDBFODkxNTkgLyogUHJvZHVjdGlv
biAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwogCQlBMTg1MTAyRDFC
OUFERTQ4MDA3NDRBRUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIldlYktpdFRlc3RSdW5uZXIgKExpYnJhcnkpIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjg2ZTc2NzE3MThhZTMzNTllNTliMDg1N2VkZDQ1ZDQw
MWY5MDBmZi4uZjY1OTk1YjEwMmZjZWU5NmU0ODllYjdmOGY1NGQxNTgzNDRkMWMyZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGZvciBXZWJL
aXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNS0w
OS0wOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBD
U1MgZ2VuZXJhbCBzaWJsaW5nIHNlbGVjdG9ycyBkb2VzIG5vdCB3b3JrIHdpdGhvdXQgQ1NTIEpJ
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDRkYjZiYzFhNjkxYzQwMTZiNzhhNDgyODAyMmEwMWRhYTZmYzY2MGIuLjdj
OGEzMDBiY2UzM2VkMDNhYTgxZWZkMzIyYTMwNTU1YzY2ZDVhNDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3NDQs
NyArMTc0NCw3IEBAIGZhc3QvZm9ybXMvZGF0ZXRpbWUvZGF0ZXRpbWUtc3RlcHVwLXN0ZXBkb3du
Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvZGF0ZXRpbWUvZGF0ZXRpbWUtdmFsdWUtc2Fu
aXRpemF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvZGF0ZXRpbWUvaW5wdXQtdmFs
dWVhc2RhdGUtZGF0ZXRpbWUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9p
bnB1dC12YWx1ZWFzbnVtYmVyLWRhdGV0aW1lLmh0bWwgWyBGYWlsdXJlIF0KLWZhc3QvZm9ybXMv
ZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZm9ybXMvZGlzYWJs
ZWQtc2VhcmNoLWlucHV0Lmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvZW1wdHktdGV4dGFyZWEt
dG9nZ2xlLWRpc2FibGVkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvZW50ZXItY2xpY2tz
LWJ1dHRvbnMuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9maWVsZHNldC1sZWdlbmQtcGFk
ZGluZy11bmNsaXBwZWQtZmllbGRzZXQtYm9yZGVyLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261024</attachid>
            <date>2015-09-11 16:15:54 -0700</date>
            <delta_ts>2015-09-12 17:11:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150911161544.patch</filename>
            <type>text/plain</type>
            <size>46902</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1OTFlODgy
ZjYuLmU0OTgwMGUzMTBkMmE5Y2EwYTdhZDZhZjQ1MWQ2ZTU0M2U4MGU5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
cHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9j
YWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2lu
Z1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5k
Rm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA3NTNjODAxMDE5ZGJlZTJmZTc1YzU3ZjBkM2EyMzhjMDgyZTM4MDViLi5j
MjI4NmQ1Y2RiNWYwYjcxYTczOTA0ZWU2NjczZmRiZTc0ZjA4YTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDU5LDYgKzEwNTksOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKKyAgICB1aW50NjRfdCBm
aXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoKSB7IHJldHVybiBt
X2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEFmdGVyRGlkQ29tbWl0TG9hZDsgfQorCiBwcml2
YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTEwNzYsNiArMTA3OCw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2VuZEZvcmNl
UmVwYWludFdpdGhDYWxsYmFjayhSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
MjcyNTYwNmVkZDJjNDhiZjBlZjA4NDZiYmU4ZTI0YzQzNDVkOWQwZS4uZWRiNThhOWIzMGM3MDQ1
MmYzMGVlMGM4NzA4MjdmNTgyYTMzNDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE2OSw2ICsxNjksMTYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpY3RhdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNlbGVjdGVk
VGV4dCwgY29uc3QgU3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZh
bHVlKHNlbGVjdGVkVGV4dCwgYmVmb3JlVGV4dCwgYWZ0ZXJUZXh0KTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soUmVmUHRyPFZvaWRDYWxsYmFj
az4gY2FsbGJhY2spCit7CisgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVw
ZGF0ZU9uTmV4dFBhaW50KCk7CisgICAgbV9kcmF3aW5nQXJlYS0+ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nRHJhd2luZyhbY2FsbGJhY2tdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAg
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKKyAgICB9KTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpLCBt
X3BhZ2VJRCk7Cit9CisKKwogdm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4
dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRU
ZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQs
IHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25D
b250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZDQzNGQyZGFiY2YzNjg1OWE2NzQ2OTY1
MjlmOTNkMzhlNDQ2ZDA5Li4yY2EyZWVhNzUxZDUzYjY5ZGQ0ZjM5YjY1ZGJiYzhmMjY1OWM2YjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtMTQ2LDYgKzE0NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNT
Y3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdl
SUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZEZvcmNlUmVwYWludFdpdGhDYWxsYmFj
ayhSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2NhbGxiYWNrcy5wdXQoY2FsbGJh
Y2spOworICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQ
YWludCgpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBh
aW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKICNpZiAhVVNFKEFTWU5DX05TVEVYVElO
UFVUQ0xJRU5UKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNTI3MzFlMzZj
MjI0N2I3MjgyOGViOTBlMmE1NTM2M2ZmOTFmMjc3Li40YmExZmEzZDQwZjQ1ZWRmYTZlNmJiZWMy
NjAwNWRkYTM5ODYxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00NjYs
NiArNDY2LDExIEBAIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldEluc3BlY3Rv
cihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VS
ZWYpLT5pbnNwZWN0b3IoKSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlV2FpdEZvckRyYXdpbmdB
cmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVseShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSkKK3sKKyAgICB0b0ltcGwocGFnZSktPndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVj
ZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoKTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VGb3Jj
ZVJlcGFpbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5mb3Jj
ZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgKaW5kZXggY2RjZDE1NWQ1MmFkNjZmNGM0MTE5MWIwYzE0ZGViNWUzN2NiMjMxNC4u
MWZhM2RjZjhjOTdlMGUxNGE0N2ZmNDU5MWMxYWRjMGZhYmFhNTlhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKQEAgLTUyLDYgKzUyLDcgQEAgV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGRv
dWJsZSB6b29tRmEKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0U2NhbGVBdE9yaWdp
bihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9yaWdpbik7CiAK
K1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVdhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVj
ZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlRm9yY2VSZXBhaW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
IAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZURvd24oV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIGludCBidXR0b24sIFdLUG9pbnQgcG9zaXRpb24sIGludCBjbGlja0NvdW50
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA0NGFlYzAyYmRk
ZjBmODcxOTk2NTE3MzRjOTFhZWZjNmIxNGZhNjlmLi4yMTViNDExM2MzYzFlZmJhNTRjNDQ1OGU2
NmJiOGMyMGQ4MWM0OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaApAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91
c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsgfQogI2VuZGlm
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5n
QXJlYVR5cGUsIFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYxZGI4NGRjNzVhYWI3ZTM3MzVjMDNhYTkxYzgzYjZjYmZk
ZjQ2NTguLmY5NDJmYjEwNTQzM2JkYzRmNDE0MGVkNTNkM2NiODc5NDg3YmNiNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2MjAsNiAr
MjYyMCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCit2b2lk
IFdlYlBhZ2U6OndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1t
ZWRpYXRlbHkoKQoreworICAgIGlmIChtX2RyYXdpbmdBcmVhLT5pc1dhaXRpbmdGb3JCYWNraW5n
U3RvcmVTd2FwKCkpCisgICAgICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6RGlkVXBkYXRlPihw
YWdlSUQoKSwgMTAwMF9tcyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91
dENhbGxiYWNrKCkKIHsKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQzNjI0NGNkYzk1
ZTA1NjUzMDI1NzRkMzFlNzM2ZjU0YTNhMTRmMGQuLjJmNTJjZmMyYmJkNjk2MzIyODAyYTFiY2Nl
NjAyNGRiZjU1NTM5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNzcxLDYgKzc3MSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0OwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KTsKKyAgICB2b2lkIHdhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1l
SW1tZWRpYXRlbHkoKTsKIAogICAgIHZvaWQgdW5tYXJrQWxsTWlzc3BlbGxpbmdzKCk7CiAgICAg
dm9pZCB1bm1hcmtBbGxCYWRHcmFtbWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ5ZWY3OWMwOWQ5ZDI3
ZTU2YzE4ODRkMWUzM2VlOTg2NjI4Zjk0ZjMuLjZlZmI3ZjBkY2JlMDE5Yzk2NWVmYTBlYWZkMjZh
ZTJmY2I4NmU1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xNjAsNiArMTYwLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFp
bnQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggMDBhYmIxNWJlNTkyZjVkNmE3NGM2
ZDgzYzJlODljMTE5NjdkZDM3MC4uZjQ4YTliNDdiYzkyZTc1OGM1NzlhYzRlZjcxNWVkNTdhN2Rl
OTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMTE2LDYgKzEx
Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZsdXNoTGF5ZXJzKCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXA7IH07CisKICAgICBXZWJDb3JlOjpUaWxl
ZEJhY2tpbmcqIG1haW5GcmFtZVRpbGVkQmFja2luZygpIGNvbnN0OwogCiAgICAgdWludDY0X3Qg
dGFrZU5leHRUcmFuc2FjdGlvbklEKCkgeyByZXR1cm4gKyttX2N1cnJlbnRUcmFuc2FjdGlvbklE
OyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YmZlODkyOTQ5YTcwNzlhM2NhZDUwOGI1ODIzYzA5NGEwMTljYmM2My4uZGViMTE5ZTg4NDY0NjUx
MmUwYzY2ZTM0NGJhNGY2NGJjNThhMmFiZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVu
dFNlbmRlclByb3h5IGZvciBXZWJLaXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlz
dGVuZXIgaW5pdF0pOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRX
YXNTaG93bjpdKToKKyAgICAgICAgKC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2Fz
SGlkZGVuOl0pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclBy
b3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0
aW5nKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dp
dGhUaW1lb3V0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6c2hvdWxkV3Jh
cFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6aGlkVXNhZ2VD
b2RlRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91c2VT
Y3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE1LTA5LTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBiaXQgcm90IG9uIGJvdCB3YXRjaGVyJ3MgZGFzaGJvYXJkIHBhZ2UKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKaW5kZXggNzBkOTQwMTRjOGQ3NTBj
YjdkNjU3MDgwNDUyOGUyMDhjYzJmNGE1NC4uZmU4ZTQ1MTNmYjYzZGE0NmZiMmU0ZGU1YTdjZTQ5
NzBkYTMxZjI3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgK
QEAgLTQwLDEwICs0MCwxOCBAQAogI2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJREV2ZW50Lmg+CisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIEtleWJvYXJkU3RhdGVMaXN0ZW5lcjsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdENvbnRyb2xsZXI7CkBAIC0xMjUsNiAr
MTMzLDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHZvaWQgc2VuZElPSElERXZlbnQoSU9ISURFdmVudFJlZik7CisgICAgdm9pZCBzZW5kSU9I
SURLZXlib2FyZEV2ZW50KHVpbnQ2NF90IHRpbWVzdGFtcCwgdWludDMyX3QgdXNhZ2UsIGJvb2wg
aXNLZXlEb3duKTsKKyAgICB2b2lkIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dChkb3VibGUg
dGltZW91dEluU2Vjb25kcywgdW5zaWduZWQgY29uZGl0aW9ucykgY29uc3Q7CisgICAgYm9vbCBz
aG91bGRDb250aW51ZVdhaXRpbmcodW5zaWduZWQgY29uZGl0aW9ucykgY29uc3Q7CisgICAgdm9p
ZCBmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisgICAgc3RhdGljIHZvaWQg
Zm9yY2VQYWdlUmVwYWludENhbGxiYWNrKFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpOworI2Vu
ZGlmCisKICAgICBkb3VibGUgbV90aW1lOwogICAgIFdLUG9pbnQgbV9wb3NpdGlvbjsKICAgICBi
b29sIG1fbGVmdE1vdXNlQnV0dG9uRG93bjsKQEAgLTE0Niw2ICsxNjMsMTIgQEAgcHJpdmF0ZToK
ICAgICBFaW5hX0xpc3QqIG1fdG91Y2hQb2ludHM7CiAjZW5kaWYKICNlbmRpZgorCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIFJldGFpblB0cjxLZXlib2FyZFN0YXRlTGlzdGVuZXI+IG1fa2V5Ym9h
cmRMaXN0ZW5lcjsKKyAgICB1aW50MzJfdCBtX2tleVdpbmRvd0NvbnRleHRJRCB7IDAgfTsKKyAg
ICBib29sIG1fZGlkUGVyZm9ybUluaXRpYWxSZXBhaW50IHsgZmFsc2UgfTsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRl
eCBjOWIxYWQ5NzEyMDlmMDVlMDE4OTk2NzZmMGQ4ZjFkZDM4MmY5MzUyLi5iM2NlOTRiYWQ2OTgw
Mjg4OTZiNGRkZmI3MWQxYjI2OThjNDE4MTFmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5jcHAKQEAgLTIxNyw2ICsyMTcsOSBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1v
dXNlRG93bihpbnQgYnV0dG9uLCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXkpCiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOwogICAgIFdLUmV0YWluUHRy
PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywg
Y3JlYXRlTW91c2VNZXNzYWdlQm9keShNb3VzZURvd24sIGJ1dHRvbiwgbW9kaWZpZXJzKSk7CiAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgd2FpdEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkSWZO
ZWNlc3NhcnkoKTsKKyNlbmRpZgogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2VGb3JUZXN0aW5nKHBhZ2UsIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCkBAIC0zODMsNiArMzg2LDkgQEAgdm9pZCBF
dmVudFNlbmRpbmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJl
ZiBtb2RpZmllckFycmF5LAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRl
ck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVu
dFNlbmRlciIpKTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBrZXlE
b3duTWVzc2FnZUJvZHkgPSBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBtb2RpZmllcnMs
IGxvY2F0aW9uKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB3YWl0Rm9yTGF5ZXJGbHVzaFRv
QmVTY2hlZHVsZWRJZk5lY2Vzc2FyeSgpOworI2VuZGlmCiAgICAgV0tCdW5kbGVQYWdlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBh
Z2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2Fn
ZUJvZHkuZ2V0KCksIDApOwogfQogCkBAIC02NjQsNiArNjcwLDE4IEBAIHZvaWQgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVu
Y3Rpb25DYWxsCiAgICAgV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0
aW9uQ2FsbGJhY2socGFnZSwgZXhlY3V0ZUNhbGxiYWNrLCBzY3JvbGxDb21wbGV0aW9uQ2FsbGJh
Y2tEYXRhLnJlbGVhc2UoKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OndhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZElmTmVjZXNzYXJ5
KCkKK3sKKyAgICBpZiAobV9oYXNXYWl0ZWRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVQYWdlV2FpdEZvckRy
YXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVseShwYWdlKTsKKyAg
ICBtX2hhc1dhaXRlZEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkID0gdHJ1ZTsKK30KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5oCmluZGV4IGMyM2MzNmRmYWM1NTg0Zjg1MWM1ZjYwZmI0ZDU2MjJjZmY0MjAwNGEuLjZmZjBk
NjJkNzkzOGYxN2M1MDNkY2M2MTI2MjdkNDNlYTgwODhmODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5oCkBAIC04OCw3ICs4OCwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcigpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgd2Fp
dEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAg
V0tQb2ludCBtX3Bvc2l0aW9uOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIG1faGFzV2Fp
dGVkRm9yTGF5ZXJGbHVzaFRvQmVTY2hlZHVsZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCmluZGV4IGFj
NTRhMWM2ZDZkOGMyYzUwZTA4MWRiNWJkYjgyMWQzZTYwOGVjMmQuLjRmNDJkOWZmNThmOWUxMGEx
ZjFmZTk4ZTRkZWJhNmRmNGYxMTJjOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5t
bQpAQCAtMjYsMTQgKzI2LDY3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkV2ZW50
U2VuZGVyUHJveHkuaCIKIAorI2ltcG9ydCA8QmFja0JvYXJkU2VydmljZXMvQktTSElERXZlbnRf
UHJpdmF0ZS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5oPgorI2ltcG9y
dCA8SU9LaXQvaGlkL0lPSElEVXNhZ2VUYWJsZXMuaD4KKyNpbXBvcnQgPG1hY2gvbWFjaF90aW1l
Lmg+CiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9u
cy5oIgogI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlL
aXQvVUlLZXlib2FyZEltcGwuaD4KKyNpbXBvcnQgPFVJS2l0L1VJV2luZG93X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tTdHJpbmcuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKworQGludGVyZmFjZSBLZXlib2FyZFN0YXRl
TGlzdGVuZXIgOiBOU09iamVjdAorQHByb3BlcnR5IEJPT0wgaXNLZXlib2FyZFJlYWR5OworLSAo
aW5zdGFuY2V0eXBlKWluaXQ7CistICh2b2lkKWtleWJvYXJkV2FzU2hvd246KE5TTm90aWZpY2F0
aW9uKilhTm90aWZpY2F0aW9uOworLSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmlj
YXRpb24qKWFOb3RpZmljYXRpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBLZXlib2FyZFN0
YXRlTGlzdGVuZXIgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOworICAgIGlmIChzZWxmKSB7CisgICAgICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3Ioa2V5Ym9hcmRXYXNTaG93bjopIG5hbWU6VUlLZXlib2FyZERpZFNob3dOb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNIaWRkZW46
KSBuYW1lOlVJS2V5Ym9hcmREaWRIaWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgICAg
ICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClrZXlib2FyZFdhc1Nob3duOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlv
bgoreworICAgIC8vIFByZXBhcmUgVUlLaXQgZm9yIHN5bmNocm9ub3VzIHRleHQgaW5wdXQgZXZl
bnQgcHJvY2Vzc2luZy4KKyAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBzZXRF
eHBlY3RzU3luY2hyb25vdXNUZXh0SW5wdXQ6WUVTXTsKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFk
eSA9IFlFUzsKK30KKworLSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24q
KWFOb3RpZmljYXRpb24KK3sKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IE5POworfQorQGVu
ZAogCiBuYW1lc3BhY2UgV1RSIHsKIAorZW51bSB7CisgICAgS2V5Ym9hcmRJc1JlYWR5ID0gMSA8
PCAwLAorICAgIEhJREV2ZW50UXVldWVJc0VtcHR5ID0gMSA8PCAxLAorICAgIEtleUlucHV0SGFz
QmVlblByb2Nlc3NlZCA9IDEgPDwgMiwKKyAgICBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCA9
IDEgPDwgMworfTsKK3R5cGVkZWYgdW5zaWduZWQgV2FpdE9uQ29uZGl0aW9uRmxhZ3M7CisKKy8v
IFRoZXNlIHRpbWVvdXRzIChpbiBzZWNvbmRzKSBhcmUgYXJiaXRyYXJ5LCBidXQgYXJlIG11Y2gg
bG9uZ2VyIHRoYW4gV0tUUiBzaG91bGQgcmVxdWlyZS4KK2NvbnN0IGRvdWJsZSB0aW1lb3V0RGVs
YXlGb3JISURFdmVudERlcXVldWVkID0gNTsKK2NvbnN0IGRvdWJsZSB0aW1lb3V0RGVsYXlGb3JL
ZXlib2FyZFJlYWR5ID0gNTsKK2NvbnN0IGRvdWJsZSB0aW1lb3V0RGVsYXlGb3JJbml0aWFsUmVw
YWludCA9IDU7CisKIEV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRy
b2xsZXIqIHRlc3RDb250cm9sbGVyKQogICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0Q29udHJv
bGxlcikKICAgICAsIG1fdGltZSgwKQpAQCAtNDQsOCArOTcsOCBAQCBFdmVudFNlbmRlclByb3h5
OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKICAgICAs
IG1fY2xpY2tQb3NpdGlvbigpCiAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0
b25Ob0J1dHRvbikKICAgICAsIGV2ZW50TnVtYmVyKDApCisgICAgLCBtX2tleWJvYXJkTGlzdGVu
ZXIoYWRvcHROUyhbW0tleWJvYXJkU3RhdGVMaXN0ZW5lciBhbGxvY10gaW5pdF0pKQogewotICAg
IFVOVVNFRF9QQVJBTShtX3Rlc3RDb250cm9sbGVyKTsKICAgICBVTlVTRURfUEFSQU0obV9sZWZ0
TW91c2VCdXR0b25Eb3duKTsKICAgICBVTlVTRURfUEFSQU0oZXZlbnROdW1iZXIpOwogfQpAQCAt
NjgsMTkgKzEyMSwxMzIgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50
Rm9yQnV0dG9uKGludCBidXR0b24pCiAgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRvbjsKIH0KIAor
Ym9vbCBFdmVudFNlbmRlclByb3h5OjpzaG91bGRDb250aW51ZVdhaXRpbmcodW5zaWduZWQgY29u
ZGl0aW9ucykgY29uc3QKK3sKKyAgICBib29sIHNob3VsZFdhaXQgPSBmYWxzZTsKKyAgICBpZiAo
Y29uZGl0aW9ucyAmIEtleWJvYXJkSXNSZWFkeSkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSAhW21f
a2V5Ym9hcmRMaXN0ZW5lciBpc0tleWJvYXJkUmVhZHldOworICAgIGlmIChjb25kaXRpb25zICYg
SElERXZlbnRRdWV1ZUlzRW1wdHkpCisgICAgICAgIHNob3VsZFdhaXQgfD0gW1tVSUFwcGxpY2F0
aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBudW1iZXJPZlF1ZXVlZEhJREV2ZW50c10gPiAwOworICAg
IGlmIChjb25kaXRpb25zICYgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkKQorICAgICAgICBzaG91
bGRXYWl0IHw9IFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIGhhc1BlbmRpbmdJbnB1
dENvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEluaXRpYWxSZXBhaW50
SGFzQ29tcGxldGVkKQorICAgICAgICBzaG91bGRXYWl0IHw9ICFtX2RpZFBlcmZvcm1Jbml0aWFs
UmVwYWludDsKKyAgICByZXR1cm4gc2hvdWxkV2FpdDsKK30KKwordm9pZCBFdmVudFNlbmRlclBy
b3h5Ojpmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9k
aWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUGFnZUZv
cmNlUmVwYWludChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wYWdlKCksIHRoaXMs
IEV2ZW50U2VuZGVyUHJveHk6OmZvcmNlUGFnZVJlcGFpbnRDYWxsYmFjayk7CisgICAgd2FpdE9u
Q29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvckluaXRpYWxSZXBhaW50LCBJbml0
aWFsUmVwYWludEhhc0NvbXBsZXRlZCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6d2Fp
dE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KGRvdWJsZSB0aW1lb3V0SW5TZWNvbmRzLCB1bnNpZ25l
ZCBjb25kaXRpb25zKSBjb25zdAoreworICAgIE5TRGF0ZSAqdGltZW91dERhdGUgPSBbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6dGltZW91dEluU2Vjb25kc107CisgICAgd2hp
bGUgKFt0aW1lb3V0RGF0ZSBjb21wYXJlOltOU0RhdGUgZGF0ZV1dID09IE5TT3JkZXJlZERlc2Nl
bmRpbmcgJiYgc2hvdWxkQ29udGludWVXYWl0aW5nKGNvbmRpdGlvbnMpKQorICAgICAgICBbW05T
UnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZv
cmVEYXRlOnRpbWVvdXREYXRlXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpmb3JjZVBh
Z2VSZXBhaW50Q2FsbGJhY2soV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkKK3sKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpY19jYXN0PEV2ZW50U2Vu
ZGVyUHJveHkqPihjb250ZXh0KS0+bV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQgPSB0cnVlOwor
fQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b25OdW1i
ZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewotICAgIC8vIFdyaXRlIG1lLgorICAg
IGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0SWZOZWNlc3NhcnkoKTsKKworICAgIFdLV2ViVmlldyog
d2ViVmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
OworICAgIFVJV2luZG93KiB3aW5kb3cgPSBbd2ViVmlldyB3aW5kb3ddOworICAgIENHUG9pbnQg
YWJzb2x1dGVQb2ludCA9IFt3aW5kb3cgY29udmVydFBvaW50OkNHUG9pbnRNYWtlKG1fcG9zaXRp
b24ueCwgbV9wb3NpdGlvbi55KSB0b1ZpZXc6d2luZG93XTsKKyAgICB1aW50NjRfdCBhYnNvbHV0
ZU1hY2hUaW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgSU9ISURFdmVudFJlZiBpb1Rv
dWNoRXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRXZlbnQoa0NGQWxsb2NhdG9yRGVm
YXVsdCwKKyAgICAgICAgYWJzb2x1dGVNYWNoVGltZSwKKyAgICAgICAga0lPSElERGlnaXRpemVy
VHJhbnNkdWNlclR5cGVIYW5kLAorICAgICAgICAwLCAvLyBJbmRleAorICAgICAgICAwLCAvLyBJ
ZGVudGl0eQorICAgICAgICBrSU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAvLyBFdmVudCBtYXNr
CisgICAgICAgIDAsIC8vIEJ1dHRvbiBtYXNrCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh4LWF4
aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0
aW9uICh6LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXNzdXJlCisgICAgICAgIDAsIC8vIFR3aXN0
CisgICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICB0cnVl
LCAvLyBJcyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5v
bmUpOworICAgIElPSElERXZlbnRSZWYgaW9Ub3VjaFBvaW50RXZlbnQgPSBJT0hJREV2ZW50Q3Jl
YXRlRGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgYWJz
b2x1dGVNYWNoVGltZSwKKyAgICAgICAgMSwgLy8gSW5kZXgKKyAgICAgICAgMiwgLy8gSWRlbnRp
dHkKKyAgICAgICAga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAg
ICAgICBhYnNvbHV0ZVBvaW50LngsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIGFic29s
dXRlUG9pbnQueSwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24g
KHotYXhpcykKKyAgICAgICAgMCwgLy8gUHJlc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAg
ICAgICB0cnVlLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICB0cnVlLCAvLyBJ
cyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOwor
ICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVu
dEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIDUpOworICAgIElPSElERXZlbnRTZXRGbG9hdFZh
bHVlKGlvVG91Y2hQb2ludEV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRp
dXMsIDUpOworICAgIElPSElERXZlbnRBcHBlbmRFdmVudChpb1RvdWNoRXZlbnQsIGlvVG91Y2hQ
b2ludEV2ZW50LCBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgIHNlbmRJT0hJREV2ZW50KGlv
VG91Y2hFdmVudCk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxh
eUZvckhJREV2ZW50RGVxdWV1ZWQsIEhJREV2ZW50UXVldWVJc0VtcHR5KTsKIH0KIAogdm9pZCBF
dmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgV0tXZWJWaWV3KiB3
ZWJWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7
CisgICAgVUlXaW5kb3cqIHdpbmRvdyA9IFt3ZWJWaWV3IHdpbmRvd107CisgICAgQ0dQb2ludCBh
YnNvbHV0ZVBvaW50ID0gW3dpbmRvdyBjb252ZXJ0UG9pbnQ6Q0dQb2ludE1ha2UobV9wb3NpdGlv
bi54LCBtX3Bvc2l0aW9uLnkpIHRvVmlldzp3aW5kb3ddOworICAgIHVpbnQ2NF90IGFic29sdXRl
TWFjaFRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKKyAgICBJT0hJREV2ZW50UmVmIGlvVG91
Y2hFdmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZh
dWx0LAorICAgICAgICBhYnNvbHV0ZU1hY2hUaW1lLAorICAgICAgICBrSU9ISUREaWdpdGl6ZXJU
cmFuc2R1Y2VyVHlwZUhhbmQsCisgICAgICAgIDAsIC8vIEluZGV4CisgICAgICAgIDAsIC8vIElk
ZW50aXR5CisgICAgICAgIGtJT0hJRERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sK
KyAgICAgICAgMCwgLy8gQnV0dG9uIG1hc2sKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHgtYXhp
cykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRp
b24gKHotYXhpcykKKyAgICAgICAgMCwgLy8gUHJlc3N1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QK
KyAgICAgICAgZmFsc2UsIC8vIElzIHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIGZhbHNl
LCAvLyBJcyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5v
bmUpOworICAgIElPSElERXZlbnRSZWYgaW9Ub3VjaFBvaW50RXZlbnQgPSBJT0hJREV2ZW50Q3Jl
YXRlRGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgYWJz
b2x1dGVNYWNoVGltZSwKKyAgICAgICAgMSwgLy8gSW5kZXgKKyAgICAgICAgMiwgLy8gSWRlbnRp
dHkKKyAgICAgICAga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAg
ICAgICBhYnNvbHV0ZVBvaW50LngsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIGFic29s
dXRlUG9pbnQueSwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24g
KHotYXhpcykKKyAgICAgICAgMCwgLy8gUHJlc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAg
ICAgICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgZmFsc2UsIC8v
IElzIHRyYW5zZHVjZXIgdG91Y2hpbmc/CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7
CisgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoaW9Ub3VjaFBvaW50RXZlbnQsIGtJT0hJREV2
ZW50RmllbGREaWdpdGl6ZXJNYWpvclJhZGl1cywgNSk7CisgICAgSU9ISURFdmVudFNldEZsb2F0
VmFsdWUoaW9Ub3VjaFBvaW50RXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNaW5vclJh
ZGl1cywgNSk7CisgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGlvVG91Y2hFdmVudCwgaW9Ub3Vj
aFBvaW50RXZlbnQsIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgc2VuZElPSElERXZlbnQo
aW9Ub3VjaEV2ZW50KTsKKyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERl
bGF5Rm9ySElERXZlbnREZXF1ZXVlZCwgSElERXZlbnRRdWV1ZUlzRW1wdHkpOwogfQogCiB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKIHsKLSAg
ICAvLyBXcml0ZSBtZS4KKyAgICBtX3Bvc2l0aW9uLnggPSB4OworICAgIG1fcG9zaXRpb24ueSA9
IHkgKyA0NDsgLy8gRklYTUUgVGhpcyBoYWNrIG9ubHkgIndvcmtzIiB3aGVuIG5vdCB6b29tZWQg
aW4uIEkgbmVlZCB0byBmaW5kIGEgd2F5IHRvIHJlbGlhYmx5IG1hcCBmcm9tIGRvY3VtZW50IGNv
b3JkcyB0byBzY3JlZW4gY29vcmRzLgogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBG
b3J3YXJkKGludCBtaWxsaXNlY29uZHMpCkBAIC04OCw5ICsyNTQsMTk0IEBAIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKICAgICBtX3RpbWUgKz0g
bWlsbGlzZWNvbmRzIC8gMTAwMC4wOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkV3Jh
cFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKE5TU3RyaW5nKiBrZXkpCit7CisgICAgaWYg
KFtrZXkgbGVuZ3RoXSAhPSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50IGtleUNv
ZGUgPSBba2V5IGNoYXJhY3RlckF0SW5kZXg6MF07CisgICAgaWYgKDY1IDw9IGtleUNvZGUgJiYg
a2V5Q29kZSA8PSA5MCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgc3dpdGNoIChrZXlDb2Rl
KSB7CisgICAgY2FzZSAnYCc6CisgICAgY2FzZSAnISc6CisgICAgY2FzZSAnQCc6CisgICAgY2Fz
ZSAnIyc6CisgICAgY2FzZSAnJCc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnXic6CisgICAg
Y2FzZSAnJic6CisgICAgY2FzZSAnKic6CisgICAgY2FzZSAnKCc6CisgICAgY2FzZSAnKSc6Cisg
ICAgY2FzZSAnXyc6CisgICAgY2FzZSAnKyc6CisgICAgY2FzZSAneyc6CisgICAgY2FzZSAnfSc6
CisgICAgY2FzZSAnfCc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAnIic6CisgICAgY2FzZSAn
PCc6CisgICAgY2FzZSAnPic6CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnfic6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CitzdGF0aWMgaW5saW5l
IHVpbnQzMl90IGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihOU1N0cmluZyoga2V5KQoreworICAg
IGNvbnN0IGludCB1cHBlcmNhc2VBbHBoYWJldGljT2Zmc2V0ID0gJ0EnIC0ga0hJRFVzYWdlX0tl
eWJvYXJkQTsKKyAgICBjb25zdCBpbnQgbG93ZXJjYXNlQWxwaGFiZXRpY09mZnNldCA9ICdhJyAt
IGtISURVc2FnZV9LZXlib2FyZEE7CisgICAgY29uc3QgaW50IG51bWVyaWNOb25aZXJvT2Zmc2V0
ID0gJzEnIC0ga0hJRFVzYWdlX0tleWJvYXJkMTsKKyAgICBpZiAoW2tleSBsZW5ndGhdID09IDEp
IHsKKyAgICAgICAgLy8gSGFuZGxlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBiYXNpYyBz
eW1ib2xzLgorICAgICAgICBpbnQga2V5Q29kZSA9IFtrZXkgY2hhcmFjdGVyQXRJbmRleDowXTsK
KyAgICAgICAgaWYgKDk3IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSAxMjIpIC8vIEhhbmRsZSBh
LXouCisgICAgICAgICAgICByZXR1cm4ga2V5Q29kZSAtIGxvd2VyY2FzZUFscGhhYmV0aWNPZmZz
ZXQ7CisKKyAgICAgICAgaWYgKDY1IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSA5MCkgLy8gSGFu
ZGxlIEEtWi4KKyAgICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0gdXBwZXJjYXNlQWxwaGFiZXRp
Y09mZnNldDsKKworICAgICAgICBpZiAoNDkgPD0ga2V5Q29kZSAmJiBrZXlDb2RlIDw9IDU3KSAv
LyBIYW5kbGUgMS05LgorICAgICAgICAgICAgcmV0dXJuIGtleUNvZGUgLSBudW1lcmljTm9uWmVy
b09mZnNldDsKKworICAgICAgICAvLyBIYW5kbGUgYWxsIG90aGVyIGNhc2VzLgorICAgICAgICBz
d2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgY2FzZSAnYCc6CisgICAgICAgIGNhc2UgJ34nOgor
ICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEdyYXZlQWNjZW50QW5kVGlsZGU7
CisgICAgICAgIGNhc2UgJyEnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2Fy
ZDE7CisgICAgICAgIGNhc2UgJ0AnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXli
b2FyZDI7CisgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9L
ZXlib2FyZDM7CisgICAgICAgIGNhc2UgJyQnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2Fn
ZV9LZXlib2FyZDQ7CisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgcmV0dXJuIGtISURV
c2FnZV9LZXlib2FyZDU7CisgICAgICAgIGNhc2UgJ14nOgorICAgICAgICAgICAgcmV0dXJuIGtI
SURVc2FnZV9LZXlib2FyZDY7CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZDc7CisgICAgICAgIGNhc2UgJyonOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZDg7CisgICAgICAgIGNhc2UgJygnOgorICAgICAgICAgICAg
cmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDk7CisgICAgICAgIGNhc2UgJyknOgorICAgICAgICBj
YXNlICcwJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQwOworICAgICAg
ICBjYXNlICctJzoKKyAgICAgICAgY2FzZSAnXyc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkSHlwaGVuOworICAgICAgICBjYXNlICc9JzoKKyAgICAgICAgY2FzZSAnKyc6
CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRXF1YWxTaWduOworICAgICAg
ICBjYXNlICdcdCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkVGFiOwor
ICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgY2FzZSAneyc6CisgICAgICAgICAgICByZXR1cm4g
a0hJRFVzYWdlX0tleWJvYXJkT3BlbkJyYWNrZXQ7CisgICAgICAgIGNhc2UgJ10nOgorICAgICAg
ICBjYXNlICd9JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRDbG9zZUJy
YWNrZXQ7CisgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgY2FzZSAnfCc6CisgICAgICAgICAg
ICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQmFja3NsYXNoOworICAgICAgICBjYXNlICc7JzoK
KyAgICAgICAgY2FzZSAnOic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJk
U2VtaWNvbG9uOworICAgICAgICBjYXNlICdcJyc6CisgICAgICAgIGNhc2UgJyInOgorICAgICAg
ICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFF1b3RlOworICAgICAgICBjYXNlICdccic6
CisgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmRSZXR1cm5PckVudGVyOworICAgICAgICBjYXNlICcsJzoKKyAgICAgICAgY2FzZSAnPCc6Cisg
ICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQ29tbWE7CisgICAgICAgIGNhc2Ug
Jy4nOgorICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5
Ym9hcmRQZXJpb2Q7CisgICAgICAgIGNhc2UgJy8nOgorICAgICAgICBjYXNlICc/JzoKKyAgICAg
ICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRTbGFzaDsKKyAgICAgICAgY2FzZSAnICc6
CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkU3BhY2ViYXI7CisgICAgICAg
IH0KKyAgICB9CisgICAgY29uc3QgaW50IGZ1bmN0aW9uS2V5T2Zmc2V0ID0ga0hJRFVzYWdlX0tl
eWJvYXJkRjE7CisgICAgZm9yIChpbnQgZnVuY3Rpb25LZXlJbmRleCA9IDE7IGZ1bmN0aW9uS2V5
SW5kZXggPD0gMTI7ICsrZnVuY3Rpb25LZXlJbmRleCkgeworICAgICAgICBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJWQiLCBmdW5jdGlvbktl
eUluZGV4XV0pCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25LZXlPZmZzZXQgKyBmdW5jdGlv
bktleUluZGV4IC0gMTsKKyAgICB9CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZXNj
YXBlIl0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRFc2NhcGU7CisgICAgaWYg
KFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmV0dXJuIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJlbnRlciJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmV0dXJuT3JFbnRl
cjsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkKKyAgICAgICAg
cmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRBcnJvdzsKKyAgICBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJyaWdodEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmRSaWdodEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkK
KyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFVwQXJyb3c7CisgICAgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmREb3duQXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRl
Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmREZWxldGVPckJhY2tzcGFjZTsK
KyAgICAvLyBUaGUgc2ltdWxhdG9yIGtleWJvYXJkIGludGVycHJldHMgYm90aCBsZWZ0IGFuZCBy
aWdodCBtb2RpZmllciBrZXlzIHVzaW5nIHRoZSBsZWZ0IHZlcnNpb24gb2YgdGhlIHVzYWdlIGNv
ZGUuCisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSB8fCBba2V5
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKQorICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkTGVmdENvbnRyb2w7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdFNoaWZ0Il0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pCisgICAg
ICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQ7CisgICAgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRB
bHQiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRBbHQ7CisKKyAgICBy
ZXR1cm4gMDsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVm
IGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQog
ewotICAgIC8vIFdyaXRlIG1lLgorICAgIGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0SWZOZWNlc3Nh
cnkoKTsKKyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9yS2V5
Ym9hcmRSZWFkeSwgS2V5Ym9hcmRJc1JlYWR5KTsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvU1REKGtleSkuY19zdHIoKSBlbmNvZGluZzpb
TlNTdHJpbmcgZGVmYXVsdENTdHJpbmdFbmNvZGluZ11dOworICAgIGJvb2wgc2hvdWxkV3JhcFdp
dGhTaGlmdCA9IHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3RlcihjaGFyYWN0
ZXIpOworICAgIHVpbnQzMl90IHVzYWdlID0gaGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKGNoYXJh
Y3Rlcik7CisgICAgdWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGlt
ZSgpOworICAgIGlmIChzaG91bGRXcmFwV2l0aFNoaWZ0KQorICAgICAgICBzZW5kSU9ISURLZXli
b2FyZEV2ZW50KGFic29sdXRlTWFjaFRpbWUsIGtISURVc2FnZV9LZXlib2FyZExlZnRTaGlmdCwg
dHJ1ZSk7CisKKyAgICBzZW5kSU9ISURLZXlib2FyZEV2ZW50KGFic29sdXRlTWFjaFRpbWUsIHVz
YWdlLCB0cnVlKTsKKyAgICBzZW5kSU9ISURLZXlib2FyZEV2ZW50KGFic29sdXRlTWFjaFRpbWUs
IHVzYWdlLCBmYWxzZSk7CisKKyAgICBpZiAoc2hvdWxkV3JhcFdpdGhTaGlmdCkKKyAgICAgICAg
c2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCBrSElEVXNhZ2VfS2V5Ym9h
cmRMZWZ0U2hpZnQsIGZhbHNlKTsKKworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0
aW1lb3V0RGVsYXlGb3JISURFdmVudERlcXVldWVkLCBISURFdmVudFF1ZXVlSXNFbXB0eSB8IEtl
eUlucHV0SGFzQmVlblByb2Nlc3NlZCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2Vu
ZElPSElERXZlbnQoSU9ISURFdmVudFJlZiBldmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQpOwor
ICAgIGlmICghbV9rZXlXaW5kb3dDb250ZXh0SUQpIHsKKyAgICAgICAgLy8gRklYTUUgVGhpcyBp
cyBhIGhhY2sgdG8gbWFrZSB0b3VjaCBldmVudHMgd29yay4gV2hhdCBpZiB0aGVyZSBhcmUgbXVs
dGlwbGUgd2luZG93cz8KKyAgICAgICAgQVNTRVJUKFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBs
aWNhdGlvbl0ud2luZG93cyBjb3VudF0gPiAwKTsKKyAgICAgICAgbV9rZXlXaW5kb3dDb250ZXh0
SUQgPSBbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0ud2luZG93c1swXS5fY29udGV4
dElkOworICAgIH0KKyAgICBpZiAoSU9ISURFdmVudEdldFR5cGUoZXZlbnQpID09IGtJT0hJREV2
ZW50VHlwZURpZ2l0aXplcikKKyAgICAgICAgQktTSElERXZlbnRTZXREaWdpdGl6ZXJJbmZvKGV2
ZW50LCBtX2tleVdpbmRvd0NvbnRleHRJRCwgZmFsc2UsIGZhbHNlLCBOVUxMLCAwLCAwKTsKKwor
ICAgIFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gX2VucXVldWVISURFdmVudDpl
dmVudF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVu
dCh1aW50NjRfdCB0aW1lc3RhbXAsIHVpbnQzMl90IHVzYWdlLCBib29sIGlzS2V5RG93bikKK3sK
KyAgICBzZW5kSU9ISURFdmVudChJT0hJREV2ZW50Q3JlYXRlS2V5Ym9hcmRFdmVudChrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LAorICAgICAgICB0aW1lc3RhbXAsCisgICAgICAgIGtISURQYWdlX0tleWJv
YXJkT3JLZXlwYWQsCisgICAgICAgIHVzYWdlLAorICAgICAgICBpc0tleURvd24sCisgICAgICAg
IGtJT0hJREV2ZW50T3B0aW9uTm9uZSkpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxNWNiZjFjMmVhYjgzZGM5MzhjZTI5YzI2OGU0YzIyZjJjYzZhZDAxLi44ZWY3ZjQz
M2NmNDQ0OTY0OTU2MTlmOTc3ZTIxOWYwYWExYTlkYmI4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDgsMTAgKzQ4LDEzIEBACiAJCTI5QThGQ0REMTQ1RjAzMzcwMDkw
NDVBNiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE2
IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CiAJCTI5QThGQ0Uy
MTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMTQ1RjAz
N0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLzsgfTsKIAkJ
MjlBOEZDRTUxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4
RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5t
bSAqLzsgfTsKKwkJMkUwQzc3QzMxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMEM3N0My
MUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTJFMEM3N0M0MUI5
RjVFOEYwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkgLyogSU9L
aXQuZnJhbWV3b3JrICovOyB9OworCQkyRTBDNzdDNjFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0Jv
YXJkU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZp
Y2VzLmZyYW1ld29yayAqLzsgfTsKKwkJMkUwQzc3QzcxQjlGNUVCQjAwNTY0RUE5IC8qIEJhY2tC
b2FyZFNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2
aWNlcy5mcmFtZXdvcmsgKi87IH07CiAJCTJFMzRDOTAwMThCNjg4MDgwMDAwNjdCQiAvKiBXZWJL
aXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1MTg2MjExRDE1RDU0MDAyRUJDMDEgLyogV2Vi
S2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmJ1bmRsZSAqLzsgfTsKIAkJMkU2M0VEOEExODkx
QUQ3RTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2M0VENzUxODkxQUNFOTAwMkE3
QUZDIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tICovOyB9OwogCQkyRTYzRUQ4QjE4
OTFBRDdFMDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3NzE4OTFBQ0U5MDAy
QTdBRkMgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gKi87IH07Ci0JCTJFNjNFRDhF
MTg5MUFEN0UwMDJBN0FGQyAvKiBFdmVudFNlbmRlclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2M0VEN0ExODkxQUNFOTAwMkE3QUZD
IC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gKi87IH07CiAJCTJFNjNFRDhGMTg5MUFEN0UwMDJB
N0FGQyAvKiBJbmplY3RlZEJ1bmRsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDdCMTg5MUFDRTkwMDJBN0FGQyAvKiBJbmplY3RlZEJ1
bmRsZUlPUy5tbSAqLzsgfTsKIAkJMkU2M0VEOTExODkxQURBRDAwMkE3QUZDIC8qIFBsYXRmb3Jt
V2ViVmlld0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFRTUyRDEzMTg5MEE5RkIwMDEwRUQyMSAvKiBQbGF0Zm9ybVdlYlZpZXdJT1MubW0gKi87
IH07CiAJCTJFNjNFRDkyMTg5MUFEQUQwMDJBN0FGQyAvKiBUZXN0Q29udHJvbGxlcklPUy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRTUyRDE0MTg5
MEE5RkIwMDEwRUQyMSAvKiBUZXN0Q29udHJvbGxlcklPUy5tbSAqLzsgfTsKQEAgLTE5MCwxMSAr
MTkzLDEzIEBACiAJCTI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVBNyAvKiBKU0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRU
ZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyOUE4RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0UyQ0QxMUI4NDUyNDUwMEM3RjgzMiAvKiBUZXN0
Q29udHJvbGxlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gVGVzdENvbnRyb2xsZXJDb2NvYS5tbTsgcGF0aCA9IGNvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFMEM3N0MyMUI5RjVFODkwMDU2
NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29y
azsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tC
b2FyZFNlcnZpY2VzLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQmFja0JvYXJkU2Vydmlj
ZXMuZnJhbWV3b3JrOyBwYXRoID0gUGxhdGZvcm1zL2lQaG9uZVNpbXVsYXRvci5wbGF0Zm9ybS9E
ZXZlbG9wZXIvU0RLcy9pUGhvbmVTaW11bGF0b3I5LjAuc2RrL1N5c3RlbS9MaWJyYXJ5L1ByaXZh
dGVGcmFtZXdvcmtzL0JhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9IERF
VkVMT1BFUl9ESVI7IH07CiAJCTJFNjNFRDc1MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRTYzRUQ3NjE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkU2M0VENzcxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDc4MTg5
MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkU2M0VEN0ExODkxQUNFOTAwMkE3QUZD
IC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBFdmVudFNlbmRlclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEV2ZW50U2VuZGVyUHJv
eHlJT1MubW07IHBhdGggPSAuLi9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VEN0IxODkxQUNFOTAwMkE3
QUZDIC8qIEluamVjdGVkQnVuZGxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJFRTUyQ0UwMTg5MEE5QTgwMDEwRUQyMSAvKiBXZWJLaXRUZXN0UnVubmVyQXBwLmFw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBl
ci5hcHBsaWNhdGlvbjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5l
ckFwcC5hcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJFRTUyQ0Uy
MTg5MEE5QTgwMDEwRUQyMSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTMxNCw2
ICszMTksOCBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMkUwQzc3QzMxQjlGNUU4
OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTJFMEM3
N0M3MUI5RjVFQkIwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTMzNSw5ICszNDIsMTEgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTJFMEM3N0M0MUI5RjVFOEYwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQlCQzI1MTk0MDExRDE1RDhCMDAyRUJDMDEgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJQTY2NEJDNzYxM0E1RjNBOTAwOUE3
QjI1IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CTBGNTE2OUNDMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8sCisJCQkJMkUwQzc3QzYxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2Vz
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDYxLDcgKzQ3MCw2IEBACiAJCQkJMkU2
M0VENzYxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
LmggKi8sCiAJCQkJMkU2M0VENzcxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VySU9TLm1tICovLAogCQkJCTJFNjNFRDc4MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50SU9TLm1tICovLAotCQkJCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAv
KiBFdmVudFNlbmRlclByb3h5SU9TLm1tICovLAogCQkJCTJFNjNFRDdCMTg5MUFDRTkwMDJBN0FG
QyAvKiBJbmplY3RlZEJ1bmRsZUlPUy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwpAQCAt
NDcwLDYgKzQ3OCw4IEBACiAJCTJFRTUyQ0UxMTg5MEE5QTgwMDEwRUQyMSAvKiBGcmFtZXdvcmtz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRTBDNzdD
NTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICovLAorCQkJ
CTJFMEM3N0MyMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJMkVF
NTJDRTIxODkwQTlBODAwMTBFRDIxIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovLAogCQkJCTJF
RTUyQ0U0MTg5MEE5QTgwMDEwRUQyMSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAogCQkJ
CTJFRTUyQ0U2MTg5MEE5QTgwMDEwRUQyMSAvKiBVSUtpdC5mcmFtZXdvcmsgKi8sCkBAIC00ODks
NiArNDk5LDcgQEAKIAkJMkVFNTJEMTIxODkwQTlGQjAwMTBFRDIxIC8qIGlvcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkU2M0VEN0ExODkxQUNFOTAw
MkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gKi8sCiAJCQkJMkVFNTJDRUIxODkwQTlB
ODAwMTBFRDIxIC8qIEluZm9QbGlzdC5zdHJpbmdzICovLAogCQkJCTJFRTUyRDEzMTg5MEE5RkIw
MDEwRUQyMSAvKiBQbGF0Zm9ybVdlYlZpZXdJT1MubW0gKi8sCiAJCQkJMkVFNTJEMTQxODkwQTlG
QjAwMTBFRDIxIC8qIFRlc3RDb250cm9sbGVySU9TLm1tICovLApAQCAtODk0LDcgKzkwNSw2IEBA
CiAJCQkJMkU2M0VEOUUxODkxQUVDMTAwMkE3QUZDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydElP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFNjNFRDhBMTg5MUFEN0UwMDJBN0FGQyAvKiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFNjNFRDhCMTg5
MUFEN0UwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTJFNjNFRDhFMTg5MUFEN0UwMDJBN0FGQyAvKiBFdmVudFNlbmRlclByb3h5SU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU2M0VEOEYxODkxQUQ3RTAwMkE3QUZDIC8qIEluamVj
dGVkQnVuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkyMTBFREExNDRDQzNFQTAwODM1
QkI2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTIx
MEVCMDE0NENBQ0JEMDA4MzVCQjUgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xMTg5LDYgKzExOTksNyBAQAogCQkJCUExMTVDQ0I4MUI5RDc2OUQwMEU4
OTE1OSAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJ
CX07CiAJCUExODUxMDJEMUI5QURFNDgwMDc0NEFFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViS2l0VGVzdFJ1bm5lciAoTGlicmFyeSkiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiODZlNzY3MTcxOGFlMzM1
OWU1OWIwODU3ZWRkNDVkNDAxZjkwMGZmLi5mNjU5OTViMTAyZmNlZTk2ZTQ4OWViN2Y4ZjU0ZDE1
ODM0NGQxYzJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDktMDggIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEV2ZW50U2Vu
ZGVyUHJveHkgZm9yIFdlYktpdFRlc3RSdW5uZXIgb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg5NjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNo
LWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDE1LTA5LTA5ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENTUyBnZW5lcmFsIHNpYmxpbmcgc2VsZWN0b3JzIGRvZXMgbm90IHdv
cmsgd2l0aG91dCBDU1MgSklUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Vt
cHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbAppbmRleCAzZjQ4ZGZkZTY0Y2Uz
ZGI3MzFkNGM5NWQ5YzYxYTQ1MmI0N2FmMDQ3Li5iOTU0OTQ0NGExOTJkZmYxN2RiMjk1MzZlMmJj
MzAyMzUwY2QzMTYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRl
eHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZW1wdHktdGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLmh0bWwKQEAgLTEsNyArMSw5IEBACis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD5UZXN0cyB0aGF0IHRvZ2dsaW5nIGRpc2FibGVkIHN0
YXRlIGluIGEgdGV4dGFyZWEgbGVhdmVzIHRoZSB0ZXh0YXJlYSB0eXBlYWJsZS4KIFRvIFRlc3Qg
bWFudWFsbHksIGxvYWQgdGhpcyBwYWdlIGFuZCB0eXBlIGluIHRoZSB0ZXh0YXJlYS4gSWYgeW91
IGNhbiB0eXBlLCB0aGVuCiB0aGUgdGVzdCBzdWNjZWVkZWQuPHA+CiA8dGV4dGFyZWEgaWQ9InRh
IiBkaXNhYmxlZD0iZGlzYWJsZWQiPjwvdGV4dGFyZWE+Cis8L2JvZHk+CiAKIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewpAQCAtOSwxOCAr
MTEsMjAgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKLXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgdGEuZGlzYWJsZWQg
PSBmYWxzZTsKLSAgICB0YS5mb2N1cygpOwotICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
LSAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignYScsIFtdKTsKLSAgICAgICAgdmFyIHJlc3Vs
dCA9IHRhLnZhbHVlOwotICAgICAgICBpZiAocmVzdWx0ID09ICJhIikKLSAgICAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCI8cHJlPlNVQ0NFU1M8L3ByZT4iKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZG9jdW1lbnQud3JpdGUoIjxwcmU+RkFJTCwgcmVzdWx0IHdhcyAnIiArIHJlc3VsdCAr
ICInLjwvcHJlPiIpOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSwgMCk7CitmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRhLmRpc2FibGVkID0gZmFsc2U7
CisgICAgICAgIHRhLmZvY3VzKCk7CisgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnLCBbXSk7CisgICAgICAgICAgICB2
YXIgcmVzdWx0ID0gdGEudmFsdWU7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09ICJhIikKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHByZT5TVUNDRVNTPC9wcmU+Iik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwcmU+RkFJTCwg
cmVzdWx0IHdhcyAnIiArIHJlc3VsdCArICInLjwvcHJlPiIpOworICAgICAgICB9CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgIH0sIDApOworfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWlucHV0LWV2ZW50LmpzCmluZGV4IDMzMzBh
ZThmOTZiNjEwZmU0NzVhNGMzZTZmNWE4YWUwODYwNDBhNzIuLjEwOTdiOWE5YjQ3ZGI4MGZiZDEz
ZWE3NGQzZTEzNjIzMTI1YWQ3ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmVzb3VyY2VzL3RleHRhcmVhLWlucHV0LWV2ZW50LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWlucHV0LWV2ZW50LmpzCkBAIC0yMiwyMyArMjIsMjUg
QEAgZnVuY3Rpb24gaGFuZGxlVGV4dGFyZWFPbklucHV0KGUpIHsKICAgICB9CiB9CiAKLXZhciB0
YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YScpOwotdGEuc2V0QXR0cmlidXRlKCdvbmlu
cHV0JywgJ2hhbmRsZVRleHRhcmVhT25JbnB1dChldmVudCknKTsKK2Z1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJyk7CisgICAgdGEu
c2V0QXR0cmlidXRlKCdvbmlucHV0JywgJ2hhbmRsZVRleHRhcmVhT25JbnB1dChldmVudCknKTsK
IAotLy8gQ2hhbmdlIHRoZSB2YWx1ZSBiZWZvcmUgZm9jdXNpbmcuCi10YS52YWx1ZSA9ICcnOwor
ICAgIC8vIENoYW5nZSB0aGUgdmFsdWUgYmVmb3JlIGZvY3VzaW5nLgorICAgIHRhLnZhbHVlID0g
Jyc7CiAKLXRhLmZvY3VzKCk7CisgICAgdGEuZm9jdXMoKTsKIAotaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewotICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3gnLCBbXSk7Ci0gICAgc2hvdWxkRXZh
bHVhdGVUbygnaGFuZGxlVGV4dGFyZWFPbklucHV0Q2FsbENvdW50JywgMSk7Ci0gICAgc2hvdWxk
RXZhbHVhdGVUbygnaGFuZGxlRGl2T25JbnB1dENhbGxDb3VudCcsIDEpOwotICAgIAotICAgIC8v
IENoYW5nZSBwcm9ncmFtbWF0aWNhbGx5Ci0gICAgdGEudmFsdWUgPSAncHJvZ3JhbW1hdGljYWxs
eSc7Ci0gICAgCi0gICAgLy8gU2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJlZCB0aGUgZXZlbnRzLgot
ICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEp
OwotICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxsQ291bnQnLCAxKTsK
LX0KKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oJ3gnLCBbXSk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZVRleHRhcmVh
T25JbnB1dENhbGxDb3VudCcsIDEpOworICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVE
aXZPbklucHV0Q2FsbENvdW50JywgMSk7CisgICAgICAgIAorICAgICAgICAvLyBDaGFuZ2UgcHJv
Z3JhbW1hdGljYWxseQorICAgICAgICB0YS52YWx1ZSA9ICdwcm9ncmFtbWF0aWNhbGx5JzsKKyAg
ICAgICAgCisgICAgICAgIC8vIFNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgdGhlIGV2ZW50cy4K
KyAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnaGFuZGxlVGV4dGFyZWFPbklucHV0Q2FsbENvdW50
JywgMSk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxsQ291
bnQnLCAxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVk
LnR4dAppbmRleCA3OTQwMTE5ZGU0ZGM1ZjkzOGZkNDBhMjM5OWZjODBiODgxYjE4ZDM3Li4zODI2
NGZiYWU1ZTlmZjg4NWM2Nzg4M2Q1YTU1MGRkNGFlZDc5YzI3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dApA
QCAtMywxMyArMywxMyBAQCBUZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxODkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIFBBU1MgdGEudmFsdWUgaXMg
IngiCiBQQVNTIHRhLnZhbHVlIGlzICJ4IgogUEFTUyBoYW5kbGVUZXh0YXJlYU9uSW5wdXRDYWxs
Q291bnQgaXMgMQogUEFTUyBoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50IGlzIDEKIFBBU1MgaGFu
ZGxlVGV4dGFyZWFPbklucHV0Q2FsbENvdW50IGlzIDEKIFBBU1MgaGFuZGxlRGl2T25JbnB1dENh
bGxDb3VudCBpcyAxCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1
dC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVu
dC5odG1sCmluZGV4IGIzMzcxNDY5NzY0Nzc2ZTA4MDljOWEzMTBkMzI2ZTI4MzNmZGY2NzUuLjNi
YTVjNGJkZDVlNzFiNjNjNzFmODQ4NTVkZmFiMWIxOWM4ZTk5YzggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwKQEAgLTMsNyArMyw3IEBA
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgotPGJvZHk+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNGRiNmJjMWE2OTFjNDAxNmI3OGE0ODI4MDIyYTAxZGFhNmZjNjYwYi4uZDRjYWJkNTM3Mjk2
NThjZjg3OTA4ZjU5NzgyMTM2ZTRjMmI4ZmI5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc0NCw4ICsxNzQ0LDgg
QEAgZmFzdC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS1zdGVwdXAtc3RlcGRvd24uaHRtbCBbIEZh
aWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS12YWx1ZS1zYW5pdGl6YXRpb24u
aHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9pbnB1dC12YWx1ZWFzZGF0ZS1k
YXRldGltZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2RhdGV0aW1lL2lucHV0LXZhbHVl
YXNudW1iZXItZGF0ZXRpbWUuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy9kaXNhYmxlZC1z
ZWFyY2gtaW5wdXQuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10
b2dnbGUtZGlzYWJsZWQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFy
Y2gtaW5wdXQuaHRtbCBbIFBhc3MgXQorZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUt
ZGlzYWJsZWQuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9lbnRlci1jbGlja3MtYnV0dG9ucy5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2ZpZWxkc2V0LWxlZ2VuZC1wYWRkaW5nLXVuY2xp
cHBlZC1maWVsZHNldC1ib3JkZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9maWVsZHNl
dC13aXRoLWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTE4NDIsOSArMTg0Miw5IEBAIGZhc3Qv
Zm9ybXMvc2VsZWN0L29wdGdyb3VwLWNsaWNraW5nLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9y
bXMvc2VsZWN0L29wdGlvbi1zZWxlY3RpbmcuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9z
ZWxlY3Qvc2VsZWN0LWRpc2FibGVkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvc2hhZG93
LXRyZWUtZXhwb3N1cmUuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2
ZW50Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZm9ybXMvdGV4dC1pbnB1dC1ldmVudC5odG1sIFsg
UGFzcyBdCiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFycm93LW5hdmlnYXRpb24uaHRtbCBbIEZhaWx1
cmUgXQotZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sIFsgRmFpbHVyZSBdCitm
YXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMv
dGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9y
bXMvdGV4dGFyZWEtbWV0cmljcy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL3RleHRhcmVh
LXBsYWNlaG9sZGVyLXdyYXBwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261069</attachid>
            <date>2015-09-12 17:12:01 -0700</date>
            <delta_ts>2015-09-13 00:02:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150912171153.patch</filename>
            <type>text/plain</type>
            <size>51675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1OTFlODgy
ZjYuLmU0OTgwMGUzMTBkMmE5Y2EwYTdhZDZhZjQ1MWQ2ZTU0M2U4MGU5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
cHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9j
YWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2lu
Z1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5k
Rm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA3NTNjODAxMDE5ZGJlZTJmZTc1YzU3ZjBkM2EyMzhjMDgyZTM4MDViLi5j
MjI4NmQ1Y2RiNWYwYjcxYTczOTA0ZWU2NjczZmRiZTc0ZjA4YTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDU5LDYgKzEwNTksOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKKyAgICB1aW50NjRfdCBm
aXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoKSB7IHJldHVybiBt
X2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEFmdGVyRGlkQ29tbWl0TG9hZDsgfQorCiBwcml2
YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTEwNzYsNiArMTA3OCw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2VuZEZvcmNl
UmVwYWludFdpdGhDYWxsYmFjayhSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
MjcyNTYwNmVkZDJjNDhiZjBlZjA4NDZiYmU4ZTI0YzQzNDVkOWQwZS4uZWRiNThhOWIzMGM3MDQ1
MmYzMGVlMGM4NzA4MjdmNTgyYTMzNDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE2OSw2ICsxNjksMTYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpY3RhdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNlbGVjdGVk
VGV4dCwgY29uc3QgU3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZh
bHVlKHNlbGVjdGVkVGV4dCwgYmVmb3JlVGV4dCwgYWZ0ZXJUZXh0KTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soUmVmUHRyPFZvaWRDYWxsYmFj
az4gY2FsbGJhY2spCit7CisgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVw
ZGF0ZU9uTmV4dFBhaW50KCk7CisgICAgbV9kcmF3aW5nQXJlYS0+ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nRHJhd2luZyhbY2FsbGJhY2tdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAg
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKKyAgICB9KTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpLCBt
X3BhZ2VJRCk7Cit9CisKKwogdm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4
dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRU
ZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQs
IHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25D
b250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZDQzNGQyZGFiY2YzNjg1OWE2NzQ2OTY1
MjlmOTNkMzhlNDQ2ZDA5Li4yY2EyZWVhNzUxZDUzYjY5ZGQ0ZjM5YjY1ZGJiYzhmMjY1OWM2YjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtMTQ2LDYgKzE0NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNT
Y3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdl
SUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZEZvcmNlUmVwYWludFdpdGhDYWxsYmFj
ayhSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2NhbGxiYWNrcy5wdXQoY2FsbGJh
Y2spOworICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQ
YWludCgpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBh
aW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKICNpZiAhVVNFKEFTWU5DX05TVEVYVElO
UFVUQ0xJRU5UKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNTI3MzFlMzZj
MjI0N2I3MjgyOGViOTBlMmE1NTM2M2ZmOTFmMjc3Li40YmExZmEzZDQwZjQ1ZWRmYTZlNmJiZWMy
NjAwNWRkYTM5ODYxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00NjYs
NiArNDY2LDExIEBAIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldEluc3BlY3Rv
cihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VS
ZWYpLT5pbnNwZWN0b3IoKSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlV2FpdEZvckRyYXdpbmdB
cmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVseShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSkKK3sKKyAgICB0b0ltcGwocGFnZSktPndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVj
ZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoKTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VGb3Jj
ZVJlcGFpbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5mb3Jj
ZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgKaW5kZXggY2RjZDE1NWQ1MmFkNjZmNGM0MTE5MWIwYzE0ZGViNWUzN2NiMjMxNC4u
MWZhM2RjZjhjOTdlMGUxNGE0N2ZmNDU5MWMxYWRjMGZhYmFhNTlhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKQEAgLTUyLDYgKzUyLDcgQEAgV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGRv
dWJsZSB6b29tRmEKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0U2NhbGVBdE9yaWdp
bihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9yaWdpbik7CiAK
K1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVdhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVj
ZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlRm9yY2VSZXBhaW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
IAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZURvd24oV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIGludCBidXR0b24sIFdLUG9pbnQgcG9zaXRpb24sIGludCBjbGlja0NvdW50
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA0NGFlYzAyYmRk
ZjBmODcxOTk2NTE3MzRjOTFhZWZjNmIxNGZhNjlmLi4yMTViNDExM2MzYzFlZmJhNTRjNDQ1OGU2
NmJiOGMyMGQ4MWM0OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaApAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91
c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsgfQogI2VuZGlm
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5n
QXJlYVR5cGUsIFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYxZGI4NGRjNzVhYWI3ZTM3MzVjMDNhYTkxYzgzYjZjYmZk
ZjQ2NTguLjg3MGNkYTk0NjU1MTBhZGUzNzk0YWU2NDcwYzNlMmZkZmIwNmVkZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2MjAsNiAr
MjYyMCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCit2b2lk
IFdlYlBhZ2U6OndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1t
ZWRpYXRlbHkoKQoreworICAgIGlmIChtX2RyYXdpbmdBcmVhLT5pc1dhaXRpbmdGb3JCYWNraW5n
U3RvcmVTd2FwKCkpCisgICAgICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6RGlkVXBkYXRlPihw
YWdlSUQoKSwgNTAwMF9tcyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91
dENhbGxiYWNrKCkKIHsKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQzNjI0NGNkYzk1
ZTA1NjUzMDI1NzRkMzFlNzM2ZjU0YTNhMTRmMGQuLjJmNTJjZmMyYmJkNjk2MzIyODAyYTFiY2Nl
NjAyNGRiZjU1NTM5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNzcxLDYgKzc3MSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0OwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KTsKKyAgICB2b2lkIHdhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1l
SW1tZWRpYXRlbHkoKTsKIAogICAgIHZvaWQgdW5tYXJrQWxsTWlzc3BlbGxpbmdzKCk7CiAgICAg
dm9pZCB1bm1hcmtBbGxCYWRHcmFtbWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ5ZWY3OWMwOWQ5ZDI3
ZTU2YzE4ODRkMWUzM2VlOTg2NjI4Zjk0ZjMuLjZlZmI3ZjBkY2JlMDE5Yzk2NWVmYTBlYWZkMjZh
ZTJmY2I4NmU1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xNjAsNiArMTYwLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFp
bnQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggMDBhYmIxNWJlNTkyZjVkNmE3NGM2
ZDgzYzJlODljMTE5NjdkZDM3MC4uZjQ4YTliNDdiYzkyZTc1OGM1NzlhYzRlZjcxNWVkNTdhN2Rl
OTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMTE2LDYgKzEx
Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZsdXNoTGF5ZXJzKCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXA7IH07CisKICAgICBXZWJDb3JlOjpUaWxl
ZEJhY2tpbmcqIG1haW5GcmFtZVRpbGVkQmFja2luZygpIGNvbnN0OwogCiAgICAgdWludDY0X3Qg
dGFrZU5leHRUcmFuc2FjdGlvbklEKCkgeyByZXR1cm4gKyttX2N1cnJlbnRUcmFuc2FjdGlvbklE
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCAxY2Y1NTM4NTFl
Y2E5OTZkZmFhMWRlZjkzYmU1ZDg5YjM4NWJmZmM5Li4wYjY5MThlMzczM2QwMDMyNzU0OTkzOTM0
NGVmM2QwMzVjZjkwODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
QEAgLTQ0MCw2ICs0NDAsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpkaWRV
cGRhdGUoKQogICAgIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgPSBmYWxzZTsKIAogICAg
IGlmIChtX2hhZEZsdXNoRGVmZXJyZWRXaGlsZVdhaXRpbmdGb3JCYWNraW5nU3RvcmVTd2FwKSB7
CisvLyAgICAgICAgV1RGTG9nQWx3YXlzKCJTY2hlZHVsaW5nIGEgZGVmZXJyZWQgZmx1c2guIik7
CiAgICAgICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiAgICAgICAgIG1faGFk
Rmx1c2hEZWZlcnJlZFdoaWxlV2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgPSBmYWxzZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YmZlODkyOTQ5YTcwNzlhM2NhZDUwOGI1ODIzYzA5NGEwMTljYmM2My4uZGViMTE5ZTg4NDY0NjUx
MmUwYzY2ZTM0NGJhNGY2NGJjNThhMmFiZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVu
dFNlbmRlclByb3h5IGZvciBXZWJLaXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlz
dGVuZXIgaW5pdF0pOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRX
YXNTaG93bjpdKToKKyAgICAgICAgKC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2Fz
SGlkZGVuOl0pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclBy
b3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0
aW5nKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dp
dGhUaW1lb3V0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6c2hvdWxkV3Jh
cFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6aGlkVXNhZ2VD
b2RlRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91c2VT
Y3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE1LTA5LTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBiaXQgcm90IG9uIGJvdCB3YXRjaGVyJ3MgZGFzaGJvYXJkIHBhZ2UKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKaW5kZXggNzBkOTQwMTRjOGQ3NTBj
YjdkNjU3MDgwNDUyOGUyMDhjYzJmNGE1NC4uYTkwMzQ1NjhkZDkwZGYxY2E4Y2RmYTMwYjY2OGNm
NzEwYTgxY2RhOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgK
QEAgLTQwLDEwICs0MCwyOSBAQAogI2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJREV2ZW50Lmg+CisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIEtleWJvYXJkU3RhdGVMaXN0ZW5lcjsKKworc3Ry
dWN0IFRvdWNoUG9pbnRJbmZvIHsKKyAgICBUb3VjaFBvaW50SW5mbyhpbnQgeCwgaW50IHkpOwor
CisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAgIHVpbnQ2NF90IG1hY2hUaW1lOworICAg
IGJvb2wgaXNUb3VjaGluZzsKK307CisKK2NvbnN0IGludCBtYXhOdW1Ub3VjaFBvaW50cyA9IDU7
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIFRlc3RDb250cm9sbGVyOwpAQCAt
MTI1LDYgKzE0NCwxOSBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KElPUykKKyAgICB2b2lkIHNlbmRJT0hJREV2ZW50KElPSElERXZlbnRSZWYpOworICAgIHZvaWQg
c2VuZElPSElES2V5Ym9hcmRFdmVudCh1aW50NjRfdCB0aW1lc3RhbXAsIHVpbnQzMl90IHVzYWdl
LCBib29sIGlzS2V5RG93bik7CisgICAgdm9pZCB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQo
ZG91YmxlIHRpbWVvdXRJblNlY29uZHMsIHVuc2lnbmVkIGNvbmRpdGlvbnMpIGNvbnN0OworICAg
IGJvb2wgc2hvdWxkQ29udGludWVXYWl0aW5nKHVuc2lnbmVkIGNvbmRpdGlvbnMpIGNvbnN0Owor
ICAgIHZvaWQgZm9yY2VQYWdlUmVwYWludEFuZFdhaXRJZk5lY2Vzc2FyeSgpOworICAgIHN0YXRp
YyB2b2lkIGZvcmNlUGFnZVJlcGFpbnRDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0
KTsKKyAgICAvLyBUb3VjaCBldmVudCBzeW50aGVzaXppbmcgaGVscGVycy4KKyAgICBJT0hJREV2
ZW50UmVmIGNyZWF0ZVRvdWNoUG9pbnQoVG91Y2hQb2ludEluZm8qLCBib29sIGlzVG91Y2hpbmcs
IGludCBpbmRleCk7CisgICAgaW50IG5leHRBdmFpbGFibGVUb3VjaFBvaW50SW5kZXgoKSBjb25z
dDsKKyAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50SW5kZXgoaW50IGluZGV4KTsKKyNlbmRpZgor
CiAgICAgZG91YmxlIG1fdGltZTsKICAgICBXS1BvaW50IG1fcG9zaXRpb247CiAgICAgYm9vbCBt
X2xlZnRNb3VzZUJ1dHRvbkRvd247CkBAIC0xNDYsNiArMTc4LDE3IEBAIHByaXZhdGU6CiAgICAg
RWluYV9MaXN0KiBtX3RvdWNoUG9pbnRzOwogI2VuZGlmCiAjZW5kaWYKKworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBSZXRhaW5QdHI8S2V5Ym9hcmRTdGF0ZUxpc3RlbmVyPiBtX2tleWJvYXJkTGlz
dGVuZXI7CisgICAgdWludDMyX3QgbV9rZXlXaW5kb3dDb250ZXh0SUQgeyAwIH07CisgICAgYm9v
bCBtX2RpZFBlcmZvcm1Jbml0aWFsUmVwYWludCB7IGZhbHNlIH07CisgICAgLy8gVG91Y2ggc3Rh
dGUgdmFyaWFibGVzLgorICAgIGludCBtX3RvdWNoUG9pbnRNYWpvclJhZGl1cyB7IDUgfTsKKyAg
ICBpbnQgbV90b3VjaFBvaW50TWlub3JSYWRpdXMgeyA1IH07CisgICAgSGFzaE1hcDxpbnQsIHN0
ZDo6dW5pcXVlX3B0cjxUb3VjaFBvaW50SW5mbz4+IG1fdG91Y2hQb2ludEluZm9CeUluZGV4Owor
ICAgIGludCBtX2xhc3RVc2VkVG91Y2hJbmRleCB7IDAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCBjOWIxYWQ5
NzEyMDlmMDVlMDE4OTk2NzZmMGQ4ZjFkZDM4MmY5MzUyLi5iM2NlOTRiYWQ2OTgwMjg4OTZiNGRk
ZmI3MWQxYjI2OThjNDE4MTFmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAg
LTIxNyw2ICsyMTcsOSBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlRG93bihp
bnQgYnV0dG9uLCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXkpCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOwogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgY3JlYXRlTW91
c2VNZXNzYWdlQm9keShNb3VzZURvd24sIGJ1dHRvbiwgbW9kaWZpZXJzKSk7CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgd2FpdEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkSWZOZWNlc3Nhcnko
KTsKKyNlbmRpZgogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0
aW5nKHBhZ2UsIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIDApOwogfQogCkBAIC0zODMsNiArMzg2LDkgQEAgdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmll
ckFycmF5LAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIp
KTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBrZXlEb3duTWVzc2Fn
ZUJvZHkgPSBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBtb2RpZmllcnMsIGxvY2F0aW9u
KTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB3YWl0Rm9yTGF5ZXJGbHVzaFRvQmVTY2hlZHVs
ZWRJZk5lY2Vzc2FyeSgpOworI2VuZGlmCiAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFn
ZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJvZHkuZ2V0
KCksIDApOwogfQogCkBAIC02NjQsNiArNjcwLDE4IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxs
CiAgICAgV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJh
Y2socGFnZSwgZXhlY3V0ZUNhbGxiYWNrLCBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhLnJl
bGVhc2UoKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6OndhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZElmTmVjZXNzYXJ5KCkKK3sKKyAg
ICBpZiAobV9oYXNXYWl0ZWRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVQYWdlV2FpdEZvckRyYXdpbmdBcmVh
VXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVseShwYWdlKTsKKyAgICBtX2hhc1dh
aXRlZEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkID0gdHJ1ZTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6YWRkVG91
Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4
IGMyM2MzNmRmYWM1NTg0Zjg1MWM1ZjYwZmI0ZDU2MjJjZmY0MjAwNGEuLjZmZjBkNjJkNzkzOGYx
N2M1MDNkY2M2MTI2MjdkNDNlYTgwODhmODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5o
CkBAIC04OCw3ICs4OCwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcigpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgd2FpdEZvckxheWVy
Rmx1c2hUb0JlU2NoZWR1bGVkSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAgV0tQb2ludCBt
X3Bvc2l0aW9uOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIG1faGFzV2FpdGVkRm9yTGF5
ZXJGbHVzaFRvQmVTY2hlZHVsZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCmluZGV4IGFjNTRhMWM2ZDZk
OGMyYzUwZTA4MWRiNWJkYjgyMWQzZTYwOGVjMmQuLmVhMjU0NzdkZDE3MTBlYTljNjkzODBlOGQz
MjM5M2M5OGYwZjlkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQpAQCAtMjYs
MTQgKzI2LDgzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkV2ZW50U2VuZGVyUHJv
eHkuaCIKIAorI2ltcG9ydCA8QmFja0JvYXJkU2VydmljZXMvQktTSElERXZlbnRfUHJpdmF0ZS5o
PgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5oPgorI2ltcG9ydCA8SU9LaXQv
aGlkL0lPSElEVXNhZ2VUYWJsZXMuaD4KKyNpbXBvcnQgPG1hY2gvbWFjaF90aW1lLmg+CiAjaW1w
b3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2lt
cG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBv
cnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlLZXli
b2FyZEltcGwuaD4KKyNpbXBvcnQgPFVJS2l0L1VJV2luZG93X1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tTdHJpbmcuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXcuaD4KKworc3RhdGljIGNvbnN0IGludCBmaW5nZXJJZGVudGlmaWVy
c1ttYXhOdW1Ub3VjaFBvaW50c10gPSB7IDIsIDMsIDQsIDUsIDEgfTsKKworaW50IGZpbmdlcklk
ZW50aXR5Rm9yVG91Y2hQb2ludEluZGV4KGludCBpbmRleCkKK3sKKyAgICBBU1NFUlQoMCA8IGlu
ZGV4ICYmIGluZGV4IDw9IG1heE51bVRvdWNoUG9pbnRzKTsKKyAgICByZXR1cm4gZmluZ2VySWRl
bnRpZmllcnNbaW5kZXggLSAxXTsKK30KKworVG91Y2hQb2ludEluZm86OlRvdWNoUG9pbnRJbmZv
KGludCB4LCBpbnQgeSkKKyAgICA6IHgoeCkKKyAgICAsIHkoeSkKKyAgICAsIG1hY2hUaW1lKG1h
Y2hfYWJzb2x1dGVfdGltZSgpKQorICAgICwgaXNUb3VjaGluZyh0cnVlKQoreworfQorCitAaW50
ZXJmYWNlIEtleWJvYXJkU3RhdGVMaXN0ZW5lciA6IE5TT2JqZWN0CitAcHJvcGVydHkgQk9PTCBp
c0tleWJvYXJkUmVhZHk7CistIChpbnN0YW5jZXR5cGUpaW5pdDsKKy0gKHZvaWQpa2V5Ym9hcmRX
YXNTaG93bjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRpb247CistICh2b2lkKWtleWJvYXJk
V2FzSGlkZGVuOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlvbjsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIEtleWJvYXJkU3RhdGVMaXN0ZW5lciA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5
cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpIHsKKyAg
ICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihrZXlib2FyZFdhc1Nob3duOikgbmFtZTpVSUtleWJvYXJk
RGlkU2hvd05vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihrZXlib2FyZFdhc0hpZGRlbjopIG5hbWU6VUlLZXlib2FyZERpZEhpZGVOb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07CisgICAgICAgIHNlbGYuaXNLZXlib2FyZFJlYWR5ID0gTk87CisgICAgfQor
ICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWtleWJvYXJkV2FzU2hvd246KE5TTm90aWZp
Y2F0aW9uKilhTm90aWZpY2F0aW9uCit7CisgICAgLy8gUHJlcGFyZSBVSUtpdCBmb3Igc3luY2hy
b25vdXMgdGV4dCBpbnB1dCBldmVudCBwcm9jZXNzaW5nLgorICAgIFtbVUlLZXlib2FyZEltcGwg
c2hhcmVkSW5zdGFuY2VdIHNldEV4cGVjdHNTeW5jaHJvbm91c1RleHRJbnB1dDpZRVNdOworICAg
IHNlbGYuaXNLZXlib2FyZFJlYWR5ID0gWUVTOworfQorCistICh2b2lkKWtleWJvYXJkV2FzSGlk
ZGVuOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlvbgoreworICAgIHNlbGYuaXNLZXlib2Fy
ZFJlYWR5ID0gTk87Cit9CitAZW5kCiAKIG5hbWVzcGFjZSBXVFIgewogCitlbnVtIHsKKyAgICBL
ZXlib2FyZElzUmVhZHkgPSAxIDw8IDAsCisgICAgSElERXZlbnRRdWV1ZUlzRW1wdHkgPSAxIDw8
IDEsCisgICAgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkID0gMSA8PCAyLAorICAgIEluaXRpYWxS
ZXBhaW50SGFzQ29tcGxldGVkID0gMSA8PCAzCit9OwordHlwZWRlZiB1bnNpZ25lZCBXYWl0T25D
b25kaXRpb25GbGFnczsKKworLy8gVGhlc2UgdGltZW91dHMgKGluIHNlY29uZHMpIGFyZSBhcmJp
dHJhcnksIGJ1dCBhcmUgbXVjaCBsb25nZXIgdGhhbiBXS1RSIHNob3VsZCByZXF1aXJlLgorY29u
c3QgZG91YmxlIHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVxdWV1ZWQgPSAxMDsKK2NvbnN0IGRv
dWJsZSB0aW1lb3V0RGVsYXlGb3JLZXlib2FyZFJlYWR5ID0gMTA7Citjb25zdCBkb3VibGUgdGlt
ZW91dERlbGF5Rm9ySW5pdGlhbFJlcGFpbnQgPSAxMDsKKwogRXZlbnRTZW5kZXJQcm94eTo6RXZl
bnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCiAgICAgOiBtX3Rl
c3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQogICAgICwgbV90aW1lKDApCkBAIC00NCw4ICsx
MTMsOCBAQCBFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVy
KiB0ZXN0Q29udHJvbGxlcikKICAgICAsIG1fY2xpY2tQb3NpdGlvbigpCiAgICAgLCBtX2NsaWNr
QnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKICAgICAsIGV2ZW50TnVtYmVyKDAp
CisgICAgLCBtX2tleWJvYXJkTGlzdGVuZXIoYWRvcHROUyhbW0tleWJvYXJkU3RhdGVMaXN0ZW5l
ciBhbGxvY10gaW5pdF0pKQogewotICAgIFVOVVNFRF9QQVJBTShtX3Rlc3RDb250cm9sbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0obV9sZWZ0TW91c2VCdXR0b25Eb3duKTsKICAgICBVTlVTRURfUEFS
QU0oZXZlbnROdW1iZXIpOwogfQpAQCAtNjgsMjkgKzEzNywyNTggQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pCiAgICAgbV9jbGlj
a0J1dHRvbiA9IGJ1dHRvbjsKIH0KIAorYm9vbCBFdmVudFNlbmRlclByb3h5OjpzaG91bGRDb250
aW51ZVdhaXRpbmcodW5zaWduZWQgY29uZGl0aW9ucykgY29uc3QKK3sKKyAgICBib29sIHNob3Vs
ZFdhaXQgPSBmYWxzZTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEtleWJvYXJkSXNSZWFkeSkKKyAg
ICAgICAgc2hvdWxkV2FpdCB8PSAhW21fa2V5Ym9hcmRMaXN0ZW5lciBpc0tleWJvYXJkUmVhZHld
OworICAgIGlmIChjb25kaXRpb25zICYgSElERXZlbnRRdWV1ZUlzRW1wdHkpCisgICAgICAgIHNo
b3VsZFdhaXQgfD0gW1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBudW1iZXJPZlF1
ZXVlZEhJREV2ZW50c10gPiAwOworICAgIGlmIChjb25kaXRpb25zICYgS2V5SW5wdXRIYXNCZWVu
UHJvY2Vzc2VkKQorICAgICAgICBzaG91bGRXYWl0IHw9IFtbVUlLZXlib2FyZEltcGwgc2hhcmVk
SW5zdGFuY2VdIGhhc1BlbmRpbmdJbnB1dENvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBpZiAoY29u
ZGl0aW9ucyAmIEluaXRpYWxSZXBhaW50SGFzQ29tcGxldGVkKQorICAgICAgICBzaG91bGRXYWl0
IHw9ICFtX2RpZFBlcmZvcm1Jbml0aWFsUmVwYWludDsKKyAgICByZXR1cm4gc2hvdWxkV2FpdDsK
K30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIFdLUGFnZUZvcmNlUmVwYWludChtX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wYWdlKCksIHRoaXMsIEV2ZW50U2VuZGVyUHJveHk6OmZvcmNlUGFnZVJlcGFp
bnRDYWxsYmFjayk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxh
eUZvckluaXRpYWxSZXBhaW50LCBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCk7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KGRvdWJsZSB0
aW1lb3V0SW5TZWNvbmRzLCB1bnNpZ25lZCBjb25kaXRpb25zKSBjb25zdAoreworICAgIE5TRGF0
ZSAqdGltZW91dERhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6dGlt
ZW91dEluU2Vjb25kc107CisgICAgd2hpbGUgKFt0aW1lb3V0RGF0ZSBjb21wYXJlOltOU0RhdGUg
ZGF0ZV1dID09IE5TT3JkZXJlZERlc2NlbmRpbmcgJiYgc2hvdWxkQ29udGludWVXYWl0aW5nKGNv
bmRpdGlvbnMpKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpO
U0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOnRpbWVvdXREYXRlXTsKK30KKwordm9pZCBF
dmVudFNlbmRlclByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2soV0tFcnJvclJlZiBlcnJv
ciwgdm9pZCogY29udGV4dCkKK3sKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0YXRpY19jYXN0PEV2ZW50U2VuZGVyUHJveHkqPihjb250ZXh0KS0+bV9kaWRQZXJmb3Jt
SW5pdGlhbFJlcGFpbnQgPSB0cnVlOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNl
RG93bih1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQog
ewotICAgIC8vIFdyaXRlIG1lLgorICAgIGFkZFRvdWNoUG9pbnQobV9wb3NpdGlvbi54LCBtX3Bv
c2l0aW9uLnkpOworICAgIHRvdWNoU3RhcnQoKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5
Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgQVNTRVJUKG1fbGFzdFVzZWRUb3VjaEluZGV4
KTsKKyAgICByZWxlYXNlVG91Y2hQb2ludChtX2xhc3RVc2VkVG91Y2hJbmRleCk7CisgICAgdG91
Y2hFbmQoKTsKKyAgICBjbGVhclRvdWNoUG9pbnRzKCk7CisgICAgbV9sYXN0VXNlZFRvdWNoSW5k
ZXggPSAwOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4
LCBkb3VibGUgeSkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBtX3Bvc2l0aW9uLnggPSB4Owor
ICAgIG1fcG9zaXRpb24ueSA9IHkgKyA0NDsgLy8gRklYTUUgVGhpcyBoYWNrIG9ubHkgIndvcmtz
IiB3aGVuIG5vdCB6b29tZWQgaW4uIEkgbmVlZCB0byBmaW5kIGEgd2F5IHRvIHJlbGlhYmx5IG1h
cCBmcm9tIGRvY3VtZW50IGNvb3JkcyB0byBzY3JlZW4gY29vcmRzLgogfQogCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCiB7Ci0gICAgbV90aW1l
ICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKKyAgICAvLyBXcml0ZSBtZS4KK30KKworc3RhdGlj
IGlubGluZSBib29sIHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3RlcihOU1N0
cmluZyoga2V5KQoreworICAgIGlmIChba2V5IGxlbmd0aF0gIT0gMSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGludCBrZXlDb2RlID0gW2tleSBjaGFyYWN0ZXJBdEluZGV4OjBdOworICAg
IGlmICg2NSA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gOTApCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgIGNhc2UgJ2AnOgorICAgIGNhc2UgJyEnOgor
ICAgIGNhc2UgJ0AnOgorICAgIGNhc2UgJyMnOgorICAgIGNhc2UgJyQnOgorICAgIGNhc2UgJyUn
OgorICAgIGNhc2UgJ14nOgorICAgIGNhc2UgJyYnOgorICAgIGNhc2UgJyonOgorICAgIGNhc2Ug
JygnOgorICAgIGNhc2UgJyknOgorICAgIGNhc2UgJ18nOgorICAgIGNhc2UgJysnOgorICAgIGNh
c2UgJ3snOgorICAgIGNhc2UgJ30nOgorICAgIGNhc2UgJ3wnOgorICAgIGNhc2UgJzonOgorICAg
IGNhc2UgJyInOgorICAgIGNhc2UgJzwnOgorICAgIGNhc2UgJz4nOgorICAgIGNhc2UgJz8nOgor
ICAgIGNhc2UgJ34nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorc3RhdGljIGlubGluZSB1aW50MzJfdCBoaWRVc2FnZUNvZGVGb3JDaGFyYWN0ZXIo
TlNTdHJpbmcqIGtleSkKK3sKKyAgICBjb25zdCBpbnQgdXBwZXJjYXNlQWxwaGFiZXRpY09mZnNl
dCA9ICdBJyAtIGtISURVc2FnZV9LZXlib2FyZEE7CisgICAgY29uc3QgaW50IGxvd2VyY2FzZUFs
cGhhYmV0aWNPZmZzZXQgPSAnYScgLSBrSElEVXNhZ2VfS2V5Ym9hcmRBOworICAgIGNvbnN0IGlu
dCBudW1lcmljTm9uWmVyb09mZnNldCA9ICcxJyAtIGtISURVc2FnZV9LZXlib2FyZDE7CisgICAg
aWYgKFtrZXkgbGVuZ3RoXSA9PSAxKSB7CisgICAgICAgIC8vIEhhbmRsZSBhbHBoYW51bWVyaWMg
Y2hhcmFjdGVycyBhbmQgYmFzaWMgc3ltYm9scy4KKyAgICAgICAgaW50IGtleUNvZGUgPSBba2V5
IGNoYXJhY3RlckF0SW5kZXg6MF07CisgICAgICAgIGlmICg5NyA8PSBrZXlDb2RlICYmIGtleUNv
ZGUgPD0gMTIyKSAvLyBIYW5kbGUgYS16LgorICAgICAgICAgICAgcmV0dXJuIGtleUNvZGUgLSBs
b3dlcmNhc2VBbHBoYWJldGljT2Zmc2V0OworCisgICAgICAgIGlmICg2NSA8PSBrZXlDb2RlICYm
IGtleUNvZGUgPD0gOTApIC8vIEhhbmRsZSBBLVouCisgICAgICAgICAgICByZXR1cm4ga2V5Q29k
ZSAtIHVwcGVyY2FzZUFscGhhYmV0aWNPZmZzZXQ7CisKKyAgICAgICAgaWYgKDQ5IDw9IGtleUNv
ZGUgJiYga2V5Q29kZSA8PSA1NykgLy8gSGFuZGxlIDEtOS4KKyAgICAgICAgICAgIHJldHVybiBr
ZXlDb2RlIC0gbnVtZXJpY05vblplcm9PZmZzZXQ7CisKKyAgICAgICAgLy8gSGFuZGxlIGFsbCBv
dGhlciBjYXNlcy4KKyAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgICAgIGNhc2UgJ2An
OgorICAgICAgICBjYXNlICd+JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmRHcmF2ZUFjY2VudEFuZFRpbGRlOworICAgICAgICBjYXNlICchJzoKKyAgICAgICAgICAgIHJl
dHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQxOworICAgICAgICBjYXNlICdAJzoKKyAgICAgICAgICAg
IHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQyOworICAgICAgICBjYXNlICcjJzoKKyAgICAgICAg
ICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQzOworICAgICAgICBjYXNlICckJzoKKyAgICAg
ICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ0OworICAgICAgICBjYXNlICclJzoKKyAg
ICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ1OworICAgICAgICBjYXNlICdeJzoK
KyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ2OworICAgICAgICBjYXNlICcm
JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ3OworICAgICAgICBjYXNl
ICcqJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ4OworICAgICAgICBj
YXNlICcoJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQ5OworICAgICAg
ICBjYXNlICcpJzoKKyAgICAgICAgY2FzZSAnMCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkMDsKKyAgICAgICAgY2FzZSAnLSc6CisgICAgICAgIGNhc2UgJ18nOgorICAg
ICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEh5cGhlbjsKKyAgICAgICAgY2FzZSAn
PSc6CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXli
b2FyZEVxdWFsU2lnbjsKKyAgICAgICAgY2FzZSAnXHQnOgorICAgICAgICAgICAgcmV0dXJuIGtI
SURVc2FnZV9LZXlib2FyZFRhYjsKKyAgICAgICAgY2FzZSAnWyc6CisgICAgICAgIGNhc2UgJ3sn
OgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZE9wZW5CcmFja2V0OworICAg
ICAgICBjYXNlICddJzoKKyAgICAgICAgY2FzZSAnfSc6CisgICAgICAgICAgICByZXR1cm4ga0hJ
RFVzYWdlX0tleWJvYXJkQ2xvc2VCcmFja2V0OworICAgICAgICBjYXNlICdcXCc6CisgICAgICAg
IGNhc2UgJ3wnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEJhY2tzbGFz
aDsKKyAgICAgICAgY2FzZSAnOyc6CisgICAgICAgIGNhc2UgJzonOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZFNlbWljb2xvbjsKKyAgICAgICAgY2FzZSAnXCcnOgorICAg
ICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRRdW90
ZTsKKyAgICAgICAgY2FzZSAnXHInOgorICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICBy
ZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmV0dXJuT3JFbnRlcjsKKyAgICAgICAgY2FzZSAnLCc6
CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2Fy
ZENvbW1hOworICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgY2FzZSAnPic6CisgICAgICAgICAg
ICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUGVyaW9kOworICAgICAgICBjYXNlICcvJzoKKyAg
ICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkU2xh
c2g7CisgICAgICAgIGNhc2UgJyAnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXli
b2FyZFNwYWNlYmFyOworICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGludCBmdW5jdGlvbktl
eU9mZnNldCA9IGtISURVc2FnZV9LZXlib2FyZEYxOworICAgIGZvciAoaW50IGZ1bmN0aW9uS2V5
SW5kZXggPSAxOyBmdW5jdGlvbktleUluZGV4IDw9IDEyOyArK2Z1bmN0aW9uS2V5SW5kZXgpIHsK
KyAgICAgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiRiVkIiwgZnVuY3Rpb25LZXlJbmRleF1dKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uS2V5T2Zmc2V0ICsgZnVuY3Rpb25LZXlJbmRleCAtIDE7CisgICAgfQorICAgIGlmIChba2V5
IGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tl
eWJvYXJkRXNjYXBlOworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAInJldHVybiJdIHx8
IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZW50ZXIiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2Fn
ZV9LZXlib2FyZFJldHVybk9yRW50ZXI7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0QXJyb3c7
CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKQorICAgICAgICBy
ZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmlnaHRBcnJvdzsKKyAgICBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJ1cEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRV
cEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKQorICAg
ICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRG93bkFycm93OworICAgIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJv
YXJkRGVsZXRlT3JCYWNrc3BhY2U7CisgICAgLy8gVGhlIHNpbXVsYXRvciBrZXlib2FyZCBpbnRl
cnByZXRzIGJvdGggbGVmdCBhbmQgcmlnaHQgbW9kaWZpZXIga2V5cyB1c2luZyB0aGUgbGVmdCB2
ZXJzaW9uIG9mIHRoZSB1c2FnZSBjb2RlLgorICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
ImxlZnRDb250cm9sIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkK
KyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRDb250cm9sOworICAgIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRTaGlmdCJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkTGVmdFNo
aWZ0OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSB8fCBba2V5IGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5
Ym9hcmRMZWZ0QWx0OworCisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1
bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBmb3JjZVBhZ2VS
ZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1l
b3V0KHRpbWVvdXREZWxheUZvcktleWJvYXJkUmVhZHksIEtleWJvYXJkSXNSZWFkeSk7CisgICAg
TlNTdHJpbmcqIGNoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzp0b1NURChr
ZXkpLmNfc3RyKCkgZW5jb2Rpbmc6W05TU3RyaW5nIGRlZmF1bHRDU3RyaW5nRW5jb2RpbmddXTsK
KyAgICBib29sIHNob3VsZFdyYXBXaXRoU2hpZnQgPSBzaG91bGRXcmFwV2l0aFNoaWZ0S2V5RXZl
bnRGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKKyAgICB1aW50MzJfdCB1c2FnZSA9IGhpZFVzYWdl
Q29kZUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgIHVpbnQ2NF90IGFic29sdXRlTWFjaFRp
bWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKKyAgICBpZiAoc2hvdWxkV3JhcFdpdGhTaGlmdCkK
KyAgICAgICAgc2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCBrSElEVXNh
Z2VfS2V5Ym9hcmRMZWZ0U2hpZnQsIHRydWUpOworCisgICAgc2VuZElPSElES2V5Ym9hcmRFdmVu
dChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgdHJ1ZSk7CisgICAgc2VuZElPSElES2V5Ym9hcmRF
dmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgZmFsc2UpOworCisgICAgaWYgKHNob3VsZFdy
YXBXaXRoU2hpZnQpCisgICAgICAgIHNlbmRJT0hJREtleWJvYXJkRXZlbnQoYWJzb2x1dGVNYWNo
VGltZSwga0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0LCBmYWxzZSk7CisKKyAgICB3YWl0T25D
b25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1ZXVlZCwgS2V5
SW5wdXRIYXNCZWVuUHJvY2Vzc2VkIHwgSElERXZlbnRRdWV1ZUlzRW1wdHkpOworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KElPSElERXZlbnRSZWYgZXZlbnQpCit7
CisgICAgQVNTRVJUKGV2ZW50KTsKKyAgICBpZiAoIW1fa2V5V2luZG93Q29udGV4dElEKSB7Cisg
ICAgICAgIC8vIEZJWE1FIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2UgdG91Y2ggZXZlbnRzIHdvcmsu
IFdoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHdpbmRvd3M/CisgICAgICAgIEFTU0VSVChbW1VJ
QXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLndpbmRvd3MgY291bnRdID4gMCk7CisgICAg
ICAgIG1fa2V5V2luZG93Q29udGV4dElEID0gW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRp
b25dLndpbmRvd3NbMF0uX2NvbnRleHRJZDsKKyAgICB9CisgICAgaWYgKElPSElERXZlbnRHZXRU
eXBlKGV2ZW50KSA9PSBrSU9ISURFdmVudFR5cGVEaWdpdGl6ZXIpCisgICAgICAgIEJLU0hJREV2
ZW50U2V0RGlnaXRpemVySW5mbyhldmVudCwgbV9rZXlXaW5kb3dDb250ZXh0SUQsIGZhbHNlLCBm
YWxzZSwgTlVMTCwgMCwgMCk7CisKKyAgICBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRp
b25dIF9lbnF1ZXVlSElERXZlbnQ6ZXZlbnRdOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnNlbmRJT0hJREtleWJvYXJkRXZlbnQodWludDY0X3QgdGltZXN0YW1wLCB1aW50MzJfdCB1c2Fn
ZSwgYm9vbCBpc0tleURvd24pCit7CisgICAgc2VuZElPSElERXZlbnQoSU9ISURFdmVudENyZWF0
ZUtleWJvYXJkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgdGltZXN0YW1wLAor
ICAgICAgICBrSElEUGFnZV9LZXlib2FyZE9yS2V5cGFkLAorICAgICAgICB1c2FnZSwKKyAgICAg
ICAgaXNLZXlEb3duLAorICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpKTsKIH0KIAogdm9p
ZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKQEAgLTExNiwx
MiArNDE0LDE5IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y29udGludW91c01vdXNlU2Nyb2xs
QnkoaW50IHgsIGludCB5LCBib29sIHBhZ2VkKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewotICAg
IC8vIFdyaXRlIG1lLgorICAgIGludCBpbmRleCA9IG5leHRBdmFpbGFibGVUb3VjaFBvaW50SW5k
ZXgoKTsKKyAgICBBU1NFUlQoaW5kZXgpOworICAgIAorICAgIG1fdG91Y2hQb2ludEluZm9CeUlu
ZGV4LmFkZChpbmRleCwgc3RkOjptYWtlX3VuaXF1ZTxUb3VjaFBvaW50SW5mbz4oeCwgeSkpOwor
ICAgIG1fbGFzdFVzZWRUb3VjaEluZGV4ID0gaW5kZXg7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6dXBkYXRlVG91Y2hQb2ludChpbnQgaW5kZXgsIGludCB4LCBpbnQgeSkKIHsKLSAgICAv
LyBXcml0ZSBtZS4KKyAgICBBU1NFUlQobV90b3VjaFBvaW50SW5mb0J5SW5kZXguY29udGFpbnMo
aW5kZXgpKTsKKyAgICBhdXRvIGluZm8gPSBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5nZXQoaW5k
ZXgpOworICAgIGluZm8tPnggPSB4OworICAgIGluZm8tPnkgPSB5OwogfQogCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycywgYm9vbCBlbmFi
bGUpCkBAIC0xMzEsMTIgKzQzNiwzNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNo
TW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycywgYm9vbCBlbmFibGUpCiAKIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyhpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1kpCiB7
Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgbV90b3VjaFBvaW50TWFqb3JSYWRpdXMgPSBzdGQ6Om1h
eChyYWRpdXNYLCByYWRpdXNZKTsKKyAgICBtX3RvdWNoUG9pbnRNaW5vclJhZGl1cyA9IHN0ZDo6
bWluKHJhZGl1c1gsIHJhZGl1c1kpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNo
U3RhcnQoKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0
SWZOZWNlc3NhcnkoKTsKKyAgICBJT0hJREV2ZW50UmVmIGV2ZW50ID0gSU9ISURFdmVudENyZWF0
ZURpZ2l0aXplckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIG1hY2hfYWJzb2x1
dGVfdGltZSgpLAorICAgICAgICBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUhhbmQsCisg
ICAgICAgIDAsIC8vIEluZGV4CisgICAgICAgIDAsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJ
RERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAgICAgMCwgLy8gQnV0dG9u
IG1hc2sKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHgtYXhpcykKKyAgICAgICAgMCwgLy8gUG9z
aXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHotYXhpcykKKyAgICAgICAg
MCwgLy8gUHJlc3N1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgZmFsc2UsIC8vIElz
IHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIHRydWUsIC8vIElzIHRyYW5zZHVjZXIgdG91
Y2hpbmc/CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgCisgICAgZm9yIChh
dXRvIGl0ID0gbV90b3VjaFBvaW50SW5mb0J5SW5kZXguYmVnaW4oKSwgZW5kID0gbV90b3VjaFBv
aW50SW5mb0J5SW5kZXguZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgSU9ISURFdmVu
dEFwcGVuZEV2ZW50KGV2ZW50LCBjcmVhdGVUb3VjaFBvaW50KGl0LT52YWx1ZS5nZXQoKSwgdHJ1
ZSwgaXQtPmtleSksIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgCisgICAgc2VuZElPSElE
RXZlbnQoZXZlbnQpOworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0aW1lb3V0RGVs
YXlGb3JISURFdmVudERlcXVldWVkLCBISURFdmVudFF1ZXVlSXNFbXB0eSk7CiB9CiAKIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKQEAgLTE0Niw3ICs0NzMsMjcgQEAgdm9pZCBF
dmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoRW5kKCkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBJT0hJREV2ZW50UmVmIGV2ZW50ID0g
SU9ISURFdmVudENyZWF0ZURpZ2l0aXplckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAg
ICAgIG1hY2hfYWJzb2x1dGVfdGltZSgpLAorICAgICAgICBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1
Y2VyVHlwZUhhbmQsCisgICAgICAgIDAsIC8vIEluZGV4CisgICAgICAgIDAsIC8vIElkZW50aXR5
CisgICAgICAgIGtJT0hJRERpZ2l0aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAg
ICAgMCwgLy8gQnV0dG9uIG1hc2sKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHgtYXhpcykKKyAg
ICAgICAgMCwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHot
YXhpcykKKyAgICAgICAgMCwgLy8gUHJlc3N1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAg
ICAgZmFsc2UsIC8vIElzIHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIGZhbHNlLCAvLyBJ
cyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOwor
CisgICAgZm9yIChhdXRvIGl0ID0gbV90b3VjaFBvaW50SW5mb0J5SW5kZXguYmVnaW4oKSwgZW5k
ID0gbV90b3VjaFBvaW50SW5mb0J5SW5kZXguZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGV2ZW50LCBjcmVhdGVUb3VjaFBvaW50KGl0LT52YWx1
ZS5nZXQoKSwgZmFsc2UsIGl0LT5rZXkpLCBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworCisgICAg
c2VuZElPSElERXZlbnQoZXZlbnQpOworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0
aW1lb3V0RGVsYXlGb3JISURFdmVudERlcXVldWVkLCBISURFdmVudFF1ZXVlSXNFbXB0eSk7CiB9
CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQpAQCAtMTU2LDEyICs1MDMs
MTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCgpCiAKIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cygpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAg
bV90b3VjaFBvaW50SW5mb0J5SW5kZXguY2xlYXIoKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclBy
b3h5OjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisg
ICAgQVNTRVJUKG1fdG91Y2hQb2ludEluZm9CeUluZGV4LmNvbnRhaW5zKGluZGV4KSk7CisgICAg
YXV0byBpbmZvID0gbV90b3VjaFBvaW50SW5mb0J5SW5kZXguZ2V0KGluZGV4KTsKKyAgICBpbmZv
LT5pc1RvdWNoaW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2Vs
VG91Y2hQb2ludChpbnQgaW5kZXgpCkBAIC0xNzAsNCArNTE5LDM1IEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6Y2FuY2VsVG91Y2hQb2ludChpbnQgaW5kZXgpCiB9CiAjZW5kaWYKIAorLy8gUmV0
dXJucyBhIHZhbHVlIGJldHdlZW4gMSB0aHJvdWdoIDUgaW5kaWNhdGluZyB0aGUgaW5kZXggb2Yg
dGhlIHRvdWNoIHBvaW50LAorLy8gb3IgMCBpZiB3ZSBhcmUgYWxyZWFkeSB0cmFja2luZyB0aGUg
bWF4aW11bSBudW1uYmVyIG9mIHRvdWNoIHBvaW50cy4KK2ludCBFdmVudFNlbmRlclByb3h5Ojpu
ZXh0QXZhaWxhYmxlVG91Y2hQb2ludEluZGV4KCkgY29uc3QKK3sKKyAgICBmb3IgKGludCBpbmRl
eCA9IDE7IGluZGV4IDw9IG1heE51bVRvdWNoUG9pbnRzOyArK2luZGV4KSB7CisgICAgICAgIGlm
ICghbV90b3VjaFBvaW50SW5mb0J5SW5kZXguY29udGFpbnMoaW5kZXgpKQorICAgICAgICAgICAg
cmV0dXJuIGluZGV4OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworSU9ISURFdmVudFJlZiBF
dmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3VjaFBvaW50KFRvdWNoUG9pbnRJbmZvKiBpbmZvLCBi
b29sIGlzVG91Y2hpbmcsIGludCBpbmRleCkKK3sKKyAgICBJT0hJREV2ZW50UmVmIGV2ZW50ID0g
SU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQs
CisgICAgICAgIGluZm8tPm1hY2hUaW1lLAorICAgICAgICBpbmRleCwKKyAgICAgICAgZmluZ2Vy
SWRlbnRpdHlGb3JUb3VjaFBvaW50SW5kZXgoaW5kZXgpLAorICAgICAgICBrSU9ISUREaWdpdGl6
ZXJFdmVudFRvdWNoLCAvLyBFdmVudCBtYXNrCisgICAgICAgIGluZm8tPngsIC8vIFBvc2l0aW9u
ICh4LWF4aXMpCisgICAgICAgIGluZm8tPnksIC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAg
IDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXN1cmUKKyAgICAgICAg
MCwgLy8gVHdpc3QKKyAgICAgICAgaXNUb3VjaGluZywgLy8gSXMgdHJhbnNkdWNlciBpbiByYW5n
ZT8KKyAgICAgICAgaXNUb3VjaGluZywgLy8gSXMgdHJhbnNkdWNlciB0b3VjaGluZz8KKyAgICAg
ICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShl
dmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1ham9yUmFkaXVzLCBtX3RvdWNoUG9pbnRN
YWpvclJhZGl1cyk7CisgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoZXZlbnQsIGtJT0hJREV2
ZW50RmllbGREaWdpdGl6ZXJNaW5vclJhZGl1cywgbV90b3VjaFBvaW50TWlub3JSYWRpdXMpOwor
ICAgIHJldHVybiBldmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1Y2JmMWMyZWFiODNkYzkzOGNlMjljMjY4ZTRjMjJm
MmNjNmFkMDEuLjhlZjdmNDMzY2Y0NDQ5NjQ5NTYxOWY5NzdlMjE5ZjBhYTFhOWRiYjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OCwxMCArNDgsMTMgQEAKIAkJMjlB
OEZDREQxNDVGMDMzNzAwOTA0NUE2IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNF
MTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAq
LzsgfTsKIAkJMjlBOEZDRTIxNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UuY3BwICovOyB9OwogCQkyOUE4RkNFNTE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlTWFjLm1tICovOyB9OworCQkyRTBDNzdDMzFCOUY1RTg5MDA1NjRFQTkgLyog
SU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayAqLzsg
fTsKKwkJMkUwQzc3QzQxQjlGNUU4RjAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMEM3N0MyMUI5RjVF
ODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTJFMEM3N0M2MUI5RjVFQjUw
MDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkg
LyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICovOyB9OworCQkyRTBDNzdDNzFCOUY1RUJC
MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5
IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayAqLzsgfTsKIAkJMkUzNEM5MDAxOEI2ODgw
ODAwMDA2N0JCIC8qIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5idW5kbGUgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjUxODYyMTFEMTVE
NTQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlICovOyB9
OwogCQkyRTYzRUQ4QTE4OTFBRDdFMDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYz
RUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gKi87
IH07CiAJCTJFNjNFRDhCMTg5MUFEN0UwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NjNFRDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAq
LzsgfTsKLQkJMkU2M0VEOEUxODkxQUQ3RTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3
QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLzsgfTsKIAkJMkU2
M0VEOEYxODkxQUQ3RTAwMkE3QUZDIC8qIEluamVjdGVkQnVuZGxlSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2M0VEN0IxODkxQUNFOTAwMkE3
QUZDIC8qIEluamVjdGVkQnVuZGxlSU9TLm1tICovOyB9OwogCQkyRTYzRUQ5MTE4OTFBREFEMDAy
QTdBRkMgLyogUGxhdGZvcm1XZWJWaWV3SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVFNTJEMTMxODkwQTlGQjAwMTBFRDIxIC8qIFBsYXRmb3Jt
V2ViVmlld0lPUy5tbSAqLzsgfTsKIAkJMkU2M0VEOTIxODkxQURBRDAwMkE3QUZDIC8qIFRlc3RD
b250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkVFNTJEMTQxODkwQTlGQjAwMTBFRDIxIC8qIFRlc3RDb250cm9sbGVySU9TLm1tICov
OyB9OwpAQCAtMTkwLDExICsxOTMsMTMgQEAKIAkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE3IC8q
IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTI5QThGQ0U0MTQ1RjA0
NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDRTJDRDExQjg0NTI0
NTAwQzdGODMyIC8qIFRlc3RDb250cm9sbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0Q29udHJvbGxlckNvY29hLm1tOyBwYXRoID0gY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUw
Qzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tp
dC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkyRTBDNzdDNTFCOUY1RUI1
MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUg
PSBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcms7IHBhdGggPSBQbGF0Zm9ybXMvaVBob25lU2lt
dWxhdG9yLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL2lQaG9uZVNpbXVsYXRvcjkuMC5zZGsvU3lz
dGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3Jr
OyBzb3VyY2VUcmVlID0gREVWRUxPUEVSX0RJUjsgfTsKIAkJMkU2M0VENzUxODkxQUNFOTAwMkE3
QUZDIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDc2MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTYzRUQ3NzE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkU2M0VENzgxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRTYzRUQ3
QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHlJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVu
dFNlbmRlclByb3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gRXZlbnRTZW5kZXJQcm94eUlPUy5tbTsgcGF0aCA9IC4uL0luamVjdGVkQnVuZGxlL2lvcy9F
dmVudFNlbmRlclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYz
RUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUlPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVFNTJDRTAxODkwQTlBODAwMTBFRDIxIC8qIFdlYktp
dFRlc3RSdW5uZXJBcHAuYXBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSB3cmFwcGVyLmFwcGxpY2F0aW9uOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBXZWJLaXRUZXN0UnVubmVyQXBwLmFwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMkVFNTJDRTIxODkwQTlBODAwMTBFRDIxIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtS
T09UOyB9OwpAQCAtMzE0LDYgKzMxOSw4IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJ
CQkyRTBDNzdDMzFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8sCisJCQkJMkUwQzc3QzcxQjlGNUVCQjAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2Vz
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzM1LDkgKzM0MiwxMSBAQAogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMkUwQzc3QzQxQjlGNUU4RjAwNTY0RUE5IC8qIElPS2l0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUJDMjUxOTQwMTFEMTVEOEIwMDJFQkMw
MSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBNjY0
QkM3NjEzQTVGM0E5MDA5QTdCMjUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJMEY1MTY5Q0MxNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkyRTBDNzdDNjFCOUY1RUI1MDA1NjRFQTkgLyog
QmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00NjEsNyAr
NDcwLDYgQEAKIAkJCQkyRTYzRUQ3NjE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIuaCAqLywKIAkJCQkyRTYzRUQ3NzE4OTFBQ0U5MDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gKi8sCiAJCQkJMkU2M0VENzgxODkxQUNFOTAw
MkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gKi8sCi0JCQkJMkU2M0VEN0Ex
ODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gKi8sCiAJCQkJMkU2M0VE
N0IxODkxQUNFOTAwMkE3QUZDIC8qIEluamVjdGVkQnVuZGxlSU9TLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBpb3M7CkBAIC00NzAsNiArNDc4LDggQEAKIAkJMkVFNTJDRTExODkwQTlBODAwMTBF
RDIxIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5m
cmFtZXdvcmsgKi8sCisJCQkJMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1l
d29yayAqLywKIAkJCQkyRUU1MkNFMjE4OTBBOUE4MDAxMEVEMjEgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgKi8sCiAJCQkJMkVFNTJDRTQxODkwQTlBODAwMTBFRDIxIC8qIENvcmVHcmFwaGljcy5m
cmFtZXdvcmsgKi8sCiAJCQkJMkVFNTJDRTYxODkwQTlBODAwMTBFRDIxIC8qIFVJS2l0LmZyYW1l
d29yayAqLywKQEAgLTQ4OSw2ICs0OTksNyBAQAogCQkyRUU1MkQxMjE4OTBBOUZCMDAxMEVEMjEg
LyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQky
RTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLywKIAkJ
CQkyRUU1MkNFQjE4OTBBOUE4MDAxMEVEMjEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8sCiAJCQkJ
MkVFNTJEMTMxODkwQTlGQjAwMTBFRDIxIC8qIFBsYXRmb3JtV2ViVmlld0lPUy5tbSAqLywKIAkJ
CQkyRUU1MkQxNDE4OTBBOUZCMDAxMEVEMjEgLyogVGVzdENvbnRyb2xsZXJJT1MubW0gKi8sCkBA
IC04OTQsNyArOTA1LDYgQEAKIAkJCQkyRTYzRUQ5RTE4OTFBRUMxMDAyQTdBRkMgLyogV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU2M0VEOEExODkxQUQ3
RTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkU2M0VEOEIxODkxQUQ3RTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
SU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkU2M0VEOEUxODkxQUQ3RTAwMkE3QUZDIC8qIEV2
ZW50U2VuZGVyUHJveHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTYzRUQ4RjE4OTFBRDdF
MDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTIx
MEVEQTE0NENDM0VBMDA4MzVCQjYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5MjEwRUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExODksNiArMTE5OSw3IEBACiAJCQkJQTEx
NUNDQjgxQjlENzY5RDAwRTg5MTU5IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUHJvZHVjdGlvbjsKIAkJfTsKIAkJQTE4NTEwMkQxQjlBREU0ODAwNzQ0QUVCIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJLaXRUZXN0UnVubmVy
IChMaWJyYXJ5KSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGI4NmU3NjcxNzE4YWUzMzU5ZTU5YjA4NTdlZGQ0NWQ0MDFmOTAwZmYuLmY2NTk5NWIxMDJmY2Vl
OTZlNDg5ZWI3ZjhmNTRkMTU4MzQ0ZDFjMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0w
OS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgRXZlbnRTZW5kZXJQcm94eSBmb3IgV2ViS2l0VGVzdFJ1bm5lciBvbiBpT1MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODk2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2lt
dWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTUtMDktMDkgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIGdlbmVyYWwgc2libGluZyBzZWxl
Y3RvcnMgZG9lcyBub3Qgd29yayB3aXRob3V0IENTUyBKSVQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sCmluZGV4IDg2ZWY1NmE1ZjcwOTIw
NjI3MzgwOGFlMzdkNDc4NWVhMmVhODg3ODcuLmMwY2M0MzBjMDdlMTk5NTkwNjJkZDQ0ODU0MjBi
ODY3MDk5NTFlNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQt
c2VhcmNoLWlucHV0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1z
ZWFyY2gtaW5wdXQuaHRtbApAQCAtMTQsMTggKzE0LDYgQEAgZnVuY3Rpb24gbG9nKG1zZywgc3Vj
Y2VzcykKICAgICBsb2dEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykpLnRleHRDb250ZW50ID0gbXNnICsgJzogJyArICghIXN1Y2Nlc3MgPyAnUEFTUycgOiAnRkFJ
TCcpOwogfQogCi1mdW5jdGlvbiBjbGlja09uKGVsZW1lbnQpCi17Ci0gICAgaWYgKCF3aW5kb3cu
ZXZlbnRTZW5kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciB4ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgdmFyIHkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKLSAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Ci19Ci0KIGZ1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIGxvZ0RpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQKaW5kZXggZmY0M2NhNDA5MTUwYTU0Nzk0MTU5ODE4MDM5NTVlZTFkNDBl
NGQxNi4uYzdjZjk1NzRjZDE2ZGM2YjRhMjcyZDRhNTNkMDk3MmEyNWIzM2ZkNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHktdGV4dGFyZWEt
dG9nZ2xlLWRpc2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMSArMSw1IEBACitUZXN0cyB0aGF0IHRv
Z2dsaW5nIGRpc2FibGVkIHN0YXRlIGluIGEgdGV4dGFyZWEgbGVhdmVzIHRoZSB0ZXh0YXJlYSB0
eXBlYWJsZS4gVG8gVGVzdCBtYW51YWxseSwgbG9hZCB0aGlzIHBhZ2UgYW5kIHR5cGUgaW4gdGhl
IHRleHRhcmVhLiBJZiB5b3UgY2FuIHR5cGUsIHRoZW4gdGhlIHRlc3Qgc3VjY2VlZGVkLgorCisK
KwogU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0
YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHkt
dGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLmh0bWwKaW5kZXggM2Y0OGRmZGU2NGNlM2RiNzMxZDRj
OTVkOWM2MWE0NTJiNDdhZjA0Ny4uYmQ5MjE4NGM1ZDNkNjIxNDYxY2VkMGI4ZDU1YjdjYzQwNzY2
OGYxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10
b2dnbGUtZGlzYWJsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRl
eHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sCkBAIC0xLDcgKzEsOSBAQAorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgogPHA+VGVzdHMgdGhhdCB0b2dnbGluZyBkaXNhYmxlZCBzdGF0ZSBpbiBh
IHRleHRhcmVhIGxlYXZlcyB0aGUgdGV4dGFyZWEgdHlwZWFibGUuCiBUbyBUZXN0IG1hbnVhbGx5
LCBsb2FkIHRoaXMgcGFnZSBhbmQgdHlwZSBpbiB0aGUgdGV4dGFyZWEuIElmIHlvdSBjYW4gdHlw
ZSwgdGhlbgogdGhlIHRlc3Qgc3VjY2VlZGVkLjxwPgogPHRleHRhcmVhIGlkPSJ0YSIgZGlzYWJs
ZWQ9ImRpc2FibGVkIj48L3RleHRhcmVhPgorPC9ib2R5PgogCiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKQEAgLTksMTggKzExLDIwIEBA
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCi1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIHRhLmRpc2FibGVkID0gZmFsc2U7
Ci0gICAgdGEuZm9jdXMoKTsKLSAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oJ2EnLCBbXSk7Ci0gICAgICAgIHZhciByZXN1bHQgPSB0YS52
YWx1ZTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAiYSIpCi0gICAgICAgICAgICBkb2N1bWVudC53
cml0ZSgiPHByZT5TVUNDRVNTPC9wcmU+Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCI8cHJlPkZBSUwsIHJlc3VsdCB3YXMgJyIgKyByZXN1bHQgKyAiJy48L3By
ZT4iKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0sIDApOworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB0YS5kaXNhYmxlZCA9IGZhbHNlOworICAgICAg
ICB0YS5mb2N1cygpOworICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCdhJywgW10pOworICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IHRhLnZhbHVlOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAiYSIpCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
U1VDQ0VTUyIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGQUlMLCByZXN1bHQgd2Fz
ICciICsgcmVzdWx0ICsgIicuIikpOworICAgICAgICB9CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDAp
OworfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291
cmNlcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL3RleHRhcmVhLWlucHV0LWV2ZW50LmpzCmluZGV4IDMzMzBhZThmOTZiNjEwZmU0NzVh
NGMzZTZmNWE4YWUwODYwNDBhNzIuLjEwOTdiOWE5YjQ3ZGI4MGZiZDEzZWE3NGQzZTEzNjIzMTI1
YWQ3ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRh
cmVhLWlucHV0LWV2ZW50LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2Vz
L3RleHRhcmVhLWlucHV0LWV2ZW50LmpzCkBAIC0yMiwyMyArMjIsMjUgQEAgZnVuY3Rpb24gaGFu
ZGxlVGV4dGFyZWFPbklucHV0KGUpIHsKICAgICB9CiB9CiAKLXZhciB0YSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0YScpOwotdGEuc2V0QXR0cmlidXRlKCdvbmlucHV0JywgJ2hhbmRsZVRl
eHRhcmVhT25JbnB1dChldmVudCknKTsKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHRh
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJyk7CisgICAgdGEuc2V0QXR0cmlidXRlKCdv
bmlucHV0JywgJ2hhbmRsZVRleHRhcmVhT25JbnB1dChldmVudCknKTsKIAotLy8gQ2hhbmdlIHRo
ZSB2YWx1ZSBiZWZvcmUgZm9jdXNpbmcuCi10YS52YWx1ZSA9ICcnOworICAgIC8vIENoYW5nZSB0
aGUgdmFsdWUgYmVmb3JlIGZvY3VzaW5nLgorICAgIHRhLnZhbHVlID0gJyc7CiAKLXRhLmZvY3Vz
KCk7CisgICAgdGEuZm9jdXMoKTsKIAotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJ3gnLCBbXSk7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygnaGFuZGxl
VGV4dGFyZWFPbklucHV0Q2FsbENvdW50JywgMSk7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygnaGFu
ZGxlRGl2T25JbnB1dENhbGxDb3VudCcsIDEpOwotICAgIAotICAgIC8vIENoYW5nZSBwcm9ncmFt
bWF0aWNhbGx5Ci0gICAgdGEudmFsdWUgPSAncHJvZ3JhbW1hdGljYWxseSc7Ci0gICAgCi0gICAg
Ly8gU2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJlZCB0aGUgZXZlbnRzLgotICAgIHNob3VsZEV2YWx1
YXRlVG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEpOwotICAgIHNob3VsZEV2
YWx1YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxsQ291bnQnLCAxKTsKLX0KKyAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3gnLCBbXSk7
CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3Vu
dCcsIDEpOworICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVEaXZPbklucHV0Q2FsbENv
dW50JywgMSk7CisgICAgICAgIAorICAgICAgICAvLyBDaGFuZ2UgcHJvZ3JhbW1hdGljYWxseQor
ICAgICAgICB0YS52YWx1ZSA9ICdwcm9ncmFtbWF0aWNhbGx5JzsKKyAgICAgICAgCisgICAgICAg
IC8vIFNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgdGhlIGV2ZW50cy4KKyAgICAgICAgc2hvdWxk
RXZhbHVhdGVUbygnaGFuZGxlVGV4dGFyZWFPbklucHV0Q2FsbENvdW50JywgMSk7CisgICAgICAg
IHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxsQ291bnQnLCAxKTsKKyAgICB9
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dAppbmRleCA3OTQw
MTE5ZGU0ZGM1ZjkzOGZkNDBhMjM5OWZjODBiODgxYjE4ZDM3Li4zODI2NGZiYWU1ZTlmZjg4NWM2
Nzg4M2Q1YTU1MGRkNGFlZDc5YzI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBA
QCBUZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxODkK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIFBBU1MgdGEudmFsdWUgaXMgIngiCiBQQVNTIHRhLnZh
bHVlIGlzICJ4IgogUEFTUyBoYW5kbGVUZXh0YXJlYU9uSW5wdXRDYWxsQ291bnQgaXMgMQogUEFT
UyBoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50IGlzIDEKIFBBU1MgaGFuZGxlVGV4dGFyZWFPbklu
cHV0Q2FsbENvdW50IGlzIDEKIFBBU1MgaGFuZGxlRGl2T25JbnB1dENhbGxDb3VudCBpcyAxCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sCmluZGV4IGIz
MzcxNDY5NzY0Nzc2ZTA4MDljOWEzMTBkMzI2ZTI4MzNmZGY2NzUuLjNiYTVjNGJkZDVlNzFiNjNj
NzFmODQ4NTVkZmFiMWIxOWM4ZTk5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgotPGJvZHk+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNGRiNmJjMWE2OTFj
NDAxNmI3OGE0ODI4MDIyYTAxZGFhNmZjNjYwYi4uZDRjYWJkNTM3Mjk2NThjZjg3OTA4ZjU5Nzgy
MTM2ZTRjMmI4ZmI5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVs
YXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11
bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc0NCw4ICsxNzQ0LDggQEAgZmFzdC9mb3Jtcy9k
YXRldGltZS9kYXRldGltZS1zdGVwdXAtc3RlcGRvd24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9m
b3Jtcy9kYXRldGltZS9kYXRldGltZS12YWx1ZS1zYW5pdGl6YXRpb24uaHRtbCBbIEZhaWx1cmUg
XQogZmFzdC9mb3Jtcy9kYXRldGltZS9pbnB1dC12YWx1ZWFzZGF0ZS1kYXRldGltZS5odG1sIFsg
RmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2RhdGV0aW1lL2lucHV0LXZhbHVlYXNudW1iZXItZGF0ZXRp
bWUuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRt
bCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQu
aHRtbCBbIEZhaWx1cmUgXQorZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbCBb
IFBhc3MgXQorZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBb
IFBhc3MgXQogZmFzdC9mb3Jtcy9lbnRlci1jbGlja3MtYnV0dG9ucy5odG1sIFsgRmFpbHVyZSBd
CiBmYXN0L2Zvcm1zL2ZpZWxkc2V0LWxlZ2VuZC1wYWRkaW5nLXVuY2xpcHBlZC1maWVsZHNldC1i
b3JkZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9maWVsZHNldC13aXRoLWZsb2F0Lmh0
bWwgWyBGYWlsdXJlIF0KQEAgLTE4NDIsOSArMTg0Miw5IEBAIGZhc3QvZm9ybXMvc2VsZWN0L29w
dGdyb3VwLWNsaWNraW5nLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvc2VsZWN0L29wdGlv
bi1zZWxlY3RpbmcuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9zZWxlY3Qvc2VsZWN0LWRp
c2FibGVkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvc2hhZG93LXRyZWUtZXhwb3N1cmUu
aHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwgWyBGYWls
dXJlIF0KK2Zhc3QvZm9ybXMvdGV4dC1pbnB1dC1ldmVudC5odG1sIFsgUGFzcyBdCiBmYXN0L2Zv
cm1zL3RleHRhcmVhLWFycm93LW5hdmlnYXRpb24uaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jt
cy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2Zvcm1zL3RleHRh
cmVhLWlucHV0LWV2ZW50Lmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1w
c2V1ZG8tc2VsZWN0b3JzLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtbWV0
cmljcy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXdy
YXBwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261079</attachid>
            <date>2015-09-13 00:02:51 -0700</date>
            <delta_ts>2015-09-19 11:17:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150913000243.patch</filename>
            <type>text/plain</type>
            <size>59346</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1OTFlODgy
ZjYuLmU0OTgwMGUzMTBkMmE5Y2EwYTdhZDZhZjQ1MWQ2ZTU0M2U4MGU5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
cHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9j
YWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2lu
Z1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5k
Rm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA3NTNjODAxMDE5ZGJlZTJmZTc1YzU3ZjBkM2EyMzhjMDgyZTM4MDViLi41
YjQ5NDM0NGRkZjY1NWIwNjdjMWY2N2JiZjE2MTAzNGU0MTcwNjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MzQsNiArNDM0LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNFZGl0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFZGl0YWJsZTsgfQogCiAjaWYg
UExBVEZPUk0oSU9TKQorICAgIGJvb2wgYWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1
cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1czsg
fQogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICBkb3VibGUg
ZGlzcGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlLnNjYWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4
cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZS5leHBvc2VkUmVjdCgpOyB9CkBAIC0xMDU5LDYgKzEwNjAsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKKyAgICB1aW50NjRfdCBm
aXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoKSB7IHJldHVybiBt
X2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEFmdGVyRGlkQ29tbWl0TG9hZDsgfQorCiBwcml2
YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTEwNzYsNiArMTA3OSw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2VuZEZvcmNl
UmVwYWludFdpdGhDYWxsYmFjayhSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAg
LTEzNDEsNiArMTM0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdXRvY29ycmVjdGlvbkNvbnRl
eHRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKICAgICB2b2lkIGRp
Y3RhdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBF
ZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOworICAgIHZvaWQg
c2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyhib29sIGFsbG93LCBib29sJiBj
aGFuZ2VkKTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCkBAIC0xNzYyLDYgKzE3NjgsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
Ym9vbCBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CisKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgYm9vbCBtX2FsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMg
eyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRl
ZDZhMTAxY2JmNzJjZTQ4YjE0ZTk2Yzc4NWM0OWI0NGNkODgwZmEuLmNiZWMwMWRmNjY4OTgzMTk5
N2RlOTNmMzQ3NTNjZTY5YTMxNTc1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTgxLDYgKzE4MSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3Ry
aW5nIGJlZm9yZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBT
dHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgIERpY3RhdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgc2Vs
ZWN0ZWRUZXh0LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBJbnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JT
dGF0ZSBzdGF0ZSwgYm9vbCBpc0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkKKyAgICBTZXRB
bGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJvb2wgYWxsb3cpIC0+IChib29sIGNo
YW5nZWQpCiAgICAgRGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pCiAgICAgU2F2ZUlt
YWdlVG9MaWJyYXJ5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRf
dCBzaXplKQogICAgIERpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRv
dWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhy
ZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA4YmNmYjA5YWJhMjUxYmJjNDgyZmJkYmVhZTk3
Zjg0MzYwOThlYTZmLi5hNzVkZTUzMjc5ZTY2ZmE2YTBlYjkwMTJmY2RlNTQ1MzEyYTI2MThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzAxOSw3ICszMDE5LDcgQEAgLSAodm9pZClfc3RhcnRBc3Np
c3RpbmdOb2RlOihjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNl
cklzSW4KIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZv
ciA8cmRhcjovL3Byb2JsZW0vMjIxMjY1MTg+LiBUaGUgcmVhbCBmaXggd2lsbCBpbnZvbHZlIHJl
ZmFjdG9yaW5nCiAgICAgLy8gdGhlIHdheSB3ZSBhc3Npc3QgcHJvZ3JhbW1hdGljYWxseSBmb2N1
c2VkIG5vZGVzLgotICAgIGlmICghdXNlcklzSW50ZXJhY3RpbmcgJiYgIV90ZXh0U2VsZWN0aW9u
QXNzaXN0YW50KQorICAgIGlmICghdXNlcklzSW50ZXJhY3RpbmcgJiYgIV90ZXh0U2VsZWN0aW9u
QXNzaXN0YW50ICYmICFfcGFnZS0+YWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cygp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYmx1clByZXZpb3VzTm9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMjcyNTYw
NmVkZDJjNDhiZjBlZjA4NDZiYmU4ZTI0YzQzNDVkOWQwZS4uZDVjMGNkMjM3OTg5OTMyYzVmYTY1
NTQ0YTJhZjZhYmQ3Zjc3ZjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE2OSw2ICsxNjksMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpY3RhdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwg
Y29uc3QgU3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHNl
bGVjdGVkVGV4dCwgYmVmb3JlVGV4dCwgYWZ0ZXJUZXh0KTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2Fs
bGJhY2spCit7CisgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9u
TmV4dFBhaW50KCk7CisgICAgbV9kcmF3aW5nQXJlYS0+ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJh
d2luZyhbY2FsbGJhY2tdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKKyAgICB9KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpLCBtX3BhZ2VJ
RCk7Cit9CisKKwogdm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxi
YWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2
NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpAQCAtNjUzLDYgKzY2MywxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmIHN0YXRlLCBib29sIGlz
Q2hhckV2ZW50LAogICAgIGhhbmRsZWQgPSBtX3BhZ2VDbGllbnQuaW50ZXJwcmV0S2V5RXZlbnQo
bV9rZXlFdmVudFF1ZXVlLmZpcnN0KCksIGlzQ2hhckV2ZW50KTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OnNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMoYm9vbCBhbGxvdywg
Ym9vbCYgY2hhbmdlZCkKK3sKKyAgICBjaGFuZ2VkID0gbV9hbGxvd0Fzc2lzdGFuY2VPblByb2dy
YW1tYXRpY0ZvY3VzICE9IGFsbG93OworICAgIG1fYWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0
aWNGb2N1cyA9IGFsbG93OworfQorCiAvLyBDb21wbGV4IHRleHQgaW5wdXQgc3VwcG9ydCBmb3Ig
cGx1Zy1pbnMuCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdp
bih1aW50NjRfdCwgY29uc3QgU3RyaW5nJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2Q0MzRkMmRhYmNmMzY4NTlhNjc0Njk2
NTI5ZjkzZDM4ZTQ0NmQwOS4uMmNhMmVlYTc1MWQ1M2I2OWRkNGYzOWI2NWRiYmM4ZjI2NTljNmIx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KQEAgLTE0Niw2ICsxNDYsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlz
U2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fcGFn
ZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2FsbGJh
Y2soUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9jYWxsYmFja3MucHV0KGNhbGxi
YWNrKTsKKyAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0
UGFpbnQoKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVw
YWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCiAjaWYgIVVTRShBU1lOQ19OU1RFWFRJ
TlBVVENMSUVOVCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxh
Y2VtZW50UmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggYzUyNzMxZTM2
YzIyNDdiNzI4MjhlYjkwZTJhNTUzNjNmZjkxZjI3Ny4uZDMxZDA4YjIxNmFlNWMwMTUyNDQwZTRj
MTY0MjM4NDA5ZDU2Y2JjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNDY2
LDYgKzQ2NiwxMSBAQCBXS0J1bmRsZUluc3BlY3RvclJlZiBXS0J1bmRsZVBhZ2VHZXRJbnNwZWN0
b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdl
UmVmKS0+aW5zcGVjdG9yKCkpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZVdhaXRGb3JEcmF3aW5n
QXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpCit7CisgICAgdG9JbXBsKHBhZ2UpLT53YWl0Rm9yRHJhd2luZ0FyZWFVcGRhdGVJZk5l
Y2Vzc2FyeUFuZFJlc3VtZUltbWVkaWF0ZWx5KCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlRm9y
Y2VSZXBhaW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIHRvSW1wbChwYWdlKS0+Zm9y
Y2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCk7CkBAIC02MDAsNiArNjA1LDE1IEBAIHZvaWQgV0tC
dW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0QWxsb3dB
c3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgYm9v
bCBhbGxvdykKK3sKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CisgICAgVU5VU0VEX1BBUkFN
KGFsbG93KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRBbGxv
d0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGFsbG93KTsKKyNlbmRpZgorfQorCiB2b2lk
IFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5UmVmKQogewogICAgIHRv
SW1wbChwYWdlUmVmKS0+cG9zdE1lc3NhZ2UodG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0
b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDkw
ODkxMzc4MTg5NzAzYTUyYjFkY2ZhNDcwMGU0NzI5YzA3NDc3YzkuLmIyYjE2YzE2OWVhODFkN2Ri
Yzk1YzQ1ODYzYjMzNTEyZGUzNmIxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAt
MTEzLDYgKzExMyw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVN0YXJ0TW9uaXRvcmlu
Z1Njcm9sbE9wZXJhdGlvbnMoV0tCdW5kbGVQYWdlUmVmKTsKIAogdHlwZWRlZiB2b2lkICgqV0tC
dW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrKSh2b2lkKiBjb250ZXh0KTsKIFdLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNh
bGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxi
YWNrLCB2b2lkKiBjb250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldEFsbG93
QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMoV0tCdW5kbGVQYWdlUmVmLCBib29sIGFsbG93
KTsKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCmluZGV4IGNkY2QxNTVk
NTJhZDY2ZjRjNDExOTFiMGMxNGRlYjVlMzdjYjIzMTQuLjFmYTNkY2Y4Yzk3ZTBlMTRhNDdmZjQ1
OTFjMWFkYzBmYWJhYTU5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oCkBAIC01Miw2ICs1Miw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2Va
b29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBkb3VibGUgem9vbUZhCiAKIFdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlUGFnZVNldFNjYWxlQXRPcmlnaW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pOwogCitXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVBhZ2VXYWl0Rm9yRHJhd2luZ0FyZWFVcGRhdGVJZk5lY2Vzc2FyeUFuZFJlc3VtZUltbWVkaWF0
ZWx5KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUZv
cmNlUmVwYWludChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNpbXVsYXRlTW91c2VEb3duKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBpbnQgYnV0dG9u
LCBXS1BvaW50IHBvc2l0aW9uLCBpbnQgY2xpY2tDb3VudCwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggNDRhZWMwMmJkZGYwZjg3MTk5NjUxNzM0YzkxYWVmYzZi
MTRmYTY5Zi4uMjE1YjQxMTNjM2MxZWZiYTU0YzQ0NThlNjZiYjhjMjBkODFjNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTEz
NCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBs
YXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFj
aFNlbmRSaWdodCYgZmVuY2VQb3J0KSB7IH0KICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIGlz
V2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2
MWRiODRkYzc1YWFiN2UzNzM1YzAzYWE5MWM4M2I2Y2JmZGY0NjU4Li44NzBjZGE5NDY1NTEwYWRl
Mzc5NGFlNjQ3MGMzZTJmZGZiMDZlZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjIwLDYgKzI2MjAsMTIgQEAgdm9pZCBXZWJQYWdl
OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFS
ZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjp3YWl0Rm9yRHJhd2lu
Z0FyZWFVcGRhdGVJZk5lY2Vzc2FyeUFuZFJlc3VtZUltbWVkaWF0ZWx5KCkKK3sKKyAgICBpZiAo
bV9kcmF3aW5nQXJlYS0+aXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpKQorICAgICAgICBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6RHJhd2luZ0FyZWE6OkRpZFVwZGF0ZT4ocGFnZUlEKCksIDUwMDBfbXMpOworfQor
CiB2b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCiB7CiAgICAgbV9k
cmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0MzYyNDRjZGM5NWUwNTY1MzAyNTc0ZDMxZTczNmY1NGEz
YTE0ZjBkLi4xZjViNTNmMjhkZjlmY2JmOGQ3OGNkZTE1ZTI5Yzk2MzM2MTViMTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTUxOCw2ICs1MTgs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpOb2RlKik7
CiAgICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJDb3JlOjpOb2RlKik7CisgICAgdm9pZCBzZXRB
bGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJvb2wpOwogICAgIHZvaWQgcmVxdWVz
dERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNl
RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0
KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBj
b25zdCBTdHJpbmcmIG5ld1RleHQpOwpAQCAtNzcxLDYgKzc3Miw3IEBAIHB1YmxpYzoKICAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnRX
aXRob3V0Q2FsbGJhY2soKTsKKyAgICB2b2lkIHdhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVj
ZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoKTsKIAogICAgIHZvaWQgdW5tYXJrQWxsTWlzc3Bl
bGxpbmdzKCk7CiAgICAgdm9pZCB1bm1hcmtBbGxCYWRHcmFtbWFyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IDQ5ZWY3OWMwOWQ5ZDI3ZTU2YzE4ODRkMWUzM2VlOTg2NjI4Zjk0ZjMuLjZlZmI3ZjBkY2JlMDE5
Yzk2NWVmYTBlYWZkMjZhZTJmY2I4NmU1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xNjAsNiArMTYwLDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0V2ViQXJjaGl2
ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICBGb3JjZVJlcGFpbnQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnRX
aXRob3V0Q2FsbGJhY2soKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5
IHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggODcxMDVhOGI2Y2Y2ZGE5OTkwMWMxMWQ3YWJhMDRhZmVkMmVm
ODNkMS4uZjBhZDZlMjA3MDAwMWFmNzdkNDVhY2M3MzFkZjlkZGM5MjUzZmYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtMjUzNSw2ICsyNTM1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZWxlbWVudERpZEJsdXIoV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0QWxsb3dBc3Npc3Rh
bmNlT25Qcm9ncmFtbWF0aWNGb2N1cyhib29sIGFsbG93KQoreworICAgIGJvb2wgdmFsdWVDaGFu
Z2VkOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEFsbG93QXNzaXN0YW5jZU9u
UHJvZ3JhbW1hdGljRm9jdXModHJ1ZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEFsbG93
QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXM6OlJlcGx5KHZhbHVlQ2hhbmdlZCksIG1fcGFn
ZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVt
TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgcmVzZXRUZXh0QXV0b3Np
emluZ0JlZm9yZUxheW91dElmTmVlZGVkKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1M
YXlvdXRTaXplKCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmlu
ZGV4IDAwYWJiMTViZTU5MmY1ZDZhNzRjNmQ4M2MyZTg5YzExOTY3ZGQzNzAuLmY0OGE5YjQ3YmM5
MmU3NThjNTc5YWM0ZWY3MTVlZDU3YTdkZTkzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmgKQEAgLTExNiw2ICsxMTYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmbHVz
aExheWVycygpOwogCisgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3
YXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3dhaXRpbmdGb3JCYWNraW5nU3RvcmVTd2Fw
OyB9OworCiAgICAgV2ViQ29yZTo6VGlsZWRCYWNraW5nKiBtYWluRnJhbWVUaWxlZEJhY2tpbmco
KSBjb25zdDsKIAogICAgIHVpbnQ2NF90IHRha2VOZXh0VHJhbnNhY3Rpb25JRCgpIHsgcmV0dXJu
ICsrbV9jdXJyZW50VHJhbnNhY3Rpb25JRDsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmZTg5Mjk0OWE3MDc5YTNjYWQ1MDhiNTgyM2MwOTRh
MDE5Y2JjNjMuLmRlYjExOWU4ODQ2NDY1MTJlMGM2NmUzNDRiYTRmNjRiYzU4YTJhYmYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MiBAQAorMjAxNS0wOS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgRXZlbnRTZW5kZXJQcm94eSBmb3IgV2ViS2l0VGVzdFJ1bm5l
ciBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbToKKyAg
ICAgICAgKC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGluaXRdKToKKyAgICAgICAgKC1bS2V5Ym9h
cmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2FzU2hvd246XSk6CisgICAgICAgICgtW0tleWJvYXJk
U3RhdGVMaXN0ZW5lciBrZXlib2FyZFdhc0hpZGRlbjpdKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OnNob3VsZENvbnRpbnVlV2FpdGluZyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OndhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6
CisgICAgICAgIChXVFI6OnNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3Rlcik6
CisgICAgICAgIChXVFI6OmhpZFVzYWdlQ29kZUZvckNoYXJhY3Rlcik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5OjpzZW5kSU9ISURFdmVudCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNl
bmRJT0hJREtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpt
b3VzZVNjcm9sbEJ5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6Y29udGludW91c01vdXNlU2Nyb2xsQnkpOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNl
dFRvdWNoTW9kaWZpZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZXRUb3Vj
aFBvaW50UmFkaXVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFy
dCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnRvdWNoRW5kKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
OjpjbGVhclRvdWNoUG9pbnRzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmVs
ZWFzZVRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpjYW5jZWxU
b3VjaFBvaW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wOS0wOSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYml0IHJvdCBvbiBib3Qgd2F0Y2hl
cidzIGRhc2hib2FyZCBwYWdlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCmluZGV4IDcwZDk0MDE0YzhkNzUwY2I3ZDY1NzA4MDQ1MjhlMjA4Y2MyZjRhNTQuLmE5MDM0
NTY4ZGQ5MGRmMWNhOGNkZmEzMGI2NjhjZjcxMGE4MWNkYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC00MCwxMCArNDAsMjkgQEAKICNpbmNsdWRlICJF
V2ViS2l0Mi5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxJT0tpdC9o
aWQvSU9ISURFdmVudC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xB
U1MgTlNFdmVudDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JKQ19DTEFTUyBLZXli
b2FyZFN0YXRlTGlzdGVuZXI7CisKK3N0cnVjdCBUb3VjaFBvaW50SW5mbyB7CisgICAgVG91Y2hQ
b2ludEluZm8oaW50IHgsIGludCB5KTsKKworICAgIGZsb2F0IHg7CisgICAgZmxvYXQgeTsKKyAg
ICB1aW50NjRfdCBtYWNoVGltZTsKKyAgICBib29sIGlzVG91Y2hpbmc7Cit9OworCitjb25zdCBp
bnQgbWF4TnVtVG91Y2hQb2ludHMgPSA1OworI2VuZGlmCisKIG5hbWVzcGFjZSBXVFIgewogCiBj
bGFzcyBUZXN0Q29udHJvbGxlcjsKQEAgLTEyNSw2ICsxNDQsMTkgQEAgcHJpdmF0ZToKICNlbmRp
ZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZW5kSU9ISURFdmVudChJ
T0hJREV2ZW50UmVmKTsKKyAgICB2b2lkIHNlbmRJT0hJREtleWJvYXJkRXZlbnQodWludDY0X3Qg
dGltZXN0YW1wLCB1aW50MzJfdCB1c2FnZSwgYm9vbCBpc0tleURvd24pOworICAgIHZvaWQgd2Fp
dE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KGRvdWJsZSB0aW1lb3V0SW5TZWNvbmRzLCB1bnNpZ25l
ZCBjb25kaXRpb25zKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvbnRpbnVlV2FpdGluZyh1bnNp
Z25lZCBjb25kaXRpb25zKSBjb25zdDsKKyAgICB2b2lkIGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0
SWZOZWNlc3NhcnkoKTsKKyAgICBzdGF0aWMgdm9pZCBmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2so
V0tFcnJvclJlZiwgdm9pZCogY29udGV4dCk7CisgICAgLy8gVG91Y2ggZXZlbnQgc3ludGhlc2l6
aW5nIGhlbHBlcnMuCisgICAgSU9ISURFdmVudFJlZiBjcmVhdGVUb3VjaFBvaW50KFRvdWNoUG9p
bnRJbmZvKiwgYm9vbCBpc1RvdWNoaW5nLCBpbnQgaW5kZXgpOworICAgIGludCBuZXh0QXZhaWxh
YmxlVG91Y2hQb2ludEluZGV4KCkgY29uc3Q7CisgICAgdm9pZCByZWxlYXNlVG91Y2hQb2ludElu
ZGV4KGludCBpbmRleCk7CisjZW5kaWYKKwogICAgIGRvdWJsZSBtX3RpbWU7CiAgICAgV0tQb2lu
dCBtX3Bvc2l0aW9uOwogICAgIGJvb2wgbV9sZWZ0TW91c2VCdXR0b25Eb3duOwpAQCAtMTQ2LDYg
KzE3OCwxNyBAQCBwcml2YXRlOgogICAgIEVpbmFfTGlzdCogbV90b3VjaFBvaW50czsKICNlbmRp
ZgogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpCisgICAgUmV0YWluUHRyPEtleWJvYXJkU3Rh
dGVMaXN0ZW5lcj4gbV9rZXlib2FyZExpc3RlbmVyOworICAgIHVpbnQzMl90IG1fa2V5V2luZG93
Q29udGV4dElEIHsgMCB9OworICAgIGJvb2wgbV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQgeyBm
YWxzZSB9OworICAgIC8vIFRvdWNoIHN0YXRlIHZhcmlhYmxlcy4KKyAgICBpbnQgbV90b3VjaFBv
aW50TWFqb3JSYWRpdXMgeyA1IH07CisgICAgaW50IG1fdG91Y2hQb2ludE1pbm9yUmFkaXVzIHsg
NSB9OworICAgIEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8VG91Y2hQb2ludEluZm8+PiBt
X3RvdWNoUG9pbnRJbmZvQnlJbmRleDsKKyAgICBpbnQgbV9sYXN0VXNlZFRvdWNoSW5kZXggeyAw
IH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKaW5kZXggZjMyODBiYjk0YjA1NDM3MDI0MzAy
M2UyNTMzNmRlMWFmYWU3OTM5Zi4uNTA5Zjg5YzA3MTMxNWQ2Njc0ZTViMWM0ODRiYzNkYTlkNmE1
ZmFlOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRs
CkBAIC01Myw2ICs1Myw3IEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIHsKIAog
ICAgIHZvaWQgbW9uaXRvcldoZWVsRXZlbnRzKCk7CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMob2JqZWN0IGZ1bmN0aW9uQ2FsbGJhY2spOworICAgIHZvaWQgc2V0QWxsb3dB
c3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyhib29sZWFuIGFsbG93KTsKIAogI2lmIGRlZmlu
ZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5BQkxFX1RPVUNIX0VWRU5UUwogICAgIC8vIFRv
dWNoIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGM5YjFhZDk3
MTIwOWYwNWUwMTg5OTY3NmYwZDhmMWRkMzgyZjkzNTIuLmQ3YjBiZGU2N2ZmMmY2ZGQwNmY1Y2Nj
MWI1YTNiYTgxYWEyMTIxYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAt
MjE3LDYgKzIxNyw5IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VEb3duKGlu
dCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxl
RGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShBZG9wdFdLLCBjcmVhdGVNb3Vz
ZU1lc3NhZ2VCb2R5KE1vdXNlRG93biwgYnV0dG9uLCBtb2RpZmllcnMpKTsKIAorI2lmIFBMQVRG
T1JNKElPUykKKyAgICB3YWl0Rm9yTGF5ZXJGbHVzaFRvQmVTY2hlZHVsZWRJZk5lY2Vzc2FyeSgp
OworI2VuZGlmCiAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3Rp
bmcocGFnZSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgMCk7CiB9CiAKQEAgLTM4Myw2ICszODYsOSBAQCB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVy
QXJyYXksCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikp
OwogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGtleURvd25NZXNzYWdl
Qm9keSA9IGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIG1vZGlmaWVycywgbG9jYXRpb24p
OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHdhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxl
ZElmTmVjZXNzYXJ5KCk7CisjZW5kaWYKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNN
ZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdl
KCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIGtleURvd25NZXNzYWdlQm9keS5nZXQo
KSwgMCk7CiB9CiAKQEAgLTY2NCw2ICs2NzAsMjYgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjpjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGwK
ICAgICBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFj
ayhwYWdlLCBleGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVs
ZWFzZSgpKTsKIH0KIAordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRBbGxvd0Fzc2lz
dGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJvb2wgYWxsb3cpCit7CisgICAgVU5VU0VEX1BBUkFN
KGFsbG93KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgV0tCdW5kbGVQYWdlU2V0QWxsb3dBc3Np
c3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFn
ZSgpLT5wYWdlKCksIGFsbG93KTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oSU9TKQordm9p
ZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp3YWl0Rm9yTGF5ZXJGbHVzaFRvQmVTY2hlZHVsZWRJ
Zk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faGFzV2FpdGVkRm9yTGF5ZXJGbHVzaFRvQmVTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxlUGFn
ZVdhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHko
cGFnZSk7CisgICAgbV9oYXNXYWl0ZWRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZCA9IHRydWU7
Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuaAppbmRleCBjMjNjMzZkZmFjNTU4NGY4NTFjNWY2MGZiNGQ1NjIyY2ZmNDIw
MDRhLi43MDE5NDEyMTQzNWFjMDIwNDIzN2QxOGYwZWE4M2M2YTk3ZDhiOWNjIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKCk7CiAgICAgdm9pZCBtb25pdG9yV2hlZWxFdmVudHMo
KTsKICAgICB2b2lkIGNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0
aW9uQ2FsbGJhY2spOworICAgIHZvaWQgc2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNG
b2N1cyhib29sKTsKIAogICAgIHZvaWQga2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVS
ZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNo
cm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpOwpAQCAtODgsNyArODksMTUgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIoKTsKKworI2lmIFBMQVRG
T1JNKElPUykKKyAgICB2b2lkIHdhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZElmTmVjZXNz
YXJ5KCk7CisjZW5kaWYKKwogICAgIFdLUG9pbnQgbV9wb3NpdGlvbjsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgYm9vbCBtX2hhc1dhaXRlZEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkIHsgZmFs
c2UgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9T
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5k
ZXJQcm94eUlPUy5tbQppbmRleCBhYzU0YTFjNmQ2ZDhjMmM1MGUwODFkYjViZGI4MjFkM2U2MDhl
YzJkLi42NjJmMDYwMjA2MTFkMzVmYWMxZjU2NzI0ZWZkNjFiOWU1MWMxMDBmIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclBy
b3h5SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0V2ZW50U2VuZGVyUHJveHlJT1MubW0KQEAgLTI2LDE0ICsyNiw4MyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJFdmVudFNlbmRlclByb3h5LmgiCiAKKyNpbXBvcnQgPEJhY2tCb2Fy
ZFNlcnZpY2VzL0JLU0hJREV2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNO
b3RpZmljYXRpb24uaD4KKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+Cisj
aW1wb3J0IDxtYWNoL21hY2hfdGltZS5oPgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAj
aW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCi0j
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uX1By
aXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRJbXBsLmg+CisjaW1wb3J0IDxVSUtp
dC9VSVdpbmRvd19Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tFdmVudC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisKK3N0
YXRpYyBjb25zdCBpbnQgZmluZ2VySWRlbnRpZmllcnNbbWF4TnVtVG91Y2hQb2ludHNdID0geyAy
LCAzLCA0LCA1LCAxIH07CisKK2ludCBmaW5nZXJJZGVudGl0eUZvclRvdWNoUG9pbnRJbmRleChp
bnQgaW5kZXgpCit7CisgICAgQVNTRVJUKDAgPCBpbmRleCAmJiBpbmRleCA8PSBtYXhOdW1Ub3Vj
aFBvaW50cyk7CisgICAgcmV0dXJuIGZpbmdlcklkZW50aWZpZXJzW2luZGV4IC0gMV07Cit9CisK
K1RvdWNoUG9pbnRJbmZvOjpUb3VjaFBvaW50SW5mbyhpbnQgeCwgaW50IHkpCisgICAgOiB4KHgp
CisgICAgLCB5KHkpCisgICAgLCBtYWNoVGltZShtYWNoX2Fic29sdXRlX3RpbWUoKSkKKyAgICAs
IGlzVG91Y2hpbmcodHJ1ZSkKK3sKK30KKworQGludGVyZmFjZSBLZXlib2FyZFN0YXRlTGlzdGVu
ZXIgOiBOU09iamVjdAorQHByb3BlcnR5IEJPT0wgaXNLZXlib2FyZFJlYWR5OworLSAoaW5zdGFu
Y2V0eXBlKWluaXQ7CistICh2b2lkKWtleWJvYXJkV2FzU2hvd246KE5TTm90aWZpY2F0aW9uKilh
Tm90aWZpY2F0aW9uOworLSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24q
KWFOb3RpZmljYXRpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBLZXlib2FyZFN0YXRlTGlz
dGVuZXIgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmIChzZWxmKSB7CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5
Ym9hcmRXYXNTaG93bjopIG5hbWU6VUlLZXlib2FyZERpZFNob3dOb3RpZmljYXRpb24gb2JqZWN0
Om5pbF07CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNIaWRkZW46KSBuYW1l
OlVJS2V5Ym9hcmREaWRIaWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgICAgICBzZWxm
LmlzS2V5Ym9hcmRSZWFkeSA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClrZXlib2FyZFdhc1Nob3duOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlvbgorewor
ICAgIC8vIFByZXBhcmUgVUlLaXQgZm9yIHN5bmNocm9ub3VzIHRleHQgaW5wdXQgZXZlbnQgcHJv
Y2Vzc2luZy4KKyAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBzZXRFeHBlY3Rz
U3luY2hyb25vdXNUZXh0SW5wdXQ6WUVTXTsKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IFlF
UzsKK30KKworLSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24qKWFOb3Rp
ZmljYXRpb24KK3sKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IE5POworfQorQGVuZAogCiBu
YW1lc3BhY2UgV1RSIHsKIAorZW51bSB7CisgICAgS2V5Ym9hcmRJc1JlYWR5ID0gMSA8PCAwLAor
ICAgIEhJREV2ZW50UXVldWVJc0VtcHR5ID0gMSA8PCAxLAorICAgIEtleUlucHV0SGFzQmVlblBy
b2Nlc3NlZCA9IDEgPDwgMiwKKyAgICBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCA9IDEgPDwg
MworfTsKK3R5cGVkZWYgdW5zaWduZWQgV2FpdE9uQ29uZGl0aW9uRmxhZ3M7CisKKy8vIFRoZXNl
IHRpbWVvdXRzIChpbiBzZWNvbmRzKSBhcmUgYXJiaXRyYXJ5LCBidXQgYXJlIG11Y2ggbG9uZ2Vy
IHRoYW4gV0tUUiBzaG91bGQgcmVxdWlyZS4KK2NvbnN0IGRvdWJsZSB0aW1lb3V0RGVsYXlGb3JI
SURFdmVudERlcXVldWVkID0gMTA7Citjb25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9yS2V5Ym9h
cmRSZWFkeSA9IDEwOworY29uc3QgZG91YmxlIHRpbWVvdXREZWxheUZvckluaXRpYWxSZXBhaW50
ID0gMTA7CisKIEV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xs
ZXIqIHRlc3RDb250cm9sbGVyKQogICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0Q29udHJvbGxl
cikKICAgICAsIG1fdGltZSgwKQpAQCAtNDQsOCArMTEzLDggQEAgRXZlbnRTZW5kZXJQcm94eTo6
RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCiAgICAgLCBt
X2NsaWNrUG9zaXRpb24oKQogICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0dG9u
Tm9CdXR0b24pCiAgICAgLCBldmVudE51bWJlcigwKQorICAgICwgbV9rZXlib2FyZExpc3RlbmVy
KGFkb3B0TlMoW1tLZXlib2FyZFN0YXRlTGlzdGVuZXIgYWxsb2NdIGluaXRdKSkKIHsKLSAgICBV
TlVTRURfUEFSQU0obV90ZXN0Q29udHJvbGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKG1fbGVmdE1v
dXNlQnV0dG9uRG93bik7CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50TnVtYmVyKTsKIH0KQEAgLTY4
LDI5ICsxMzcsMjU4IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZv
ckJ1dHRvbihpbnQgYnV0dG9uKQogICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247CiB9CiAKK2Jv
b2wgRXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0aW5nKHVuc2lnbmVkIGNvbmRp
dGlvbnMpIGNvbnN0Cit7CisgICAgYm9vbCBzaG91bGRXYWl0ID0gZmFsc2U7CisgICAgaWYgKGNv
bmRpdGlvbnMgJiBLZXlib2FyZElzUmVhZHkpCisgICAgICAgIHNob3VsZFdhaXQgfD0gIVttX2tl
eWJvYXJkTGlzdGVuZXIgaXNLZXlib2FyZFJlYWR5XTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEhJ
REV2ZW50UXVldWVJc0VtcHR5KQorICAgICAgICBzaG91bGRXYWl0IHw9IFtbVUlBcHBsaWNhdGlv
biBzaGFyZWRBcHBsaWNhdGlvbl0gbnVtYmVyT2ZRdWV1ZWRISURFdmVudHNdID4gMDsKKyAgICBp
ZiAoY29uZGl0aW9ucyAmIEtleUlucHV0SGFzQmVlblByb2Nlc3NlZCkKKyAgICAgICAgc2hvdWxk
V2FpdCB8PSBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBoYXNQZW5kaW5nSW5wdXRD
b21wbGV0aW9uSGFuZGxlcl07CisgICAgaWYgKGNvbmRpdGlvbnMgJiBJbml0aWFsUmVwYWludEhh
c0NvbXBsZXRlZCkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSAhbV9kaWRQZXJmb3JtSW5pdGlhbFJl
cGFpbnQ7CisgICAgcmV0dXJuIHNob3VsZFdhaXQ7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6Zm9yY2VQYWdlUmVwYWludEFuZFdhaXRJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fZGlk
UGVyZm9ybUluaXRpYWxSZXBhaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1BhZ2VGb3Jj
ZVJlcGFpbnQobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0aGlzLCBF
dmVudFNlbmRlclByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2spOworICAgIHdhaXRPbkNv
bmRpdGlvbnNXaXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JJbml0aWFsUmVwYWludCwgSW5pdGlh
bFJlcGFpbnRIYXNDb21wbGV0ZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OndhaXRP
bkNvbmRpdGlvbnNXaXRoVGltZW91dChkb3VibGUgdGltZW91dEluU2Vjb25kcywgdW5zaWduZWQg
Y29uZGl0aW9ucykgY29uc3QKK3sKKyAgICBOU0RhdGUgKnRpbWVvdXREYXRlID0gW05TRGF0ZSBk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OnRpbWVvdXRJblNlY29uZHNdOworICAgIHdoaWxl
IChbdGltZW91dERhdGUgY29tcGFyZTpbTlNEYXRlIGRhdGVdXSA9PSBOU09yZGVyZWREZXNjZW5k
aW5nICYmIHNob3VsZENvbnRpbnVlV2FpdGluZyhjb25kaXRpb25zKSkKKyAgICAgICAgW1tOU1J1
bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3Jl
RGF0ZTp0aW1lb3V0RGF0ZV07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Zm9yY2VQYWdl
UmVwYWludENhbGxiYWNrKFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQpCit7CisgICAg
aWYgKGVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWNfY2FzdDxFdmVudFNlbmRl
clByb3h5Kj4oY29udGV4dCktPm1fZGlkUGVyZm9ybUluaXRpYWxSZXBhaW50ID0gdHJ1ZTsKK30K
Kwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVy
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycykKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBh
ZGRUb3VjaFBvaW50KG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KTsKKyAgICB0b3VjaFN0YXJ0
KCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCh1bnNpZ25lZCBidXR0b25O
dW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewotICAgIC8vIFdyaXRlIG1lLgor
ICAgIEFTU0VSVChtX2xhc3RVc2VkVG91Y2hJbmRleCk7CisgICAgcmVsZWFzZVRvdWNoUG9pbnQo
bV9sYXN0VXNlZFRvdWNoSW5kZXgpOworICAgIHRvdWNoRW5kKCk7CisgICAgY2xlYXJUb3VjaFBv
aW50cygpOworICAgIG1fbGFzdFVzZWRUb3VjaEluZGV4ID0gMDsKIH0KIAogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiB7Ci0gICAgLy8gV3Jp
dGUgbWUuCisgICAgbV9wb3NpdGlvbi54ID0geDsKKyAgICBtX3Bvc2l0aW9uLnkgPSB5ICsgNDQ7
IC8vIEZJWE1FIFRoaXMgaGFjayBvbmx5ICJ3b3JrcyIgd2hlbiBub3Qgem9vbWVkIGluLiBJIG5l
ZWQgdG8gZmluZCBhIHdheSB0byByZWxpYWJseSBtYXAgZnJvbSBkb2N1bWVudCBjb29yZHMgdG8g
c2NyZWVuIGNvb3Jkcy4KIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChp
bnQgbWlsbGlzZWNvbmRzKQogewotICAgIG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7
CisgICAgLy8gV3JpdGUgbWUuCit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRXcmFwV2l0
aFNoaWZ0S2V5RXZlbnRGb3JDaGFyYWN0ZXIoTlNTdHJpbmcqIGtleSkKK3sKKyAgICBpZiAoW2tl
eSBsZW5ndGhdICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQga2V5Q29kZSA9
IFtrZXkgY2hhcmFjdGVyQXRJbmRleDowXTsKKyAgICBpZiAoNjUgPD0ga2V5Q29kZSAmJiBrZXlD
b2RlIDw9IDkwKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBzd2l0Y2ggKGtleUNvZGUpIHsK
KyAgICBjYXNlICdgJzoKKyAgICBjYXNlICchJzoKKyAgICBjYXNlICdAJzoKKyAgICBjYXNlICcj
JzoKKyAgICBjYXNlICckJzoKKyAgICBjYXNlICclJzoKKyAgICBjYXNlICdeJzoKKyAgICBjYXNl
ICcmJzoKKyAgICBjYXNlICcqJzoKKyAgICBjYXNlICcoJzoKKyAgICBjYXNlICcpJzoKKyAgICBj
YXNlICdfJzoKKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICd7JzoKKyAgICBjYXNlICd9JzoKKyAg
ICBjYXNlICd8JzoKKyAgICBjYXNlICc6JzoKKyAgICBjYXNlICciJzoKKyAgICBjYXNlICc8JzoK
KyAgICBjYXNlICc+JzoKKyAgICBjYXNlICc/JzoKKyAgICBjYXNlICd+JzoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KK3N0YXRpYyBpbmxpbmUgdWlu
dDMyX3QgaGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKE5TU3RyaW5nKiBrZXkpCit7CisgICAgY29u
c3QgaW50IHVwcGVyY2FzZUFscGhhYmV0aWNPZmZzZXQgPSAnQScgLSBrSElEVXNhZ2VfS2V5Ym9h
cmRBOworICAgIGNvbnN0IGludCBsb3dlcmNhc2VBbHBoYWJldGljT2Zmc2V0ID0gJ2EnIC0ga0hJ
RFVzYWdlX0tleWJvYXJkQTsKKyAgICBjb25zdCBpbnQgbnVtZXJpY05vblplcm9PZmZzZXQgPSAn
MScgLSBrSElEVXNhZ2VfS2V5Ym9hcmQxOworICAgIGlmIChba2V5IGxlbmd0aF0gPT0gMSkgewor
ICAgICAgICAvLyBIYW5kbGUgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGJhc2ljIHN5bWJv
bHMuCisgICAgICAgIGludCBrZXlDb2RlID0gW2tleSBjaGFyYWN0ZXJBdEluZGV4OjBdOworICAg
ICAgICBpZiAoOTcgPD0ga2V5Q29kZSAmJiBrZXlDb2RlIDw9IDEyMikgLy8gSGFuZGxlIGEtei4K
KyAgICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0gbG93ZXJjYXNlQWxwaGFiZXRpY09mZnNldDsK
KworICAgICAgICBpZiAoNjUgPD0ga2V5Q29kZSAmJiBrZXlDb2RlIDw9IDkwKSAvLyBIYW5kbGUg
QS1aLgorICAgICAgICAgICAgcmV0dXJuIGtleUNvZGUgLSB1cHBlcmNhc2VBbHBoYWJldGljT2Zm
c2V0OworCisgICAgICAgIGlmICg0OSA8PSBrZXlDb2RlICYmIGtleUNvZGUgPD0gNTcpIC8vIEhh
bmRsZSAxLTkuCisgICAgICAgICAgICByZXR1cm4ga2V5Q29kZSAtIG51bWVyaWNOb25aZXJvT2Zm
c2V0OworCisgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgY2FzZXMuCisgICAgICAgIHN3aXRj
aCAoa2V5Q29kZSkgeworICAgICAgICBjYXNlICdgJzoKKyAgICAgICAgY2FzZSAnfic6CisgICAg
ICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkR3JhdmVBY2NlbnRBbmRUaWxkZTsKKyAg
ICAgICAgY2FzZSAnISc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkMTsK
KyAgICAgICAgY2FzZSAnQCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJk
MjsKKyAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJv
YXJkMzsKKyAgICAgICAgY2FzZSAnJCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tl
eWJvYXJkNDsKKyAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdl
X0tleWJvYXJkNTsKKyAgICAgICAgY2FzZSAnXic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkNjsKKyAgICAgICAgY2FzZSAnJic6CisgICAgICAgICAgICByZXR1cm4ga0hJ
RFVzYWdlX0tleWJvYXJkNzsKKyAgICAgICAgY2FzZSAnKic6CisgICAgICAgICAgICByZXR1cm4g
a0hJRFVzYWdlX0tleWJvYXJkODsKKyAgICAgICAgY2FzZSAnKCc6CisgICAgICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkOTsKKyAgICAgICAgY2FzZSAnKSc6CisgICAgICAgIGNhc2Ug
JzAnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDA7CisgICAgICAgIGNh
c2UgJy0nOgorICAgICAgICBjYXNlICdfJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmRIeXBoZW47CisgICAgICAgIGNhc2UgJz0nOgorICAgICAgICBjYXNlICcrJzoKKyAg
ICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRFcXVhbFNpZ247CisgICAgICAgIGNh
c2UgJ1x0JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRUYWI7CisgICAg
ICAgIGNhc2UgJ1snOgorICAgICAgICBjYXNlICd7JzoKKyAgICAgICAgICAgIHJldHVybiBrSElE
VXNhZ2VfS2V5Ym9hcmRPcGVuQnJhY2tldDsKKyAgICAgICAgY2FzZSAnXSc6CisgICAgICAgIGNh
c2UgJ30nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZENsb3NlQnJhY2tl
dDsKKyAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICBjYXNlICd8JzoKKyAgICAgICAgICAgIHJl
dHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRCYWNrc2xhc2g7CisgICAgICAgIGNhc2UgJzsnOgorICAg
ICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRTZW1p
Y29sb247CisgICAgICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgY2FzZSAnIic6CisgICAgICAgICAg
ICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUXVvdGU7CisgICAgICAgIGNhc2UgJ1xyJzoKKyAg
ICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFJl
dHVybk9yRW50ZXI7CisgICAgICAgIGNhc2UgJywnOgorICAgICAgICBjYXNlICc8JzoKKyAgICAg
ICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRDb21tYTsKKyAgICAgICAgY2FzZSAnLic6
CisgICAgICAgIGNhc2UgJz4nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2Fy
ZFBlcmlvZDsKKyAgICAgICAgY2FzZSAnLyc6CisgICAgICAgIGNhc2UgJz8nOgorICAgICAgICAg
ICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFNsYXNoOworICAgICAgICBjYXNlICcgJzoKKyAg
ICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRTcGFjZWJhcjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjb25zdCBpbnQgZnVuY3Rpb25LZXlPZmZzZXQgPSBrSElEVXNhZ2VfS2V5Ym9h
cmRGMTsKKyAgICBmb3IgKGludCBmdW5jdGlvbktleUluZGV4ID0gMTsgZnVuY3Rpb25LZXlJbmRl
eCA8PSAxMjsgKytmdW5jdGlvbktleUluZGV4KSB7CisgICAgICAgIGlmIChba2V5IGlzRXF1YWxU
b1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYlZCIsIGZ1bmN0aW9uS2V5SW5k
ZXhdXSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbktleU9mZnNldCArIGZ1bmN0aW9uS2V5
SW5kZXggLSAxOworICAgIH0KKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUi
XSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEVzY2FwZTsKKyAgICBpZiAoW2tl
eSBpc0VxdWFsVG9TdHJpbmc6QCJyZXR1cm4iXSB8fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAImVu
dGVyIl0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRSZXR1cm5PckVudGVyOwor
ICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKQorICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkTGVmdEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAInJpZ2h0QXJyb3ciXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFJp
Z2h0QXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKQorICAg
ICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkVXBBcnJvdzsKKyAgICBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXli
b2FyZERvd25BcnJvdzsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkK
KyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZERlbGV0ZU9yQmFja3NwYWNlOworICAg
IC8vIFRoZSBzaW11bGF0b3Iga2V5Ym9hcmQgaW50ZXJwcmV0cyBib3RoIGxlZnQgYW5kIHJpZ2h0
IG1vZGlmaWVyIGtleXMgdXNpbmcgdGhlIGxlZnQgdmVyc2lvbiBvZiB0aGUgdXNhZ2UgY29kZS4K
KyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdIHx8IFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2Vf
S2V5Ym9hcmRMZWZ0Q29udHJvbDsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0
U2hpZnQiXSB8fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkKKyAgICAgICAg
cmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRTaGlmdDsKKyAgICBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJsZWZ0QWx0Il0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJd
KQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkTGVmdEFsdDsKKworICAgIHJldHVy
biAwOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCiB7Ci0g
ICAgLy8gV3JpdGUgbWUuCisgICAgZm9yY2VQYWdlUmVwYWludEFuZFdhaXRJZk5lY2Vzc2FyeSgp
OworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JLZXlib2Fy
ZFJlYWR5LCBLZXlib2FyZElzUmVhZHkpOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9TVEQoa2V5KS5jX3N0cigpIGVuY29kaW5nOltOU1N0
cmluZyBkZWZhdWx0Q1N0cmluZ0VuY29kaW5nXV07CisgICAgYm9vbCBzaG91bGRXcmFwV2l0aFNo
aWZ0ID0gc2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7
CisgICAgdWludDMyX3QgdXNhZ2UgPSBoaWRVc2FnZUNvZGVGb3JDaGFyYWN0ZXIoY2hhcmFjdGVy
KTsKKyAgICB1aW50NjRfdCBhYnNvbHV0ZU1hY2hUaW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7
CisgICAgaWYgKHNob3VsZFdyYXBXaXRoU2hpZnQpCisgICAgICAgIHNlbmRJT0hJREtleWJvYXJk
RXZlbnQoYWJzb2x1dGVNYWNoVGltZSwga0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0LCB0cnVl
KTsKKworICAgIHNlbmRJT0hJREtleWJvYXJkRXZlbnQoYWJzb2x1dGVNYWNoVGltZSwgdXNhZ2Us
IHRydWUpOworICAgIHNlbmRJT0hJREtleWJvYXJkRXZlbnQoYWJzb2x1dGVNYWNoVGltZSwgdXNh
Z2UsIGZhbHNlKTsKKworICAgIGlmIChzaG91bGRXcmFwV2l0aFNoaWZ0KQorICAgICAgICBzZW5k
SU9ISURLZXlib2FyZEV2ZW50KGFic29sdXRlTWFjaFRpbWUsIGtISURVc2FnZV9LZXlib2FyZExl
ZnRTaGlmdCwgZmFsc2UpOworCisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVv
dXREZWxheUZvckhJREV2ZW50RGVxdWV1ZWQsIEtleUlucHV0SGFzQmVlblByb2Nlc3NlZCB8IEhJ
REV2ZW50UXVldWVJc0VtcHR5KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kSU9I
SURFdmVudChJT0hJREV2ZW50UmVmIGV2ZW50KQoreworICAgIEFTU0VSVChldmVudCk7CisgICAg
aWYgKCFtX2tleVdpbmRvd0NvbnRleHRJRCkgeworICAgICAgICAvLyBGSVhNRSBUaGlzIGlzIGEg
aGFjayB0byBtYWtlIHRvdWNoIGV2ZW50cyB3b3JrLiBXaGF0IGlmIHRoZXJlIGFyZSBtdWx0aXBs
ZSB3aW5kb3dzPworICAgICAgICBBU1NFUlQoW1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0
aW9uXS53aW5kb3dzIGNvdW50XSA+IDApOworICAgICAgICBtX2tleVdpbmRvd0NvbnRleHRJRCA9
IFtVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS53aW5kb3dzWzBdLl9jb250ZXh0SWQ7
CisgICAgfQorICAgIGlmIChJT0hJREV2ZW50R2V0VHlwZShldmVudCkgPT0ga0lPSElERXZlbnRU
eXBlRGlnaXRpemVyKQorICAgICAgICBCS1NISURFdmVudFNldERpZ2l0aXplckluZm8oZXZlbnQs
IG1fa2V5V2luZG93Q29udGV4dElELCBmYWxzZSwgZmFsc2UsIE5VTEwsIDAsIDApOworCisgICAg
W1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBfZW5xdWV1ZUhJREV2ZW50OmV2ZW50
XTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kSU9ISURLZXlib2FyZEV2ZW50KHVp
bnQ2NF90IHRpbWVzdGFtcCwgdWludDMyX3QgdXNhZ2UsIGJvb2wgaXNLZXlEb3duKQoreworICAg
IHNlbmRJT0hJREV2ZW50KElPSElERXZlbnRDcmVhdGVLZXlib2FyZEV2ZW50KGtDRkFsbG9jYXRv
ckRlZmF1bHQsCisgICAgICAgIHRpbWVzdGFtcCwKKyAgICAgICAga0hJRFBhZ2VfS2V5Ym9hcmRP
cktleXBhZCwKKyAgICAgICAgdXNhZ2UsCisgICAgICAgIGlzS2V5RG93biwKKyAgICAgICAga0lP
SElERXZlbnRPcHRpb25Ob25lKSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VT
Y3JvbGxCeShpbnQgeCwgaW50IHkpCkBAIC0xMTYsMTIgKzQxNCwxOSBAQCB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwgYm9vbCBwYWdl
ZCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRU
b3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBpbnQgaW5k
ZXggPSBuZXh0QXZhaWxhYmxlVG91Y2hQb2ludEluZGV4KCk7CisgICAgQVNTRVJUKGluZGV4KTsK
KyAgICAKKyAgICBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5hZGQoaW5kZXgsIHN0ZDo6bWFrZV91
bmlxdWU8VG91Y2hQb2ludEluZm8+KHgsIHkpKTsKKyAgICBtX2xhc3RVc2VkVG91Y2hJbmRleCA9
IGluZGV4OwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50
IGluZGV4LCBpbnQgeCwgaW50IHkpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgQVNTRVJUKG1f
dG91Y2hQb2ludEluZm9CeUluZGV4LmNvbnRhaW5zKGluZGV4KSk7CisgICAgYXV0byBpbmZvID0g
bV90b3VjaFBvaW50SW5mb0J5SW5kZXguZ2V0KGluZGV4KTsKKyAgICBpbmZvLT54ID0geDsKKyAg
ICBpbmZvLT55ID0geTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaE1vZGlm
aWVyKFdLRXZlbnRNb2RpZmllcnMsIGJvb2wgZW5hYmxlKQpAQCAtMTMxLDEyICs0MzYsMzQgQEAg
dm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaE1vZGlmaWVyKFdLRXZlbnRNb2RpZmllcnMs
IGJvb2wgZW5hYmxlKQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRp
dXMoaW50IHJhZGl1c1gsIGludCByYWRpdXNZKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIG1f
dG91Y2hQb2ludE1ham9yUmFkaXVzID0gc3RkOjptYXgocmFkaXVzWCwgcmFkaXVzWSk7CisgICAg
bV90b3VjaFBvaW50TWlub3JSYWRpdXMgPSBzdGQ6Om1pbihyYWRpdXNYLCByYWRpdXNZKTsKIH0K
IAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KCkKIHsKLSAgICAvLyBXcml0ZSBt
ZS4KKyAgICBmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCk7CisgICAgSU9ISURF
dmVudFJlZiBldmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0
b3JEZWZhdWx0LAorICAgICAgICBtYWNoX2Fic29sdXRlX3RpbWUoKSwKKyAgICAgICAga0lPSElE
RGlnaXRpemVyVHJhbnNkdWNlclR5cGVIYW5kLAorICAgICAgICAwLCAvLyBJbmRleAorICAgICAg
ICAwLCAvLyBJZGVudGl0eQorICAgICAgICBrSU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAvLyBF
dmVudCBtYXNrCisgICAgICAgIDAsIC8vIEJ1dHRvbiBtYXNrCisgICAgICAgIDAsIC8vIFBvc2l0
aW9uICh4LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAs
IC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXNzdXJlCisgICAgICAgIDAs
IC8vIFR3aXN0CisgICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAg
ICAgICB0cnVlLCAvLyBJcyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVu
dE9wdGlvbk5vbmUpOworICAgIAorICAgIGZvciAoYXV0byBpdCA9IG1fdG91Y2hQb2ludEluZm9C
eUluZGV4LmJlZ2luKCksIGVuZCA9IG1fdG91Y2hQb2ludEluZm9CeUluZGV4LmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpCisgICAgICAgIElPSElERXZlbnRBcHBlbmRFdmVudChldmVudCwgY3JlYXRl
VG91Y2hQb2ludChpdC0+dmFsdWUuZ2V0KCksIHRydWUsIGl0LT5rZXkpLCBrSU9ISURFdmVudE9w
dGlvbk5vbmUpOworICAgIAorICAgIHNlbmRJT0hJREV2ZW50KGV2ZW50KTsKKyAgICB3YWl0T25D
b25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1ZXVlZCwgSElE
RXZlbnRRdWV1ZUlzRW1wdHkpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92
ZSgpCkBAIC0xNDYsNyArNDczLDI3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3Zl
KCkKIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCgpCiB7Ci0gICAgLy8gV3JpdGUg
bWUuCisgICAgSU9ISURFdmVudFJlZiBldmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJF
dmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICBtYWNoX2Fic29sdXRlX3RpbWUoKSwK
KyAgICAgICAga0lPSElERGlnaXRpemVyVHJhbnNkdWNlclR5cGVIYW5kLAorICAgICAgICAwLCAv
LyBJbmRleAorICAgICAgICAwLCAvLyBJZGVudGl0eQorICAgICAgICBrSU9ISUREaWdpdGl6ZXJF
dmVudFRvdWNoLCAvLyBFdmVudCBtYXNrCisgICAgICAgIDAsIC8vIEJ1dHRvbiBtYXNrCisgICAg
ICAgIDAsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh5LWF4
aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisgICAgICAgIDAsIC8vIFByZXNz
dXJlCisgICAgICAgIDAsIC8vIFR3aXN0CisgICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2Vy
IGluIHJhbmdlPworICAgICAgICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNlciB0b3VjaGluZz8KKyAg
ICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fdG91
Y2hQb2ludEluZm9CeUluZGV4LmJlZ2luKCksIGVuZCA9IG1fdG91Y2hQb2ludEluZm9CeUluZGV4
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIElPSElERXZlbnRBcHBlbmRFdmVudChl
dmVudCwgY3JlYXRlVG91Y2hQb2ludChpdC0+dmFsdWUuZ2V0KCksIGZhbHNlLCBpdC0+a2V5KSwg
a0lPSElERXZlbnRPcHRpb25Ob25lKTsKKworICAgIHNlbmRJT0hJREV2ZW50KGV2ZW50KTsKKyAg
ICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1
ZXVlZCwgSElERXZlbnRRdWV1ZUlzRW1wdHkpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnRvdWNoQ2FuY2VsKCkKQEAgLTE1NiwxMiArNTAzLDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6dG91Y2hDYW5jZWwoKQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2lu
dHMoKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIG1fdG91Y2hQb2ludEluZm9CeUluZGV4LmNs
ZWFyKCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50
IGluZGV4KQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIEFTU0VSVChtX3RvdWNoUG9pbnRJbmZv
QnlJbmRleC5jb250YWlucyhpbmRleCkpOworICAgIGF1dG8gaW5mbyA9IG1fdG91Y2hQb2ludElu
Zm9CeUluZGV4LmdldChpbmRleCk7CisgICAgaW5mby0+aXNUb3VjaGluZyA9IGZhbHNlOwogfQog
CiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQoaW50IGluZGV4KQpAQCAt
MTcwLDQgKzUxOSwzNSBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQo
aW50IGluZGV4KQogfQogI2VuZGlmCiAKKy8vIFJldHVybnMgYSB2YWx1ZSBiZXR3ZWVuIDEgdGhy
b3VnaCA1IGluZGljYXRpbmcgdGhlIGluZGV4IG9mIHRoZSB0b3VjaCBwb2ludCwKKy8vIG9yIDAg
aWYgd2UgYXJlIGFscmVhZHkgdHJhY2tpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRvdWNoIHBv
aW50cy4KK2ludCBFdmVudFNlbmRlclByb3h5OjpuZXh0QXZhaWxhYmxlVG91Y2hQb2ludEluZGV4
KCkgY29uc3QKK3sKKyAgICBmb3IgKGludCBpbmRleCA9IDE7IGluZGV4IDw9IG1heE51bVRvdWNo
UG9pbnRzOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV90b3VjaFBvaW50SW5mb0J5SW5kZXgu
Y29udGFpbnMoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICBy
ZXR1cm4gMDsKK30KKworSU9ISURFdmVudFJlZiBFdmVudFNlbmRlclByb3h5OjpjcmVhdGVUb3Vj
aFBvaW50KFRvdWNoUG9pbnRJbmZvKiBpbmZvLCBib29sIGlzVG91Y2hpbmcsIGludCBpbmRleCkK
K3sKKyAgICBJT0hJREV2ZW50UmVmIGV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZp
bmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIGluZm8tPm1hY2hUaW1lLAor
ICAgICAgICBpbmRleCwKKyAgICAgICAgZmluZ2VySWRlbnRpdHlGb3JUb3VjaFBvaW50SW5kZXgo
aW5kZXgpLAorICAgICAgICBrSU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoLCAvLyBFdmVudCBtYXNr
CisgICAgICAgIGluZm8tPngsIC8vIFBvc2l0aW9uICh4LWF4aXMpCisgICAgICAgIGluZm8tPnks
IC8vIFBvc2l0aW9uICh5LWF4aXMpCisgICAgICAgIDAsIC8vIFBvc2l0aW9uICh6LWF4aXMpCisg
ICAgICAgIDAsIC8vIFByZXN1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgaXNUb3Vj
aGluZywgLy8gSXMgdHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgaXNUb3VjaGluZywgLy8g
SXMgdHJhbnNkdWNlciB0b3VjaGluZz8KKyAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsK
KyAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShldmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0
aXplck1ham9yUmFkaXVzLCBtX3RvdWNoUG9pbnRNYWpvclJhZGl1cyk7CisgICAgSU9ISURFdmVu
dFNldEZsb2F0VmFsdWUoZXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNaW5vclJhZGl1
cywgbV90b3VjaFBvaW50TWlub3JSYWRpdXMpOworICAgIHJldHVybiBldmVudDsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1
Y2JmMWMyZWFiODNkYzkzOGNlMjljMjY4ZTRjMjJmMmNjNmFkMDEuLjhlZjdmNDMzY2Y0NDQ5NjQ5
NTYxOWY5NzdlMjE5ZjBhYTFhOWRiYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00OCwxMCArNDgsMTMgQEAKIAkJMjlBOEZDREQxNDVGMDMzNzAwOTA0NUE2IC8qIEpT
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTYgLyogSlNBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLzsgfTsKIAkJMjlBOEZDRTIxNDVGMDM3QjAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBOEZDRTExNDVGMDM3QjAwOTA0NUE2
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OwogCQkyOUE4RkNFNTE0
NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0U0MTQ1RjA0
NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tICovOyB9Owor
CQkyRTBDNzdDMzFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwQzc3QzIxQjlGNUU4OTAw
NTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMkUwQzc3QzQxQjlGNUU4RjAwNTY0
RUE5IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFMEM3N0MyMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdv
cmsgKi87IH07CisJCTJFMEM3N0M2MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNl
cy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3
b3JrICovOyB9OworCQkyRTBDNzdDNzFCOUY1RUJCMDA1NjRFQTkgLyogQmFja0JvYXJkU2Vydmlj
ZXMuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1l
d29yayAqLzsgfTsKIAkJMkUzNEM5MDAxOEI2ODgwODAwMDA2N0JCIC8qIFdlYktpdFRlc3RSdW5u
ZXJJbmplY3RlZEJ1bmRsZS5idW5kbGUgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjUxODYyMTFEMTVENTQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlICovOyB9OwogCQkyRTYzRUQ4QTE4OTFBRDdFMDAyQTdB
RkMgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gKi87IH07CiAJCTJFNjNFRDhCMTg5MUFEN0UwMDJB
N0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLzsgfTsKLQkJMkU2M0VEOEUxODkxQUQ3RTAw
MkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRT
ZW5kZXJQcm94eUlPUy5tbSAqLzsgfTsKIAkJMkU2M0VEOEYxODkxQUQ3RTAwMkE3QUZDIC8qIElu
amVjdGVkQnVuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU2M0VEN0IxODkxQUNFOTAwMkE3QUZDIC8qIEluamVjdGVkQnVuZGxlSU9TLm1t
ICovOyB9OwogCQkyRTYzRUQ5MTE4OTFBREFEMDAyQTdBRkMgLyogUGxhdGZvcm1XZWJWaWV3SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVFNTJE
MTMxODkwQTlGQjAwMTBFRDIxIC8qIFBsYXRmb3JtV2ViVmlld0lPUy5tbSAqLzsgfTsKIAkJMkU2
M0VEOTIxODkxQURBRDAwMkE3QUZDIC8qIFRlc3RDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVFNTJEMTQxODkwQTlGQjAwMTBF
RDIxIC8qIFRlc3RDb250cm9sbGVySU9TLm1tICovOyB9OwpAQCAtMTkwLDExICsxOTMsMTMgQEAK
IAkJMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE3IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIv
SlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkRDRTJDRDExQjg0NTI0NTAwQzdGODMyIC8qIFRlc3RDb250cm9sbGVy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0Q29u
dHJvbGxlckNvY29hLm1tOyBwYXRoID0gY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElP
S2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0g
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBT
REtST09UOyB9OworCQkyRTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2Vydmlj
ZXMuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdv
cms7IHBhdGggPSBQbGF0Zm9ybXMvaVBob25lU2ltdWxhdG9yLnBsYXRmb3JtL0RldmVsb3Blci9T
REtzL2lQaG9uZVNpbXVsYXRvcjkuMC5zZGsvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29y
a3MvQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gREVWRUxPUEVSX0RJ
UjsgfTsKIAkJMkU2M0VENzUxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJF
NjNFRDc2MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYzRUQ3NzE4
OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VENzgxODkxQUNFOTAwMkE3
QUZDIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRT
ZW5kZXJQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEV2ZW50U2VuZGVyUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
NjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNlbmRlclByb3h5SU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRXZlbnRTZW5kZXJQcm94eUlPUy5tbTsg
cGF0aCA9IC4uL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5q
ZWN0ZWRCdW5kbGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBJbmplY3RlZEJ1bmRsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVF
NTJDRTAxODkwQTlBODAwMTBFRDIxIC8qIFdlYktpdFRlc3RSdW5uZXJBcHAuYXBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmFwcGxpY2F0
aW9uOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyQXBwLmFwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkVFNTJDRTIxODkwQTlBODAw
MTBFRDIxIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0
aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlv
bi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtMzE0LDYgKzMxOSw4IEBA
CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkyRTBDNzdDMzFCOUY1RTg5MDA1NjRFQTkg
LyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMkUwQzc3QzcxQjlGNUVC
QjAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMzM1LDkgKzM0MiwxMSBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMkUw
Qzc3QzQxQjlGNUU4RjAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAogCQkJCUJDMjUxOTQwMTFEMTVEOEIwMDJFQkMwMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBNjY0QkM3NjEzQTVGM0E5MDA5QTdCMjUgLyogbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMEY1MTY5Q0Mx
NDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQkyRTBDNzdDNjFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC00NjEsNyArNDcwLDYgQEAKIAkJCQkyRTYzRUQ3NjE4OTFB
Q0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLywKIAkJ
CQkyRTYzRUQ3NzE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1Mu
bW0gKi8sCiAJCQkJMkU2M0VENzgxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0gKi8sCi0JCQkJMkU2M0VEN0ExODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2Vu
ZGVyUHJveHlJT1MubW0gKi8sCiAJCQkJMkU2M0VEN0IxODkxQUNFOTAwMkE3QUZDIC8qIEluamVj
dGVkQnVuZGxlSU9TLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CkBAIC00NzAsNiArNDc4
LDggQEAKIAkJMkVFNTJDRTExODkwQTlBODAwMTBFRDIxIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJFMEM3N0M1MUI5RjVFQjUw
MDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgKi8sCisJCQkJMkUwQzc3QzIx
QjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayAqLywKIAkJCQkyRUU1MkNFMjE4OTBB
OUE4MDAxMEVEMjEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCiAJCQkJMkVFNTJDRTQxODkw
QTlBODAwMTBFRDIxIC8qIENvcmVHcmFwaGljcy5mcmFtZXdvcmsgKi8sCiAJCQkJMkVFNTJDRTYx
ODkwQTlBODAwMTBFRDIxIC8qIFVJS2l0LmZyYW1ld29yayAqLywKQEAgLTQ4OSw2ICs0OTksNyBA
QAogCQkyRUU1MkQxMjE4OTBBOUZCMDAxMEVEMjEgLyogaW9zICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyog
RXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLywKIAkJCQkyRUU1MkNFQjE4OTBBOUE4MDAxMEVEMjEg
LyogSW5mb1BsaXN0LnN0cmluZ3MgKi8sCiAJCQkJMkVFNTJEMTMxODkwQTlGQjAwMTBFRDIxIC8q
IFBsYXRmb3JtV2ViVmlld0lPUy5tbSAqLywKIAkJCQkyRUU1MkQxNDE4OTBBOUZCMDAxMEVEMjEg
LyogVGVzdENvbnRyb2xsZXJJT1MubW0gKi8sCkBAIC04OTQsNyArOTA1LDYgQEAKIAkJCQkyRTYz
RUQ5RTE4OTFBRUMxMDAyQTdBRkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0SU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkU2M0VEOEExODkxQUQ3RTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU2M0VEOEIxODkxQUQ3RTAwMkE3
QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MkU2M0VEOEUxODkxQUQ3RTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyRTYzRUQ4RjE4OTFBRDdFMDAyQTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJ
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTIxMEVEQTE0NENDM0VBMDA4MzVCQjYgLyogQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRUIwMTQ0Q0FD
QkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTExODksNiArMTE5OSw3IEBACiAJCQkJQTExNUNDQjgxQjlENzY5RDAwRTg5MTU5IC8qIFBy
b2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKIAkJQTE4
NTEwMkQxQjlBREU0ODAwNzQ0QUVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJXZWJLaXRUZXN0UnVubmVyIChMaWJyYXJ5KSIgKi8gPSB7CiAJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI4NmU3NjcxNzE4YWUzMzU5ZTU5YjA4NTdl
ZGQ0NWQ0MDFmOTAwZmYuLmY2NTk5NWIxMDJmY2VlOTZlNDg5ZWI3ZjhmNTRkMTU4MzQ0ZDFjMmUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wOS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRXZlbnRTZW5kZXJQcm94eSBm
b3IgV2ViS2l0VGVzdFJ1bm5lciBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRt
bDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTUtMDktMDkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ1NTIGdlbmVyYWwgc2libGluZyBzZWxlY3RvcnMgZG9lcyBub3Qgd29yayB3aXRob3V0
IENTUyBKSVQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2Vh
cmNoLWlucHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1p
bnB1dC5odG1sCmluZGV4IDg2ZWY1NmE1ZjcwOTIwNjI3MzgwOGFlMzdkNDc4NWVhMmVhODg3ODcu
LmMwY2M0MzBjMDdlMTk5NTkwNjJkZDQ0ODU0MjBiODY3MDk5NTFlNGQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbApAQCAtMTQsMTgg
KzE0LDYgQEAgZnVuY3Rpb24gbG9nKG1zZywgc3VjY2VzcykKICAgICBsb2dEaXYuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLnRleHRDb250ZW50ID0gbXNnICsgJzog
JyArICghIXN1Y2Nlc3MgPyAnUEFTUycgOiAnRkFJTCcpOwogfQogCi1mdW5jdGlvbiBjbGlja09u
KGVsZW1lbnQpCi17Ci0gICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0
aCAvIDI7Ci0gICAgdmFyIHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KIGZ1bmN0
aW9uIHJ1blRlc3QoKQogewogICAgIGxvZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRh
cmVhLXRvZ2dsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQKaW5kZXggZmY0M2Nh
NDA5MTUwYTU0Nzk0MTU5ODE4MDM5NTVlZTFkNDBlNGQxNi4uYzdjZjk1NzRjZDE2ZGM2YjRhMjcy
ZDRhNTNkMDk3MmEyNWIzM2ZkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9l
bXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZW1wdHktdGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLWV4cGVjdGVkLnR4
dApAQCAtMSArMSw1IEBACitUZXN0cyB0aGF0IHRvZ2dsaW5nIGRpc2FibGVkIHN0YXRlIGluIGEg
dGV4dGFyZWEgbGVhdmVzIHRoZSB0ZXh0YXJlYSB0eXBlYWJsZS4gVG8gVGVzdCBtYW51YWxseSwg
bG9hZCB0aGlzIHBhZ2UgYW5kIHR5cGUgaW4gdGhlIHRleHRhcmVhLiBJZiB5b3UgY2FuIHR5cGUs
IHRoZW4gdGhlIHRlc3Qgc3VjY2VlZGVkLgorCisKKwogU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHktdGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLmh0
bWwKaW5kZXggM2Y0OGRmZGU2NGNlM2RiNzMxZDRjOTVkOWM2MWE0NTJiNDdhZjA0Ny4uOWI2NDEy
ZWFkMDg4YTk4Y2RiNzJkYmViYTFjZWRiZjVkMDA2MTU0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1s
CkBAIC0xLDcgKzEsOSBAQAorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+VGVzdHMgdGhh
dCB0b2dnbGluZyBkaXNhYmxlZCBzdGF0ZSBpbiBhIHRleHRhcmVhIGxlYXZlcyB0aGUgdGV4dGFy
ZWEgdHlwZWFibGUuCiBUbyBUZXN0IG1hbnVhbGx5LCBsb2FkIHRoaXMgcGFnZSBhbmQgdHlwZSBp
biB0aGUgdGV4dGFyZWEuIElmIHlvdSBjYW4gdHlwZSwgdGhlbgogdGhlIHRlc3Qgc3VjY2VlZGVk
LjxwPgogPHRleHRhcmVhIGlkPSJ0YSIgZGlzYWJsZWQ9ImRpc2FibGVkIj48L3RleHRhcmVhPgor
PC9ib2R5PgogCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKQEAgLTksMTggKzExLDIxIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi1zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgIHRhLmRpc2FibGVkID0gZmFsc2U7Ci0gICAgdGEuZm9jdXMoKTsKLSAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnLCBb
XSk7Ci0gICAgICAgIHZhciByZXN1bHQgPSB0YS52YWx1ZTsKLSAgICAgICAgaWYgKHJlc3VsdCA9
PSAiYSIpCi0gICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHByZT5TVUNDRVNTPC9wcmU+Iik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cHJlPkZBSUwsIHJl
c3VsdCB3YXMgJyIgKyByZXN1bHQgKyAiJy48L3ByZT4iKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0sIDApOwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBldmVudFNlbmRlci5zZXRBbGxvd0Fzc2lzdGFuY2VP
blByb2dyYW1tYXRpY0ZvY3VzKHRydWUpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHRhLmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgIHRhLmZvY3VzKCk7CisgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURv
d24oJ2EnLCBbXSk7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGEudmFsdWU7CisgICAgICAg
ICAgICBpZiAocmVzdWx0ID09ICJhIikKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJTVUNDRVNTIikpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIkZBSUwsIHJlc3VsdCB3YXMgJyIgKyByZXN1bHQgKyAiJy4iKSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgMCk7Cit9CiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWlucHV0LWV2
ZW50LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtaW5wdXQt
ZXZlbnQuanMKaW5kZXggMzMzMGFlOGY5NmI2MTBmZTQ3NWE0YzNlNmY1YThhZTA4NjA0MGE3Mi4u
Mzc4ODJkYjk2YjlkZDJmMThjMjYzZGNkNjFmNzgzOWE0ZGJlZTcyZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQu
anMKQEAgLTIyLDIzICsyMiwyNiBAQCBmdW5jdGlvbiBoYW5kbGVUZXh0YXJlYU9uSW5wdXQoZSkg
ewogICAgIH0KIH0KIAotdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJyk7Ci10
YS5zZXRBdHRyaWJ1dGUoJ29uaW5wdXQnLCAnaGFuZGxlVGV4dGFyZWFPbklucHV0KGV2ZW50KScp
OworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBldmVudFNlbmRlci5zZXRBbGxvd0Fzc2lzdGFu
Y2VPblByb2dyYW1tYXRpY0ZvY3VzKHRydWUpOworICAgIHZhciB0YSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0YScpOworICAgIHRhLnNldEF0dHJpYnV0ZSgnb25pbnB1dCcsICdoYW5kbGVU
ZXh0YXJlYU9uSW5wdXQoZXZlbnQpJyk7CiAKLS8vIENoYW5nZSB0aGUgdmFsdWUgYmVmb3JlIGZv
Y3VzaW5nLgotdGEudmFsdWUgPSAnJzsKKyAgICAvLyBDaGFuZ2UgdGhlIHZhbHVlIGJlZm9yZSBm
b2N1c2luZy4KKyAgICB0YS52YWx1ZSA9ICcnOwogCi10YS5mb2N1cygpOworICAgIHRhLmZvY3Vz
KCk7CiAKLWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBldmVudFNlbmRlci5rZXlEb3du
KCd4JywgW10pOwotICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENh
bGxDb3VudCcsIDEpOwotICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxs
Q291bnQnLCAxKTsKLSAgICAKLSAgICAvLyBDaGFuZ2UgcHJvZ3JhbW1hdGljYWxseQotICAgIHRh
LnZhbHVlID0gJ3Byb2dyYW1tYXRpY2FsbHknOwotICAgIAotICAgIC8vIFNob3VsZCBub3QgaGF2
ZSB0cmlnZ2VyZWQgdGhlIGV2ZW50cy4KLSAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVUZXh0
YXJlYU9uSW5wdXRDYWxsQ291bnQnLCAxKTsKLSAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVE
aXZPbklucHV0Q2FsbENvdW50JywgMSk7Ci19CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCd4JywgW10pOworICAgICAgICBzaG91bGRF
dmFsdWF0ZVRvKCdoYW5kbGVUZXh0YXJlYU9uSW5wdXRDYWxsQ291bnQnLCAxKTsKKyAgICAgICAg
c2hvdWxkRXZhbHVhdGVUbygnaGFuZGxlRGl2T25JbnB1dENhbGxDb3VudCcsIDEpOworICAgICAg
ICAKKyAgICAgICAgLy8gQ2hhbmdlIHByb2dyYW1tYXRpY2FsbHkKKyAgICAgICAgdGEudmFsdWUg
PSAncHJvZ3JhbW1hdGljYWxseSc7CisgICAgICAgIAorICAgICAgICAvLyBTaG91bGQgbm90IGhh
dmUgdHJpZ2dlcmVkIHRoZSBldmVudHMuCisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRs
ZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEpOworICAgICAgICBzaG91bGRFdmFsdWF0ZVRv
KCdoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50JywgMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1p
bnB1dC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50
Lmh0bWwKaW5kZXggOGY3YzZiOGRkOWQyMmQ2ZDkyYjQ2M2ViMzRiMTI3MmE5MDAxMjA4YS4uNDEz
ZDliM2IxMDNlNGFiZjdlOTQ3YjU4YWM3ZDI5ODBhNTcxMTBhOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwKQEAgLTIwLDYgKzIwLDcgQEAgZnVuY3Rp
b24gdHlwZUludG8oZWxlbWVudCwgdmFsdWUpCiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogeworICAg
IGV2ZW50U2VuZGVyLnNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXModHJ1ZSk7
CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1
dC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlu
cHV0LWV2ZW50LWV4cGVjdGVkLnR4dAppbmRleCA3OTQwMTE5ZGU0ZGM1ZjkzOGZkNDBhMjM5OWZj
ODBiODgxYjE4ZDM3Li4zODI2NGZiYWU1ZTlmZjg4NWM2Nzg4M2Q1YTU1MGRkNGFlZDc5YzI3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2
ZW50LWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywxMyBAQCBUZXN0IGZvciBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxODkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
IFBBU1MgdGEudmFsdWUgaXMgIngiCiBQQVNTIHRhLnZhbHVlIGlzICJ4IgogUEFTUyBoYW5kbGVU
ZXh0YXJlYU9uSW5wdXRDYWxsQ291bnQgaXMgMQogUEFTUyBoYW5kbGVEaXZPbklucHV0Q2FsbENv
dW50IGlzIDEKIFBBU1MgaGFuZGxlVGV4dGFyZWFPbklucHV0Q2FsbENvdW50IGlzIDEKIFBBU1Mg
aGFuZGxlRGl2T25JbnB1dENhbGxDb3VudCBpcyAxCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sCmluZGV4IGIzMzcxNDY5NzY0Nzc2ZTA4MDljOWEzMTBk
MzI2ZTI4MzNmZGY2NzUuLjNiYTVjNGJkZDVlNzFiNjNjNzFmODQ4NTVkZmFiMWIxOWM4ZTk5Yzgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0
bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHk+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9y
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNGRiNmJjMWE2OTFjNDAxNmI3OGE0ODI4MDIyYTAxZGFhNmZj
NjYwYi4uZDRjYWJkNTM3Mjk2NThjZjg3OTA4ZjU5NzgyMTM2ZTRjMmI4ZmI5MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTc0NCw4ICsxNzQ0LDggQEAgZmFzdC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS1zdGVwdXAt
c3RlcGRvd24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS12
YWx1ZS1zYW5pdGl6YXRpb24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9p
bnB1dC12YWx1ZWFzZGF0ZS1kYXRldGltZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2Rh
dGV0aW1lL2lucHV0LXZhbHVlYXNudW1iZXItZGF0ZXRpbWUuaHRtbCBbIEZhaWx1cmUgXQotZmFz
dC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jt
cy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9m
b3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbCBbIFBhc3MgXQorZmFzdC9mb3Jtcy9lbXB0
eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9lbnRl
ci1jbGlja3MtYnV0dG9ucy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2ZpZWxkc2V0LWxl
Z2VuZC1wYWRkaW5nLXVuY2xpcHBlZC1maWVsZHNldC1ib3JkZXIuaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9mb3Jtcy9maWVsZHNldC13aXRoLWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTE4NDIs
OSArMTg0Miw5IEBAIGZhc3QvZm9ybXMvc2VsZWN0L29wdGdyb3VwLWNsaWNraW5nLmh0bWwgWyBG
YWlsdXJlIF0KIGZhc3QvZm9ybXMvc2VsZWN0L29wdGlvbi1zZWxlY3RpbmcuaHRtbCBbIEZhaWx1
cmUgXQogZmFzdC9mb3Jtcy9zZWxlY3Qvc2VsZWN0LWRpc2FibGVkLmh0bWwgWyBGYWlsdXJlIF0K
IGZhc3QvZm9ybXMvc2hhZG93LXRyZWUtZXhwb3N1cmUuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9m
b3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZm9ybXMvdGV4dC1p
bnB1dC1ldmVudC5odG1sIFsgUGFzcyBdCiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFycm93LW5hdmln
YXRpb24uaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5o
dG1sIFsgRmFpbHVyZSBdCitmYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwgWyBQ
YXNzIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgWyBG
YWlsdXJlIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtbWV0cmljcy5odG1sIFsgRmFpbHVyZSBdCiBm
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXdyYXBwaW5nLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261580</attachid>
            <date>2015-09-19 11:17:17 -0700</date>
            <delta_ts>2015-09-19 11:26:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150919111702.patch</filename>
            <type>text/plain</type>
            <size>62622</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCmluZGV4IDQ5YzMyM2E1M2E3YTUwYzIyOWZkZTFjMDNhZDU4NDNkMDQ0YjJk
YTguLmY5MjcwYjFiNjg2OGY2YTkyNjcyN2I5MWRiY2ExODM5NTIyOGIwODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDY5LDYgKzI0NjksNDYgQEAg
dm9pZCBXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcihXS1BhZ2VSZWYgcGFnZVJlZikK
ICAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiB9CiAK
KyNpZiBQTEFURk9STShJT1MpCit2b2lkIFdLUGFnZUV4cGVjdFdlYlRvdWNoRXZlbnQoV0tQYWdl
UmVmIHBhZ2UpCit7CisgICAgdG9JbXBsKHBhZ2UpLT5zZXRIYXNSZWNlaXZlZFdlYlRvdWNoRXZl
bnQoZmFsc2UpOworfQorCit2b2lkIFdLUGFnZUV4cGVjdFdlYktleUV2ZW50KFdLUGFnZVJlZiBw
YWdlKQoreworICAgIHRvSW1wbChwYWdlKS0+c2V0SGFzUmVjZWl2ZWRXZWJLZXlFdmVudChmYWxz
ZSk7Cit9CisKK2Jvb2wgV0tQYWdlSGFzUmVjZWl2ZWRXZWJUb3VjaEV2ZW50KFdLUGFnZVJlZiBw
YWdlKQoreworICAgIHJldHVybiB0b0ltcGwocGFnZSktPmhhc1JlY2VpdmVkV2ViVG91Y2hFdmVu
dCgpOworfQorCitib29sIFdLUGFnZUhhc1JlY2VpdmVkV2ViS2V5RXZlbnQoV0tQYWdlUmVmIHBh
Z2UpCit7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+aGFzUmVjZWl2ZWRXZWJLZXlFdmVudCgp
OworfQorI2Vsc2UKK3ZvaWQgV0tQYWdlRXhwZWN0V2ViVG91Y2hFdmVudChXS1BhZ2VSZWYpCit7
Cit9CisKK3ZvaWQgV0tQYWdlRXhwZWN0V2ViS2V5RXZlbnQoV0tQYWdlUmVmKQoreworfQorCiti
b29sIFdLUGFnZUhhc1JlY2VpdmVkV2ViVG91Y2hFdmVudChXS1BhZ2VSZWYpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFdLUGFnZUhhc1JlY2VpdmVkV2ViS2V5RXZlbnQoV0tQYWdl
UmVmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgKaW5kZXggYWQ5YTlmODI2NDcyNmI2ZTlkMTExNmUxMGQ3MzA3NGIwYzEz
NGY4OC4uZWIzMGFmZjgwMjVjMmFiOGRhMzFlNjNmNzIzYjNlMWU3ZWFiNjg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBAIC0xMjEsNiAr
MTIxLDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUhhbmRsZU1lZGlhRXZlbnQoV0tQYWdlUmVm
IHBhZ2UsIFdLTWVkaWFFdmVudFR5cGUgZXZlbnQpOwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VM
b2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2UsIFdL
VVJMUmVmIHVybCwgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKTsKIAorV0tfRVhQT1JUIHZv
aWQgV0tQYWdlRXhwZWN0V2ViVG91Y2hFdmVudChXS1BhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQg
dm9pZCBXS1BhZ2VFeHBlY3RXZWJLZXlFdmVudChXS1BhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQg
Ym9vbCBXS1BhZ2VIYXNSZWNlaXZlZFdlYlRvdWNoRXZlbnQoV0tQYWdlUmVmIHBhZ2UpOworV0tf
RVhQT1JUIGJvb2wgV0tQYWdlSGFzUmVjZWl2ZWRXZWJLZXlFdmVudChXS1BhZ2VSZWYgcGFnZSk7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1
OTFlODgyZjYuLjY1NDkzZDE3MTFkOTFjYmY2NWVkYTc0MmVhZDcyMGY4ZDhiOTZhNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gcHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9y
QmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAg
ICBzZW5kRm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc1M2M4MDEwMTlkYmVlMmZlNzVj
NTdmMGQzYTIzOGMwODJlMzgwNWIuLjAxYWU3MjY4ODdmYzJkNTU3NTNlMWU5ZDI4NDhmYjI1YzQ1
NDQzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQzNCw2
ICs0MzQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNFZGl0YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFZGl0YWJsZTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgYWxsb3dBc3Np
c3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dBc3Npc3Rh
bmNlT25Qcm9ncmFtbWF0aWNGb2N1czsgfQorICAgIHZvaWQgc2V0SGFzUmVjZWl2ZWRXZWJUb3Vj
aEV2ZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNSZWNlaXZlZEV4cGVjdGVkV2ViVG91Y2hFdmVudCA9
IHZhbHVlOyB9OworICAgIHZvaWQgc2V0SGFzUmVjZWl2ZWRXZWJLZXlFdmVudChib29sIHZhbHVl
KSB7IG1faGFzUmVjZWl2ZWRFeHBlY3RlZFdlYktleUV2ZW50ID0gdmFsdWU7IH07CisgICAgYm9v
bCBoYXNSZWNlaXZlZFdlYlRvdWNoRXZlbnQoKSB7IHJldHVybiBtX2hhc1JlY2VpdmVkRXhwZWN0
ZWRXZWJUb3VjaEV2ZW50OyB9OworICAgIGJvb2wgaGFzUmVjZWl2ZWRXZWJLZXlFdmVudCgpIHsg
cmV0dXJuIG1faGFzUmVjZWl2ZWRFeHBlY3RlZFdlYktleUV2ZW50OyB9OwogICAgIHZvaWQgZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICBkb3VibGUgZGlzcGxheWVkQ29udGVu
dFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLnNj
YWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9zZWRDb250ZW50UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5leHBvc2Vk
UmVjdCgpOyB9CkBAIC0xMDc2LDYgKzEwODEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNlbmRGb3JjZVJlcGFpbnRXaXRo
Q2FsbGJhY2soVm9pZENhbGxiYWNrJik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTEzNDEsNiArMTM0OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKICAgICB2b2lkIGRpY3RhdGlvbkNvbnRleHRDYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBFZGl0b3JTdGF0ZSYsIGJvb2wg
aXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOworICAgIHZvaWQgc2V0QWxsb3dBc3Npc3RhbmNl
T25Qcm9ncmFtbWF0aWNGb2N1cyhib29sIGFsbG93LCBib29sJiBjaGFuZ2VkKTsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBlbGVtZW50UmVjdCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCkBAIC0xNzYy
LDYgKzE3NzAsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX3VzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9v
bCBtX2FsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9oYXNSZWNlaXZlZEV4cGVjdGVkV2ViVG91Y2hFdmVudCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2hhc1JlY2VpdmVkRXhwZWN0ZWRXZWJLZXlFdmVudCB7IGZhbHNlIH07CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGVkNmExMDFjYmY3MmNlNDhiMTRlOTZj
Nzg1YzQ5YjQ0Y2Q4ODBmYS4uY2JlYzAxZGY2Njg5ODMxOTk3ZGU5M2YzNDc1M2NlNjlhMzE1NzVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0xODEsNiArMTgxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5n
IG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBhZnRlclRleHQsIHVpbnQ2
NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
RGljdGF0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZv
cmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEludGVy
cHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hh
ckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQorICAgIFNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3Jh
bW1hdGljRm9jdXMoYm9vbCBhbGxvdykgLT4gKGJvb2wgY2hhbmdlZCkKICAgICBEaWRSZWNlaXZl
UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKICAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgRGlkVXBkYXRl
QmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBm
bG9hdCBncm93VGhyZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IDllMTRhYjVmMTQwMzRiOGZhZjdkZWUyZWM3ZGQ0ZjY0ZmE3MzFlNzEuLmU1NzExYTY0
ZWRkNThhNTUyOWZmNGE3MTI3ZjI3ZTVhMTA4ZGU2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01
NjcsNiArNTY3LDkgQEAgLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAtICh2b2lkKV93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6KFVJV2ViVG91
Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CisgICAgaWYg
KCFfcGFnZS0+aGFzUmVjZWl2ZWRXZWJUb3VjaEV2ZW50KCkpCisgICAgICAgIF9wYWdlLT5zZXRI
YXNSZWNlaXZlZFdlYlRvdWNoRXZlbnQodHJ1ZSk7CisKICAgICBjb25zdCBfVUlXZWJUb3VjaEV2
ZW50KiBsYXN0VG91Y2hFdmVudCA9IGdlc3R1cmVSZWNvZ25pemVyLmxhc3RUb3VjaEV2ZW50Owog
ICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQgbmF0aXZlV2ViVG91Y2hFdmVudChsYXN0VG91Y2hFdmVu
dCk7CiAKQEAgLTI2MzYsNiArMjYzOSw5IEBAIC0gKHZvaWQpaGFuZGxlS2V5RXZlbnQ6KDo6VUlF
dmVudCAqKWV2ZW50CiAKIC0gKHZvaWQpaGFuZGxlS2V5V2ViRXZlbnQ6KFdlYklPU0V2ZW50ICop
dGhlRXZlbnQKIHsKKyAgICBpZiAoIV9wYWdlLT5oYXNSZWNlaXZlZFdlYktleUV2ZW50KCkpCisg
ICAgICAgIF9wYWdlLT5zZXRIYXNSZWNlaXZlZFdlYktleUV2ZW50KHRydWUpOworCiAgICAgX3Bh
Z2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCh0aGVFdmVudCkp
OwogfQogCkBAIC0zMDE1LDcgKzMwMjEsNyBAQCAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6
KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbgogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIDxyZGFyOi8v
cHJvYmxlbS8yMjEyNjUxOD4uIFRoZSByZWFsIGZpeCB3aWxsIGludm9sdmUgcmVmYWN0b3JpbmcK
ICAgICAvLyB0aGUgd2F5IHdlIGFzc2lzdCBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzZWQgbm9kZXMu
Ci0gICAgaWYgKCF1c2VySXNJbnRlcmFjdGluZyAmJiAhX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQp
CisgICAgaWYgKCF1c2VySXNJbnRlcmFjdGluZyAmJiAhX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQg
JiYgIV9wYWdlLT5hbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChibHVyUHJldmlvdXNOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyNzI1NjA2ZWRkMmM0OGJm
MGVmMDg0NmJiZThlMjRjNDM0NWQ5ZDBlLi4yMDczYWQyNmU4MTk2ZTQ4MTg3YTYzMDcwYTBiZDhk
Zjk4NjczMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTY5LDYgKzE2OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0
aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdAog
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc2VsZWN0ZWRUZXh0
LCBiZWZvcmVUZXh0LCBhZnRlclRleHQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZEZv
cmNlUmVwYWludFdpdGhDYWxsYmFjayhWb2lkQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrUmVmKCZjYWxsYmFjayk7CisgICAgbV9kcmF3aW5n
QXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CisgICAgbV9kcmF3
aW5nQXJlYS0+ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhbY2FsbGJhY2tSZWZdIChDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrUmVmLT5wZXJmb3JtQ2Fs
bGJhY2soKTsKKyAgICB9KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpLCBtX3BhZ2VJRCk7Cit9CisKKwogdm9pZCBX
ZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYg
YmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVj
dGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50
NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9
IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwpAQCAtNjUzLDYgKzY2NCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50LAogICAgIGhh
bmRsZWQgPSBtX3BhZ2VDbGllbnQuaW50ZXJwcmV0S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZp
cnN0KCksIGlzQ2hhckV2ZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEFsbG93QXNz
aXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMoYm9vbCBhbGxvdywgYm9vbCYgY2hhbmdlZCkKK3sK
KyAgICBjaGFuZ2VkID0gbV9hbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzICE9IGFs
bG93OworICAgIG1fYWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyA9IGFsbG93Owor
fQorCiAvLyBDb21wbGV4IHRleHQgaW5wdXQgc3VwcG9ydCBmb3IgcGx1Zy1pbnMuCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCwgY29uc3Qg
U3RyaW5nJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KaW5kZXggY2Q0MzRkMmRhYmNmMzY4NTlhNjc0Njk2NTI5ZjkzZDM4ZTQ0NmQwOS4u
ZjIyY2M2MDYwMzFmNjM1ODVhYTc1OTdlZjcyNTZlY2Q1ZDQwMjBjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE0Niw2ICsxNDYs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlz
U2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFp
bkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soVm9pZENhbGxiYWNrJiBj
YWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2suY2FsbGJhY2tJ
RCgpOworICAgIG1fY2FsbGJhY2tzLnB1dCgmY2FsbGJhY2spOworICAgIG1fZHJhd2luZ0FyZWEt
PndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7Cit9CisKICNpZiAhVVNFKEFTWU5DX05TVEVYVElOUFVUQ0xJRU5UKQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9u
UmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNTI3MzFlMzZjMjI0N2I3MjgyOGViOTBlMmE1NTM2M2Zm
OTFmMjc3Li5kMzFkMDhiMjE2YWU1YzAxNTI0NDBlNGMxNjQyMzg0MDlkNTZjYmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00NjYsNiArNDY2LDExIEBAIFdLQnVuZGxlSW5z
cGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5pbnNwZWN0b3IoKSk7CiB9CiAK
K3ZvaWQgV0tCdW5kbGVQYWdlV2FpdEZvckRyYXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRS
ZXN1bWVJbW1lZGlhdGVseShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sKKyAgICB0b0ltcGwocGFn
ZSktPndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRl
bHkoKTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VGb3JjZVJlcGFpbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5mb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KTsKQEAgLTYwMCw2ICs2MDUsMTUgQEAgdm9pZCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9w
ZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVIKICAgICB9KTsK
IH0KIAordm9pZCBXS0J1bmRsZVBhZ2VTZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0Zv
Y3VzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBib29sIGFsbG93KQoreworICAgIFVOVVNFRF9Q
QVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0oYWxsb3cpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGlj
Rm9jdXMoYWxsb3cpOworI2VuZGlmCit9CisKIHZvaWQgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2Uo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lUmVmLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHlSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5wb3N0TWVzc2Fn
ZSh0b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiksIHRvSW1wbChtZXNzYWdlQm9keVJlZikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggOTA4OTEzNzgxODk3MDNhNTJiMWRjZmE0NzAw
ZTQ3MjljMDc0NzdjOS4uYjJiMTZjMTY5ZWE4MWQ3ZGJjOTVjNDU4NjNiMzM1MTJkZTM2YjE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMTMsNiArMTEzLDcgQEAgV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlU3RhcnRNb25pdG9yaW5nU2Nyb2xsT3BlcmF0aW9ucyhXS0J1bmRs
ZVBhZ2VSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VUZXN0Tm90aWZpY2F0aW9u
Q2FsbGJhY2spKHZvaWQqIGNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUmVn
aXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZVBhZ2VUZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpOworV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNG
b2N1cyhXS0J1bmRsZVBhZ2VSZWYsIGJvb2wgYWxsb3cpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VQb3N0TWVzc2FnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKaW5kZXggY2RjZDE1NWQ1MmFkNjZmNGM0MTE5MWIwYzE0ZGViNWUz
N2NiMjMxNC4uMWZhM2RjZjhjOTdlMGUxNGE0N2ZmNDU5MWMxYWRjMGZhYmFhNTlhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKQEAgLTUyLDYgKzUyLDcgQEAgV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIGRvdWJsZSB6b29tRmEKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0U2Nh
bGVBdE9yaWdpbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9y
aWdpbik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVdhaXRGb3JEcmF3aW5nQXJlYVVw
ZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRm9yY2VSZXBhaW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZURvd24o
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGludCBidXR0b24sIFdLUG9pbnQgcG9zaXRpb24sIGludCBj
bGlja0NvdW50LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA0
NGFlYzAyYmRkZjBmODcxOTk2NTE3MzRjOTFhZWZjNmIxNGZhNjlmLi4yMTViNDExM2MzYzFlZmJh
NTRjNDQ1OGU2NmJiOGMyMGQ4MWM0OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmll
d1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hT
eW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsg
fQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dh
cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJl
YShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGE0NjMyZjNjMGE3NTAyZTAwNDUzN2Y1N2Vh
YmVkYmNiNzQ1YzNjY2YuLjE0OThlM2NlYTRiMjJmZGYzZThkN2RiMzRmOWNkZGIzNDhhNjhlYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTI2MzEsNiArMjYzMSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwog
fQogCit2b2lkIFdlYlBhZ2U6OndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5k
UmVzdW1lSW1tZWRpYXRlbHkoKQoreworICAgIGlmIChtX2RyYXdpbmdBcmVhLT5pc1dhaXRpbmdG
b3JCYWNraW5nU3RvcmVTd2FwKCkpCisgICAgICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkt
PndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6RGlk
VXBkYXRlPihwYWdlSUQoKSwgNTAwMF9tcyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBh
aW50V2l0aG91dENhbGxiYWNrKCkKIHsKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZh
MWZjZjk1ZmI4YTJiYWE1OGVjZDM3YTFkM2U5MjM5NWVlNjU4MjQuLmFmZTg1NWUzZGQ1NWQxNDQx
YjIyNzFmOGU2MmFjMmY3ODNmOGNkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTIwLDYgKzUyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVy
KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIHNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1h
dGljRm9jdXMoYm9vbCk7CiAgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBA
IC03NzMsNiArNzc0LDcgQEAgcHVibGljOgogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpOworICAgIHZv
aWQgd2FpdEZvckRyYXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVs
eSgpOwogCiAgICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICB2b2lkIHVubWFy
a0FsbEJhZEdyYW1tYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDllZjc5YzA5ZDlkMjdlNTZjMTg4NGQx
ZTMzZWU5ODY2MjhmOTRmMy4uNmVmYjdmMGRjYmUwMTljOTY1ZWZhMGVhZmQyNmFlMmZjYjg2ZTU3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTE2MCw2ICsxNjAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJp
bmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludCh1aW50NjRf
dCBjYWxsYmFja0lEKQorICAgIEZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAjIERpY3Rpb25hcnkgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NzEw
NWE4YjZjZjZkYTk5OTAxYzExZDdhYmEwNGFmZWQyZWY4M2QxLi5mMGFkNmUyMDcwMDAxYWY3N2Q0
NWFjYzczMWRmOWRkYzkyNTNmZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNTM1LDYgKzI1MzUsMTIgQEAgdm9p
ZCBXZWJQYWdlOjplbGVtZW50RGlkQmx1cihXZWJDb3JlOjpOb2RlKiBub2RlKQogICAgIH0KIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJv
b2wgYWxsb3cpCit7CisgICAgYm9vbCB2YWx1ZUNoYW5nZWQ7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyh0cnVlKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNG
b2N1czo6UmVwbHkodmFsdWVDaGFuZ2VkKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2U6
OnNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKIHsKICAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZOZWVkZWQo
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemUoKSwgc2l6ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggMDBhYmIxNWJlNTkyZjVkNmE3NGM2
ZDgzYzJlODljMTE5NjdkZDM3MC4uZjQ4YTliNDdiYzkyZTc1OGM1NzlhYzRlZjcxNWVkNTdhN2Rl
OTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMTE2LDYgKzEx
Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZsdXNoTGF5ZXJzKCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXA7IH07CisKICAgICBXZWJDb3JlOjpUaWxl
ZEJhY2tpbmcqIG1haW5GcmFtZVRpbGVkQmFja2luZygpIGNvbnN0OwogCiAgICAgdWludDY0X3Qg
dGFrZU5leHRUcmFuc2FjdGlvbklEKCkgeyByZXR1cm4gKyttX2N1cnJlbnRUcmFuc2FjdGlvbklE
OyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OThkNGQyYTVjYzMxODIzNjM1MzJiMDg1ZmY1ODY4NDhmZDZkYmRlNy4uZmVhMDE1MjdiYzgxZTkx
YTc2ZDk5NmY4OWMzZjM2ZDQ2ZGZhZjdlZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVu
dFNlbmRlclByb3h5IGZvciBXZWJLaXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlz
dGVuZXIgaW5pdF0pOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRX
YXNTaG93bjpdKToKKyAgICAgICAgKC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2Fz
SGlkZGVuOl0pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclBy
b3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0
aW5nKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dp
dGhUaW1lb3V0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6c2hvdWxkV3Jh
cFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6aGlkVXNhZ2VD
b2RlRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91c2VT
Y3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE1LTA5LTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIGlPUyBXZWJLaXRUZXN0UnVubmVyIGZyZXF1ZW50bHkgY3Jhc2hlcyBpbiBXS0NvbnRl
eHRHZXRJY29uRGF0YWJhc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5
LmgKaW5kZXggNzBkOTQwMTRjOGQ3NTBjYjdkNjU3MDgwNDUyOGUyMDhjYzJmNGE1NC4uYTkwMzQ1
NjhkZDkwZGYxY2E4Y2RmYTMwYjY2OGNmNzEwYTgxY2RhOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTQwLDEwICs0MCwyOSBAQAogI2luY2x1ZGUgIkVX
ZWJLaXQyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPElPS2l0L2hp
ZC9JT0hJREV2ZW50Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFT
UyBOU0V2ZW50OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIEtleWJv
YXJkU3RhdGVMaXN0ZW5lcjsKKworc3RydWN0IFRvdWNoUG9pbnRJbmZvIHsKKyAgICBUb3VjaFBv
aW50SW5mbyhpbnQgeCwgaW50IHkpOworCisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAg
IHVpbnQ2NF90IG1hY2hUaW1lOworICAgIGJvb2wgaXNUb3VjaGluZzsKK307CisKK2NvbnN0IGlu
dCBtYXhOdW1Ub3VjaFBvaW50cyA9IDU7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNs
YXNzIFRlc3RDb250cm9sbGVyOwpAQCAtMTI1LDYgKzE0NCwxOSBAQCBwcml2YXRlOgogI2VuZGlm
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIHNlbmRJT0hJREV2ZW50KElP
SElERXZlbnRSZWYpOworICAgIHZvaWQgc2VuZElPSElES2V5Ym9hcmRFdmVudCh1aW50NjRfdCB0
aW1lc3RhbXAsIHVpbnQzMl90IHVzYWdlLCBib29sIGlzS2V5RG93bik7CisgICAgdm9pZCB3YWl0
T25Db25kaXRpb25zV2l0aFRpbWVvdXQoZG91YmxlIHRpbWVvdXRJblNlY29uZHMsIHVuc2lnbmVk
IGNvbmRpdGlvbnMpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ29udGludWVXYWl0aW5nKHVuc2ln
bmVkIGNvbmRpdGlvbnMpIGNvbnN0OworICAgIHZvaWQgZm9yY2VQYWdlUmVwYWludEFuZFdhaXRJ
Zk5lY2Vzc2FyeSgpOworICAgIHN0YXRpYyB2b2lkIGZvcmNlUGFnZVJlcGFpbnRDYWxsYmFjayhX
S0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKKyAgICAvLyBUb3VjaCBldmVudCBzeW50aGVzaXpp
bmcgaGVscGVycy4KKyAgICBJT0hJREV2ZW50UmVmIGNyZWF0ZVRvdWNoUG9pbnQoVG91Y2hQb2lu
dEluZm8qLCBib29sIGlzVG91Y2hpbmcsIGludCBpbmRleCk7CisgICAgaW50IG5leHRBdmFpbGFi
bGVUb3VjaFBvaW50SW5kZXgoKSBjb25zdDsKKyAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50SW5k
ZXgoaW50IGluZGV4KTsKKyNlbmRpZgorCiAgICAgZG91YmxlIG1fdGltZTsKICAgICBXS1BvaW50
IG1fcG9zaXRpb247CiAgICAgYm9vbCBtX2xlZnRNb3VzZUJ1dHRvbkRvd247CkBAIC0xNDYsNiAr
MTc4LDE3IEBAIHByaXZhdGU6CiAgICAgRWluYV9MaXN0KiBtX3RvdWNoUG9pbnRzOwogI2VuZGlm
CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBSZXRhaW5QdHI8S2V5Ym9hcmRTdGF0
ZUxpc3RlbmVyPiBtX2tleWJvYXJkTGlzdGVuZXI7CisgICAgdWludDMyX3QgbV9rZXlXaW5kb3dD
b250ZXh0SUQgeyAwIH07CisgICAgYm9vbCBtX2RpZFBlcmZvcm1Jbml0aWFsUmVwYWludCB7IGZh
bHNlIH07CisgICAgLy8gVG91Y2ggc3RhdGUgdmFyaWFibGVzLgorICAgIGludCBtX3RvdWNoUG9p
bnRNYWpvclJhZGl1cyB7IDUgfTsKKyAgICBpbnQgbV90b3VjaFBvaW50TWlub3JSYWRpdXMgeyA1
IH07CisgICAgSGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxUb3VjaFBvaW50SW5mbz4+IG1f
dG91Y2hQb2ludEluZm9CeUluZGV4OworICAgIGludCBtX2xhc3RVc2VkVG91Y2hJbmRleCB7IDAg
fTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAppbmRleCBmMzI4MGJiOTRiMDU0MzcwMjQzMDIz
ZTI1MzM2ZGUxYWZhZTc5MzlmLi41MDlmODljMDcxMzE1ZDY2NzRlNWIxYzQ4NGJjM2RhOWQ2YTVm
YWU5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwK
QEAgLTUzLDYgKzUzLDcgQEAgaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgewogCiAg
ICAgdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoKTsKICAgICB2b2lkIGNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhvYmplY3QgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgdm9pZCBzZXRBbGxvd0Fz
c2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJvb2xlYW4gYWxsb3cpOwogCiAjaWYgZGVmaW5l
ZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCiAgICAgLy8gVG91
Y2ggZXZlbnRzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKaW5kZXggYzliMWFkOTcx
MjA5ZjA1ZTAxODk5Njc2ZjBkOGYxZGQzODJmOTM1Mi4uZDdiMGJkZTY3ZmYyZjZkZDA2ZjVjY2Mx
YjVhM2JhODFhYTIxMjFjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MTcsNiArMjE3LDkgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZURvd24oaW50
IGJ1dHRvbiwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5KQogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIGNyZWF0ZU1vdXNl
TWVzc2FnZUJvZHkoTW91c2VEb3duLCBidXR0b24sIG1vZGlmaWVycykpOwogCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHdhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZElmTmVjZXNzYXJ5KCk7
CisjZW5kaWYKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGlu
ZyhwYWdlLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCAwKTsKIH0KIApAQCAtMzgzLDYgKzM4Niw5IEBAIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJB
cnJheSwKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4ga2V5RG93bk1lc3NhZ2VC
b2R5ID0gY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgbW9kaWZpZXJzLCBsb2NhdGlvbik7
CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgd2FpdEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVk
SWZOZWNlc3NhcnkoKTsKKyNlbmRpZgogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2Uo
KSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwga2V5RG93bk1lc3NhZ2VCb2R5LmdldCgp
LCAwKTsKIH0KIApAQCAtNjY0LDYgKzY3MCwyNiBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAog
ICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNr
KHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxl
YXNlKCkpOwogfQogCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldEFsbG93QXNzaXN0
YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMoYm9vbCBhbGxvdykKK3sKKyAgICBVTlVTRURfUEFSQU0o
YWxsb3cpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBXS0J1bmRsZVBhZ2VTZXRBbGxvd0Fzc2lz
dGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdl
KCktPnBhZ2UoKSwgYWxsb3cpOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9STShJT1MpCit2b2lk
IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OndhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxlZElm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9oYXNXYWl0ZWRGb3JMYXllckZsdXNoVG9CZVNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVQYWdl
V2FpdEZvckRyYXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVseShw
YWdlKTsKKyAgICBtX2hhc1dhaXRlZEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkID0gdHJ1ZTsK
K30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5oCmluZGV4IGMyM2MzNmRmYWM1NTg0Zjg1MWM1ZjYwZmI0ZDU2MjJjZmY0MjAw
NGEuLjcwMTk0MTIxNDM1YWMwMjA0MjM3ZDE4ZjBlYTgzYzZhOTdkOGI5Y2MgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNj
aGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKICAgICB2b2lkIG1vbml0b3JXaGVlbEV2ZW50cygp
OwogICAgIHZvaWQgY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rp
b25DYWxsYmFjayk7CisgICAgdm9pZCBzZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0Zv
Y3VzKGJvb2wpOwogCiAgICAgdm9pZCBrZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJl
ZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOwogICAgIHZvaWQgc2NoZWR1bGVBc3luY2hy
b25vdXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSk7CkBAIC04OCw3ICs4OSwxNSBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlcigpOworCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZvaWQgd2FpdEZvckxheWVyRmx1c2hUb0JlU2NoZWR1bGVkSWZOZWNlc3Nh
cnkoKTsKKyNlbmRpZgorCiAgICAgV0tQb2ludCBtX3Bvc2l0aW9uOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBib29sIG1faGFzV2FpdGVkRm9yTGF5ZXJGbHVzaFRvQmVTY2hlZHVsZWQgeyBmYWxz
ZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1Mu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRl
clByb3h5SU9TLm1tCmluZGV4IGFjNTRhMWM2ZDZkOGMyYzUwZTA4MWRiNWJkYjgyMWQzZTYwOGVj
MmQuLjA5MWJiNDQ0MWEzNmYxNTNlNTI3NjZmMTI4NzE0ZmUxYzRmYjNiNTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJv
eHlJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3Mv
RXZlbnRTZW5kZXJQcm94eUlPUy5tbQpAQCAtMjYsMTQgKzI2LDg1IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKIAorI2ltcG9ydCA8QmFja0JvYXJk
U2VydmljZXMvQktTSElERXZlbnRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU05v
dGlmaWNhdGlvbi5oPgorI2ltcG9ydCA8SU9LaXQvaGlkL0lPSElEVXNhZ2VUYWJsZXMuaD4KKyNp
bXBvcnQgPG1hY2gvbWFjaF90aW1lLmg+CiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNp
bXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKLSNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJp
dmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZEltcGwuaD4KKyNpbXBvcnQgPFVJS2l0
L1VJV2luZG93X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0V2ZW50Lmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisKK3N0YXRpYyBjb25zdCBpbnQgZmluZ2VySWRl
bnRpZmllcnNbbWF4TnVtVG91Y2hQb2ludHNdID0geyAyLCAzLCA0LCA1LCAxIH07CisKK2ludCBm
aW5nZXJJZGVudGl0eUZvclRvdWNoUG9pbnRJbmRleChpbnQgaW5kZXgpCit7CisgICAgQVNTRVJU
KDAgPCBpbmRleCAmJiBpbmRleCA8PSBtYXhOdW1Ub3VjaFBvaW50cyk7CisgICAgcmV0dXJuIGZp
bmdlcklkZW50aWZpZXJzW2luZGV4IC0gMV07Cit9CisKK1RvdWNoUG9pbnRJbmZvOjpUb3VjaFBv
aW50SW5mbyhpbnQgeCwgaW50IHkpCisgICAgOiB4KHgpCisgICAgLCB5KHkpCisgICAgLCBtYWNo
VGltZShtYWNoX2Fic29sdXRlX3RpbWUoKSkKKyAgICAsIGlzVG91Y2hpbmcodHJ1ZSkKK3sKK30K
KworQGludGVyZmFjZSBLZXlib2FyZFN0YXRlTGlzdGVuZXIgOiBOU09iamVjdAorQHByb3BlcnR5
IEJPT0wgaXNLZXlib2FyZFJlYWR5OworLSAoaW5zdGFuY2V0eXBlKWluaXQ7CistICh2b2lkKWtl
eWJvYXJkV2FzU2hvd246KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0aW9uOworLSAodm9pZClr
ZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRpb247CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBLZXlib2FyZFN0YXRlTGlzdGVuZXIgOiBOU09iamVjdAorLSAoaW5z
dGFuY2V0eXBlKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmIChzZWxm
KSB7CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNTaG93bjopIG5hbWU6VUlL
ZXlib2FyZERpZFNob3dOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3Ioa2V5Ym9hcmRXYXNIaWRkZW46KSBuYW1lOlVJS2V5Ym9hcmREaWRIaWRlTm90aWZp
Y2F0aW9uIG9iamVjdDpuaWxdOworICAgICAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IE5POwor
ICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClrZXlib2FyZFdhc1Nob3duOihO
U05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlvbgoreworICAgIC8vIFByZXBhcmUgVUlLaXQgZm9y
IHN5bmNocm9ub3VzIHRleHQgaW5wdXQgZXZlbnQgcHJvY2Vzc2luZy4KKyAgICBbW1VJS2V5Ym9h
cmRJbXBsIHNoYXJlZEluc3RhbmNlXSBzZXRFeHBlY3RzU3luY2hyb25vdXNUZXh0SW5wdXQ6WUVT
XTsKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IFlFUzsKK30KKworLSAodm9pZClrZXlib2Fy
ZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRpb24KK3sKKyAgICBzZWxmLmlz
S2V5Ym9hcmRSZWFkeSA9IE5POworfQorQGVuZAogCiBuYW1lc3BhY2UgV1RSIHsKIAorZW51bSB7
CisgICAgS2V5Ym9hcmRJc1JlYWR5ID0gMSA8PCAwLAorICAgIFdlYlRvdWNoRXZlbnRIYXNCZWVu
UmVjZWl2ZWQgPSAxIDw8IDEsCisgICAgV2ViS2V5RXZlbnRIYXNCZWVuUmVjZWl2ZWQgPSAxIDw8
IDIsCisgICAgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkID0gMSA8PCAzLAorICAgIEluaXRpYWxS
ZXBhaW50SGFzQ29tcGxldGVkID0gMSA8PCA0Cit9OwordHlwZWRlZiB1bnNpZ25lZCBXYWl0T25D
b25kaXRpb25GbGFnczsKKworLy8gVGhlc2UgdGltZW91dHMgKGluIHNlY29uZHMpIGFyZSBhcmJp
dHJhcnksIGJ1dCBhcmUgbXVjaCBsb25nZXIgdGhhbiBXS1RSIHNob3VsZCByZXF1aXJlLgorY29u
c3QgZG91YmxlIHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVxdWV1ZWQgPSAxMDsKK2NvbnN0IGRv
dWJsZSB0aW1lb3V0RGVsYXlGb3JLZXlib2FyZFJlYWR5ID0gMTA7Citjb25zdCBkb3VibGUgdGlt
ZW91dERlbGF5Rm9ySW5pdGlhbFJlcGFpbnQgPSAxMDsKKwogRXZlbnRTZW5kZXJQcm94eTo6RXZl
bnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCiAgICAgOiBtX3Rl
c3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQogICAgICwgbV90aW1lKDApCkBAIC00NCw4ICsx
MTUsOCBAQCBFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVy
KiB0ZXN0Q29udHJvbGxlcikKICAgICAsIG1fY2xpY2tQb3NpdGlvbigpCiAgICAgLCBtX2NsaWNr
QnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKICAgICAsIGV2ZW50TnVtYmVyKDAp
CisgICAgLCBtX2tleWJvYXJkTGlzdGVuZXIoYWRvcHROUyhbW0tleWJvYXJkU3RhdGVMaXN0ZW5l
ciBhbGxvY10gaW5pdF0pKQogewotICAgIFVOVVNFRF9QQVJBTShtX3Rlc3RDb250cm9sbGVyKTsK
ICAgICBVTlVTRURfUEFSQU0obV9sZWZ0TW91c2VCdXR0b25Eb3duKTsKICAgICBVTlVTRURfUEFS
QU0oZXZlbnROdW1iZXIpOwogfQpAQCAtNjgsMjkgKzEzOSwyNjIgQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pCiAgICAgbV9jbGlj
a0J1dHRvbiA9IGJ1dHRvbjsKIH0KIAorYm9vbCBFdmVudFNlbmRlclByb3h5OjpzaG91bGRDb250
aW51ZVdhaXRpbmcodW5zaWduZWQgY29uZGl0aW9ucykgY29uc3QKK3sKKyAgICBib29sIHNob3Vs
ZFdhaXQgPSBmYWxzZTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEtleWJvYXJkSXNSZWFkeSkKKyAg
ICAgICAgc2hvdWxkV2FpdCB8PSAhW21fa2V5Ym9hcmRMaXN0ZW5lciBpc0tleWJvYXJkUmVhZHld
OworICAgIGlmIChjb25kaXRpb25zICYgV2ViVG91Y2hFdmVudEhhc0JlZW5SZWNlaXZlZCkKKyAg
ICAgICAgc2hvdWxkV2FpdCB8PSAhV0tQYWdlSGFzUmVjZWl2ZWRXZWJUb3VjaEV2ZW50KG1fdGVz
dENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBhZ2UoKSk7CisgICAgaWYgKGNvbmRpdGlvbnMg
JiBXZWJLZXlFdmVudEhhc0JlZW5SZWNlaXZlZCkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSAhV0tQ
YWdlSGFzUmVjZWl2ZWRXZWJLZXlFdmVudChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wYWdlKCkpOworICAgIGlmIChjb25kaXRpb25zICYgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2Vk
KQorICAgICAgICBzaG91bGRXYWl0IHw9IFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2Vd
IGhhc1BlbmRpbmdJbnB1dENvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBpZiAoY29uZGl0aW9ucyAm
IEluaXRpYWxSZXBhaW50SGFzQ29tcGxldGVkKQorICAgICAgICBzaG91bGRXYWl0IHw9ICFtX2Rp
ZFBlcmZvcm1Jbml0aWFsUmVwYWludDsKKyAgICByZXR1cm4gc2hvdWxkV2FpdDsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50QW5kV2FpdElmTmVjZXNzYXJ5KCkK
K3sKKyAgICBpZiAobV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLUGFnZUZvcmNlUmVwYWludChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wYWdlKCksIHRoaXMsIEV2ZW50U2VuZGVyUHJveHk6OmZvcmNlUGFnZVJlcGFpbnRDYWxsYmFj
ayk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVvdXREZWxheUZvckluaXRp
YWxSZXBhaW50LCBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KGRvdWJsZSB0aW1lb3V0SW5T
ZWNvbmRzLCB1bnNpZ25lZCBjb25kaXRpb25zKSBjb25zdAoreworICAgIE5TRGF0ZSAqdGltZW91
dERhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6dGltZW91dEluU2Vj
b25kc107CisgICAgd2hpbGUgKFt0aW1lb3V0RGF0ZSBjb21wYXJlOltOU0RhdGUgZGF0ZV1dID09
IE5TT3JkZXJlZERlc2NlbmRpbmcgJiYgc2hvdWxkQ29udGludWVXYWl0aW5nKGNvbmRpdGlvbnMp
KQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRS
dW5Mb29wTW9kZSBiZWZvcmVEYXRlOnRpbWVvdXREYXRlXTsKK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2soV0tFcnJvclJlZiBlcnJvciwgdm9pZCog
Y29udGV4dCkKK3sKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRp
Y19jYXN0PEV2ZW50U2VuZGVyUHJveHkqPihjb250ZXh0KS0+bV9kaWRQZXJmb3JtSW5pdGlhbFJl
cGFpbnQgPSB0cnVlOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNp
Z25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewotICAgIC8v
IFdyaXRlIG1lLgorICAgIGFkZFRvdWNoUG9pbnQobV9wb3NpdGlvbi54LCBtX3Bvc2l0aW9uLnkp
OworICAgIHRvdWNoU3RhcnQoKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVw
KHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCiB7Ci0g
ICAgLy8gV3JpdGUgbWUuCisgICAgQVNTRVJUKG1fbGFzdFVzZWRUb3VjaEluZGV4KTsKKyAgICBy
ZWxlYXNlVG91Y2hQb2ludChtX2xhc3RVc2VkVG91Y2hJbmRleCk7CisgICAgdG91Y2hFbmQoKTsK
KyAgICBjbGVhclRvdWNoUG9pbnRzKCk7CisgICAgbV9sYXN0VXNlZFRvdWNoSW5kZXggPSAwOwog
fQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUg
eSkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBtX3Bvc2l0aW9uLnggPSB4OworICAgIG1fcG9z
aXRpb24ueSA9IHk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50
IG1pbGxpc2Vjb25kcykKIHsKLSAgICBtX3RpbWUgKz0gbWlsbGlzZWNvbmRzIC8gMTAwMC4wOwor
ICAgIC8vIFdyaXRlIG1lLgorfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkV3JhcFdpdGhT
aGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKE5TU3RyaW5nKiBrZXkpCit7CisgICAgaWYgKFtrZXkg
bGVuZ3RoXSAhPSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50IGtleUNvZGUgPSBb
a2V5IGNoYXJhY3RlckF0SW5kZXg6MF07CisgICAgaWYgKDY1IDw9IGtleUNvZGUgJiYga2V5Q29k
ZSA8PSA5MCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgc3dpdGNoIChrZXlDb2RlKSB7Cisg
ICAgY2FzZSAnYCc6CisgICAgY2FzZSAnISc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnIyc6
CisgICAgY2FzZSAnJCc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnXic6CisgICAgY2FzZSAn
Jic6CisgICAgY2FzZSAnKic6CisgICAgY2FzZSAnKCc6CisgICAgY2FzZSAnKSc6CisgICAgY2Fz
ZSAnXyc6CisgICAgY2FzZSAnKyc6CisgICAgY2FzZSAneyc6CisgICAgY2FzZSAnfSc6CisgICAg
Y2FzZSAnfCc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAnIic6CisgICAgY2FzZSAnPCc6Cisg
ICAgY2FzZSAnPic6CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnfic6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CitzdGF0aWMgaW5saW5lIHVpbnQz
Ml90IGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihOU1N0cmluZyoga2V5KQoreworICAgIGNvbnN0
IGludCB1cHBlcmNhc2VBbHBoYWJldGljT2Zmc2V0ID0gJ0EnIC0ga0hJRFVzYWdlX0tleWJvYXJk
QTsKKyAgICBjb25zdCBpbnQgbG93ZXJjYXNlQWxwaGFiZXRpY09mZnNldCA9ICdhJyAtIGtISURV
c2FnZV9LZXlib2FyZEE7CisgICAgY29uc3QgaW50IG51bWVyaWNOb25aZXJvT2Zmc2V0ID0gJzEn
IC0ga0hJRFVzYWdlX0tleWJvYXJkMTsKKyAgICBpZiAoW2tleSBsZW5ndGhdID09IDEpIHsKKyAg
ICAgICAgLy8gSGFuZGxlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBiYXNpYyBzeW1ib2xz
LgorICAgICAgICBpbnQga2V5Q29kZSA9IFtrZXkgY2hhcmFjdGVyQXRJbmRleDowXTsKKyAgICAg
ICAgaWYgKDk3IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSAxMjIpIC8vIEhhbmRsZSBhLXouCisg
ICAgICAgICAgICByZXR1cm4ga2V5Q29kZSAtIGxvd2VyY2FzZUFscGhhYmV0aWNPZmZzZXQ7CisK
KyAgICAgICAgaWYgKDY1IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSA5MCkgLy8gSGFuZGxlIEEt
Wi4KKyAgICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0gdXBwZXJjYXNlQWxwaGFiZXRpY09mZnNl
dDsKKworICAgICAgICBpZiAoNDkgPD0ga2V5Q29kZSAmJiBrZXlDb2RlIDw9IDU3KSAvLyBIYW5k
bGUgMS05LgorICAgICAgICAgICAgcmV0dXJuIGtleUNvZGUgLSBudW1lcmljTm9uWmVyb09mZnNl
dDsKKworICAgICAgICAvLyBIYW5kbGUgYWxsIG90aGVyIGNhc2VzLgorICAgICAgICBzd2l0Y2gg
KGtleUNvZGUpIHsKKyAgICAgICAgY2FzZSAnYCc6CisgICAgICAgIGNhc2UgJ34nOgorICAgICAg
ICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEdyYXZlQWNjZW50QW5kVGlsZGU7CisgICAg
ICAgIGNhc2UgJyEnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDE7Cisg
ICAgICAgIGNhc2UgJ0AnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDI7
CisgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2Fy
ZDM7CisgICAgICAgIGNhc2UgJyQnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXli
b2FyZDQ7CisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9L
ZXlib2FyZDU7CisgICAgICAgIGNhc2UgJ14nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2Fn
ZV9LZXlib2FyZDY7CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgcmV0dXJuIGtISURV
c2FnZV9LZXlib2FyZDc7CisgICAgICAgIGNhc2UgJyonOgorICAgICAgICAgICAgcmV0dXJuIGtI
SURVc2FnZV9LZXlib2FyZDg7CisgICAgICAgIGNhc2UgJygnOgorICAgICAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZDk7CisgICAgICAgIGNhc2UgJyknOgorICAgICAgICBjYXNlICcw
JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQwOworICAgICAgICBjYXNl
ICctJzoKKyAgICAgICAgY2FzZSAnXyc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tl
eWJvYXJkSHlwaGVuOworICAgICAgICBjYXNlICc9JzoKKyAgICAgICAgY2FzZSAnKyc6CisgICAg
ICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRXF1YWxTaWduOworICAgICAgICBjYXNl
ICdcdCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkVGFiOworICAgICAg
ICBjYXNlICdbJzoKKyAgICAgICAgY2FzZSAneyc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVz
YWdlX0tleWJvYXJkT3BlbkJyYWNrZXQ7CisgICAgICAgIGNhc2UgJ10nOgorICAgICAgICBjYXNl
ICd9JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRDbG9zZUJyYWNrZXQ7
CisgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgY2FzZSAnfCc6CisgICAgICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkQmFja3NsYXNoOworICAgICAgICBjYXNlICc7JzoKKyAgICAg
ICAgY2FzZSAnOic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkU2VtaWNv
bG9uOworICAgICAgICBjYXNlICdcJyc6CisgICAgICAgIGNhc2UgJyInOgorICAgICAgICAgICAg
cmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFF1b3RlOworICAgICAgICBjYXNlICdccic6CisgICAg
ICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRSZXR1
cm5PckVudGVyOworICAgICAgICBjYXNlICcsJzoKKyAgICAgICAgY2FzZSAnPCc6CisgICAgICAg
ICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQ29tbWE7CisgICAgICAgIGNhc2UgJy4nOgor
ICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRQ
ZXJpb2Q7CisgICAgICAgIGNhc2UgJy8nOgorICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAg
IHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRTbGFzaDsKKyAgICAgICAgY2FzZSAnICc6CisgICAg
ICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkU3BhY2ViYXI7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY29uc3QgaW50IGZ1bmN0aW9uS2V5T2Zmc2V0ID0ga0hJRFVzYWdlX0tleWJvYXJk
RjE7CisgICAgZm9yIChpbnQgZnVuY3Rpb25LZXlJbmRleCA9IDE7IGZ1bmN0aW9uS2V5SW5kZXgg
PD0gMTI7ICsrZnVuY3Rpb25LZXlJbmRleCkgeworICAgICAgICBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJWQiLCBmdW5jdGlvbktleUluZGV4
XV0pCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25LZXlPZmZzZXQgKyBmdW5jdGlvbktleUlu
ZGV4IC0gMTsKKyAgICB9CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0p
CisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRFc2NhcGU7CisgICAgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAicmV0dXJuIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJlbnRl
ciJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmV0dXJuT3JFbnRlcjsKKyAg
ICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkKKyAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZExlZnRBcnJvdzsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRSaWdo
dEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkKKyAgICAg
ICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFVwQXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVh
bFRvU3RyaW5nOkAiZG93bkFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmREb3duQXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pCisg
ICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmREZWxldGVPckJhY2tzcGFjZTsKKyAgICAv
LyBUaGUgc2ltdWxhdG9yIGtleWJvYXJkIGludGVycHJldHMgYm90aCBsZWZ0IGFuZCByaWdodCBt
b2RpZmllciBrZXlzIHVzaW5nIHRoZSBsZWZ0IHZlcnNpb24gb2YgdGhlIHVzYWdlIGNvZGUuCisg
ICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSB8fCBba2V5IGlzRXF1
YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tl
eWJvYXJkTGVmdENvbnRyb2w7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNo
aWZ0Il0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pCisgICAgICAgIHJl
dHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQ7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAibGVmdEFsdCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkK
KyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRBbHQ7CisKKyAgICByZXR1cm4g
MDsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQogewotICAg
IC8vIFdyaXRlIG1lLgorICAgIGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0SWZOZWNlc3NhcnkoKTsK
KyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9yS2V5Ym9hcmRS
ZWFkeSwgS2V5Ym9hcmRJc1JlYWR5KTsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvU1REKGtleSkuY19zdHIoKSBlbmNvZGluZzpbTlNTdHJp
bmcgZGVmYXVsdENTdHJpbmdFbmNvZGluZ11dOworICAgIGJvb2wgc2hvdWxkV3JhcFdpdGhTaGlm
dCA9IHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOwor
ICAgIHVpbnQzMl90IHVzYWdlID0gaGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7
CisgICAgdWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOwor
CisgICAgV0tQYWdlRXhwZWN0V2ViS2V5RXZlbnQobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZp
ZXcoKS0+cGFnZSgpKTsKKyAgICBpZiAoc2hvdWxkV3JhcFdpdGhTaGlmdCkKKyAgICAgICAgc2Vu
ZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCBrSElEVXNhZ2VfS2V5Ym9hcmRM
ZWZ0U2hpZnQsIHRydWUpOworCisgICAgc2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1h
Y2hUaW1lLCB1c2FnZSwgdHJ1ZSk7CisgICAgc2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0
ZU1hY2hUaW1lLCB1c2FnZSwgZmFsc2UpOworCisgICAgaWYgKHNob3VsZFdyYXBXaXRoU2hpZnQp
CisgICAgICAgIHNlbmRJT0hJREtleWJvYXJkRXZlbnQoYWJzb2x1dGVNYWNoVGltZSwga0hJRFVz
YWdlX0tleWJvYXJkTGVmdFNoaWZ0LCBmYWxzZSk7CisKKyAgICB3YWl0T25Db25kaXRpb25zV2l0
aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1ZXVlZCwgS2V5SW5wdXRIYXNCZWVu
UHJvY2Vzc2VkIHwgV2ViS2V5RXZlbnRIYXNCZWVuUmVjZWl2ZWQpOworfQorCit2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KElPSElERXZlbnRSZWYgZXZlbnQpCit7CisgICAg
QVNTRVJUKGV2ZW50KTsKKyAgICBpZiAoIW1fa2V5V2luZG93Q29udGV4dElEKSB7CisgICAgICAg
IC8vIEZJWE1FIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2UgdG91Y2ggZXZlbnRzIHdvcmsuIFdoYXQg
aWYgdGhlcmUgYXJlIG11bHRpcGxlIHdpbmRvd3M/CisgICAgICAgIEFTU0VSVChbW1VJQXBwbGlj
YXRpb24gc2hhcmVkQXBwbGljYXRpb25dLndpbmRvd3MgY291bnRdID4gMCk7CisgICAgICAgIG1f
a2V5V2luZG93Q29udGV4dElEID0gW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLndp
bmRvd3NbMF0uX2NvbnRleHRJZDsKKyAgICB9CisgICAgaWYgKElPSElERXZlbnRHZXRUeXBlKGV2
ZW50KSA9PSBrSU9ISURFdmVudFR5cGVEaWdpdGl6ZXIpCisgICAgICAgIEJLU0hJREV2ZW50U2V0
RGlnaXRpemVySW5mbyhldmVudCwgbV9rZXlXaW5kb3dDb250ZXh0SUQsIGZhbHNlLCBmYWxzZSwg
TlVMTCwgMCwgMCk7CisKKyAgICBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIF9l
bnF1ZXVlSElERXZlbnQ6ZXZlbnRdOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJ
T0hJREtleWJvYXJkRXZlbnQodWludDY0X3QgdGltZXN0YW1wLCB1aW50MzJfdCB1c2FnZSwgYm9v
bCBpc0tleURvd24pCit7CisgICAgc2VuZElPSElERXZlbnQoSU9ISURFdmVudENyZWF0ZUtleWJv
YXJkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgdGltZXN0YW1wLAorICAgICAg
ICBrSElEUGFnZV9LZXlib2FyZE9yS2V5cGFkLAorICAgICAgICB1c2FnZSwKKyAgICAgICAgaXNL
ZXlEb3duLAorICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpKTsKIH0KIAogdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKQEAgLTExNiwxMiArNDIw
LDE5IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y29udGludW91c01vdXNlU2Nyb2xsQnkoaW50
IHgsIGludCB5LCBib29sIHBhZ2VkKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewotICAgIC8vIFdy
aXRlIG1lLgorICAgIGludCBpbmRleCA9IG5leHRBdmFpbGFibGVUb3VjaFBvaW50SW5kZXgoKTsK
KyAgICBBU1NFUlQoaW5kZXgpOworICAgIAorICAgIG1fdG91Y2hQb2ludEluZm9CeUluZGV4LmFk
ZChpbmRleCwgc3RkOjptYWtlX3VuaXF1ZTxUb3VjaFBvaW50SW5mbz4oeCwgeSkpOworICAgIG1f
bGFzdFVzZWRUb3VjaEluZGV4ID0gaW5kZXg7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
dXBkYXRlVG91Y2hQb2ludChpbnQgaW5kZXgsIGludCB4LCBpbnQgeSkKIHsKLSAgICAvLyBXcml0
ZSBtZS4KKyAgICBBU1NFUlQobV90b3VjaFBvaW50SW5mb0J5SW5kZXguY29udGFpbnMoaW5kZXgp
KTsKKyAgICBhdXRvIGluZm8gPSBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5nZXQoaW5kZXgpOwor
ICAgIGluZm8tPnggPSB4OworICAgIGluZm8tPnkgPSB5OwogfQogCiB2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycywgYm9vbCBlbmFibGUpCkBA
IC0xMzEsMTIgKzQ0MiwzNSBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZp
ZXIoV0tFdmVudE1vZGlmaWVycywgYm9vbCBlbmFibGUpCiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6c2V0VG91Y2hQb2ludFJhZGl1cyhpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1kpCiB7Ci0gICAg
Ly8gV3JpdGUgbWUuCisgICAgbV90b3VjaFBvaW50TWFqb3JSYWRpdXMgPSBzdGQ6Om1heChyYWRp
dXNYLCByYWRpdXNZKTsKKyAgICBtX3RvdWNoUG9pbnRNaW5vclJhZGl1cyA9IHN0ZDo6bWluKHJh
ZGl1c1gsIHJhZGl1c1kpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoU3RhcnQo
KQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0SWZOZWNl
c3NhcnkoKTsKKyAgICBJT0hJREV2ZW50UmVmIGV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0
aXplckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIG1hY2hfYWJzb2x1dGVfdGlt
ZSgpLAorICAgICAgICBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUhhbmQsCisgICAgICAg
IDAsIC8vIEluZGV4CisgICAgICAgIDAsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJRERpZ2l0
aXplckV2ZW50VG91Y2gsIC8vIEV2ZW50IG1hc2sKKyAgICAgICAgMCwgLy8gQnV0dG9uIG1hc2sK
KyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHgtYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24g
KHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHotYXhpcykKKyAgICAgICAgMCwgLy8g
UHJlc3N1cmUKKyAgICAgICAgMCwgLy8gVHdpc3QKKyAgICAgICAgZmFsc2UsIC8vIElzIHRyYW5z
ZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIHRydWUsIC8vIElzIHRyYW5zZHVjZXIgdG91Y2hpbmc/
CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgCisgICAgZm9yIChhdXRvIGl0
ID0gbV90b3VjaFBvaW50SW5mb0J5SW5kZXguYmVnaW4oKSwgZW5kID0gbV90b3VjaFBvaW50SW5m
b0J5SW5kZXguZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgSU9ISURFdmVudEFwcGVu
ZEV2ZW50KGV2ZW50LCBjcmVhdGVUb3VjaFBvaW50KGl0LT52YWx1ZS5nZXQoKSwgdHJ1ZSwgaXQt
PmtleSksIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgCisgICAgV0tQYWdlRXhwZWN0V2Vi
VG91Y2hFdmVudChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wYWdlKCkpOworICAg
IHNlbmRJT0hJREV2ZW50KGV2ZW50KTsKKyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQo
dGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1ZXVlZCwgV2ViVG91Y2hFdmVudEhhc0JlZW5SZWNl
aXZlZCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKQEAgLTE0Niw3
ICs0ODAsMjggQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQogCiB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnRvdWNoRW5kKCkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBJT0hJ
REV2ZW50UmVmIGV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckV2ZW50KGtDRkFsbG9j
YXRvckRlZmF1bHQsCisgICAgICAgIG1hY2hfYWJzb2x1dGVfdGltZSgpLAorICAgICAgICBrSU9I
SUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUhhbmQsCisgICAgICAgIDAsIC8vIEluZGV4CisgICAg
ICAgIDAsIC8vIElkZW50aXR5CisgICAgICAgIGtJT0hJRERpZ2l0aXplckV2ZW50VG91Y2gsIC8v
IEV2ZW50IG1hc2sKKyAgICAgICAgMCwgLy8gQnV0dG9uIG1hc2sKKyAgICAgICAgMCwgLy8gUG9z
aXRpb24gKHgtYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAg
MCwgLy8gUG9zaXRpb24gKHotYXhpcykKKyAgICAgICAgMCwgLy8gUHJlc3N1cmUKKyAgICAgICAg
MCwgLy8gVHdpc3QKKyAgICAgICAgZmFsc2UsIC8vIElzIHRyYW5zZHVjZXIgaW4gcmFuZ2U/Cisg
ICAgICAgIGZhbHNlLCAvLyBJcyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURF
dmVudE9wdGlvbk5vbmUpOworCisgICAgZm9yIChhdXRvIGl0ID0gbV90b3VjaFBvaW50SW5mb0J5
SW5kZXguYmVnaW4oKSwgZW5kID0gbV90b3VjaFBvaW50SW5mb0J5SW5kZXguZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGV2ZW50LCBjcmVhdGVU
b3VjaFBvaW50KGl0LT52YWx1ZS5nZXQoKSwgZmFsc2UsIGl0LT5rZXkpLCBrSU9ISURFdmVudE9w
dGlvbk5vbmUpOworCisgICAgV0tQYWdlRXhwZWN0V2ViVG91Y2hFdmVudChtX3Rlc3RDb250cm9s
bGVyLT5tYWluV2ViVmlldygpLT5wYWdlKCkpOworICAgIHNlbmRJT0hJREV2ZW50KGV2ZW50KTsK
KyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElERXZlbnRE
ZXF1ZXVlZCwgV2ViVG91Y2hFdmVudEhhc0JlZW5SZWNlaXZlZCk7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQpAQCAtMTU2LDEyICs1MTEsMTQgQEAgdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCgpCiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xl
YXJUb3VjaFBvaW50cygpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgbV90b3VjaFBvaW50SW5m
b0J5SW5kZXguY2xlYXIoKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91
Y2hQb2ludChpbnQgaW5kZXgpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgQVNTRVJUKG1fdG91
Y2hQb2ludEluZm9CeUluZGV4LmNvbnRhaW5zKGluZGV4KSk7CisgICAgYXV0byBpbmZvID0gbV90
b3VjaFBvaW50SW5mb0J5SW5kZXguZ2V0KGluZGV4KTsKKyAgICBpbmZvLT5pc1RvdWNoaW5nID0g
ZmFsc2U7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQb2ludChpbnQg
aW5kZXgpCkBAIC0xNzAsNCArNTI3LDM1IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2Vs
VG91Y2hQb2ludChpbnQgaW5kZXgpCiB9CiAjZW5kaWYKIAorLy8gUmV0dXJucyBhIHZhbHVlIGJl
dHdlZW4gMSB0aHJvdWdoIDUgaW5kaWNhdGluZyB0aGUgaW5kZXggb2YgdGhlIHRvdWNoIHBvaW50
LAorLy8gb3IgMCBpZiB3ZSBhcmUgYWxyZWFkeSB0cmFja2luZyB0aGUgbWF4aW11bSBudW1iZXIg
b2YgdG91Y2ggcG9pbnRzLgoraW50IEV2ZW50U2VuZGVyUHJveHk6Om5leHRBdmFpbGFibGVUb3Vj
aFBvaW50SW5kZXgoKSBjb25zdAoreworICAgIGZvciAoaW50IGluZGV4ID0gMTsgaW5kZXggPD0g
bWF4TnVtVG91Y2hQb2ludHM7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX3RvdWNoUG9pbnRJ
bmZvQnlJbmRleC5jb250YWlucyhpbmRleCkpCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCitJT0hJREV2ZW50UmVmIEV2ZW50U2VuZGVyUHJveHk6
OmNyZWF0ZVRvdWNoUG9pbnQoVG91Y2hQb2ludEluZm8qIGluZm8sIGJvb2wgaXNUb3VjaGluZywg
aW50IGluZGV4KQoreworICAgIElPSElERXZlbnRSZWYgZXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRl
RGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgaW5mby0+
bWFjaFRpbWUsCisgICAgICAgIGluZGV4LAorICAgICAgICBmaW5nZXJJZGVudGl0eUZvclRvdWNo
UG9pbnRJbmRleChpbmRleCksCisgICAgICAgIGtJT0hJRERpZ2l0aXplckV2ZW50VG91Y2gsIC8v
IEV2ZW50IG1hc2sKKyAgICAgICAgaW5mby0+eCwgLy8gUG9zaXRpb24gKHgtYXhpcykKKyAgICAg
ICAgaW5mby0+eSwgLy8gUG9zaXRpb24gKHktYXhpcykKKyAgICAgICAgMCwgLy8gUG9zaXRpb24g
KHotYXhpcykKKyAgICAgICAgMCwgLy8gUHJlc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAg
ICAgICBpc1RvdWNoaW5nLCAvLyBJcyB0cmFuc2R1Y2VyIGluIHJhbmdlPworICAgICAgICBpc1Rv
dWNoaW5nLCAvLyBJcyB0cmFuc2R1Y2VyIHRvdWNoaW5nPworICAgICAgICBrSU9ISURFdmVudE9w
dGlvbk5vbmUpOworICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKGV2ZW50LCBrSU9ISURFdmVu
dEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIG1fdG91Y2hQb2ludE1ham9yUmFkaXVzKTsKKyAg
ICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShldmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXpl
ck1pbm9yUmFkaXVzLCBtX3RvdWNoUG9pbnRNaW5vclJhZGl1cyk7CisgICAgcmV0dXJuIGV2ZW50
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNzk5YjljNDZhOGMxN2YyZDA4MmY2Nzc2OTU4MWZkYzFkYzU1ZGZkMi4uOWYyMDUy
MTRkMDJkN2YwZGZmNjUyNjEwYmVjYjA2NjRmODEwNjQ5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ5LDEwICs0OSwxMyBAQAogCQkyOUE4RkNERDE0NUYwMzM3MDA5
MDQ1QTYgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMzQ1RTcwMjEwMDZBQTVB
NiAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwICovOyB9OwogCQkyOUE4RkNF
MjE0NUYwMzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFMTE0NUYw
MzdCMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CiAJ
CTI5QThGQ0U1MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlB
OEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMu
bW0gKi87IH07CisJCTJFMEM3N0MzMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTBDNzdD
MjFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrICovOyB9OworCQkyRTBDNzdDNDFC
OUY1RThGMDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUwQzc3QzIxQjlGNUU4OTAwNTY0RUE5IC8qIElP
S2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMkUwQzc3QzYxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tC
b2FyZFNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2
aWNlcy5mcmFtZXdvcmsgKi87IH07CisJCTJFMEM3N0M3MUI5RjVFQkIwMDU2NEVBOSAvKiBCYWNr
Qm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2Vy
dmljZXMuZnJhbWV3b3JrICovOyB9OwogCQkyRTM0QzkwMDE4QjY4ODA4MDAwMDY3QkIgLyogV2Vi
S2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmJ1bmRsZSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTE4NjIxMUQxNUQ1NDAwMkVCQzAxIC8qIFdl
YktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5idW5kbGUgKi87IH07CiAJCTJFNjNFRDhBMTg5
MUFEN0UwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDc1MTg5MUFDRTkwMDJB
N0FGQyAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSAqLzsgfTsKIAkJMkU2M0VEOEIx
ODkxQUQ3RTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2M0VENzcxODkxQUNFOTAw
MkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tICovOyB9OwotCQkyRTYzRUQ4
RTE4OTFBRDdFMDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjNFRDdBMTg5MUFDRTkwMDJBN0FG
QyAvKiBFdmVudFNlbmRlclByb3h5SU9TLm1tICovOyB9OwogCQkyRTYzRUQ4RjE4OTFBRDdFMDAy
QTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdBRkMgLyogSW5qZWN0ZWRC
dW5kbGVJT1MubW0gKi87IH07CiAJCTJFNjNFRDkxMTg5MUFEQUQwMDJBN0FGQyAvKiBQbGF0Zm9y
bVdlYlZpZXdJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRUU1MkQxMzE4OTBBOUZCMDAxMEVEMjEgLyogUGxhdGZvcm1XZWJWaWV3SU9TLm1tICov
OyB9OwogCQkyRTYzRUQ5MjE4OTFBREFEMDAyQTdBRkMgLyogVGVzdENvbnRyb2xsZXJJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUU1MkQxNDE4
OTBBOUZCMDAxMEVEMjEgLyogVGVzdENvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0xOTIsMTEg
KzE5NSwxMyBAQAogCQkyOUE4RkNFMTM0NUU3MDIxMDA2QUE1QTcgLyogSlNBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRENFMkNEMTFCODQ1MjQ1MDBDN0Y4MzIgLyogVGVz
dENvbnRyb2xsZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFRlc3RDb250cm9sbGVyQ29jb2EubW07IHBhdGggPSBjb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTBDNzdDMjFCOUY1RTg5MDA1
NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdv
cms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTJFMEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNr
Qm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEJhY2tCb2FyZFNlcnZp
Y2VzLmZyYW1ld29yazsgcGF0aCA9IFBsYXRmb3Jtcy9pUGhvbmVTaW11bGF0b3IucGxhdGZvcm0v
RGV2ZWxvcGVyL1NES3MvaVBob25lU2ltdWxhdG9yOS4wLnNkay9TeXN0ZW0vTGlicmFyeS9Qcml2
YXRlRnJhbWV3b3Jrcy9CYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBE
RVZFTE9QRVJfRElSOyB9OwogCQkyRTYzRUQ3NTE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkU2M0VENzYxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFNjNFRDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYzRUQ3ODE4
OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FG
QyAvKiBFdmVudFNlbmRlclByb3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkU2M0VEN0ExODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJveHlJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudFNlbmRlclBy
b3h5SU9TLm1tOyBwYXRoID0gLi4vSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDdCMTg5MUFDRTkwMDJB
N0FGQyAvKiBJbmplY3RlZEJ1bmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRUU1MkNFMDE4OTBBOUE4MDAxMEVEMjEgLyogV2ViS2l0VGVzdFJ1bm5lckFwcC5h
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBw
ZXIuYXBwbGljYXRpb247IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYktpdFRlc3RSdW5u
ZXJBcHAuYXBwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRUU1MkNF
MjE4OTBBOUE4MDAxMEVEMjEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0zMTYs
NiArMzIxLDggQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMEM3N0MzMUI5RjVF
ODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkyRTBD
NzdDNzFCOUY1RUJCMDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0zMzcsOSArMzQ0LDExIEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQkyRTBDNzdDNDFCOUY1RThGMDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJQkMyNTE5NDAxMUQxNUQ4QjAwMkVCQzAxIC8qIEphdmFTY3JpcHRD
b3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUE2NjRCQzc2MTNBNUYzQTkwMDlB
N0IyNSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQkwRjUxNjlDQzE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAorCQkJCTJFMEM3N0M2MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNl
cy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ2Myw3ICs0NzIsNiBAQAogCQkJCTJF
NjNFRDc2MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5oICovLAogCQkJCTJFNjNFRDc3MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcklPUy5tbSAqLywKIAkJCQkyRTYzRUQ3ODE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbSAqLywKLQkJCQkyRTYzRUQ3QTE4OTFBQ0U5MDAyQTdBRkMg
LyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLywKIAkJCQkyRTYzRUQ3QjE4OTFBQ0U5MDAyQTdB
RkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKQEAg
LTQ3Miw2ICs0ODAsOCBAQAogCQkyRUU1MkNFMTE4OTBBOUE4MDAxMEVEMjEgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkUwQzc3
QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayAqLywKKwkJ
CQkyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCTJF
RTUyQ0UyMTg5MEE5QTgwMDEwRUQyMSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKIAkJCQky
RUU1MkNFNDE4OTBBOUE4MDAxMEVEMjEgLyogQ29yZUdyYXBoaWNzLmZyYW1ld29yayAqLywKIAkJ
CQkyRUU1MkNFNjE4OTBBOUE4MDAxMEVEMjEgLyogVUlLaXQuZnJhbWV3b3JrICovLApAQCAtNDky
LDYgKzUwMiw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBG
ODMxQUU5MUJBQjg0RjQwMEY5NkNEOCAvKiBMYXVuY2guc3Rvcnlib2FyZCAqLywKKwkJCQkyRTYz
RUQ3QTE4OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLywKIAkJCQky
RUU1MkNFQjE4OTBBOUE4MDAxMEVEMjEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8sCiAJCQkJMkVF
NTJEMTMxODkwQTlGQjAwMTBFRDIxIC8qIFBsYXRmb3JtV2ViVmlld0lPUy5tbSAqLywKIAkJCQky
RUU1MkQxNDE4OTBBOUZCMDAxMEVEMjEgLyogVGVzdENvbnRyb2xsZXJJT1MubW0gKi8sCkBAIC04
OTgsNyArOTA5LDYgQEAKIAkJCQkyRTYzRUQ5RTE4OTFBRUMxMDAyQTdBRkMgLyogV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU2M0VEOEExODkxQUQ3RTAw
MkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkU2M0VEOEIxODkxQUQ3RTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9T
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkU2M0VEOEUxODkxQUQ3RTAwMkE3QUZDIC8qIEV2ZW50
U2VuZGVyUHJveHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTYzRUQ4RjE4OTFBRDdFMDAy
QTdBRkMgLyogSW5qZWN0ZWRCdW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTIxMEVE
QTE0NENDM0VBMDA4MzVCQjYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTI5MjEwRUIwMTQ0Q0FDQkQwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExOTMsNiArMTIwMyw3IEBACiAJCQkJQTExNUND
QjgxQjlENzY5RDAwRTg5MTU5IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKIAkJfTsKIAkJQTE4NTEwMkQxQjlBREU0ODAwNzQ0QUVCIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJLaXRUZXN0UnVubmVyIChM
aWJyYXJ5KSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVm
OWQ2NTMxZDMzYzQ2MGIyM2JjZjVhMjdkYjZlODk3MGUyZTE3YWYuLjgxZWUyYmNiNWVlOTk5NTQz
NDBmMWFjNGJjYzlmODg3YmI2Y2I0NjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wOS0w
OCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgRXZlbnRTZW5kZXJQcm94eSBmb3IgV2ViS2l0VGVzdFJ1bm5lciBvbiBpT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODk2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9k
aXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTUtMDktMTggIEpha2UgTmllbHNlbiAgPGphY29i
X25pZWxzZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGxpbmUtYnJlYWstbGFuZ3VhZ2Utc2Vuc2l0
aXZlIHRlc3RzIHNob3VsZCBiZSBtYXJrZWQgYXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sCmluZGV4IDg2ZWY1NmE1ZjcwOTIw
NjI3MzgwOGFlMzdkNDc4NWVhMmVhODg3ODcuLmMwY2M0MzBjMDdlMTk5NTkwNjJkZDQ0ODU0MjBi
ODY3MDk5NTFlNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQt
c2VhcmNoLWlucHV0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1z
ZWFyY2gtaW5wdXQuaHRtbApAQCAtMTQsMTggKzE0LDYgQEAgZnVuY3Rpb24gbG9nKG1zZywgc3Vj
Y2VzcykKICAgICBsb2dEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykpLnRleHRDb250ZW50ID0gbXNnICsgJzogJyArICghIXN1Y2Nlc3MgPyAnUEFTUycgOiAnRkFJ
TCcpOwogfQogCi1mdW5jdGlvbiBjbGlja09uKGVsZW1lbnQpCi17Ci0gICAgaWYgKCF3aW5kb3cu
ZXZlbnRTZW5kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciB4ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgdmFyIHkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKLSAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Ci19Ci0KIGZ1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIGxvZ0RpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQKaW5kZXggZmY0M2NhNDA5MTUwYTU0Nzk0MTU5ODE4MDM5NTVlZTFkNDBl
NGQxNi4uYzdjZjk1NzRjZDE2ZGM2YjRhMjcyZDRhNTNkMDk3MmEyNWIzM2ZkNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHktdGV4dGFyZWEt
dG9nZ2xlLWRpc2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMSArMSw1IEBACitUZXN0cyB0aGF0IHRv
Z2dsaW5nIGRpc2FibGVkIHN0YXRlIGluIGEgdGV4dGFyZWEgbGVhdmVzIHRoZSB0ZXh0YXJlYSB0
eXBlYWJsZS4gVG8gVGVzdCBtYW51YWxseSwgbG9hZCB0aGlzIHBhZ2UgYW5kIHR5cGUgaW4gdGhl
IHRleHRhcmVhLiBJZiB5b3UgY2FuIHR5cGUsIHRoZW4gdGhlIHRlc3Qgc3VjY2VlZGVkLgorCisK
KwogU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0
YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHkt
dGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLmh0bWwKaW5kZXggM2Y0OGRmZGU2NGNlM2RiNzMxZDRj
OTVkOWM2MWE0NTJiNDdhZjA0Ny4uOWI2NDEyZWFkMDg4YTk4Y2RiNzJkYmViYTFjZWRiZjVkMDA2
MTU0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10
b2dnbGUtZGlzYWJsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRl
eHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sCkBAIC0xLDcgKzEsOSBAQAorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgogPHA+VGVzdHMgdGhhdCB0b2dnbGluZyBkaXNhYmxlZCBzdGF0ZSBpbiBh
IHRleHRhcmVhIGxlYXZlcyB0aGUgdGV4dGFyZWEgdHlwZWFibGUuCiBUbyBUZXN0IG1hbnVhbGx5
LCBsb2FkIHRoaXMgcGFnZSBhbmQgdHlwZSBpbiB0aGUgdGV4dGFyZWEuIElmIHlvdSBjYW4gdHlw
ZSwgdGhlbgogdGhlIHRlc3Qgc3VjY2VlZGVkLjxwPgogPHRleHRhcmVhIGlkPSJ0YSIgZGlzYWJs
ZWQ9ImRpc2FibGVkIj48L3RleHRhcmVhPgorPC9ib2R5PgogCiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKQEAgLTksMTggKzExLDIxIEBA
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCi1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIHRhLmRpc2FibGVkID0gZmFsc2U7
Ci0gICAgdGEuZm9jdXMoKTsKLSAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oJ2EnLCBbXSk7Ci0gICAgICAgIHZhciByZXN1bHQgPSB0YS52
YWx1ZTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAiYSIpCi0gICAgICAgICAgICBkb2N1bWVudC53
cml0ZSgiPHByZT5TVUNDRVNTPC9wcmU+Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCI8cHJlPkZBSUwsIHJlc3VsdCB3YXMgJyIgKyByZXN1bHQgKyAiJy48L3By
ZT4iKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0sIDApOworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBldmVu
dFNlbmRlci5zZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKHRydWUpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRhLmRpc2FibGVkID0gZmFsc2U7Cisg
ICAgICAgIHRhLmZvY3VzKCk7CisgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnLCBbXSk7CisgICAgICAgICAgICB2YXIg
cmVzdWx0ID0gdGEudmFsdWU7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09ICJhIikKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJTVUNDRVNTIikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkZBSUwsIHJlc3Vs
dCB3YXMgJyIgKyByZXN1bHQgKyAiJy4iKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fSwgMCk7Cit9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmVzb3VyY2VzL3RleHRhcmVhLWlucHV0LWV2ZW50LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9yZXNvdXJjZXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQuanMKaW5kZXggMzMzMGFlOGY5NmI2MTBm
ZTQ3NWE0YzNlNmY1YThhZTA4NjA0MGE3Mi4uMzc4ODJkYjk2YjlkZDJmMThjMjYzZGNkNjFmNzgz
OWE0ZGJlZTcyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMv
dGV4dGFyZWEtaW5wdXQtZXZlbnQuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNv
dXJjZXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQuanMKQEAgLTIyLDIzICsyMiwyNiBAQCBmdW5jdGlv
biBoYW5kbGVUZXh0YXJlYU9uSW5wdXQoZSkgewogICAgIH0KIH0KIAotdmFyIHRhID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJyk7Ci10YS5zZXRBdHRyaWJ1dGUoJ29uaW5wdXQnLCAnaGFu
ZGxlVGV4dGFyZWFPbklucHV0KGV2ZW50KScpOworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBl
dmVudFNlbmRlci5zZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKHRydWUpOwor
ICAgIHZhciB0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YScpOworICAgIHRhLnNldEF0
dHJpYnV0ZSgnb25pbnB1dCcsICdoYW5kbGVUZXh0YXJlYU9uSW5wdXQoZXZlbnQpJyk7CiAKLS8v
IENoYW5nZSB0aGUgdmFsdWUgYmVmb3JlIGZvY3VzaW5nLgotdGEudmFsdWUgPSAnJzsKKyAgICAv
LyBDaGFuZ2UgdGhlIHZhbHVlIGJlZm9yZSBmb2N1c2luZy4KKyAgICB0YS52YWx1ZSA9ICcnOwog
Ci10YS5mb2N1cygpOworICAgIHRhLmZvY3VzKCk7CiAKLWlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKLSAgICBldmVudFNlbmRlci5rZXlEb3duKCd4JywgW10pOwotICAgIHNob3VsZEV2YWx1YXRl
VG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEpOwotICAgIHNob3VsZEV2YWx1
YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxsQ291bnQnLCAxKTsKLSAgICAKLSAgICAvLyBDaGFu
Z2UgcHJvZ3JhbW1hdGljYWxseQotICAgIHRhLnZhbHVlID0gJ3Byb2dyYW1tYXRpY2FsbHknOwot
ICAgIAotICAgIC8vIFNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgdGhlIGV2ZW50cy4KLSAgICBz
aG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVUZXh0YXJlYU9uSW5wdXRDYWxsQ291bnQnLCAxKTsKLSAg
ICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50JywgMSk7Ci19Cisg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCd4JywgW10pOworICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVUZXh0YXJlYU9uSW5w
dXRDYWxsQ291bnQnLCAxKTsKKyAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnaGFuZGxlRGl2T25J
bnB1dENhbGxDb3VudCcsIDEpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hhbmdlIHByb2dyYW1t
YXRpY2FsbHkKKyAgICAgICAgdGEudmFsdWUgPSAncHJvZ3JhbW1hdGljYWxseSc7CisgICAgICAg
IAorICAgICAgICAvLyBTaG91bGQgbm90IGhhdmUgdHJpZ2dlcmVkIHRoZSBldmVudHMuCisgICAg
ICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEp
OworICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50Jywg
MSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1pbnB1dC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwKaW5kZXggOGY3YzZiOGRkOWQyMmQ2ZDky
YjQ2M2ViMzRiMTI3MmE5MDAxMjA4YS4uNDEzZDliM2IxMDNlNGFiZjdlOTQ3YjU4YWM3ZDI5ODBh
NTcxMTBhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2
ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0
bWwKQEAgLTIwLDYgKzIwLDcgQEAgZnVuY3Rpb24gdHlwZUludG8oZWxlbWVudCwgdmFsdWUpCiAK
IGZ1bmN0aW9uIHJ1blRlc3QoKQogeworICAgIGV2ZW50U2VuZGVyLnNldEFsbG93QXNzaXN0YW5j
ZU9uUHJvZ3JhbW1hdGljRm9jdXModHJ1ZSk7CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dAppbmRleCA3
OTQwMTE5ZGU0ZGM1ZjkzOGZkNDBhMjM5OWZjODBiODgxYjE4ZDM3Li4zODI2NGZiYWU1ZTlmZjg4
NWM2Nzg4M2Q1YTU1MGRkNGFlZDc5YzI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywx
MyBAQCBUZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
ODkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIFBBU1MgdGEudmFsdWUgaXMgIngiCiBQQVNTIHRh
LnZhbHVlIGlzICJ4IgogUEFTUyBoYW5kbGVUZXh0YXJlYU9uSW5wdXRDYWxsQ291bnQgaXMgMQog
UEFTUyBoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50IGlzIDEKIFBBU1MgaGFuZGxlVGV4dGFyZWFP
bklucHV0Q2FsbENvdW50IGlzIDEKIFBBU1MgaGFuZGxlRGl2T25JbnB1dENhbGxDb3VudCBpcyAx
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sCmluZGV4
IGIzMzcxNDY5NzY0Nzc2ZTA4MDljOWEzMTBkMzI2ZTI4MzNmZGY2NzUuLjNiYTVjNGJkZDVlNzFi
NjNjNzFmODQ4NTVkZmFiMWIxOWM4ZTk5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgotPGJvZHk+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzhiNmRmNzg0
OTBjYTgwN2ViNWRmM2RlODhlOTRjN2Y2YzliMjAwMy4uOGFhZGI3YTMwZjlkZjVhNDYzNWRkY2Ex
YjFkOGUzYTAwNDU0NjMxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc0NCw4ICsxNzQ0LDggQEAgZmFzdC9mb3Jt
cy9kYXRldGltZS9kYXRldGltZS1zdGVwdXAtc3RlcGRvd24uaHRtbCBbIEZhaWx1cmUgXQogZmFz
dC9mb3Jtcy9kYXRldGltZS9kYXRldGltZS12YWx1ZS1zYW5pdGl6YXRpb24uaHRtbCBbIEZhaWx1
cmUgXQogZmFzdC9mb3Jtcy9kYXRldGltZS9pbnB1dC12YWx1ZWFzZGF0ZS1kYXRldGltZS5odG1s
IFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2RhdGV0aW1lL2lucHV0LXZhbHVlYXNudW1iZXItZGF0
ZXRpbWUuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQu
aHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJs
ZWQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRt
bCBbIFBhc3MgXQorZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRt
bCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9lbnRlci1jbGlja3MtYnV0dG9ucy5odG1sIFsgRmFpbHVy
ZSBdCiBmYXN0L2Zvcm1zL2ZpZWxkc2V0LWxlZ2VuZC1wYWRkaW5nLXVuY2xpcHBlZC1maWVsZHNl
dC1ib3JkZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9maWVsZHNldC13aXRoLWZsb2F0
Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTE4NDIsOSArMTg0Miw5IEBAIGZhc3QvZm9ybXMvc2VsZWN0
L29wdGdyb3VwLWNsaWNraW5nLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvc2VsZWN0L29w
dGlvbi1zZWxlY3RpbmcuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9zZWxlY3Qvc2VsZWN0
LWRpc2FibGVkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvc2hhZG93LXRyZWUtZXhwb3N1
cmUuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwgWyBG
YWlsdXJlIF0KK2Zhc3QvZm9ybXMvdGV4dC1pbnB1dC1ldmVudC5odG1sIFsgUGFzcyBdCiBmYXN0
L2Zvcm1zL3RleHRhcmVhLWFycm93LW5hdmlnYXRpb24uaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9m
b3Jtcy90ZXh0YXJlYS1pbnB1dC1ldmVudC5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2Zvcm1zL3Rl
eHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2
ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEt
bWV0cmljcy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVy
LXdyYXBwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261582</attachid>
            <date>2015-09-19 11:26:42 -0700</date>
            <delta_ts>2015-11-17 02:37:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148963-20150919112627.patch</filename>
            <type>text/plain</type>
            <size>62318</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCmluZGV4IDQ5YzMyM2E1M2E3YTUwYzIyOWZkZTFjMDNhZDU4NDNkMDQ0YjJk
YTguLmY5MjcwYjFiNjg2OGY2YTkyNjcyN2I5MWRiY2ExODM5NTIyOGIwODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDY5LDYgKzI0NjksNDYgQEAg
dm9pZCBXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcihXS1BhZ2VSZWYgcGFnZVJlZikK
ICAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiB9CiAK
KyNpZiBQTEFURk9STShJT1MpCit2b2lkIFdLUGFnZUV4cGVjdFdlYlRvdWNoRXZlbnQoV0tQYWdl
UmVmIHBhZ2UpCit7CisgICAgdG9JbXBsKHBhZ2UpLT5zZXRIYXNSZWNlaXZlZFdlYlRvdWNoRXZl
bnQoZmFsc2UpOworfQorCit2b2lkIFdLUGFnZUV4cGVjdFdlYktleUV2ZW50KFdLUGFnZVJlZiBw
YWdlKQoreworICAgIHRvSW1wbChwYWdlKS0+c2V0SGFzUmVjZWl2ZWRXZWJLZXlFdmVudChmYWxz
ZSk7Cit9CisKK2Jvb2wgV0tQYWdlSGFzUmVjZWl2ZWRXZWJUb3VjaEV2ZW50KFdLUGFnZVJlZiBw
YWdlKQoreworICAgIHJldHVybiB0b0ltcGwocGFnZSktPmhhc1JlY2VpdmVkV2ViVG91Y2hFdmVu
dCgpOworfQorCitib29sIFdLUGFnZUhhc1JlY2VpdmVkV2ViS2V5RXZlbnQoV0tQYWdlUmVmIHBh
Z2UpCit7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+aGFzUmVjZWl2ZWRXZWJLZXlFdmVudCgp
OworfQorI2Vsc2UKK3ZvaWQgV0tQYWdlRXhwZWN0V2ViVG91Y2hFdmVudChXS1BhZ2VSZWYpCit7
Cit9CisKK3ZvaWQgV0tQYWdlRXhwZWN0V2ViS2V5RXZlbnQoV0tQYWdlUmVmKQoreworfQorCiti
b29sIFdLUGFnZUhhc1JlY2VpdmVkV2ViVG91Y2hFdmVudChXS1BhZ2VSZWYpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFdLUGFnZUhhc1JlY2VpdmVkV2ViS2V5RXZlbnQoV0tQYWdl
UmVmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgKaW5kZXggYWQ5YTlmODI2NDcyNmI2ZTlkMTExNmUxMGQ3MzA3NGIwYzEz
NGY4OC4uZWIzMGFmZjgwMjVjMmFiOGRhMzFlNjNmNzIzYjNlMWU3ZWFiNjg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBAIC0xMjEsNiAr
MTIxLDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUhhbmRsZU1lZGlhRXZlbnQoV0tQYWdlUmVm
IHBhZ2UsIFdLTWVkaWFFdmVudFR5cGUgZXZlbnQpOwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VM
b2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2UsIFdL
VVJMUmVmIHVybCwgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKTsKIAorV0tfRVhQT1JUIHZv
aWQgV0tQYWdlRXhwZWN0V2ViVG91Y2hFdmVudChXS1BhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQg
dm9pZCBXS1BhZ2VFeHBlY3RXZWJLZXlFdmVudChXS1BhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQg
Ym9vbCBXS1BhZ2VIYXNSZWNlaXZlZFdlYlRvdWNoRXZlbnQoV0tQYWdlUmVmIHBhZ2UpOworV0tf
RVhQT1JUIGJvb2wgV0tQYWdlSGFzUmVjZWl2ZWRXZWJLZXlFdmVudChXS1BhZ2VSZWYgcGFnZSk7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGViMzhjMmViMzE2NTNmNjY2OWM4MzNhMGM4ZGEwNmI1
OTFlODgyZjYuLjY1NDkzZDE3MTFkOTFjYmY2NWVkYTc0MmVhZDcyMGY4ZDhiOTZhNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjk5LDExICsyNjk5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gcHJwQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9y
QmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAg
ICBzZW5kRm9yY2VSZXBhaW50V2l0aENhbGxiYWNrKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc1M2M4MDEwMTlkYmVlMmZlNzVj
NTdmMGQzYTIzOGMwODJlMzgwNWIuLjAxYWU3MjY4ODdmYzJkNTU3NTNlMWU5ZDI4NDhmYjI1YzQ1
NDQzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQzNCw2
ICs0MzQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNFZGl0YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFZGl0YWJsZTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgYWxsb3dBc3Np
c3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dBc3Npc3Rh
bmNlT25Qcm9ncmFtbWF0aWNGb2N1czsgfQorICAgIHZvaWQgc2V0SGFzUmVjZWl2ZWRXZWJUb3Vj
aEV2ZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNSZWNlaXZlZEV4cGVjdGVkV2ViVG91Y2hFdmVudCA9
IHZhbHVlOyB9OworICAgIHZvaWQgc2V0SGFzUmVjZWl2ZWRXZWJLZXlFdmVudChib29sIHZhbHVl
KSB7IG1faGFzUmVjZWl2ZWRFeHBlY3RlZFdlYktleUV2ZW50ID0gdmFsdWU7IH07CisgICAgYm9v
bCBoYXNSZWNlaXZlZFdlYlRvdWNoRXZlbnQoKSB7IHJldHVybiBtX2hhc1JlY2VpdmVkRXhwZWN0
ZWRXZWJUb3VjaEV2ZW50OyB9OworICAgIGJvb2wgaGFzUmVjZWl2ZWRXZWJLZXlFdmVudCgpIHsg
cmV0dXJuIG1faGFzUmVjZWl2ZWRFeHBlY3RlZFdlYktleUV2ZW50OyB9OwogICAgIHZvaWQgZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICBkb3VibGUgZGlzcGxheWVkQ29udGVu
dFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLnNj
YWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9zZWRDb250ZW50UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5leHBvc2Vk
UmVjdCgpOyB9CkBAIC0xMDc2LDYgKzEwODEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNlbmRGb3JjZVJlcGFpbnRXaXRo
Q2FsbGJhY2soVm9pZENhbGxiYWNrJik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTEzNDEsNiArMTM0OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKICAgICB2b2lkIGRpY3RhdGlvbkNvbnRleHRDYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBFZGl0b3JTdGF0ZSYsIGJvb2wg
aXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOworICAgIHZvaWQgc2V0QWxsb3dBc3Npc3RhbmNl
T25Qcm9ncmFtbWF0aWNGb2N1cyhib29sIGFsbG93LCBib29sJiBjaGFuZ2VkKTsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBlbGVtZW50UmVjdCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCkBAIC0xNzYy
LDYgKzE3NzAsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX3VzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9v
bCBtX2FsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9oYXNSZWNlaXZlZEV4cGVjdGVkV2ViVG91Y2hFdmVudCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2hhc1JlY2VpdmVkRXhwZWN0ZWRXZWJLZXlFdmVudCB7IGZhbHNlIH07CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGVkNmExMDFjYmY3MmNlNDhiMTRlOTZj
Nzg1YzQ5YjQ0Y2Q4ODBmYS4uY2JlYzAxZGY2Njg5ODMxOTk3ZGU5M2YzNDc1M2NlNjlhMzE1NzVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0xODEsNiArMTgxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5n
IG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBhZnRlclRleHQsIHVpbnQ2
NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
RGljdGF0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZv
cmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEludGVy
cHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hh
ckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQorICAgIFNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3Jh
bW1hdGljRm9jdXMoYm9vbCBhbGxvdykgLT4gKGJvb2wgY2hhbmdlZCkKICAgICBEaWRSZWNlaXZl
UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKICAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgRGlkVXBkYXRl
QmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBm
bG9hdCBncm93VGhyZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IDllMTRhYjVmMTQwMzRiOGZhZjdkZWUyZWM3ZGQ0ZjY0ZmE3MzFlNzEuLmU1NzExYTY0
ZWRkNThhNTUyOWZmNGE3MTI3ZjI3ZTVhMTA4ZGU2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01
NjcsNiArNTY3LDkgQEAgLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAtICh2b2lkKV93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6KFVJV2ViVG91
Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CisgICAgaWYg
KCFfcGFnZS0+aGFzUmVjZWl2ZWRXZWJUb3VjaEV2ZW50KCkpCisgICAgICAgIF9wYWdlLT5zZXRI
YXNSZWNlaXZlZFdlYlRvdWNoRXZlbnQodHJ1ZSk7CisKICAgICBjb25zdCBfVUlXZWJUb3VjaEV2
ZW50KiBsYXN0VG91Y2hFdmVudCA9IGdlc3R1cmVSZWNvZ25pemVyLmxhc3RUb3VjaEV2ZW50Owog
ICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQgbmF0aXZlV2ViVG91Y2hFdmVudChsYXN0VG91Y2hFdmVu
dCk7CiAKQEAgLTI2MzYsNiArMjYzOSw5IEBAIC0gKHZvaWQpaGFuZGxlS2V5RXZlbnQ6KDo6VUlF
dmVudCAqKWV2ZW50CiAKIC0gKHZvaWQpaGFuZGxlS2V5V2ViRXZlbnQ6KFdlYklPU0V2ZW50ICop
dGhlRXZlbnQKIHsKKyAgICBpZiAoIV9wYWdlLT5oYXNSZWNlaXZlZFdlYktleUV2ZW50KCkpCisg
ICAgICAgIF9wYWdlLT5zZXRIYXNSZWNlaXZlZFdlYktleUV2ZW50KHRydWUpOworCiAgICAgX3Bh
Z2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCh0aGVFdmVudCkp
OwogfQogCkBAIC0zMDE1LDcgKzMwMjEsNyBAQCAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6
KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbgogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIDxyZGFyOi8v
cHJvYmxlbS8yMjEyNjUxOD4uIFRoZSByZWFsIGZpeCB3aWxsIGludm9sdmUgcmVmYWN0b3JpbmcK
ICAgICAvLyB0aGUgd2F5IHdlIGFzc2lzdCBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzZWQgbm9kZXMu
Ci0gICAgaWYgKCF1c2VySXNJbnRlcmFjdGluZyAmJiAhX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQp
CisgICAgaWYgKCF1c2VySXNJbnRlcmFjdGluZyAmJiAhX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQg
JiYgIV9wYWdlLT5hbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChibHVyUHJldmlvdXNOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyNzI1NjA2ZWRkMmM0OGJm
MGVmMDg0NmJiZThlMjRjNDM0NWQ5ZDBlLi4yMDczYWQyNmU4MTk2ZTQ4MTg3YTYzMDcwYTBiZDhk
Zjk4NjczMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTY5LDYgKzE2OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0
aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdAog
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc2VsZWN0ZWRUZXh0
LCBiZWZvcmVUZXh0LCBhZnRlclRleHQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZEZv
cmNlUmVwYWludFdpdGhDYWxsYmFjayhWb2lkQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrUmVmKCZjYWxsYmFjayk7CisgICAgbV9kcmF3aW5n
QXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CisgICAgbV9kcmF3
aW5nQXJlYS0+ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhbY2FsbGJhY2tSZWZdIChDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrUmVmLT5wZXJmb3JtQ2Fs
bGJhY2soKTsKKyAgICB9KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpLCBtX3BhZ2VJRCk7Cit9CisKKwogdm9pZCBX
ZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYg
YmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVj
dGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50
NjRfdCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9
IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwpAQCAtNjUzLDYgKzY2NCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50LAogICAgIGhh
bmRsZWQgPSBtX3BhZ2VDbGllbnQuaW50ZXJwcmV0S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZp
cnN0KCksIGlzQ2hhckV2ZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEFsbG93QXNz
aXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMoYm9vbCBhbGxvdywgYm9vbCYgY2hhbmdlZCkKK3sK
KyAgICBjaGFuZ2VkID0gbV9hbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzICE9IGFs
bG93OworICAgIG1fYWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyA9IGFsbG93Owor
fQorCiAvLyBDb21wbGV4IHRleHQgaW5wdXQgc3VwcG9ydCBmb3IgcGx1Zy1pbnMuCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCwgY29uc3Qg
U3RyaW5nJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KaW5kZXggY2Q0MzRkMmRhYmNmMzY4NTlhNjc0Njk2NTI5ZjkzZDM4ZTQ0NmQwOS4u
ZjIyY2M2MDYwMzFmNjM1ODVhYTc1OTdlZjcyNTZlY2Q1ZDQwMjBjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE0Niw2ICsxNDYs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlz
U2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFp
bkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNlbmRGb3JjZVJlcGFpbnRXaXRoQ2FsbGJhY2soVm9pZENhbGxiYWNrJiBj
YWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2suY2FsbGJhY2tJ
RCgpOworICAgIG1fY2FsbGJhY2tzLnB1dCgmY2FsbGJhY2spOworICAgIG1fZHJhd2luZ0FyZWEt
PndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7Cit9CisKICNpZiAhVVNFKEFTWU5DX05TVEVYVElOUFVUQ0xJRU5UKQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9u
UmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNTI3MzFlMzZjMjI0N2I3MjgyOGViOTBlMmE1NTM2M2Zm
OTFmMjc3Li5kMzFkMDhiMjE2YWU1YzAxNTI0NDBlNGMxNjQyMzg0MDlkNTZjYmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00NjYsNiArNDY2LDExIEBAIFdLQnVuZGxlSW5z
cGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5pbnNwZWN0b3IoKSk7CiB9CiAK
K3ZvaWQgV0tCdW5kbGVQYWdlV2FpdEZvckRyYXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRS
ZXN1bWVJbW1lZGlhdGVseShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sKKyAgICB0b0ltcGwocGFn
ZSktPndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRl
bHkoKTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VGb3JjZVJlcGFpbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5mb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KTsKQEAgLTYwMCw2ICs2MDUsMTUgQEAgdm9pZCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9w
ZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVIKICAgICB9KTsK
IH0KIAordm9pZCBXS0J1bmRsZVBhZ2VTZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0Zv
Y3VzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBib29sIGFsbG93KQoreworICAgIFVOVVNFRF9Q
QVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0oYWxsb3cpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGlj
Rm9jdXMoYWxsb3cpOworI2VuZGlmCit9CisKIHZvaWQgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2Uo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lUmVmLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHlSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5wb3N0TWVzc2Fn
ZSh0b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiksIHRvSW1wbChtZXNzYWdlQm9keVJlZikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggOTA4OTEzNzgxODk3MDNhNTJiMWRjZmE0NzAw
ZTQ3MjljMDc0NzdjOS4uYjJiMTZjMTY5ZWE4MWQ3ZGJjOTVjNDU4NjNiMzM1MTJkZTM2YjE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMTMsNiArMTEzLDcgQEAgV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlU3RhcnRNb25pdG9yaW5nU2Nyb2xsT3BlcmF0aW9ucyhXS0J1bmRs
ZVBhZ2VSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VUZXN0Tm90aWZpY2F0aW9u
Q2FsbGJhY2spKHZvaWQqIGNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUmVn
aXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZVBhZ2VUZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpOworV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNG
b2N1cyhXS0J1bmRsZVBhZ2VSZWYsIGJvb2wgYWxsb3cpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VQb3N0TWVzc2FnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKaW5kZXggY2RjZDE1NWQ1MmFkNjZmNGM0MTE5MWIwYzE0ZGViNWUz
N2NiMjMxNC4uMWZhM2RjZjhjOTdlMGUxNGE0N2ZmNDU5MWMxYWRjMGZhYmFhNTlhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKQEAgLTUyLDYgKzUyLDcgQEAgV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIGRvdWJsZSB6b29tRmEKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0U2Nh
bGVBdE9yaWdpbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9y
aWdpbik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVdhaXRGb3JEcmF3aW5nQXJlYVVw
ZGF0ZUlmTmVjZXNzYXJ5QW5kUmVzdW1lSW1tZWRpYXRlbHkoV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRm9yY2VSZXBhaW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZURvd24o
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGludCBidXR0b24sIFdLUG9pbnQgcG9zaXRpb24sIGludCBj
bGlja0NvdW50LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA0
NGFlYzAyYmRkZjBmODcxOTk2NTE3MzRjOTFhZWZjNmIxNGZhNjlmLi4yMTViNDExM2MzYzFlZmJh
NTRjNDQ1OGU2NmJiOGMyMGQ4MWM0OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmll
d1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hT
eW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsg
fQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dh
cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJl
YShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGE0NjMyZjNjMGE3NTAyZTAwNDUzN2Y1N2Vh
YmVkYmNiNzQ1YzNjY2YuLjE0OThlM2NlYTRiMjJmZGYzZThkN2RiMzRmOWNkZGIzNDhhNjhlYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTI2MzEsNiArMjYzMSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwog
fQogCit2b2lkIFdlYlBhZ2U6OndhaXRGb3JEcmF3aW5nQXJlYVVwZGF0ZUlmTmVjZXNzYXJ5QW5k
UmVzdW1lSW1tZWRpYXRlbHkoKQoreworICAgIGlmIChtX2RyYXdpbmdBcmVhLT5pc1dhaXRpbmdG
b3JCYWNraW5nU3RvcmVTd2FwKCkpCisgICAgICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkt
PndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6RGlk
VXBkYXRlPihwYWdlSUQoKSwgNTAwMF9tcyk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBh
aW50V2l0aG91dENhbGxiYWNrKCkKIHsKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZh
MWZjZjk1ZmI4YTJiYWE1OGVjZDM3YTFkM2U5MjM5NWVlNjU4MjQuLmFmZTg1NWUzZGQ1NWQxNDQx
YjIyNzFmOGU2MmFjMmY3ODNmOGNkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTIwLDYgKzUyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVy
KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIHNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1h
dGljRm9jdXMoYm9vbCk7CiAgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBA
IC03NzMsNiArNzc0LDcgQEAgcHVibGljOgogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpOworICAgIHZv
aWQgd2FpdEZvckRyYXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1bWVJbW1lZGlhdGVs
eSgpOwogCiAgICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICB2b2lkIHVubWFy
a0FsbEJhZEdyYW1tYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDllZjc5YzA5ZDlkMjdlNTZjMTg4NGQx
ZTMzZWU5ODY2MjhmOTRmMy4uNmVmYjdmMGRjYmUwMTljOTY1ZWZhMGVhZmQyNmFlMmZjYjg2ZTU3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTE2MCw2ICsxNjAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJp
bmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVwYWludCh1aW50NjRf
dCBjYWxsYmFja0lEKQorICAgIEZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAjIERpY3Rpb25hcnkgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NzEw
NWE4YjZjZjZkYTk5OTAxYzExZDdhYmEwNGFmZWQyZWY4M2QxLi5mMGFkNmUyMDcwMDAxYWY3N2Q0
NWFjYzczMWRmOWRkYzkyNTNmZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNTM1LDYgKzI1MzUsMTIgQEAgdm9p
ZCBXZWJQYWdlOjplbGVtZW50RGlkQmx1cihXZWJDb3JlOjpOb2RlKiBub2RlKQogICAgIH0KIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJv
b2wgYWxsb3cpCit7CisgICAgYm9vbCB2YWx1ZUNoYW5nZWQ7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1cyh0cnVlKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNG
b2N1czo6UmVwbHkodmFsdWVDaGFuZ2VkKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2U6
OnNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKIHsKICAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZOZWVkZWQo
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemUoKSwgc2l6ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggMDBhYmIxNWJlNTkyZjVkNmE3NGM2
ZDgzYzJlODljMTE5NjdkZDM3MC4uZjQ4YTliNDdiYzkyZTc1OGM1NzlhYzRlZjcxNWVkNTdhN2Rl
OTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMTE2LDYgKzEx
Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZsdXNoTGF5ZXJzKCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXYWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXA7IH07CisKICAgICBXZWJDb3JlOjpUaWxl
ZEJhY2tpbmcqIG1haW5GcmFtZVRpbGVkQmFja2luZygpIGNvbnN0OwogCiAgICAgdWludDY0X3Qg
dGFrZU5leHRUcmFuc2FjdGlvbklEKCkgeyByZXR1cm4gKyttX2N1cnJlbnRUcmFuc2FjdGlvbklE
OyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OThkNGQyYTVjYzMxODIzNjM1MzJiMDg1ZmY1ODY4NDhmZDZkYmRlNy4uZmVhMDE1MjdiYzgxZTkx
YTc2ZDk5NmY4OWMzZjM2ZDQ2ZGZhZjdlZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA5LTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVu
dFNlbmRlclByb3h5IGZvciBXZWJLaXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlz
dGVuZXIgaW5pdF0pOgorICAgICAgICAoLVtLZXlib2FyZFN0YXRlTGlzdGVuZXIga2V5Ym9hcmRX
YXNTaG93bjpdKToKKyAgICAgICAgKC1bS2V5Ym9hcmRTdGF0ZUxpc3RlbmVyIGtleWJvYXJkV2Fz
SGlkZGVuOl0pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclBy
b3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2hvdWxkQ29udGludWVXYWl0
aW5nKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dp
dGhUaW1lb3V0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6c2hvdWxkV3Jh
cFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6aGlkVXNhZ2VD
b2RlRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91c2VT
Y3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoUG9pbnRSYWRpdXMpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNlbCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE1LTA5LTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIGlPUyBXZWJLaXRUZXN0UnVubmVyIGZyZXF1ZW50bHkgY3Jhc2hlcyBpbiBXS0NvbnRl
eHRHZXRJY29uRGF0YWJhc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5
LmgKaW5kZXggNzBkOTQwMTRjOGQ3NTBjYjdkNjU3MDgwNDUyOGUyMDhjYzJmNGE1NC4uNjRmMDNh
NzQzMmY4NzNiOTNlMTFmNmI2NGI4YzQ3NmM3NjNmOGQyYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTQwLDEwICs0MCwyOSBAQAogI2luY2x1ZGUgIkVX
ZWJLaXQyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPElPS2l0L2hp
ZC9JT0hJREV2ZW50Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFT
UyBOU0V2ZW50OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIEtleWJv
YXJkU3RhdGVMaXN0ZW5lcjsKKworc3RydWN0IFRvdWNoUG9pbnRJbmZvIHsKKyAgICBUb3VjaFBv
aW50SW5mbyhpbnQgeCwgaW50IHkpOworCisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAg
IHVpbnQ2NF90IG1hY2hUaW1lOworICAgIGJvb2wgaXNUb3VjaGluZzsKK307CisKK2NvbnN0IGlu
dCBtYXhOdW1Ub3VjaFBvaW50cyA9IDU7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNs
YXNzIFRlc3RDb250cm9sbGVyOwpAQCAtMTI1LDYgKzE0NCwxOSBAQCBwcml2YXRlOgogI2VuZGlm
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIHNlbmRJT0hJREV2ZW50KElP
SElERXZlbnRSZWYpOworICAgIHZvaWQgc2VuZElPSElES2V5Ym9hcmRFdmVudCh1aW50NjRfdCB0
aW1lc3RhbXAsIHVpbnQzMl90IHVzYWdlLCBib29sIGlzS2V5RG93bik7CisgICAgdm9pZCB3YWl0
T25Db25kaXRpb25zV2l0aFRpbWVvdXQoZG91YmxlIHRpbWVvdXRJblNlY29uZHMsIHVuc2lnbmVk
IGNvbmRpdGlvbnMpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ29udGludWVXYWl0aW5nKHVuc2ln
bmVkIGNvbmRpdGlvbnMpIGNvbnN0OworICAgIHZvaWQgZm9yY2VQYWdlUmVwYWludEFuZFdhaXRJ
Zk5lY2Vzc2FyeSgpOworICAgIHN0YXRpYyB2b2lkIGZvcmNlUGFnZVJlcGFpbnRDYWxsYmFjayhX
S0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKKyAgICAvLyBUb3VjaCBldmVudCBzeW50aGVzaXpp
bmcgaGVscGVycy4KKyAgICBJT0hJREV2ZW50UmVmIGNyZWF0ZVRvdWNoUG9pbnQoVG91Y2hQb2lu
dEluZm8qLCBib29sIGlzVG91Y2hpbmcsIGludCBpbmRleCk7CisgICAgaW50IG5leHRBdmFpbGFi
bGVUb3VjaFBvaW50SW5kZXgoKSBjb25zdDsKKyAgICB2b2lkIHJlbGVhc2VUb3VjaFBvaW50SW5k
ZXgoaW50IGluZGV4KTsKKyNlbmRpZgorCiAgICAgZG91YmxlIG1fdGltZTsKICAgICBXS1BvaW50
IG1fcG9zaXRpb247CiAgICAgYm9vbCBtX2xlZnRNb3VzZUJ1dHRvbkRvd247CkBAIC0xNDYsNiAr
MTc4LDE2IEBAIHByaXZhdGU6CiAgICAgRWluYV9MaXN0KiBtX3RvdWNoUG9pbnRzOwogI2VuZGlm
CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBSZXRhaW5QdHI8S2V5Ym9hcmRTdGF0
ZUxpc3RlbmVyPiBtX2tleWJvYXJkTGlzdGVuZXI7CisgICAgYm9vbCBtX2RpZFBlcmZvcm1Jbml0
aWFsUmVwYWludCB7IGZhbHNlIH07CisgICAgLy8gVG91Y2ggc3RhdGUgdmFyaWFibGVzLgorICAg
IGludCBtX3RvdWNoUG9pbnRNYWpvclJhZGl1cyB7IDUgfTsKKyAgICBpbnQgbV90b3VjaFBvaW50
TWlub3JSYWRpdXMgeyA1IH07CisgICAgSGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxUb3Vj
aFBvaW50SW5mbz4+IG1fdG91Y2hQb2ludEluZm9CeUluZGV4OworICAgIGludCBtX2xhc3RVc2Vk
VG91Y2hJbmRleCB7IDAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAppbmRleCBmMzI4MGJi
OTRiMDU0MzcwMjQzMDIzZTI1MzM2ZGUxYWZhZTc5MzlmLi41MDlmODljMDcxMzE1ZDY2NzRlNWIx
YzQ4NGJjM2RhOWQ2YTVmYWU5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5pZGwKQEAgLTUzLDYgKzUzLDcgQEAgaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIgewogCiAgICAgdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoKTsKICAgICB2b2lkIGNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhvYmplY3QgZnVuY3Rpb25DYWxsYmFjayk7CisgICAg
dm9pZCBzZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKGJvb2xlYW4gYWxsb3cp
OwogCiAjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZF
TlRTCiAgICAgLy8gVG91Y2ggZXZlbnRzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAK
aW5kZXggYzliMWFkOTcxMjA5ZjA1ZTAxODk5Njc2ZjBkOGYxZGQzODJmOTM1Mi4uZDdiMGJkZTY3
ZmYyZjZkZDA2ZjVjY2MxYjVhM2JhODFhYTIxMjFjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwCkBAIC0yMTcsNiArMjE3LDkgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb3VzZURvd24oaW50IGJ1dHRvbiwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5KQogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKICAgICBXS1JldGFp
blB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0
V0ssIGNyZWF0ZU1vdXNlTWVzc2FnZUJvZHkoTW91c2VEb3duLCBidXR0b24sIG1vZGlmaWVycykp
OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHdhaXRGb3JMYXllckZsdXNoVG9CZVNjaGVkdWxl
ZElmTmVjZXNzYXJ5KCk7CisjZW5kaWYKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNN
ZXNzYWdlRm9yVGVzdGluZyhwYWdlLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIApAQCAtMzgzLDYgKzM4Niw5IEBAIHZv
aWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFs
dWVSZWYgbW9kaWZpZXJBcnJheSwKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
RXZlbnRTZW5kZXIiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4g
a2V5RG93bk1lc3NhZ2VCb2R5ID0gY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgbW9kaWZp
ZXJzLCBsb2NhdGlvbik7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgd2FpdEZvckxheWVyRmx1
c2hUb0JlU2NoZWR1bGVkSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgogICAgIFdLQnVuZGxlUGFnZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwga2V5RG93bk1l
c3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIApAQCAtNjY0LDYgKzY3MCwyNiBAQCB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVm
IGZ1bmN0aW9uQ2FsbAogICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29t
cGxldGlvbkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YS5yZWxlYXNlKCkpOwogfQogCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
OnNldEFsbG93QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXMoYm9vbCBhbGxvdykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oYWxsb3cpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBXS0J1bmRsZVBh
Z2VTZXRBbGxvd0Fzc2lzdGFuY2VPblByb2dyYW1tYXRpY0ZvY3VzKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgYWxsb3cpOworI2VuZGlmCit9CisKKyNpZiBQTEFU
Rk9STShJT1MpCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OndhaXRGb3JMYXllckZsdXNo
VG9CZVNjaGVkdWxlZElmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9oYXNXYWl0ZWRGb3JMYXll
ckZsdXNoVG9CZVNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tCdW5kbGVQYWdl
UmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7Cisg
ICAgV0tCdW5kbGVQYWdlV2FpdEZvckRyYXdpbmdBcmVhVXBkYXRlSWZOZWNlc3NhcnlBbmRSZXN1
bWVJbW1lZGlhdGVseShwYWdlKTsKKyAgICBtX2hhc1dhaXRlZEZvckxheWVyRmx1c2hUb0JlU2No
ZWR1bGVkID0gdHJ1ZTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZv
aWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IGMyM2MzNmRmYWM1NTg0Zjg1MWM1ZjYw
ZmI0ZDU2MjJjZmY0MjAwNGEuLjcwMTk0MTIxNDM1YWMwMjA0MjM3ZDE4ZjBlYTgzYzZhOTdkOGI5
Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC02MCw2ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKICAgICB2b2lkIG1vbml0
b3JXaGVlbEV2ZW50cygpOwogICAgIHZvaWQgY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpT
VmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CisgICAgdm9pZCBzZXRBbGxvd0Fzc2lzdGFuY2VP
blByb2dyYW1tYXRpY0ZvY3VzKGJvb2wpOwogCiAgICAgdm9pZCBrZXlEb3duKEpTU3RyaW5nUmVm
IGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOwogICAgIHZvaWQg
c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSk7CkBAIC04OCw3ICs4
OSwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlcigp
OworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgd2FpdEZvckxheWVyRmx1c2hUb0JlU2No
ZWR1bGVkSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAgV0tQb2ludCBtX3Bvc2l0aW9uOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIG1faGFzV2FpdGVkRm9yTGF5ZXJGbHVzaFRvQmVT
Y2hlZHVsZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50
U2VuZGVyUHJveHlJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCmluZGV4IGFjNTRhMWM2ZDZkOGMyYzUwZTA4MWRi
NWJkYjgyMWQzZTYwOGVjMmQuLjIyOTE0YjRkODBiYTc1MzE4MWFmNzEyMzk1OGNjMzQ3ODU0YWZk
YzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0V2ZW50U2VuZGVyUHJveHlJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQpAQCAtMjYsMTQgKzI2LDg1IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKIAorI2lt
cG9ydCA8QmFja0JvYXJkU2VydmljZXMvQktTSElERXZlbnRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5oPgorI2ltcG9ydCA8SU9LaXQvaGlkL0lPSElEVXNh
Z2VUYWJsZXMuaD4KKyNpbXBvcnQgPG1hY2gvbWFjaF90aW1lLmg+CiAjaW1wb3J0ICJQbGF0Zm9y
bVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENv
bnRyb2xsZXIuaCIKLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJ
QXBwbGljYXRpb25fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZEltcGwuaD4K
KyNpbXBvcnQgPFVJS2l0L1VJV2luZG93X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0V2
ZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisKK3N0YXRpYyBjb25z
dCBpbnQgZmluZ2VySWRlbnRpZmllcnNbbWF4TnVtVG91Y2hQb2ludHNdID0geyAyLCAzLCA0LCA1
LCAxIH07CisKK2ludCBmaW5nZXJJZGVudGl0eUZvclRvdWNoUG9pbnRJbmRleChpbnQgaW5kZXgp
Cit7CisgICAgQVNTRVJUKDAgPCBpbmRleCAmJiBpbmRleCA8PSBtYXhOdW1Ub3VjaFBvaW50cyk7
CisgICAgcmV0dXJuIGZpbmdlcklkZW50aWZpZXJzW2luZGV4IC0gMV07Cit9CisKK1RvdWNoUG9p
bnRJbmZvOjpUb3VjaFBvaW50SW5mbyhpbnQgeCwgaW50IHkpCisgICAgOiB4KHgpCisgICAgLCB5
KHkpCisgICAgLCBtYWNoVGltZShtYWNoX2Fic29sdXRlX3RpbWUoKSkKKyAgICAsIGlzVG91Y2hp
bmcodHJ1ZSkKK3sKK30KKworQGludGVyZmFjZSBLZXlib2FyZFN0YXRlTGlzdGVuZXIgOiBOU09i
amVjdAorQHByb3BlcnR5IEJPT0wgaXNLZXlib2FyZFJlYWR5OworLSAoaW5zdGFuY2V0eXBlKWlu
aXQ7CistICh2b2lkKWtleWJvYXJkV2FzU2hvd246KE5TTm90aWZpY2F0aW9uKilhTm90aWZpY2F0
aW9uOworLSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmlj
YXRpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBLZXlib2FyZFN0YXRlTGlzdGVuZXIgOiBO
U09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmIChzZWxmKSB7CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNT
aG93bjopIG5hbWU6VUlLZXlib2FyZERpZFNob3dOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Cisg
ICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioa2V5Ym9hcmRXYXNIaWRkZW46KSBuYW1lOlVJS2V5Ym9h
cmREaWRIaWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgICAgICBzZWxmLmlzS2V5Ym9h
cmRSZWFkeSA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClrZXli
b2FyZFdhc1Nob3duOihOU05vdGlmaWNhdGlvbiopYU5vdGlmaWNhdGlvbgoreworICAgIC8vIFBy
ZXBhcmUgVUlLaXQgZm9yIHN5bmNocm9ub3VzIHRleHQgaW5wdXQgZXZlbnQgcHJvY2Vzc2luZy4K
KyAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBzZXRFeHBlY3RzU3luY2hyb25v
dXNUZXh0SW5wdXQ6WUVTXTsKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IFlFUzsKK30KKwor
LSAodm9pZClrZXlib2FyZFdhc0hpZGRlbjooTlNOb3RpZmljYXRpb24qKWFOb3RpZmljYXRpb24K
K3sKKyAgICBzZWxmLmlzS2V5Ym9hcmRSZWFkeSA9IE5POworfQorQGVuZAogCiBuYW1lc3BhY2Ug
V1RSIHsKIAorZW51bSB7CisgICAgS2V5Ym9hcmRJc1JlYWR5ID0gMSA8PCAwLAorICAgIFdlYlRv
dWNoRXZlbnRIYXNCZWVuUmVjZWl2ZWQgPSAxIDw8IDEsCisgICAgV2ViS2V5RXZlbnRIYXNCZWVu
UmVjZWl2ZWQgPSAxIDw8IDIsCisgICAgS2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkID0gMSA8PCAz
LAorICAgIEluaXRpYWxSZXBhaW50SGFzQ29tcGxldGVkID0gMSA8PCA0Cit9OwordHlwZWRlZiB1
bnNpZ25lZCBXYWl0T25Db25kaXRpb25GbGFnczsKKworLy8gVGhlc2UgdGltZW91dHMgKGluIHNl
Y29uZHMpIGFyZSBhcmJpdHJhcnksIGJ1dCBhcmUgbXVjaCBsb25nZXIgdGhhbiBXS1RSIHNob3Vs
ZCByZXF1aXJlLgorY29uc3QgZG91YmxlIHRpbWVvdXREZWxheUZvckhJREV2ZW50RGVxdWV1ZWQg
PSAxMDsKK2NvbnN0IGRvdWJsZSB0aW1lb3V0RGVsYXlGb3JLZXlib2FyZFJlYWR5ID0gMTA7Citj
b25zdCBkb3VibGUgdGltZW91dERlbGF5Rm9ySW5pdGlhbFJlcGFpbnQgPSAxMDsKKwogRXZlbnRT
ZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xs
ZXIpCiAgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQogICAgICwgbV90aW1l
KDApCkBAIC00NCw4ICsxMTUsOCBAQCBFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKICAgICAsIG1fY2xpY2tQb3NpdGlvbigp
CiAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKICAgICAs
IGV2ZW50TnVtYmVyKDApCisgICAgLCBtX2tleWJvYXJkTGlzdGVuZXIoYWRvcHROUyhbW0tleWJv
YXJkU3RhdGVMaXN0ZW5lciBhbGxvY10gaW5pdF0pKQogewotICAgIFVOVVNFRF9QQVJBTShtX3Rl
c3RDb250cm9sbGVyKTsKICAgICBVTlVTRURfUEFSQU0obV9sZWZ0TW91c2VCdXR0b25Eb3duKTsK
ICAgICBVTlVTRURfUEFSQU0oZXZlbnROdW1iZXIpOwogfQpAQCAtNjgsMjkgKzEzOSwyNTcgQEAg
dm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0
b24pCiAgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRvbjsKIH0KIAorYm9vbCBFdmVudFNlbmRlclBy
b3h5OjpzaG91bGRDb250aW51ZVdhaXRpbmcodW5zaWduZWQgY29uZGl0aW9ucykgY29uc3QKK3sK
KyAgICBib29sIHNob3VsZFdhaXQgPSBmYWxzZTsKKyAgICBpZiAoY29uZGl0aW9ucyAmIEtleWJv
YXJkSXNSZWFkeSkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSAhW21fa2V5Ym9hcmRMaXN0ZW5lciBp
c0tleWJvYXJkUmVhZHldOworICAgIGlmIChjb25kaXRpb25zICYgV2ViVG91Y2hFdmVudEhhc0Jl
ZW5SZWNlaXZlZCkKKyAgICAgICAgc2hvdWxkV2FpdCB8PSAhV0tQYWdlSGFzUmVjZWl2ZWRXZWJU
b3VjaEV2ZW50KG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBhZ2UoKSk7CisgICAg
aWYgKGNvbmRpdGlvbnMgJiBXZWJLZXlFdmVudEhhc0JlZW5SZWNlaXZlZCkKKyAgICAgICAgc2hv
dWxkV2FpdCB8PSAhV0tQYWdlSGFzUmVjZWl2ZWRXZWJLZXlFdmVudChtX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wYWdlKCkpOworICAgIGlmIChjb25kaXRpb25zICYgS2V5SW5wdXRI
YXNCZWVuUHJvY2Vzc2VkKQorICAgICAgICBzaG91bGRXYWl0IHw9IFtbVUlLZXlib2FyZEltcGwg
c2hhcmVkSW5zdGFuY2VdIGhhc1BlbmRpbmdJbnB1dENvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBp
ZiAoY29uZGl0aW9ucyAmIEluaXRpYWxSZXBhaW50SGFzQ29tcGxldGVkKQorICAgICAgICBzaG91
bGRXYWl0IHw9ICFtX2RpZFBlcmZvcm1Jbml0aWFsUmVwYWludDsKKyAgICByZXR1cm4gc2hvdWxk
V2FpdDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50QW5kV2Fp
dElmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9kaWRQZXJmb3JtSW5pdGlhbFJlcGFpbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLUGFnZUZvcmNlUmVwYWludChtX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wYWdlKCksIHRoaXMsIEV2ZW50U2VuZGVyUHJveHk6OmZvcmNlUGFn
ZVJlcGFpbnRDYWxsYmFjayk7CisgICAgd2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KHRpbWVv
dXREZWxheUZvckluaXRpYWxSZXBhaW50LCBJbml0aWFsUmVwYWludEhhc0NvbXBsZXRlZCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6d2FpdE9uQ29uZGl0aW9uc1dpdGhUaW1lb3V0KGRv
dWJsZSB0aW1lb3V0SW5TZWNvbmRzLCB1bnNpZ25lZCBjb25kaXRpb25zKSBjb25zdAoreworICAg
IE5TRGF0ZSAqdGltZW91dERhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VO
b3c6dGltZW91dEluU2Vjb25kc107CisgICAgd2hpbGUgKFt0aW1lb3V0RGF0ZSBjb21wYXJlOltO
U0RhdGUgZGF0ZV1dID09IE5TT3JkZXJlZERlc2NlbmRpbmcgJiYgc2hvdWxkQ29udGludWVXYWl0
aW5nKGNvbmRpdGlvbnMpKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVu
TW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOnRpbWVvdXREYXRlXTsKK30KKwor
dm9pZCBFdmVudFNlbmRlclByb3h5Ojpmb3JjZVBhZ2VSZXBhaW50Q2FsbGJhY2soV0tFcnJvclJl
ZiBlcnJvciwgdm9pZCogY29udGV4dCkKK3sKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0YXRpY19jYXN0PEV2ZW50U2VuZGVyUHJveHkqPihjb250ZXh0KS0+bV9kaWRQ
ZXJmb3JtSW5pdGlhbFJlcGFpbnQgPSB0cnVlOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIGFkZFRvdWNoUG9pbnQobV9wb3NpdGlvbi54
LCBtX3Bvc2l0aW9uLnkpOworICAgIHRvdWNoU3RhcnQoKTsKIH0KIAogdm9pZCBFdmVudFNlbmRl
clByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgQVNTRVJUKG1fbGFzdFVzZWRUb3Vj
aEluZGV4KTsKKyAgICByZWxlYXNlVG91Y2hQb2ludChtX2xhc3RVc2VkVG91Y2hJbmRleCk7Cisg
ICAgdG91Y2hFbmQoKTsKKyAgICBjbGVhclRvdWNoUG9pbnRzKCk7CisgICAgbV9sYXN0VXNlZFRv
dWNoSW5kZXggPSAwOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRv
dWJsZSB4LCBkb3VibGUgeSkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBtX3Bvc2l0aW9uLngg
PSB4OworICAgIG1fcG9zaXRpb24ueSA9IHk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKIHsKLSAgICBtX3RpbWUgKz0gbWlsbGlzZWNv
bmRzIC8gMTAwMC4wOworICAgIC8vIFdyaXRlIG1lLgorfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKE5TU3RyaW5nKiBrZXkpCit7
CisgICAgaWYgKFtrZXkgbGVuZ3RoXSAhPSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aW50IGtleUNvZGUgPSBba2V5IGNoYXJhY3RlckF0SW5kZXg6MF07CisgICAgaWYgKDY1IDw9IGtl
eUNvZGUgJiYga2V5Q29kZSA8PSA5MCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgc3dpdGNo
IChrZXlDb2RlKSB7CisgICAgY2FzZSAnYCc6CisgICAgY2FzZSAnISc6CisgICAgY2FzZSAnQCc6
CisgICAgY2FzZSAnIyc6CisgICAgY2FzZSAnJCc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAn
Xic6CisgICAgY2FzZSAnJic6CisgICAgY2FzZSAnKic6CisgICAgY2FzZSAnKCc6CisgICAgY2Fz
ZSAnKSc6CisgICAgY2FzZSAnXyc6CisgICAgY2FzZSAnKyc6CisgICAgY2FzZSAneyc6CisgICAg
Y2FzZSAnfSc6CisgICAgY2FzZSAnfCc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAnIic6Cisg
ICAgY2FzZSAnPCc6CisgICAgY2FzZSAnPic6CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnfic6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CitzdGF0
aWMgaW5saW5lIHVpbnQzMl90IGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihOU1N0cmluZyoga2V5
KQoreworICAgIGNvbnN0IGludCB1cHBlcmNhc2VBbHBoYWJldGljT2Zmc2V0ID0gJ0EnIC0ga0hJ
RFVzYWdlX0tleWJvYXJkQTsKKyAgICBjb25zdCBpbnQgbG93ZXJjYXNlQWxwaGFiZXRpY09mZnNl
dCA9ICdhJyAtIGtISURVc2FnZV9LZXlib2FyZEE7CisgICAgY29uc3QgaW50IG51bWVyaWNOb25a
ZXJvT2Zmc2V0ID0gJzEnIC0ga0hJRFVzYWdlX0tleWJvYXJkMTsKKyAgICBpZiAoW2tleSBsZW5n
dGhdID09IDEpIHsKKyAgICAgICAgLy8gSGFuZGxlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFu
ZCBiYXNpYyBzeW1ib2xzLgorICAgICAgICBpbnQga2V5Q29kZSA9IFtrZXkgY2hhcmFjdGVyQXRJ
bmRleDowXTsKKyAgICAgICAgaWYgKDk3IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSAxMjIpIC8v
IEhhbmRsZSBhLXouCisgICAgICAgICAgICByZXR1cm4ga2V5Q29kZSAtIGxvd2VyY2FzZUFscGhh
YmV0aWNPZmZzZXQ7CisKKyAgICAgICAgaWYgKDY1IDw9IGtleUNvZGUgJiYga2V5Q29kZSA8PSA5
MCkgLy8gSGFuZGxlIEEtWi4KKyAgICAgICAgICAgIHJldHVybiBrZXlDb2RlIC0gdXBwZXJjYXNl
QWxwaGFiZXRpY09mZnNldDsKKworICAgICAgICBpZiAoNDkgPD0ga2V5Q29kZSAmJiBrZXlDb2Rl
IDw9IDU3KSAvLyBIYW5kbGUgMS05LgorICAgICAgICAgICAgcmV0dXJuIGtleUNvZGUgLSBudW1l
cmljTm9uWmVyb09mZnNldDsKKworICAgICAgICAvLyBIYW5kbGUgYWxsIG90aGVyIGNhc2VzLgor
ICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgY2FzZSAnYCc6CisgICAgICAgIGNh
c2UgJ34nOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZEdyYXZlQWNjZW50
QW5kVGlsZGU7CisgICAgICAgIGNhc2UgJyEnOgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2Fn
ZV9LZXlib2FyZDE7CisgICAgICAgIGNhc2UgJ0AnOgorICAgICAgICAgICAgcmV0dXJuIGtISURV
c2FnZV9LZXlib2FyZDI7CisgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgcmV0dXJuIGtI
SURVc2FnZV9LZXlib2FyZDM7CisgICAgICAgIGNhc2UgJyQnOgorICAgICAgICAgICAgcmV0dXJu
IGtISURVc2FnZV9LZXlib2FyZDQ7CisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgcmV0
dXJuIGtISURVc2FnZV9LZXlib2FyZDU7CisgICAgICAgIGNhc2UgJ14nOgorICAgICAgICAgICAg
cmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDY7CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAg
ICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDc7CisgICAgICAgIGNhc2UgJyonOgorICAgICAg
ICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDg7CisgICAgICAgIGNhc2UgJygnOgorICAg
ICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZDk7CisgICAgICAgIGNhc2UgJyknOgor
ICAgICAgICBjYXNlICcwJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmQw
OworICAgICAgICBjYXNlICctJzoKKyAgICAgICAgY2FzZSAnXyc6CisgICAgICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkSHlwaGVuOworICAgICAgICBjYXNlICc9JzoKKyAgICAgICAg
Y2FzZSAnKyc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRXF1YWxTaWdu
OworICAgICAgICBjYXNlICdcdCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJv
YXJkVGFiOworICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgY2FzZSAneyc6CisgICAgICAgICAg
ICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkT3BlbkJyYWNrZXQ7CisgICAgICAgIGNhc2UgJ10n
OgorICAgICAgICBjYXNlICd9JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9h
cmRDbG9zZUJyYWNrZXQ7CisgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgY2FzZSAnfCc6Cisg
ICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQmFja3NsYXNoOworICAgICAgICBj
YXNlICc7JzoKKyAgICAgICAgY2FzZSAnOic6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdl
X0tleWJvYXJkU2VtaWNvbG9uOworICAgICAgICBjYXNlICdcJyc6CisgICAgICAgIGNhc2UgJyIn
OgorICAgICAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFF1b3RlOworICAgICAgICBj
YXNlICdccic6CisgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNh
Z2VfS2V5Ym9hcmRSZXR1cm5PckVudGVyOworICAgICAgICBjYXNlICcsJzoKKyAgICAgICAgY2Fz
ZSAnPCc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkQ29tbWE7CisgICAg
ICAgIGNhc2UgJy4nOgorICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgIHJldHVybiBrSElE
VXNhZ2VfS2V5Ym9hcmRQZXJpb2Q7CisgICAgICAgIGNhc2UgJy8nOgorICAgICAgICBjYXNlICc/
JzoKKyAgICAgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRTbGFzaDsKKyAgICAgICAg
Y2FzZSAnICc6CisgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkU3BhY2ViYXI7
CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgaW50IGZ1bmN0aW9uS2V5T2Zmc2V0ID0ga0hJ
RFVzYWdlX0tleWJvYXJkRjE7CisgICAgZm9yIChpbnQgZnVuY3Rpb25LZXlJbmRleCA9IDE7IGZ1
bmN0aW9uS2V5SW5kZXggPD0gMTI7ICsrZnVuY3Rpb25LZXlJbmRleCkgeworICAgICAgICBpZiAo
W2tleSBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJWQiLCBm
dW5jdGlvbktleUluZGV4XV0pCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25LZXlPZmZzZXQg
KyBmdW5jdGlvbktleUluZGV4IC0gMTsKKyAgICB9CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZXNjYXBlIl0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRFc2NhcGU7
CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicmV0dXJuIl0gfHwgW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJlbnRlciJdKQorICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkUmV0
dXJuT3JFbnRlcjsKKyAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkK
KyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRBcnJvdzsKKyAgICBpZiAoW2tl
eSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pCisgICAgICAgIHJldHVybiBrSElEVXNh
Z2VfS2V5Ym9hcmRSaWdodEFycm93OworICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAInVw
QXJyb3ciXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZFVwQXJyb3c7CisgICAg
aWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pCisgICAgICAgIHJldHVybiBr
SElEVXNhZ2VfS2V5Ym9hcmREb3duQXJyb3c7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiZGVsZXRlIl0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmREZWxldGVPckJh
Y2tzcGFjZTsKKyAgICAvLyBUaGUgc2ltdWxhdG9yIGtleWJvYXJkIGludGVycHJldHMgYm90aCBs
ZWZ0IGFuZCByaWdodCBtb2RpZmllciBrZXlzIHVzaW5nIHRoZSBsZWZ0IHZlcnNpb24gb2YgdGhl
IHVzYWdlIGNvZGUuCisgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wi
XSB8fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKQorICAgICAgICByZXR1
cm4ga0hJRFVzYWdlX0tleWJvYXJkTGVmdENvbnRyb2w7CisgICAgaWYgKFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAibGVmdFNoaWZ0Il0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0
Il0pCisgICAgICAgIHJldHVybiBrSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQ7CisgICAgaWYg
KFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRBbHQiXSkKKyAgICAgICAgcmV0dXJuIGtISURVc2FnZV9LZXlib2FyZExlZnRBbHQ7
CisKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxv
Y2F0aW9uKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIGZvcmNlUGFnZVJlcGFpbnRBbmRXYWl0
SWZOZWNlc3NhcnkoKTsKKyAgICB3YWl0T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERl
bGF5Rm9yS2V5Ym9hcmRSZWFkeSwgS2V5Ym9hcmRJc1JlYWR5KTsKKyAgICBOU1N0cmluZyogY2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvU1REKGtleSkuY19zdHIoKSBl
bmNvZGluZzpbTlNTdHJpbmcgZGVmYXVsdENTdHJpbmdFbmNvZGluZ11dOworICAgIGJvb2wgc2hv
dWxkV3JhcFdpdGhTaGlmdCA9IHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3Rl
cihjaGFyYWN0ZXIpOworICAgIHVpbnQzMl90IHVzYWdlID0gaGlkVXNhZ2VDb2RlRm9yQ2hhcmFj
dGVyKGNoYXJhY3Rlcik7CisgICAgdWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hfYWJz
b2x1dGVfdGltZSgpOworCisgICAgV0tQYWdlRXhwZWN0V2ViS2V5RXZlbnQobV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGFnZSgpKTsKKyAgICBpZiAoc2hvdWxkV3JhcFdpdGhTaGlm
dCkKKyAgICAgICAgc2VuZElPSElES2V5Ym9hcmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCBrSElE
VXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQsIHRydWUpOworCisgICAgc2VuZElPSElES2V5Ym9hcmRF
dmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgdHJ1ZSk7CisgICAgc2VuZElPSElES2V5Ym9h
cmRFdmVudChhYnNvbHV0ZU1hY2hUaW1lLCB1c2FnZSwgZmFsc2UpOworCisgICAgaWYgKHNob3Vs
ZFdyYXBXaXRoU2hpZnQpCisgICAgICAgIHNlbmRJT0hJREtleWJvYXJkRXZlbnQoYWJzb2x1dGVN
YWNoVGltZSwga0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0LCBmYWxzZSk7CisKKyAgICB3YWl0
T25Db25kaXRpb25zV2l0aFRpbWVvdXQodGltZW91dERlbGF5Rm9ySElERXZlbnREZXF1ZXVlZCwg
S2V5SW5wdXRIYXNCZWVuUHJvY2Vzc2VkIHwgV2ViS2V5RXZlbnRIYXNCZWVuUmVjZWl2ZWQpOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNlbmRJT0hJREV2ZW50KElPSElERXZlbnRSZWYg
ZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50KTsKKyAgICBpZiAoSU9ISURFdmVudEdldFR5cGUo
ZXZlbnQpID09IGtJT0hJREV2ZW50VHlwZURpZ2l0aXplcikKKyAgICAgICAgQktTSElERXZlbnRT
ZXREaWdpdGl6ZXJJbmZvKGV2ZW50LCBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25d
IGtleVdpbmRvd10uX2NvbnRleHRJZCwgZmFsc2UsIGZhbHNlLCBOVUxMLCAwLCAwKTsKKworICAg
IFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gX2VucXVldWVISURFdmVudDpldmVu
dF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZElPSElES2V5Ym9hcmRFdmVudCh1
aW50NjRfdCB0aW1lc3RhbXAsIHVpbnQzMl90IHVzYWdlLCBib29sIGlzS2V5RG93bikKK3sKKyAg
ICBzZW5kSU9ISURFdmVudChJT0hJREV2ZW50Q3JlYXRlS2V5Ym9hcmRFdmVudChrQ0ZBbGxvY2F0
b3JEZWZhdWx0LAorICAgICAgICB0aW1lc3RhbXAsCisgICAgICAgIGtISURQYWdlX0tleWJvYXJk
T3JLZXlwYWQsCisgICAgICAgIHVzYWdlLAorICAgICAgICBpc0tleURvd24sCisgICAgICAgIGtJ
T0hJREV2ZW50T3B0aW9uTm9uZSkpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNl
U2Nyb2xsQnkoaW50IHgsIGludCB5KQpAQCAtMTE2LDEyICs0MTUsMTkgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5Ojpjb250aW51b3VzTW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHksIGJvb2wgcGFn
ZWQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRk
VG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7Ci0gICAgLy8gV3JpdGUgbWUuCisgICAgaW50IGlu
ZGV4ID0gbmV4dEF2YWlsYWJsZVRvdWNoUG9pbnRJbmRleCgpOworICAgIEFTU0VSVChpbmRleCk7
CisgICAgCisgICAgbV90b3VjaFBvaW50SW5mb0J5SW5kZXguYWRkKGluZGV4LCBzdGQ6Om1ha2Vf
dW5pcXVlPFRvdWNoUG9pbnRJbmZvPih4LCB5KSk7CisgICAgbV9sYXN0VXNlZFRvdWNoSW5kZXgg
PSBpbmRleDsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGlu
dCBpbmRleCwgaW50IHgsIGludCB5KQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIEFTU0VSVCht
X3RvdWNoUG9pbnRJbmZvQnlJbmRleC5jb250YWlucyhpbmRleCkpOworICAgIGF1dG8gaW5mbyA9
IG1fdG91Y2hQb2ludEluZm9CeUluZGV4LmdldChpbmRleCk7CisgICAgaW5mby0+eCA9IHg7Cisg
ICAgaW5mby0+eSA9IHk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2Rp
ZmllcihXS0V2ZW50TW9kaWZpZXJzLCBib29sIGVuYWJsZSkKQEAgLTEzMSwxMiArNDM3LDM1IEBA
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZpZXJz
LCBib29sIGVuYWJsZSkKIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50UmFk
aXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKIHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBt
X3RvdWNoUG9pbnRNYWpvclJhZGl1cyA9IHN0ZDo6bWF4KHJhZGl1c1gsIHJhZGl1c1kpOworICAg
IG1fdG91Y2hQb2ludE1pbm9yUmFkaXVzID0gc3RkOjptaW4ocmFkaXVzWCwgcmFkaXVzWSk7CiB9
CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hTdGFydCgpCiB7Ci0gICAgLy8gV3JpdGUg
bWUuCisgICAgZm9yY2VQYWdlUmVwYWludEFuZFdhaXRJZk5lY2Vzc2FyeSgpOworICAgIElPSElE
RXZlbnRSZWYgZXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRXZlbnQoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwKKyAgICAgICAgbWFjaF9hYnNvbHV0ZV90aW1lKCksCisgICAgICAgIGtJT0hJ
RERpZ2l0aXplclRyYW5zZHVjZXJUeXBlSGFuZCwKKyAgICAgICAgMCwgLy8gSW5kZXgKKyAgICAg
ICAgMCwgLy8gSWRlbnRpdHkKKyAgICAgICAga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8g
RXZlbnQgbWFzaworICAgICAgICAwLCAvLyBCdXR0b24gbWFzaworICAgICAgICAwLCAvLyBQb3Np
dGlvbiAoeC1heGlzKQorICAgICAgICAwLCAvLyBQb3NpdGlvbiAoeS1heGlzKQorICAgICAgICAw
LCAvLyBQb3NpdGlvbiAoei1heGlzKQorICAgICAgICAwLCAvLyBQcmVzc3VyZQorICAgICAgICAw
LCAvLyBUd2lzdAorICAgICAgICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNlciBpbiByYW5nZT8KKyAg
ICAgICAgdHJ1ZSwgLy8gSXMgdHJhbnNkdWNlciB0b3VjaGluZz8KKyAgICAgICAga0lPSElERXZl
bnRPcHRpb25Ob25lKTsKKyAgICAKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3RvdWNoUG9pbnRJbmZv
QnlJbmRleC5iZWdpbigpLCBlbmQgPSBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnQsIGNyZWF0
ZVRvdWNoUG9pbnQoaXQtPnZhbHVlLmdldCgpLCB0cnVlLCBpdC0+a2V5KSwga0lPSElERXZlbnRP
cHRpb25Ob25lKTsKKyAgICAKKyAgICBXS1BhZ2VFeHBlY3RXZWJUb3VjaEV2ZW50KG1fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBhZ2UoKSk7CisgICAgc2VuZElPSElERXZlbnQoZXZl
bnQpOworICAgIHdhaXRPbkNvbmRpdGlvbnNXaXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JISURF
dmVudERlcXVldWVkLCBXZWJUb3VjaEV2ZW50SGFzQmVlblJlY2VpdmVkKTsKIH0KIAogdm9pZCBF
dmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQpAQCAtMTQ2LDcgKzQ3NSwyOCBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSgpCiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91
Y2hFbmQoKQogewotICAgIC8vIFdyaXRlIG1lLgorICAgIElPSElERXZlbnRSZWYgZXZlbnQgPSBJ
T0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAg
ICAgbWFjaF9hYnNvbHV0ZV90aW1lKCksCisgICAgICAgIGtJT0hJRERpZ2l0aXplclRyYW5zZHVj
ZXJUeXBlSGFuZCwKKyAgICAgICAgMCwgLy8gSW5kZXgKKyAgICAgICAgMCwgLy8gSWRlbnRpdHkK
KyAgICAgICAga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAgICAg
ICAwLCAvLyBCdXR0b24gbWFzaworICAgICAgICAwLCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAg
ICAgICAwLCAvLyBQb3NpdGlvbiAoeS1heGlzKQorICAgICAgICAwLCAvLyBQb3NpdGlvbiAoei1h
eGlzKQorICAgICAgICAwLCAvLyBQcmVzc3VyZQorICAgICAgICAwLCAvLyBUd2lzdAorICAgICAg
ICBmYWxzZSwgLy8gSXMgdHJhbnNkdWNlciBpbiByYW5nZT8KKyAgICAgICAgZmFsc2UsIC8vIElz
IHRyYW5zZHVjZXIgdG91Y2hpbmc/CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisK
KyAgICBmb3IgKGF1dG8gaXQgPSBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5iZWdpbigpLCBlbmQg
PSBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnQsIGNyZWF0ZVRvdWNoUG9pbnQoaXQtPnZhbHVl
LmdldCgpLCBmYWxzZSwgaXQtPmtleSksIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisKKyAgICBX
S1BhZ2VFeHBlY3RXZWJUb3VjaEV2ZW50KG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBhZ2UoKSk7CisgICAgc2VuZElPSElERXZlbnQoZXZlbnQpOworICAgIHdhaXRPbkNvbmRpdGlv
bnNXaXRoVGltZW91dCh0aW1lb3V0RGVsYXlGb3JISURFdmVudERlcXVldWVkLCBXZWJUb3VjaEV2
ZW50SGFzQmVlblJlY2VpdmVkKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaENh
bmNlbCgpCkBAIC0xNTYsMTIgKzUwNiwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNo
Q2FuY2VsKCkKIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKIHsK
LSAgICAvLyBXcml0ZSBtZS4KKyAgICBtX3RvdWNoUG9pbnRJbmZvQnlJbmRleC5jbGVhcigpOwog
fQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkK
IHsKLSAgICAvLyBXcml0ZSBtZS4KKyAgICBBU1NFUlQobV90b3VjaFBvaW50SW5mb0J5SW5kZXgu
Y29udGFpbnMoaW5kZXgpKTsKKyAgICBhdXRvIGluZm8gPSBtX3RvdWNoUG9pbnRJbmZvQnlJbmRl
eC5nZXQoaW5kZXgpOworICAgIGluZm8tPmlzVG91Y2hpbmcgPSBmYWxzZTsKIH0KIAogdm9pZCBF
dmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRleCkKQEAgLTE3MCw0ICs1
MjIsMzUgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRl
eCkKIH0KICNlbmRpZgogCisvLyBSZXR1cm5zIGEgdmFsdWUgYmV0d2VlbiAxIHRocm91Z2ggNSBp
bmRpY2F0aW5nIHRoZSBpbmRleCBvZiB0aGUgdG91Y2ggcG9pbnQsCisvLyBvciAwIGlmIHdlIGFy
ZSBhbHJlYWR5IHRyYWNraW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0b3VjaCBwb2ludHMuCitp
bnQgRXZlbnRTZW5kZXJQcm94eTo6bmV4dEF2YWlsYWJsZVRvdWNoUG9pbnRJbmRleCgpIGNvbnN0
Cit7CisgICAgZm9yIChpbnQgaW5kZXggPSAxOyBpbmRleCA8PSBtYXhOdW1Ub3VjaFBvaW50czsg
KytpbmRleCkgeworICAgICAgICBpZiAoIW1fdG91Y2hQb2ludEluZm9CeUluZGV4LmNvbnRhaW5z
KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisgICAgcmV0dXJuIDA7
Cit9CisKK0lPSElERXZlbnRSZWYgRXZlbnRTZW5kZXJQcm94eTo6Y3JlYXRlVG91Y2hQb2ludChU
b3VjaFBvaW50SW5mbyogaW5mbywgYm9vbCBpc1RvdWNoaW5nLCBpbnQgaW5kZXgpCit7CisgICAg
SU9ISURFdmVudFJlZiBldmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVu
dChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICBpbmZvLT5tYWNoVGltZSwKKyAgICAgICAg
aW5kZXgsCisgICAgICAgIGZpbmdlcklkZW50aXR5Rm9yVG91Y2hQb2ludEluZGV4KGluZGV4KSwK
KyAgICAgICAga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaCwgLy8gRXZlbnQgbWFzaworICAgICAg
ICBpbmZvLT54LCAvLyBQb3NpdGlvbiAoeC1heGlzKQorICAgICAgICBpbmZvLT55LCAvLyBQb3Np
dGlvbiAoeS1heGlzKQorICAgICAgICAwLCAvLyBQb3NpdGlvbiAoei1heGlzKQorICAgICAgICAw
LCAvLyBQcmVzdXJlCisgICAgICAgIDAsIC8vIFR3aXN0CisgICAgICAgIGlzVG91Y2hpbmcsIC8v
IElzIHRyYW5zZHVjZXIgaW4gcmFuZ2U/CisgICAgICAgIGlzVG91Y2hpbmcsIC8vIElzIHRyYW5z
ZHVjZXIgdG91Y2hpbmc/CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgSU9I
SURFdmVudFNldEZsb2F0VmFsdWUoZXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNYWpv
clJhZGl1cywgbV90b3VjaFBvaW50TWFqb3JSYWRpdXMpOworICAgIElPSElERXZlbnRTZXRGbG9h
dFZhbHVlKGV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIG1fdG91
Y2hQb2ludE1pbm9yUmFkaXVzKTsKKyAgICByZXR1cm4gZXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OTliOWM0NmE4
YzE3ZjJkMDgyZjY3NzY5NTgxZmRjMWRjNTVkZmQyLi45ZjIwNTIxNGQwMmQ3ZjBkZmY2NTI2MTBi
ZWNiMDY2NGY4MTA2NDkzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDksMTAgKzQ5LDEzIEBACiAJCTI5QThGQ0REMTQ1RjAzMzcwMDkwNDVBNiAvKiBKU0FjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlBOEZDRTEzNDVFNzAyMTAwNkFBNUE2IC8qIEpTQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAgKi87IH07CiAJCTI5QThGQ0UyMTQ1RjAzN0IwMDkwNDVBNiAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QThGQ0UxMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcCAqLzsgfTsKIAkJMjlBOEZDRTUxNDVGMDQ2NDAw
OTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4RkNFNDE0NUYwNDY0MDA5MDQ1
QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSAqLzsgfTsKKwkJMkUwQzc3
QzMxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMEM3N0MyMUI5RjVFODkwMDU2NEVBOSAv
KiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTJFMEM3N0M0MUI5RjVFOEYwMDU2NEVBOSAvKiBJ
T0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTBDNzdDMjFCOUY1RTg5MDA1NjRFQTkgLyogSU9LaXQuZnJhbWV3b3JrICovOyB9
OworCQkyRTBDNzdDNjFCOUY1RUI1MDA1NjRFQTkgLyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUw
Qzc3QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayAqLzsg
fTsKKwkJMkUwQzc3QzcxQjlGNUVCQjAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
MEM3N0M1MUI5RjVFQjUwMDU2NEVBOSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgKi87
IH07CiAJCTJFMzRDOTAwMThCNjg4MDgwMDAwNjdCQiAvKiBXZWJLaXRUZXN0UnVubmVySW5qZWN0
ZWRCdW5kbGUuYnVuZGxlIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzI1MTg2MjExRDE1RDU0MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1bm5lckluamVj
dGVkQnVuZGxlLmJ1bmRsZSAqLzsgfTsKIAkJMkU2M0VEOEExODkxQUQ3RTAwMkE3QUZDIC8qIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkU2M0VENzUxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVySU9TLm1tICovOyB9OwogCQkyRTYzRUQ4QjE4OTFBRDdFMDAyQTdBRkMgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTYzRUQ3NzE4OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJJT1MubW0gKi87IH07Ci0JCTJFNjNFRDhFMTg5MUFEN0UwMDJBN0FGQyAv
KiBFdmVudFNlbmRlclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU2M0VEN0ExODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJv
eHlJT1MubW0gKi87IH07CiAJCTJFNjNFRDhGMTg5MUFEN0UwMDJBN0FGQyAvKiBJbmplY3RlZEJ1
bmRsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNjNFRDdCMTg5MUFDRTkwMDJBN0FGQyAvKiBJbmplY3RlZEJ1bmRsZUlPUy5tbSAqLzsgfTsK
IAkJMkU2M0VEOTExODkxQURBRDAwMkE3QUZDIC8qIFBsYXRmb3JtV2ViVmlld0lPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRTUyRDEzMTg5MEE5
RkIwMDEwRUQyMSAvKiBQbGF0Zm9ybVdlYlZpZXdJT1MubW0gKi87IH07CiAJCTJFNjNFRDkyMTg5
MUFEQUQwMDJBN0FGQyAvKiBUZXN0Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRTUyRDE0MTg5MEE5RkIwMDEwRUQyMSAvKiBU
ZXN0Q29udHJvbGxlcklPUy5tbSAqLzsgfTsKQEAgLTE5MiwxMSArMTk1LDEzIEBACiAJCTI5QThG
Q0UxMzQ1RTcwMjEwMDZBQTVBNyAvKiBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkyOUE4RkNFNDE0NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEQ0UyQ0QxMUI4NDUyNDUwMEM3RjgzMiAvKiBUZXN0Q29udHJvbGxlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdENvbnRyb2xsZXJD
b2NvYS5tbTsgcGF0aCA9IGNvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJFMEM3N0MyMUI5RjVFODkwMDU2NEVBOSAvKiBJT0tpdC5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKKwkJMkUwQzc3QzUxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrOyBwYXRo
ID0gUGxhdGZvcm1zL2lQaG9uZVNpbXVsYXRvci5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhv
bmVTaW11bGF0b3I5LjAuc2RrL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0JhY2tC
b2FyZFNlcnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CiAJ
CTJFNjNFRDc1MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTYzRUQ3NjE4
OTFBQ0U5MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VENzcxODkxQUNFOTAw
MkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjNFRDc4MTg5MUFDRTkwMDJBN0FGQyAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMkU2M0VEN0ExODkxQUNFOTAwMkE3QUZDIC8qIEV2ZW50U2VuZGVyUHJv
eHlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudFNl
bmRlclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTYzRUQ3QTE4
OTFBQ0U5MDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEV2ZW50U2VuZGVyUHJveHlJT1MubW07IHBhdGggPSAu
Li9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkU2M0VEN0IxODkxQUNFOTAwMkE3QUZDIC8qIEluamVjdGVkQnVu
ZGxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5qZWN0
ZWRCdW5kbGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFRTUyQ0UwMTg5
MEE5QTgwMDEwRUQyMSAvKiBXZWJLaXRUZXN0UnVubmVyQXBwLmFwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5hcHBsaWNhdGlvbjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lckFwcC5hcHA7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJFRTUyQ0UyMTg5MEE5QTgwMDEwRUQyMSAv
KiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFt
ZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTMxNiw2ICszMjEsOCBAQAogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMkUwQzc3QzMxQjlGNUU4OTAwNTY0RUE5IC8qIElPS2l0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTJFMEM3N0M3MUI5RjVFQkIwMDU2NEVB
OSAvKiBCYWNrQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMz
Nyw5ICszNDQsMTEgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMEM3N0M0MUI5
RjVFOEYwMDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlC
QzI1MTk0MDExRDE1RDhCMDAyRUJDMDEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJQTY2NEJDNzYxM0E1RjNBOTAwOUE3QjI1IC8qIGxpYldlYkNvcmVU
ZXN0U3VwcG9ydC5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJCTBGNTE2OUNDMTQ0NTIyMkQw
MEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMkUwQzc3
QzYxQjlGNUVCNTAwNTY0RUE5IC8qIEJhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtNDYzLDcgKzQ3Miw2IEBACiAJCQkJMkU2M0VENzYxODkxQUNFOTAwMkE3
QUZDIC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8sCiAJCQkJMkU2M0VE
NzcxODkxQUNFOTAwMkE3QUZDIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tICovLAog
CQkJCTJFNjNFRDc4MTg5MUFDRTkwMDJBN0FGQyAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tICovLAotCQkJCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FGQyAvKiBFdmVudFNlbmRlclByb3h5
SU9TLm1tICovLAogCQkJCTJFNjNFRDdCMTg5MUFDRTkwMDJBN0FGQyAvKiBJbmplY3RlZEJ1bmRs
ZUlPUy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwpAQCAtNDcyLDYgKzQ4MCw4IEBACiAJ
CTJFRTUyQ0UxMTg5MEE5QTgwMDEwRUQyMSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRTBDNzdDNTFCOUY1RUI1MDA1NjRFQTkg
LyogQmFja0JvYXJkU2VydmljZXMuZnJhbWV3b3JrICovLAorCQkJCTJFMEM3N0MyMUI5RjVFODkw
MDU2NEVBOSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCiAJCQkJMkVFNTJDRTIxODkwQTlBODAwMTBF
RDIxIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovLAogCQkJCTJFRTUyQ0U0MTg5MEE5QTgwMDEw
RUQyMSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAogCQkJCTJFRTUyQ0U2MTg5MEE5QTgw
MDEwRUQyMSAvKiBVSUtpdC5mcmFtZXdvcmsgKi8sCkBAIC00OTIsNiArNTAyLDcgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEY4MzFBRTkxQkFCODRGNDAwRjk2
Q0Q4IC8qIExhdW5jaC5zdG9yeWJvYXJkICovLAorCQkJCTJFNjNFRDdBMTg5MUFDRTkwMDJBN0FG
QyAvKiBFdmVudFNlbmRlclByb3h5SU9TLm1tICovLAogCQkJCTJFRTUyQ0VCMTg5MEE5QTgwMDEw
RUQyMSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLywKIAkJCQkyRUU1MkQxMzE4OTBBOUZCMDAxMEVE
MjEgLyogUGxhdGZvcm1XZWJWaWV3SU9TLm1tICovLAogCQkJCTJFRTUyRDE0MTg5MEE5RkIwMDEw
RUQyMSAvKiBUZXN0Q29udHJvbGxlcklPUy5tbSAqLywKQEAgLTg5OCw3ICs5MDksNiBAQAogCQkJ
CTJFNjNFRDlFMTg5MUFFQzEwMDJBN0FGQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRTYzRUQ4QTE4OTFBRDdFMDAyQTdBRkMgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTYzRUQ4QjE4OTFBRDdF
MDAyQTdBRkMgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNlcyAqLywK
LQkJCQkyRTYzRUQ4RTE4OTFBRDdFMDAyQTdBRkMgLyogRXZlbnRTZW5kZXJQcm94eUlPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTJFNjNFRDhGMTg5MUFEN0UwMDJBN0FGQyAvKiBJbmplY3RlZEJ1
bmRsZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJCNiAv
KiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkyMTBFQjAx
NDRDQUNCRDAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTE5Myw2ICsxMjAzLDcgQEAKIAkJCQlBMTE1Q0NCODFCOUQ3NjlEMDBFODkxNTkg
LyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9Owog
CQlBMTg1MTAyRDFCOUFERTQ4MDA3NDRBRUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIldlYktpdFRlc3RSdW5uZXIgKExpYnJhcnkpIiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWY5ZDY1MzFkMzNjNDYwYjIzYmNm
NWEyN2RiNmU4OTcwZTJlMTdhZi4uODFlZTJiY2I1ZWU5OTk1NDM0MGYxYWM0YmNjOWY4ODdiYjZj
YjQ2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlclBy
b3h5IGZvciBXZWJLaXRUZXN0UnVubmVyIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1
dC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAxNS0wOS0xOCAgSmFrZSBOaWVsc2VuICA8amFjb2JfbmllbHNlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgbGluZS1icmVhay1sYW5ndWFnZS1zZW5zaXRpdmUgdGVzdHMgc2hvdWxkIGJl
IG1hcmtlZCBhcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNh
YmxlZC1zZWFyY2gtaW5wdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQt
c2VhcmNoLWlucHV0Lmh0bWwKaW5kZXggODZlZjU2YTVmNzA5MjA2MjczODA4YWUzN2Q0Nzg1ZWEy
ZWE4ODc4Ny4uYzBjYzQzMGMwN2UxOTk1OTA2MmRkNDQ4NTQyMGI4NjcwOTk1MWU0ZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sCkBA
IC0xNCwxOCArMTQsNiBAQCBmdW5jdGlvbiBsb2cobXNnLCBzdWNjZXNzKQogICAgIGxvZ0Rpdi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkudGV4dENvbnRlbnQgPSBt
c2cgKyAnOiAnICsgKCEhc3VjY2VzcyA/ICdQQVNTJyA6ICdGQUlMJyk7CiB9CiAKLWZ1bmN0aW9u
IGNsaWNrT24oZWxlbWVudCkKLXsKLSAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgdmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9m
ZnNldFdpZHRoIC8gMjsKLSAgICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5v
ZmZzZXRIZWlnaHQgLyAyOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwotICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0K
LQogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CiAgICAgbG9nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1w
dHktdGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZW1wdHktdGV4dGFyZWEtdG9nZ2xlLWRpc2FibGVkLWV4cGVjdGVkLnR4dAppbmRl
eCBmZjQzY2E0MDkxNTBhNTQ3OTQxNTk4MTgwMzk1NWVlMWQ0MGU0ZDE2Li5jN2NmOTU3NGNkMTZk
YzZiNGEyNzJkNGE1M2QwOTcyYTI1YjMzZmQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQtZXhw
ZWN0ZWQudHh0CkBAIC0xICsxLDUgQEAKK1Rlc3RzIHRoYXQgdG9nZ2xpbmcgZGlzYWJsZWQgc3Rh
dGUgaW4gYSB0ZXh0YXJlYSBsZWF2ZXMgdGhlIHRleHRhcmVhIHR5cGVhYmxlLiBUbyBUZXN0IG1h
bnVhbGx5LCBsb2FkIHRoaXMgcGFnZSBhbmQgdHlwZSBpbiB0aGUgdGV4dGFyZWEuIElmIHlvdSBj
YW4gdHlwZSwgdGhlbiB0aGUgdGVzdCBzdWNjZWVkZWQuCisKKworCiBTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlz
YWJsZWQuaHRtbAppbmRleCAzZjQ4ZGZkZTY0Y2UzZGI3MzFkNGM5NWQ5YzYxYTQ1MmI0N2FmMDQ3
Li45YjY0MTJlYWQwODhhOThjZGI3MmRiZWJhMWNlZGJmNWQwMDYxNTQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHktdGV4dGFyZWEtdG9nZ2xlLWRpc2Fi
bGVkLmh0bWwKQEAgLTEsNyArMSw5IEBACis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD5U
ZXN0cyB0aGF0IHRvZ2dsaW5nIGRpc2FibGVkIHN0YXRlIGluIGEgdGV4dGFyZWEgbGVhdmVzIHRo
ZSB0ZXh0YXJlYSB0eXBlYWJsZS4KIFRvIFRlc3QgbWFudWFsbHksIGxvYWQgdGhpcyBwYWdlIGFu
ZCB0eXBlIGluIHRoZSB0ZXh0YXJlYS4gSWYgeW91IGNhbiB0eXBlLCB0aGVuCiB0aGUgdGVzdCBz
dWNjZWVkZWQuPHA+CiA8dGV4dGFyZWEgaWQ9InRhIiBkaXNhYmxlZD0iZGlzYWJsZWQiPjwvdGV4
dGFyZWE+Cis8L2JvZHk+CiAKIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewpAQCAtOSwxOCArMTEsMjEgQEAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKLXNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7Ci0gICAgdGEuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICB0YS5mb2N1cygpOwot
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bignYScsIFtdKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IHRhLnZhbHVlOwotICAgICAgICBpZiAo
cmVzdWx0ID09ICJhIikKLSAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cHJlPlNVQ0NFU1M8
L3ByZT4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwcmU+
RkFJTCwgcmVzdWx0IHdhcyAnIiArIHJlc3VsdCArICInLjwvcHJlPiIpOwotICAgIH0KLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fSwgMCk7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGV2ZW50U2VuZGVyLnNldEFsbG93QXNz
aXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXModHJ1ZSk7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgdGEuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgdGEuZm9jdXMoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bignYScsIFtdKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSB0YS52YWx1ZTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gImEiKQorICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlNVQ0NFU1MiKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiRkFJTCwgcmVzdWx0IHdhcyAnIiArIHJlc3VsdCAr
ICInLiIpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAwKTsKK30KIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEt
aW5wdXQtZXZlbnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJl
YS1pbnB1dC1ldmVudC5qcwppbmRleCAzMzMwYWU4Zjk2YjYxMGZlNDc1YTRjM2U2ZjVhOGFlMDg2
MDQwYTcyLi4zNzg4MmRiOTZiOWRkMmYxOGMyNjNkY2Q2MWY3ODM5YTRkYmVlNzJkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1pbnB1dC1ldmVu
dC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1pbnB1
dC1ldmVudC5qcwpAQCAtMjIsMjMgKzIyLDI2IEBAIGZ1bmN0aW9uIGhhbmRsZVRleHRhcmVhT25J
bnB1dChlKSB7CiAgICAgfQogfQogCi12YXIgdGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGEnKTsKLXRhLnNldEF0dHJpYnV0ZSgnb25pbnB1dCcsICdoYW5kbGVUZXh0YXJlYU9uSW5wdXQo
ZXZlbnQpJyk7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGV2ZW50U2VuZGVyLnNldEFsbG93
QXNzaXN0YW5jZU9uUHJvZ3JhbW1hdGljRm9jdXModHJ1ZSk7CisgICAgdmFyIHRhID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJyk7CisgICAgdGEuc2V0QXR0cmlidXRlKCdvbmlucHV0Jywg
J2hhbmRsZVRleHRhcmVhT25JbnB1dChldmVudCknKTsKIAotLy8gQ2hhbmdlIHRoZSB2YWx1ZSBi
ZWZvcmUgZm9jdXNpbmcuCi10YS52YWx1ZSA9ICcnOworICAgIC8vIENoYW5nZSB0aGUgdmFsdWUg
YmVmb3JlIGZvY3VzaW5nLgorICAgIHRhLnZhbHVlID0gJyc7CiAKLXRhLmZvY3VzKCk7CisgICAg
dGEuZm9jdXMoKTsKIAotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIGV2ZW50U2VuZGVy
LmtleURvd24oJ3gnLCBbXSk7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygnaGFuZGxlVGV4dGFyZWFP
bklucHV0Q2FsbENvdW50JywgMSk7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygnaGFuZGxlRGl2T25J
bnB1dENhbGxDb3VudCcsIDEpOwotICAgIAotICAgIC8vIENoYW5nZSBwcm9ncmFtbWF0aWNhbGx5
Ci0gICAgdGEudmFsdWUgPSAncHJvZ3JhbW1hdGljYWxseSc7Ci0gICAgCi0gICAgLy8gU2hvdWxk
IG5vdCBoYXZlIHRyaWdnZXJlZCB0aGUgZXZlbnRzLgotICAgIHNob3VsZEV2YWx1YXRlVG8oJ2hh
bmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEpOwotICAgIHNob3VsZEV2YWx1YXRlVG8o
J2hhbmRsZURpdk9uSW5wdXRDYWxsQ291bnQnLCAxKTsKLX0KKyAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3gnLCBbXSk7CisgICAgICAg
IHNob3VsZEV2YWx1YXRlVG8oJ2hhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCcsIDEpOwor
ICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50JywgMSk7
CisgICAgICAgIAorICAgICAgICAvLyBDaGFuZ2UgcHJvZ3JhbW1hdGljYWxseQorICAgICAgICB0
YS52YWx1ZSA9ICdwcm9ncmFtbWF0aWNhbGx5JzsKKyAgICAgICAgCisgICAgICAgIC8vIFNob3Vs
ZCBub3QgaGF2ZSB0cmlnZ2VyZWQgdGhlIGV2ZW50cy4KKyAgICAgICAgc2hvdWxkRXZhbHVhdGVU
bygnaGFuZGxlVGV4dGFyZWFPbklucHV0Q2FsbENvdW50JywgMSk7CisgICAgICAgIHNob3VsZEV2
YWx1YXRlVG8oJ2hhbmRsZURpdk9uSW5wdXRDYWxsQ291bnQnLCAxKTsKKyAgICB9Cit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtaW5w
dXQtZXZlbnQuaHRtbAppbmRleCA4ZjdjNmI4ZGQ5ZDIyZDZkOTJiNDYzZWIzNGIxMjcyYTkwMDEy
MDhhLi40MTNkOWIzYjEwM2U0YWJmN2U5NDdiNThhYzdkMjk4MGE1NzExMGE5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtaW5wdXQtZXZlbnQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtaW5wdXQtZXZlbnQuaHRtbApAQCAtMjAsNiArMjAsNyBA
QCBmdW5jdGlvbiB0eXBlSW50byhlbGVtZW50LCB2YWx1ZSkKIAogZnVuY3Rpb24gcnVuVGVzdCgp
CiB7CisgICAgZXZlbnRTZW5kZXIuc2V0QWxsb3dBc3Npc3RhbmNlT25Qcm9ncmFtbWF0aWNGb2N1
cyh0cnVlKTsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRh
cmVhLWlucHV0LWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4
dGFyZWEtaW5wdXQtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDc5NDAxMTlkZTRkYzVmOTM4ZmQ0
MGEyMzk5ZmM4MGI4ODFiMThkMzcuLjM4MjY0ZmJhZTVlOWZmODg1YzY3ODgzZDVhNTUwZGQ0YWVk
NzljMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtaW5wdXQt
ZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
aW5wdXQtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0zLDEzICszLDEzIEBAIFRlc3QgZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE4OQogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQogUEFTUyB0YS52YWx1ZSBpcyAieCIKIFBBU1MgdGEudmFsdWUgaXMgIngiCiBQQVNT
IGhhbmRsZVRleHRhcmVhT25JbnB1dENhbGxDb3VudCBpcyAxCiBQQVNTIGhhbmRsZURpdk9uSW5w
dXRDYWxsQ291bnQgaXMgMQogUEFTUyBoYW5kbGVUZXh0YXJlYU9uSW5wdXRDYWxsQ291bnQgaXMg
MQogUEFTUyBoYW5kbGVEaXZPbklucHV0Q2FsbENvdW50IGlzIDEKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLWlucHV0LWV2ZW50Lmh0bWwKaW5kZXggYjMzNzE0Njk3NjQ3NzZlMDgw
OWM5YTMxMGQzMjZlMjgzM2ZkZjY3NS4uM2JhNWM0YmRkNWU3MWI2M2M3MWY4NDg1NWRmYWIxYjE5
YzhlOTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1pbnB1
dC1ldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtaW5wdXQt
ZXZlbnQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keT4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11
bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzOGI2ZGY3ODQ5MGNhODA3ZWI1ZGYzZGU4OGU5
NGM3ZjZjOWIyMDAzLi44YWFkYjdhMzBmOWRmNWE0NjM1ZGRjYTFiMWQ4ZTNhMDA0NTQ2MzE5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xNzQ0LDggKzE3NDQsOCBAQCBmYXN0L2Zvcm1zL2RhdGV0aW1lL2RhdGV0aW1l
LXN0ZXB1cC1zdGVwZG93bi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2RhdGV0aW1lL2Rh
dGV0aW1lLXZhbHVlLXNhbml0aXphdGlvbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2Rh
dGV0aW1lL2lucHV0LXZhbHVlYXNkYXRlLWRhdGV0aW1lLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3Qv
Zm9ybXMvZGF0ZXRpbWUvaW5wdXQtdmFsdWVhc251bWJlci1kYXRldGltZS5odG1sIFsgRmFpbHVy
ZSBdCi1mYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sIFsgRmFpbHVyZSBdCi1m
YXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sIFsgRmFpbHVyZSBd
CitmYXN0L2Zvcm1zL2Rpc2FibGVkLXNlYXJjaC1pbnB1dC5odG1sIFsgUGFzcyBdCitmYXN0L2Zv
cm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sIFsgUGFzcyBdCiBmYXN0L2Zv
cm1zL2VudGVyLWNsaWNrcy1idXR0b25zLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZm9ybXMvZmll
bGRzZXQtbGVnZW5kLXBhZGRpbmctdW5jbGlwcGVkLWZpZWxkc2V0LWJvcmRlci5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2Zvcm1zL2ZpZWxkc2V0LXdpdGgtZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQpA
QCAtMTg0Miw5ICsxODQyLDkgQEAgZmFzdC9mb3Jtcy9zZWxlY3Qvb3B0Z3JvdXAtY2xpY2tpbmcu
aHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy9zZWxlY3Qvb3B0aW9uLXNlbGVjdGluZy5odG1s
IFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL3NlbGVjdC9zZWxlY3QtZGlzYWJsZWQuaHRtbCBbIEZh
aWx1cmUgXQogZmFzdC9mb3Jtcy9zaGFkb3ctdHJlZS1leHBvc3VyZS5odG1sIFsgRmFpbHVyZSBd
Ci1mYXN0L2Zvcm1zL3RleHQtaW5wdXQtZXZlbnQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9mb3Jt
cy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtYXJy
b3ctbmF2aWdhdGlvbi5odG1sIFsgRmFpbHVyZSBdCi1mYXN0L2Zvcm1zL3RleHRhcmVhLWlucHV0
LWV2ZW50Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZm9ybXMvdGV4dGFyZWEtaW5wdXQtZXZlbnQu
aHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMu
aHRtbCBbIEZhaWx1cmUgXQogZmFzdC9mb3Jtcy90ZXh0YXJlYS1tZXRyaWNzLmh0bWwgWyBGYWls
dXJlIF0KIGZhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItd3JhcHBpbmcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>