<?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>68412</bug_id>
          
          <creation_ts>2011-09-19 16:41:36 -0700</creation_ts>
          <short_desc>REGRESSION (WK2): (Shift-)option-tabbing skips over elements when transitioning from chrome to webview</short_desc>
          <delta_ts>2011-10-04 14:22:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          <blocked>69362</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469799</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-19 16:41:36 -0700</bug_when>
    <thetext>In a page with buttons as the first (or last) form element, option-tabbing will skip over the button. This is a regression against WK1.

&lt;rdar://problem/9988252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471738</commentid>
    <comment_count>1</comment_count>
      <attachid>108370</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-22 11:35:40 -0700</bug_when>
    <thetext>Created attachment 108370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471752</commentid>
    <comment_count>2</comment_count>
      <attachid>108370</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-22 11:52:55 -0700</bug_when>
    <thetext>Comment on attachment 108370
Patch

Attachment 108370 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9795325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471758</commentid>
    <comment_count>3</comment_count>
      <attachid>108370</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-22 11:56:19 -0700</bug_when>
    <thetext>Comment on attachment 108370
Patch

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

Just one comment in passing, I didn&apos;t review the whole patch.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:320
&gt; +        if ([event type] == NSKeyDown || [event type] == NSKeyUp)
&gt; +            _data-&gt;_page-&gt;setInitialFocus(direction == NSSelectingNext, true, NativeWebKeyboardEvent(event, self));
&gt; +        else
&gt; +            _data-&gt;_page-&gt;setInitialFocus(direction == NSSelectingNext, false, NativeWebKeyboardEvent(0, self));

Please don&apos;t pass new mysterious true/false arguments. A named local variable would work, or you could make the argument an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471775</commentid>
    <comment_count>4</comment_count>
      <attachid>108370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-22 12:17:41 -0700</bug_when>
    <thetext>Comment on attachment 108370
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:320
&gt;&gt; +            _data-&gt;_page-&gt;setInitialFocus(direction == NSSelectingNext, false, NativeWebKeyboardEvent(0, self));
&gt; 
&gt; Please don&apos;t pass new mysterious true/false arguments. A named local variable would work, or you could make the argument an enum.

Or the keyboard event could be a pointer and we could pass 0 to mean no keyboard event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471807</commentid>
    <comment_count>5</comment_count>
      <attachid>108387</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-22 13:11:22 -0700</bug_when>
    <thetext>Created attachment 108387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471808</commentid>
    <comment_count>6</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-22 13:12:06 -0700</bug_when>
    <thetext>New patch to address Alexey&apos;s comments, and to make the bots happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471911</commentid>
    <comment_count>7</comment_count>
      <attachid>108387</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-09-22 15:35:36 -0700</bug_when>
    <thetext>Comment on attachment 108387
Patch

Attachment 108387 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9799327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471914</commentid>
    <comment_count>8</comment_count>
      <attachid>108387</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-09-22 15:38:57 -0700</bug_when>
    <thetext>Comment on attachment 108387
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:265
&gt; +    void setInitialFocus(bool, bool, const WebKeyboardEvent&amp;);

Since this now takes multiple bool parameters, it probably makes sense to include the parameter names for the bools in the header to avoid confusion.

&gt; Source/WebKit2/UIProcess/win/WebView.h:82
&gt; +    void setInitialFocus(bool, bool, const WebKeyboardEvent&amp;);

Ditto.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:471
&gt; +    void setInitialFocus(bool, bool, const WebKeyboardEvent&amp;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471918</commentid>
    <comment_count>9</comment_count>
      <attachid>108414</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-22 15:52:28 -0700</bug_when>
    <thetext>Created attachment 108414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471919</commentid>
    <comment_count>10</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-22 15:53:33 -0700</bug_when>
    <thetext>Update patch to include Jeff&apos;s comments and also fix naming in WKTR-- inconsistency between addChromeTextField and addChromeInputField.  Opted for the latter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472037</commentid>
    <comment_count>11</comment_count>
      <attachid>108414</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-22 20:25:02 -0700</bug_when>
    <thetext>Comment on attachment 108414
Patch

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

I did not review this patch for correctness. I suggest someone more knowledgable about this area of the code look through this patch. I have some minor nits.

I am r-&apos;ing this patch since you need to update the WebPage::setInitialFocus() call site in Source/WebKit2/UIProcess/API/C/win/WKView.cpp as pointed out in the output of the Windows EWS bot:

7&gt;..\UIProcess\API\C\win\WKView.cpp(72) : error C2660: &apos;WebKit::WebView::setInitialFocus&apos; : function does not take 1 arguments

&gt; LayoutTests/fast/forms/focus-option-control-on-page-expected.txt:8
&gt; +&lt;https://bugs.webkit.org/show_bug.cgi?id=68412&gt; This test checks to see if option(alt)-tabbing properly focuses form elements that are normally not focused. For testing, the assumption is that by default pressing tab will skip over buttons, and option-tab will include buttons.
&gt; +
&gt; +  
&gt; +Tab:
&gt; +0:2
&gt; +1:
&gt; +2:2
&gt; +3:

I&apos;m unclear how to interpret these results to determine whether this test passed or failed. The test description doesn&apos;t seem to elaborate on how to tell whether this test passed or failed.

I suggest either writing some more english to explain how to interpret these results or, even better, write make the output more straight forward to understand by using a &quot;PASS&quot; and &quot;FAIL&quot; style output. One example of &quot;PASS&quot;/&quot;FAIL&quot;-style output can be seen in the test LayoutTests/fast/forms/menulist-submit-without-selection.html: &lt;http://trac.webkit.org/export/95777/trunk/LayoutTests/fast/forms/menulist-submit-without-selection.html&gt;.

&gt; LayoutTests/fast/forms/focus-option-control-on-page.html:1
&gt; +&lt;p&gt;&amp;lt;https://bugs.webkit.org/show_bug.cgi?id=68412&amp;gt; This test checks to see if option(alt)-tabbing properly focuses form elements that are normally not focused. For testing, the assumption is that by default pressing tab will skip over buttons, and option-tab will include buttons.&lt;/p&gt;

Nit: For new layout tests we tend to include a DOCTYPE, &lt;html&gt; and &lt;body&gt; tags.

&gt; LayoutTests/fast/forms/focus-option-control-on-page.html:7
&gt; +&lt;p id=&quot;log&quot;&gt;&lt;/p&gt;

Can we write this test using the js-test constructs provided by LayoutTests/fast/js/resources/js-test-{pre, post}.js? This will make this test more consistent with other DRT tests in this directory. These scripts also provide machinery to make PASS/FAIL-style tests. See my comment on focus-option-control-on-page-expected.txt (above) for an example test case that uses this machinery.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1319
&gt; +    

Did you mean to add this tab-indented empty line? Having one empty line seems sufficient to visually separate the early returns from the actual body of this function. I suggest removing this line.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:1208
&gt; +    NSTextField* textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20)];

Nit: As far as I know, we put the &apos;*&apos; on the right in Objective-C/C++ code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472355</commentid>
    <comment_count>12</comment_count>
      <attachid>108497</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-23 11:23:27 -0700</bug_when>
    <thetext>Created attachment 108497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472358</commentid>
    <comment_count>13</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-23 11:24:37 -0700</bug_when>
    <thetext>Thanks for the feedback. I&apos;ve uploaded a new patch that takes into account your comments, and I refactored the test to follow the mold of other tests in that directory.

In terms of style re: pointers, there is inconsistency, so I adjusted those also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472693</commentid>
    <comment_count>14</comment_count>
      <attachid>108497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 19:38:47 -0700</bug_when>
    <thetext>Comment on attachment 108497
Patch

Attachment 108497 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9840117

New failing tests:
fast/forms/focus-option-control-on-page.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473398</commentid>
    <comment_count>15</comment_count>
      <attachid>108725</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-26 14:41:06 -0700</bug_when>
    <thetext>Created attachment 108725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473499</commentid>
    <comment_count>16</comment_count>
      <attachid>108725</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 16:05:02 -0700</bug_when>
    <thetext>Comment on attachment 108725
Patch

Attachment 108725 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9883023

New failing tests:
fast/forms/focus-option-control-on-page.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473509</commentid>
    <comment_count>17</comment_count>
      <attachid>108750</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-26 16:19:56 -0700</bug_when>
    <thetext>Created attachment 108750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473727</commentid>
    <comment_count>18</comment_count>
      <attachid>108750</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-27 00:19:50 -0700</bug_when>
    <thetext>Comment on attachment 108750
Patch

Attachment 108750 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9877230

New failing tests:
fast/forms/focus-option-control-on-page.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474194</commentid>
    <comment_count>19</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-27 13:38:29 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 108750 [details])
&gt; Attachment 108750 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/9877230
&gt; 
&gt; New failing tests:
&gt; fast/forms/focus-option-control-on-page.html

Is this a Mac-specific behavior? Perhaps the test should live in platform/mac?

If not, I think it&apos;s totally fine to add this test to platform/chromium/test_expectations.txt and file a bug against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474209</commentid>
    <comment_count>20</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-27 14:00:43 -0700</bug_when>
    <thetext>I mistakenly thought this was something cross-platform, but it looks like a Mac-specific behavior (see EventHandler::tabsToAllFormControls), so I will move the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474213</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-27 14:02:45 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I mistakenly thought this was something cross-platform, but it looks like a Mac-specific behavior (see EventHandler::tabsToAllFormControls), so I will move the test.

SGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474225</commentid>
    <comment_count>22</comment_count>
      <attachid>108894</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-27 14:14:07 -0700</bug_when>
    <thetext>Created attachment 108894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477353</commentid>
    <comment_count>23</comment_count>
      <attachid>108894</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-03 17:07:39 -0700</bug_when>
    <thetext>Comment on attachment 108894
Patch

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

&gt; LayoutTests/platform/mac/fast/forms/script-tests/focus-option-control-on-page.js:57
&gt; +    setTimeout(function() {layoutTestController.removeChromeInputField(notifyDone)}, 2000);

Why is this here? Will this always be called or only when the test times out?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1326
&gt; +    } else

You should use an early return instead of an else here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477380</commentid>
    <comment_count>24</comment_count>
      <attachid>108894</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-10-03 17:43:40 -0700</bug_when>
    <thetext>Comment on attachment 108894
Patch

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

&gt;&gt; LayoutTests/platform/mac/fast/forms/script-tests/focus-option-control-on-page.js:57
&gt;&gt; +    setTimeout(function() {layoutTestController.removeChromeInputField(notifyDone)}, 2000);
&gt; 
&gt; Why is this here? Will this always be called or only when the test times out?

Yes, the intent is for this to always call in the case of a time out. The test should complete successfully within 2 seconds. If it doesn&apos;t, then we make sure to remove the input field widget, and call notifyDone.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1326
&gt;&gt; +    } else
&gt; 
&gt; You should use an early return instead of an else here.

Ok, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477382</commentid>
    <comment_count>25</comment_count>
      <attachid>109562</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-10-03 17:49:33 -0700</bug_when>
    <thetext>Created attachment 109562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477383</commentid>
    <comment_count>26</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-03 17:58:41 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 108894 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108894&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/platform/mac/fast/forms/script-tests/focus-option-control-on-page.js:57
&gt; &gt;&gt; +    setTimeout(function() {layoutTestController.removeChromeInputField(notifyDone)}, 2000);
&gt; &gt; 
&gt; &gt; Why is this here? Will this always be called or only when the test times out?
&gt; 
&gt; Yes, the intent is for this to always call in the case of a time out. The test should complete successfully within 2 seconds. If it doesn&apos;t, then we make sure to remove the input field widget, and call notifyDone.
&gt; 

Both DumpRenderTree and WebKitTestRunner have built-in facilities for detecting a timeout, so I don&apos;t think this is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477471</commentid>
    <comment_count>27</comment_count>
      <attachid>109587</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-10-04 00:26:01 -0700</bug_when>
    <thetext>Created attachment 109587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477804</commentid>
    <comment_count>28</comment_count>
      <attachid>109587</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-04 11:40:37 -0700</bug_when>
    <thetext>Comment on attachment 109587
Patch

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

&gt; Source/WebKit2/ChangeLog:53
&gt; +2011-09-23  Jon Lee  &lt;jonlee@apple.com&gt;
&gt; +
&gt; +        REGRESSION (WK2): (Shift-)option-tabbing skips over elements when transitioning from chrome to webview
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=68412
&gt; +        &lt;rdar://problem/9988252&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        In WK1 setInitialFocus() is called on FocusController with the key event that
&gt; +        caused the web view to become first responder. In WK2 no event is sent. So if
&gt; +        the key stroke that caused the change in first responder status contains the
&gt; +        option modifier key, FocusController did not know that it had to switch behavior.
&gt; +
&gt; +        Because there are multiple ways that the WKView can becomeFirstResponder, I changed
&gt; +        the signature to setInitialFocus to express whether the key event parameter is an
&gt; +        actual key event.

Double change log.

&gt; Source/WebKit2/UIProcess/API/C/win/WKView.cpp:73
&gt; +    bool isKeyboardEventValid = false;
&gt; +    toImpl(viewRef)-&gt;setInitialFocus(forward, isKeyboardEventValid, WebKeyboardEvent());

This is awkward.

I think we’d be better off with two separate setInitialFocus functions and two separate messages, one for non-keyboard events and another for keyboard events. We could avoid the whole boolean thing that way, and we could do whatever code sharing we wanted in the WebPage class.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:307
&gt; -
&gt; +    

gratuitous whitespace change

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:312
&gt; -
&gt; +    

gratuitous whitespace change

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:319
&gt; +        bool becomingFirstResponderFromKeyboard = [event type] == NSKeyDown || [event type] == NSKeyUp;
&gt; +        if (!becomingFirstResponderFromKeyboard)
&gt; +            event = nil;

I think this is a confusing way to write it. I would instead have a local variable called keyboardEvent.

    NSEvent *keyboardEvent = nil;
    if ([event type] == NSKeyDown || [event type] == NSKeyUp)
        keyboardEvent = event;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477856</commentid>
    <comment_count>29</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-10-04 12:54:21 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt; Source/WebKit2/UIProcess/API/C/win/WKView.cpp:73
&gt; &gt; +    bool isKeyboardEventValid = false;
&gt; &gt; +    toImpl(viewRef)-&gt;setInitialFocus(forward, isKeyboardEventValid, WebKeyboardEvent());
&gt; 
&gt; This is awkward.
&gt; 
&gt; I think we’d be better off with two separate setInitialFocus functions and two separate messages, one for non-keyboard events and another for keyboard events. We could avoid the whole boolean thing that way, and we could do whatever code sharing we wanted in the WebPage class.

Filed bug 69362 to fix this.

The rest of the cosmetic and refactoring changes have been made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477946</commentid>
    <comment_count>30</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-10-04 14:22:36 -0700</bug_when>
    <thetext>Committed r96645: &lt;http://trac.webkit.org/changeset/96645&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108370</attachid>
            <date>2011-09-22 11:35:40 -0700</date>
            <delta_ts>2011-09-22 13:11:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110922113538.patch</filename>
            <type>text/plain</type>
            <size>30745</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU0MzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzllZWU1NDA5OGJiMTIxNGYxODY1
YWZmZmNkMjJmYmM3YjViOWU0Li4xZWFmODM0Zjg4YTg1N2M1OTkyZTQ5ZmQxZDY1MDcyOTYyYzA0
Njg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjIgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTEt
MDktMTkgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogCVtDaHJvbWl1bV0g
UmViYXNlbGluZSBleHBlY3RhdGlvbnMgZHVlIHRvIHI5NTQwMi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZDlmNmM3YTYyNTRlYWNmNGNlNDk0NDNkNmMwZWIy
YWIxYjA1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3Vz
LW9wdGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKKzxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTI+IFRoaXMgdGVzdCBj
aGVja3MgdG8gc2VlIGlmIG9wdGlvbihhbHQpLXRhYmJpbmcgcHJvcGVybHkgZm9jdXNlcyBmb3Jt
IGVsZW1lbnRzIHRoYXQgYXJlIG5vcm1hbGx5IG5vdCBmb2N1c2VkLiBGb3IgdGVzdGluZywgdGhl
IGFzc3VtcHRpb24gaXMgdGhhdCBieSBkZWZhdWx0IHByZXNzaW5nIHRhYiB3aWxsIHNraXAgb3Zl
ciBidXR0b25zLCBhbmQgb3B0aW9uLXRhYiB3aWxsIGluY2x1ZGUgYnV0dG9ucy4KKworICAKK1Rh
YjoKKzA6MgorMToKKzI6MgorMzoKK1NoaWZ0LXRhYjoKKzA6MgorMToKKzI6MgorMzoKK09wdGlv
bi10YWI6CiswOjEKKzE6MgorMjozCiszOgorU2hpZnQtb3B0aW9uLXRhYjoKKzA6MworMToyCisy
OjEKKzM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1j
b250cm9sLW9uLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9u
LWNvbnRyb2wtb24tcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyM2I1MjlkZmJjZjg2NjJiMWFjMjZj
YmM3Yjk3NzhlNDNlNzhiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbApAQCAtMCwwICsxLDcwIEBACis8
cD4mbHQ7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyJmd0OyBU
aGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5nIHByb3Blcmx5IGZv
Y3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9jdXNlZC4gRm9yIHRl
c3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVzc2luZyB0YWIgd2ls
bCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNsdWRlIGJ1dHRvbnMu
PC9wPgorPGhyPgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgICAgICAgICAgICAgICAgICAgICAgICBv
bmZvY3VzPSJsb2coMSkiIHZhbHVlPSJidXR0b24iPgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0
ZXh0RmllbGQiICAgICAgICAgICBvbmZvY3VzPSJsb2coMikiIHZhbHVlPSJ0ZXh0Ij4KKzxpbnB1
dCB0eXBlPSJidXR0b24iICAgICAgICAgICAgICAgICAgICAgICAgb25mb2N1cz0ibG9nKDMpIiB2
YWx1ZT0iYnV0dG9uIj4KKzxocj4KKzxwIGlkPSJsb2ciPjwvcD4KKworPHNjcmlwdD4KKworZnVu
Y3Rpb24gbG9nKHN0cikKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MICs9IHN0cjsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWxheW91dFRlc3RDb250cm9sbGVyLmFkZENocm9t
ZUlucHV0RmllbGQpCisgICAgICAgIHJldHVybjsKKworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkQ2hyb21lSW5wdXRGaWVsZChzdGFydFRlc3Qp
OworfQorCit2YXIgaXRlcmF0aW9uID0gMDsKK3ZhciBtb2RpZmllcnM7CitmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7CisgICAgbG9nKCJUYWI6Iik7CisgICAgbW9kaWZpZXJzID0gdW5kZWZpbmVkOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2ViVmlldyhydW5LZXlQcmVzc2VzKTsKKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xheW91dFRlc3RDb250cm9sbGVyLnJlbW92ZUNocm9t
ZUlucHV0RmllbGQobm90aWZ5RG9uZSl9LCAyMDAwKTsKK30KKworZnVuY3Rpb24gcnVuS2V5UHJl
c3NlcygpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBsb2co
Ijxici8+IiArIGkgKyAiOiIpOworICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1v
ZGlmaWVycyk7CisgICAgfQorICAgIAorICAgIGl0ZXJhdGlvbisrOworICAgIHN3aXRjaCAoaXRl
cmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGxvZygiPGJyLz5TaGlmdC10
YWI6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5Il07CisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgbG9nKCI8YnIvPk9w
dGlvbi10YWI6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOworICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGxvZygiPGJy
Lz5TaGlmdC1vcHRpb24tdGFiOiIpOworICAgICAgICAgICAgbW9kaWZpZXJzID0gWyJzaGlmdEtl
eSIsICJhbHRLZXkiXTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2Vi
VmlldyhydW5LZXlQcmVzc2VzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KG5vdGlmeURvbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitmdW5jdGlvbiBu
b3RpZnlEb25lKCkgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY2MDM4ZDY4NzQ1OGUwMjQ0MWQ0NjRkMzRkYjIyNjA1
OWY4OWZjMzcuLmM2YjdiMzYwMDQ3ZmUxNjlmYzAxNjgzZWI4MTY0ZTQ1ZDFiNGVmZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0wOS0yMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoV0syKTogKFNoaWZ0LSlvcHRpb24tdGFiYmlu
ZyBza2lwcyBvdmVyIGVsZW1lbnRzIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGNocm9tZSB0byB3
ZWJ2aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
ODQxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTk4ODI1Mj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBXSzEgc2V0SW5pdGlhbEZvY3VzKCkg
aXMgY2FsbGVkIG9uIEZvY3VzQ29udHJvbGxlciB3aXRoIHRoZSBrZXkgZXZlbnQgdGhhdAorICAg
ICAgICBjYXVzZWQgdGhlIHdlYiB2aWV3IHRvIGJlY29tZSBmaXJzdCByZXNwb25kZXIuIEluIFdL
MiBubyBldmVudCBpcyBzZW50LiBTbyBpZgorICAgICAgICB0aGUga2V5IHN0cm9rZSB0aGF0IGNh
dXNlZCB0aGUgY2hhbmdlIGluIGZpcnN0IHJlc3BvbmRlciBzdGF0dXMgY29udGFpbnMgdGhlCisg
ICAgICAgIG9wdGlvbiBtb2RpZmllciBrZXksIEZvY3VzQ29udHJvbGxlciBkaWQgbm90IGtub3cg
dGhhdCBpdCBoYWQgdG8gc3dpdGNoIGJlaGF2aW9yLgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUg
YXJlIG11bHRpcGxlIHdheXMgdGhhdCB0aGUgV0tWaWV3IGNhbiBiZWNvbWVGaXJzdFJlc3BvbmRl
ciwgSSBjaGFuZ2VkCisgICAgICAgIHRoZSBzaWduYXR1cmUgdG8gc2V0SW5pdGlhbEZvY3VzIHRv
IGV4cHJlc3Mgd2hldGhlciB0aGUga2V5IGV2ZW50IHBhcmFtZXRlciBpcyBhbgorICAgICAgICBh
Y3R1YWwga2V5IGV2ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdKTogVGFrZSB0aGUgTlNB
cHAgY3VycmVudEV2ZW50IGFuZCBwYXNzIGl0IGFsb25nIGlmCisgICAgICAgIHRoZSBldmVudCBp
cyBhIGtleWJvYXJkIGV2ZW50LCBvdGhlcndpc2UgcGFzcyBhbiBlbXB0eSBldmVudC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRJbml0aWFsRm9jdXMpOiBDaGFuZ2UgaW4gZnVuY3Rpb24gc2lnbmF0dXJlIHRv
IGNvbmZpcm0gdGhhdAorICAgICAgICB0aGUgZXZlbnQgdGhhdCBjYXVzZWQgdGhlIGluaXRpYWwg
Zm9jdXMgd2FzIGEga2V5Ym9hcmQgZXZlbnQsIGFuZCBwcm92aWRlIHRoZSBrZXlib2FyZAorICAg
ICAgICBldmVudCBpdHNlbGYuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKTogSWYgd2Uga25vdyB0aGF0IHRoZSBjYXVzZSBv
ZiB0aGlzIHdhcyBhIGtleWJvYXJkCisgICAgICAgIGV2ZW50LCB3ZSBwYXNzIHRoYXQgZXZlbnQg
dG8gdGhlIEZvY3VzQ29udHJvbGxlci4gT3RoZXJ3aXNlIHdlIGZhbGwgYmFjayB0byB0aGUgb3Jp
Z2luYWwKKyAgICAgICAgYmVoYXZpb3IsIHdoaWNoIGlzIHRvIHBhc3Mgbm8gZXZlbnQgYXQgYWxs
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTEtMDktMTQgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBbUXRdIFtXSzJdIEltcGxlbWVudCBwb3B1cCBtZW51cyBpbiBRRGVza3RvcFdl
YlZpZXcgdXNpbmcgUUNvbWJvQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KaW5kZXggNzdhYTdkMDMwOWY2Mjc1Mjk1YjI4YWM0NWYzYTc4MTdlY2QwMjQzNy4u
OWM2YjZhZGUxYjViNDRjNTczMWI4NGFkNzI2OWE2NDg1ZjliNzY4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzA0LDE3ICszMDQsMjEgQEAgc3Ry
dWN0IFdLVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogLSAoQk9PTCliZWNvbWVG
aXJzdFJlc3BvbmRlcgogewogICAgIE5TU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFtb
c2VsZiB3aW5kb3ddIGtleVZpZXdTZWxlY3Rpb25EaXJlY3Rpb25dOwotCisgICAgCiAgICAgX2Rh
dGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gdHJ1ZTsKICAgICAKICAgICBbc2VsZiBfdXBk
YXRlU2VjdXJlSW5wdXRTdGF0ZV07CiAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKLQorICAgIAogICAgIF9kYXRhLT5faW5C
ZWNvbWVGaXJzdFJlc3BvbmRlciA9IGZhbHNlOwotCi0gICAgaWYgKGRpcmVjdGlvbiAhPSBOU0Rp
cmVjdFNlbGVjdGlvbikKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5zZXRJbml0aWFsRm9jdXMoZGly
ZWN0aW9uID09IE5TU2VsZWN0aW5nTmV4dCk7Ci0KKyAgICAKKyAgICBpZiAoZGlyZWN0aW9uICE9
IE5TRGlyZWN0U2VsZWN0aW9uKSB7CisgICAgICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TQXBwIGN1
cnJlbnRFdmVudF07CisgICAgICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtl
dmVudCB0eXBlXSA9PSBOU0tleVVwKQorICAgICAgICAgICAgX2RhdGEtPl9wYWdlLT5zZXRJbml0
aWFsRm9jdXMoZGlyZWN0aW9uID09IE5TU2VsZWN0aW5nTmV4dCwgdHJ1ZSwgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChldmVudCwgc2VsZikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfZGF0
YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0LCBm
YWxzZSwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCgwLCBzZWxmKSk7CisgICAgfQogICAgIHJldHVy
biBZRVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNTc4OWUxNDYyNjhhZDFjZmRiMzNlN2FhNjUxYjFkN2U0YmE2NDQwNy4uNDQ5MTNkNDRiNjM2
OWNmYTllNDMzODQ5YmM0ZmU1YjJmZWQxZjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY4NCwxMSArNjg0LDExIEBAIEludFNpemUgV2ViUGFnZVBy
b3h5Ojp2aWV3U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC0+dmlld1NpemUo
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBp
c0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9h
cmRFdmVudCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQp
LCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJ
bml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQp
LCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRXaW5kb3dSZXNpemVyU2l6
ZShjb25zdCBJbnRTaXplJiB3aW5kb3dSZXNpemVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA1ZTNjOWZiYWQxMDEzNDQ3OGFiZTE0MmMwZThmNTM2MTlj
NTk1MmY5Li4zMjFlZjg4ZWEwZjQyZTY1YjZiZTI0ODQ0NjkxNTEwYTE2MjM2NTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNjIsNyArMjYyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZpZXdX
aWxsRW5kTGl2ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCk7Cisg
ICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCwgYm9vbCwgY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYpOwogICAgIHZvaWQgc2V0V2luZG93UmVzaXplclNpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOwogICAgIAogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlMjU3NjYzYmY1ZTc3
MjJmYTlhNDViNWU4MDNjZmU3Y2QxMTI0YzU4Li4yZjM4YTY2NGZmMDk2ZWFkYTE3ODNmYmMyNGM0
ZTRkMzYzYWM5Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xMjkyLDE0ICsxMjkyLDIxIEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9jdXNl
ZChib29sIGlzRm9jdXNlZCkKICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1
c2VkKGlzRm9jdXNlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wg
Zm9yd2FyZCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9v
bCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7
CiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRG
b2N1c2VkTm9kZSgwKTsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFs
Rm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFj
a3dhcmQsIDApOworCisgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LnR5cGUo
KSA9PSBXZWJFdmVudDo6S2V5RG93bikgeworICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
cGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOworICAgICAgICBwbGF0Zm9ybUV2ZW50LmRp
c2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24p
OworICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9y
d2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIEtl
eWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVm
YXVsdFZpZXcoKSkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2Fy
ZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIDApOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFdp
bmRvd1Jlc2l6ZXJTaXplKGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNjIzZGEzOWI5YzNj
MjdjMDVmNTgwMTQzYzUzODgyMDhmNzgwMzllZi4uN2QyZjE1YWRjYWUwZWJkY2VhYmVlZmRhOWQ4
ZDUwZDI5YWY5OTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgc2V0
Rm9jdXNlZChib29sKTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sKTsKKyAgICB2b2lk
IHNldEluaXRpYWxGb2N1cyhib29sLCBib29sLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAg
ICAgdm9pZCBzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAg
ICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDk0YjdjZTA5MjIxM2FiMWQ3
ODVkMDYyNjhhOWYzNDc5OTExYTA1NS4uMjJmMjk0Yzg3MmM0YTI2NzBiMTA3MmY1ODljYjY5MzNi
NjMxOGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgewogICAgIFNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBTZXRGb2N1c2VkKGJvb2wgZm9j
dXNlZCkKLSAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQorICAgIFNldEluaXRpYWxG
b2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2Vi
S2V5Ym9hcmRFdmVudCBldmVudCkKICAgICBTZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykK
IAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4OWNjYWU1NWNiMzRj
YWJjZTY4NzkwZDBjYzdmOGIzMmIzYWQ1ZTIwLi5iY2UyMTY5MDYwMjQ5NzQ1ZGE1M2ZkYzJhYzU5
ZWMzY2RlM2MzYjZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDktMjIgIEpvbiBMZWUgIDxqb25sZWVAYXBw
bGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJp
bmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8g
d2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgdGVz
dCBmb3IgdGhlIGJ1ZywgSSBoYWQgdG8gdXBkYXRlIERSVCBhbmQgV0tUUiB0byBjcmVhdGUgc29t
ZQorICAgICAgICB3aWRnZXQgdGhhdCBhbGxvd3MgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byBt
b3ZlIGF3YXkgZnJvbSB0aGUgbWFpbiB3ZWIgdmlldy4KKworICAgICAgICBUaHJlZSBtZXRob2Rz
IHdlcmUgYWRkZWQgdG8gbGF5b3V0VGVzdENvbnRyb2xsZXI6IGFkZENocm9tZUlucHV0RmllbGQs
CisgICAgICAgIHJlbW92ZUNocm9tZUlucHV0RmllbGQsIGFuZCBmb2N1c1dlYlZpZXcuIGFkZENo
cm9tZUlucHV0RmllbGQgYWRkcyBhIHRleHQgZmllbGQKKyAgICAgICAgdGhhdCBpcyBhIHNpYmxp
bmcgdG8gdGhlIHdlYiB2aWV3LCBhbmQgc2V0cyB1cCB0aGUga2V5IGV2ZW50IGxvb3AgYmV0d2Vl
biB0aGUgdHdvLgorICAgICAgICByZW1vdmVDaHJvbWVJbnB1dEZpZWxkIHJlbW92ZXMgdGhhdCBm
aWVsZC4gZm9jdXNXZWJWaWV3IG1vdmVzIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBzdGF0dXMg
dG8gdGhlIHdlYiB2aWV3LgorCisgICAgICAgIFRoZSB0ZXN0IG1ha2VzIHRoZSBjYWxsIHZpYSBs
YXlvdXRUZXN0Q29udHJvbGxlciBhbmQgcGFzc2VzIGEgY2FsbGJhY2sgdGhhdCBpdAorICAgICAg
ICBhc3N1bWVzIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0aGUgdGFzayBpcyBjb21wbGV0ZWQuIElu
IERSVCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkCisgICAgICAgIHN5bmNocm9ub3VzbHkuIEluIFdL
VFIgdGhpcyBpcyBoYW5kbGVkIHdpdGggbWVzc2FnZSBwYXNzaW5nIGJldHdlZW4gdGhlIHR3bwor
ICAgICAgICBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgor
ICAgICAgICAocmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKGZvY3Vz
V2ViVmlld0NhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0QWRkQ2hyb21l
SW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0UmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0Rm9jdXNX
ZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmNhbGxiYWNrTWFwKTogQ3Jl
YXRlIGEgaGFzaCBtYXAgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgY2FsbGJhY2tzIHByb3ZpZGVk
CisgICAgICAgIHRocm91Z2ggSlMuCisgICAgICAgIChXVFI6OmNhY2hlTGF5b3V0VGVzdENvbnRy
b2xsZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OmNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNh
bGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlu
cHV0RmllbGQpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpmb2N1
c1dlYlZpZXcpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEFkZENo
cm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpjYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjayk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZVRleHRGaWVsZCk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lVGV4dEZpZWxkKToKKyAgICAgICAgKFdU
Ujo6UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKwogMjAxMS0w
OS0xNiAgRWxsaW90IFBvZ2VyICA8ZXBvZ2VyQGdvb2dsZS5jb20+CiAKICAgICAgICAgYWRkIG5v
bi1DRyBXZWJraXQtTWFjIGJ1aWxkcyB0byBmbGFraW5lc3MgZGFzaGJvYXJkCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMmUxYmRiNDkzNjUx
NWZhMGYxYmU5ZDYwMTZiZTA2Yzk2N2NiOTJlMy4uMDM2MzkzNjk4M2Q5MTBhYWRjNjcwNGFjOTk4
NTM0YTc1ODUxMTYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcApAQCAtMjE2MCw2ICsyMTYwLDM2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNo
b3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkQ2FsbGJhY2soSlNDb250ZXh0
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMg
SlNWYWx1ZVJlZiBhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwor
ICAgIGNvbnRyb2xsZXItPmFkZENocm9tZUlucHV0RmllbGQoKTsKKyAgICAvLyB0aGUgZmlyc3Qg
YXJndW1lbnQgaXMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVs
ZCBoYXMgYmVlbiBhZGRlZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIEpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFy
Z3VtZW50c1swXSwgMCksIHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9s
bGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5y
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEg
Y2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgb25jZSB0aGUgaW5wdXQgZmllbGQgaGFzIGJlZW4gYWRk
ZWQKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBKU09iamVjdENhbGxBc0Z1
bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0sIDAp
LCB0aGlzT2JqZWN0LCAwLCAwLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGZvY3VzV2ViVmlld0NhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5mb2N1c1dlYlZpZXcoKTsKKyAgICAvLyB0
aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBp
bnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRlZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisg
ICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNv
bnRleHQsIGFyZ3VtZW50c1swXSwgMCksIHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogLy8gU3RhdGljIFZhbHVlcwog
CiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjQzNiw2ICsyNDY2LDkgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsg
InNldFRleHREaXJlY3Rpb24iLCBzZXRUZXh0RGlyZWN0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiYWxsb3dSb3VuZGluZ0hhY2tzIiwgYWxsb3dSb3VuZGluZ0hhY2tzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZv
cmVVbmxvYWQiLCBzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImFkZENocm9tZUlucHV0RmllbGQiLCBhZGRDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZCIsIHJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAg
ICB7ICJmb2N1c1dlYlZpZXciLCBmb2N1c1dlYlZpZXdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7IDAsIDAsIDAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCmluZGV4IGQ1Y2ZiYTc3YzNkYzRiODg2YTQwYTZiNmY1MjkxYmY4NmMxOWRh
ZDAuLmJhYzhiNGRkYjk4MTJjYTJlMDllOTRkYjgxYzM5YWNjN2Q1OWI4NTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzE0LDYgKzMxNCwxMCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVu
bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZv
cmVVbmxvYWQ7IH0KICAgICB2b2lkIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkKGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQp
IHsgbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCA9IHNob3VsZFN0
YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkOyB9CiAKKyAgICB2b2lkIGFkZENocm9t
ZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICB2
b2lkIGZvY3VzV2ViVmlldygpOworICAgIAogICAgIHZvaWQgc2V0UE9TSVhMb2NhbGUoSlNTdHJp
bmdSZWYgbG9jYWxlKTsKIAogICAgIHZvaWQgc2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CmluZGV4IGY2ZTU0M2ZhZTU2ZWE4MmEwYzhhYmI5MTMwYTgyMGFlZmY2NWFlMjYuLjEyMTkxOWJl
NDI5OGI3Yzk0NTc3MDZlYjAzNjY1YjQ0MjIxNzFhMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTExNDMsMyArMTE0
MywyNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3Ry
aW5nUmVmIGRpcmVjdGlvbk5hbWUpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vu
ZGlmCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQo
KQoreworICAgIE5TVGV4dEZpZWxkKiB0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50
YWcgPSAxOworICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10g
YWRkU3Vidmlldzp0ZXh0RmllbGRdOworICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgCisg
ICAgW3RleHRGaWVsZCBzZXROZXh0S2V5VmlldzpbbWFpbkZyYW1lIHdlYlZpZXddXTsKKyAgICBb
W21haW5GcmFtZSB3ZWJWaWV3XSBzZXROZXh0S2V5Vmlldzp0ZXh0RmllbGRdOworfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBb
W1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzox
XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBmb2N1c1dlYlZpZXcoKTsKK30KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KCkKK3sKKyAgICBbW1ttYWluRnJhbWUg
d2ViVmlld10gd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6W21haW5GcmFtZSB3ZWJWaWV3XV07
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5p
ZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91
dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCA1MjFhYjdjMGE2MDBjY2U1ZmNlYzczMDJlMmI3YjQ4
YWMxNzNmOTdiLi41MGNhNDYyNjg3N2IwOGI4Y2E0ZGU2ZGM2ZWE2MWRkN2NlMjQ2MmZkIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xh
eW91dFRlc3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMTE3LDYgKzEx
NywxMSBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1
cm5zTnVsbChpbiBib29sZWFuIGZsYWcpOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRTaG91
bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChpbiBib29sZWFuIGZsYWcpOwor
ICAgICAgICAKKyAgICAgICAgLy8gRm9jdXMgdGVzdGluZy4KKyAgICAgICAgdm9pZCBhZGRDaHJv
bWVJbnB1dEZpZWxkKGluIG9iamVjdCBjYWxsYmFjayk7CisgICAgICAgIHZvaWQgcmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZChpbiBvYmplY3QgY2FsbGJhY2spOworICAgICAgICB2b2lkIGZvY3VzV2Vi
VmlldyhpbiBvYmplY3QgY2FsbGJhY2spOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5k
ZXggZGQwNDU3ODZiNGNhNmI0ZDkyMmU0MTAyNmNiNDczNjY5MTAxYjk0Zi4uZGUzZDI1MTdjZWZj
ZWYxYzdhODE0ZTM4OWFiOGM5ZTFiYmQwM2IzMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTE1OCw2
ICsxNTgsMTggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWcKIAogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
Q2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayIpKSB7CisgICAgICAgIG1fbGF5b3V0VGVz
dENvbnRyb2xsZXItPmNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSkgeworICAgICAg
ICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2siKSkgewor
ICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2so
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBlcnJvck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJFcnJvciIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlQm9k
eShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVW5rbm93biIpKTsKQEAg
LTI0MSw0ICsyNTMsMjIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdE5ld0JlZm9yZVVubG9h
ZFJldHVyblZhbHVlKGJvb2wgdmFsdWUpCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRs
ZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAordm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6cG9zdEFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlJlbW92ZUNocm9tZUlucHV0RmllbGQiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZSht
X2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIEluamVjdGVkQnVuZGxl
Ojpwb3N0Rm9jdXNXZWJWaWV3KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZvY3VzV2Vi
VmlldyIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDUwNmJl
ZGY4ZDMzOTgwYjEyZTMxZDUzMjJiMzkyNjkwMzRhODY2N2YuLjM5YzY5MmQ0N2I3YTE0MWU3MWM2
NmY0NGE2ZTA1M2MyYzFjOGI3YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTczLDYgKzczLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgc2hvdWxkRHVtcFBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFBp
eGVsczsgfQogICAgIAogICAgIHZvaWQgcG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVlKGJv
b2wpOworICAgIHZvaWQgcG9zdEFkZENocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIHBvc3RS
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0Rm9jdXNXZWJWaWV3KCk7CiAK
IHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKaW5kZXggMDNjMjdmNjUxNDYyNzU3MDM2MDhhYjI4Yjc2Y2U4Yjk0ZGYxNTBkMS4uNjE3ZDVi
YzIxZTUxOWMxMThjNWJjYzdmZjIwM2FiYjc0OGU2MTdjOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKQEAgLTUwMCw0ICs1MDAsNjMgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoYm9vbCBzaG8KICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVl
KCFzaG91bGRTdGF5T25QYWdlKTsKIH0KIAordHlwZWRlZiBXVEY6Okhhc2hNYXA8dW5zaWduZWQs
IEpTVmFsdWVSZWY+IENhbGxiYWNrTWFwOworc3RhdGljIENhbGxiYWNrTWFwJiBjYWxsYmFja01h
cCgpCit7CisgICAgc3RhdGljIENhbGxiYWNrTWFwJiBtYXAgPSAqbmV3IENhbGxiYWNrTWFwOwor
ICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyB2b2lkIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xs
ZXJDYWxsYmFjayh1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBX
S0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBj
b250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7Cisg
ICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgY2FsbGJhY2spOworICAgIGNhbGxiYWNrTWFwKCku
YWRkKGluZGV4LCBjYWxsYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkIGNhbGxMYXlvdXRUZXN0Q29u
dHJvbGxlckNhbGxiYWNrKHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmICghY2FsbGJhY2tNYXAo
KS5jb250YWlucyhpbmRleCkpCisgICAgICAgIHJldHVybjsKKyAgICBXS0J1bmRsZUZyYW1lUmVm
IG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisgICAgSlNPYmplY3RSZWYg
Y2FsbGJhY2sgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgY2FsbGJhY2tNYXAoKS50YWtlKGlu
ZGV4KSwgMCk7CisgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaywg
SlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCAwLCAwLCAwKTsKKyAgICBKU1ZhbHVl
VW5wcm90ZWN0KGNvbnRleHQsIGNhbGxiYWNrKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNh
Y2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygxLCBjYWxsYmFjayk7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKCk7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoSlNWYWx1ZVJlZiBj
YWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMiwgY2Fs
bGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0UmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXco
SlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2Fs
bGJhY2soMywgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0Rm9j
dXNXZWJWaWV3KCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxBZGRDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNh
bGxiYWNrKDEpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsUmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZENhbGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJD
YWxsYmFjaygyKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEZvY3VzV2Vi
Vmlld0NhbGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXgg
NmE5YTExZTdiNzllNGYwMjg3MzYyODU3YTdjOWUxODUwZDkwYmY0ZC4uNGQ3YjY5OTJiMjBjOWNi
ZDIyYmYxMDU1NzgxNzYwMmM3NTRlMDFlZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAt
MTcyLDYgKzE3MiwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBnbG9iYWxGbGFnKCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxGbGFnKGJvb2wg
dmFsdWUpIHsgbV9nbG9iYWxGbGFnID0gdmFsdWU7IH0KKyAgICAKKyAgICB2b2lkIGFkZENocm9t
ZUlucHV0RmllbGQoSlNWYWx1ZVJlZik7CisgICAgdm9pZCByZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KEpTVmFsdWVSZWYpOworICAgIHZvaWQgZm9jdXNXZWJWaWV3KEpTVmFsdWVSZWYpOworICAgIHZv
aWQgY2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgIHZvaWQgY2FsbFJlbW92
ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgIHZvaWQgY2FsbEZvY3VzV2ViVmlld0Nh
bGxiYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1w
V2F0Y2hkb2dUaW1lckludGVydmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJW
aWV3LmgKaW5kZXggNWViYzQxN2Q2YmIzNGI1M2QwNDU4MWYxOWJjNmU5MTcxNzZhN2JkOC4uYTNm
ZGE3NTlhOWE5Yzk3Yzc2MzJjODBhOTAzMjAyOTBhNWYzMGY5OSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC02Nyw2ICs2NywxMCBAQCBwdWJsaWM6CiAKICAg
ICBXS1JlY3Qgd2luZG93RnJhbWUoKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdLUmVjdCk7
CisgICAgCisgICAgdm9pZCBhZGRDaHJvbWVUZXh0RmllbGQoKTsKKyAgICB2b2lkIHJlbW92ZUNo
cm9tZVRleHRGaWVsZCgpOworICAgIHZvaWQgbWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOwog
CiBwcml2YXRlOgogICAgIFBsYXRmb3JtV0tWaWV3IG1fdmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYmUyMDA0NmEyMWIwMTM1MDEyMjkxZGVjMzdl
ZTViZjE2MTEwMTM0Mi4uMDUzOTRhN2MxYWQ1N2RlODllYjdlYjQwNzJjNTBlMTZmNjVhMjU5OCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTI0NSw2ICsy
NDUsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLnNldEJlZm9yZVVubG9hZFJldHVyblZhbHVlKFdLQm9vbGVhbkdldFZhbHVlKGJl
Zm9yZVVubG9hZFJldHVyblZhbHVlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJBZGRDaHJv
bWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5X
ZWJWaWV3KCktPmFkZENocm9tZVRleHRGaWVsZCgpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJDYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpOworICAgICAgICBXS0NvbnRl
eHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmNv
bnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSZW1v
dmVDaHJvbWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgp
Lm1haW5XZWJWaWV3KCktPnJlbW92ZUNocm9tZVRleHRGaWVsZCgpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJDYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpOworICAg
ICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiRm9jdXNXZWJWaWV3IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNo
YXJlZCgpLm1haW5XZWJWaWV3KCktPm1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrIikpOworICAg
ICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggYWZmMTBlZDUw
NGNhMDg2OWI3ZTBmNTA4ZWU1YTRiMzcyNzc0NmNiZi4uYjc3MjA3Y2ZjNjE3NDUzNDJkYjY0YzE5
OTc3MmY3Mjg4OTNkZjliYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
UGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Bs
YXRmb3JtV2ViVmlld01hYy5tbQpAQCAtODAsNCArODAsMjYgQEAgdm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFtZSkKICAgICBbbV93aW5kb3cgc2V0RnJhbWU6
TlNNYWtlUmVjdChmcmFtZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnksIGZyYW1lLnNpemUud2lk
dGgsIGZyYW1lLnNpemUuaGVpZ2h0KSBkaXNwbGF5OllFU107CiB9CiAKK3ZvaWQgUGxhdGZvcm1X
ZWJWaWV3OjphZGRDaHJvbWVUZXh0RmllbGQoKQoreworICAgIE5TVGV4dEZpZWxkKiB0ZXh0Rmll
bGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAxOworICAgIFtbbV93aW5kb3cgY29udGVu
dFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKKyAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOwor
CisgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5VmlldzptX3ZpZXddOworICAgIFttX3ZpZXcgc2V0
TmV4dEtleVZpZXc6dGV4dEZpZWxkXTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92
ZUNocm9tZVRleHRGaWVsZCgpCit7CisgICAgW1tbbV93aW5kb3cgY29udGVudFZpZXddIHZpZXdX
aXRoVGFnOjFdIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIG1ha2VXZWJWaWV3Rmlyc3RSZXNw
b25kZXIoKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNw
b25kZXIoKQoreworICAgIFttX3dpbmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6bV92aWV3XTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108387</attachid>
            <date>2011-09-22 13:11:22 -0700</date>
            <delta_ts>2011-09-22 15:52:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110922131118.patch</filename>
            <type>text/plain</type>
            <size>35765</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU0MzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzllZWU1NDA5OGJiMTIxNGYxODY1
YWZmZmNkMjJmYmM3YjViOWU0Li4xZWFmODM0Zjg4YTg1N2M1OTkyZTQ5ZmQxZDY1MDcyOTYyYzA0
Njg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjIgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTEt
MDktMTkgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogCVtDaHJvbWl1bV0g
UmViYXNlbGluZSBleHBlY3RhdGlvbnMgZHVlIHRvIHI5NTQwMi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZDlmNmM3YTYyNTRlYWNmNGNlNDk0NDNkNmMwZWIy
YWIxYjA1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3Vz
LW9wdGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKKzxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTI+IFRoaXMgdGVzdCBj
aGVja3MgdG8gc2VlIGlmIG9wdGlvbihhbHQpLXRhYmJpbmcgcHJvcGVybHkgZm9jdXNlcyBmb3Jt
IGVsZW1lbnRzIHRoYXQgYXJlIG5vcm1hbGx5IG5vdCBmb2N1c2VkLiBGb3IgdGVzdGluZywgdGhl
IGFzc3VtcHRpb24gaXMgdGhhdCBieSBkZWZhdWx0IHByZXNzaW5nIHRhYiB3aWxsIHNraXAgb3Zl
ciBidXR0b25zLCBhbmQgb3B0aW9uLXRhYiB3aWxsIGluY2x1ZGUgYnV0dG9ucy4KKworICAKK1Rh
YjoKKzA6MgorMToKKzI6MgorMzoKK1NoaWZ0LXRhYjoKKzA6MgorMToKKzI6MgorMzoKK09wdGlv
bi10YWI6CiswOjEKKzE6MgorMjozCiszOgorU2hpZnQtb3B0aW9uLXRhYjoKKzA6MworMToyCisy
OjEKKzM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1j
b250cm9sLW9uLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9u
LWNvbnRyb2wtb24tcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyM2I1MjlkZmJjZjg2NjJiMWFjMjZj
YmM3Yjk3NzhlNDNlNzhiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbApAQCAtMCwwICsxLDcwIEBACis8
cD4mbHQ7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyJmd0OyBU
aGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5nIHByb3Blcmx5IGZv
Y3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9jdXNlZC4gRm9yIHRl
c3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVzc2luZyB0YWIgd2ls
bCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNsdWRlIGJ1dHRvbnMu
PC9wPgorPGhyPgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgICAgICAgICAgICAgICAgICAgICAgICBv
bmZvY3VzPSJsb2coMSkiIHZhbHVlPSJidXR0b24iPgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0
ZXh0RmllbGQiICAgICAgICAgICBvbmZvY3VzPSJsb2coMikiIHZhbHVlPSJ0ZXh0Ij4KKzxpbnB1
dCB0eXBlPSJidXR0b24iICAgICAgICAgICAgICAgICAgICAgICAgb25mb2N1cz0ibG9nKDMpIiB2
YWx1ZT0iYnV0dG9uIj4KKzxocj4KKzxwIGlkPSJsb2ciPjwvcD4KKworPHNjcmlwdD4KKworZnVu
Y3Rpb24gbG9nKHN0cikKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MICs9IHN0cjsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWxheW91dFRlc3RDb250cm9sbGVyLmFkZENocm9t
ZUlucHV0RmllbGQpCisgICAgICAgIHJldHVybjsKKworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkQ2hyb21lSW5wdXRGaWVsZChzdGFydFRlc3Qp
OworfQorCit2YXIgaXRlcmF0aW9uID0gMDsKK3ZhciBtb2RpZmllcnM7CitmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7CisgICAgbG9nKCJUYWI6Iik7CisgICAgbW9kaWZpZXJzID0gdW5kZWZpbmVkOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2ViVmlldyhydW5LZXlQcmVzc2VzKTsKKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xheW91dFRlc3RDb250cm9sbGVyLnJlbW92ZUNocm9t
ZUlucHV0RmllbGQobm90aWZ5RG9uZSl9LCAyMDAwKTsKK30KKworZnVuY3Rpb24gcnVuS2V5UHJl
c3NlcygpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBsb2co
Ijxici8+IiArIGkgKyAiOiIpOworICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1v
ZGlmaWVycyk7CisgICAgfQorICAgIAorICAgIGl0ZXJhdGlvbisrOworICAgIHN3aXRjaCAoaXRl
cmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGxvZygiPGJyLz5TaGlmdC10
YWI6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5Il07CisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgbG9nKCI8YnIvPk9w
dGlvbi10YWI6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOworICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGxvZygiPGJy
Lz5TaGlmdC1vcHRpb24tdGFiOiIpOworICAgICAgICAgICAgbW9kaWZpZXJzID0gWyJzaGlmdEtl
eSIsICJhbHRLZXkiXTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2Vi
VmlldyhydW5LZXlQcmVzc2VzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KG5vdGlmeURvbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitmdW5jdGlvbiBu
b3RpZnlEb25lKCkgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY2MDM4ZDY4NzQ1OGUwMjQ0MWQ0NjRkMzRkYjIyNjA1
OWY4OWZjMzcuLjYzMjYzZmJjZDM0M2Y0NWZlYjFmNmZmYjE0NzFhMmM3N2QwNmZhZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wOS0yMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoV0syKTogKFNoaWZ0LSlvcHRpb24tdGFiYmlu
ZyBza2lwcyBvdmVyIGVsZW1lbnRzIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGNocm9tZSB0byB3
ZWJ2aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
ODQxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTk4ODI1Mj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBXSzEgc2V0SW5pdGlhbEZvY3VzKCkg
aXMgY2FsbGVkIG9uIEZvY3VzQ29udHJvbGxlciB3aXRoIHRoZSBrZXkgZXZlbnQgdGhhdAorICAg
ICAgICBjYXVzZWQgdGhlIHdlYiB2aWV3IHRvIGJlY29tZSBmaXJzdCByZXNwb25kZXIuIEluIFdL
MiBubyBldmVudCBpcyBzZW50LiBTbyBpZgorICAgICAgICB0aGUga2V5IHN0cm9rZSB0aGF0IGNh
dXNlZCB0aGUgY2hhbmdlIGluIGZpcnN0IHJlc3BvbmRlciBzdGF0dXMgY29udGFpbnMgdGhlCisg
ICAgICAgIG9wdGlvbiBtb2RpZmllciBrZXksIEZvY3VzQ29udHJvbGxlciBkaWQgbm90IGtub3cg
dGhhdCBpdCBoYWQgdG8gc3dpdGNoIGJlaGF2aW9yLgorCisgICAgICAgIEJlY2F1c2UgdGhlcmUg
YXJlIG11bHRpcGxlIHdheXMgdGhhdCB0aGUgV0tWaWV3IGNhbiBiZWNvbWVGaXJzdFJlc3BvbmRl
ciwgSSBjaGFuZ2VkCisgICAgICAgIHRoZSBzaWduYXR1cmUgdG8gc2V0SW5pdGlhbEZvY3VzIHRv
IGV4cHJlc3Mgd2hldGhlciB0aGUga2V5IGV2ZW50IHBhcmFtZXRlciBpcyBhbgorICAgICAgICBh
Y3R1YWwga2V5IGV2ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdKTogVGFrZSB0aGUgTlNB
cHAgY3VycmVudEV2ZW50IGFuZCBwYXNzIGl0IGFsb25nIGlmCisgICAgICAgIHRoZSBldmVudCBp
cyBhIGtleWJvYXJkIGV2ZW50LCBvdGhlcndpc2UgcGFzcyBhbiBlbXB0eSBldmVudC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRJbml0aWFsRm9jdXMpOiBDaGFuZ2UgaW4gZnVuY3Rpb24gc2lnbmF0dXJlIHRv
IGNvbmZpcm0gdGhhdAorICAgICAgICB0aGUgZXZlbnQgdGhhdCBjYXVzZWQgdGhlIGluaXRpYWwg
Zm9jdXMgd2FzIGEga2V5Ym9hcmQgZXZlbnQsIGFuZCBwcm92aWRlIHRoZSBrZXlib2FyZAorICAg
ICAgICBldmVudCBpdHNlbGYuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OnNldEluaXRpYWxGb2N1cyk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOiBJZiB3ZSBrbm93IHRoYXQgdGhlIGNh
dXNlIG9mIHRoaXMgd2FzIGEga2V5Ym9hcmQKKyAgICAgICAgZXZlbnQsIHdlIHBhc3MgdGhhdCBl
dmVudCB0byB0aGUgRm9jdXNDb250cm9sbGVyLiBPdGhlcndpc2Ugd2UgZmFsbCBiYWNrIHRvIHRo
ZSBvcmlnaW5hbAorICAgICAgICBiZWhhdmlvciwgd2hpY2ggaXMgdG8gcGFzcyBubyBldmVudCBh
dCBhbGwuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMS0wOS0xNCAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFtRdF0gW1dLMl0gSW1wbGVtZW50IHBvcHVwIG1lbnVzIGluIFFEZXNr
dG9wV2ViVmlldyB1c2luZyBRQ29tYm9Cb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCA3N2FhN2QwMzA5ZjYyNzUyOTViMjhhYzQ1ZjNhNzgxN2VjZDAy
NDM3Li4xZTAzYjdkYzcyY2QwZWM2ZmEwODU4MjBhZDRkZGIyYzE5NTQwYjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQsMTcgKzMwNCwyMSBA
QCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAtIChCT09MKWJl
Y29tZUZpcnN0UmVzcG9uZGVyCiB7CiAgICAgTlNTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gW1tzZWxmIHdpbmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0KKyAgICAKICAg
ICBfZGF0YS0+X2luQmVjb21lRmlyc3RSZXNwb25kZXIgPSB0cnVlOwogICAgIAogICAgIFtzZWxm
IF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOwotCisgICAgCiAgICAgX2RhdGEt
Pl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gZmFsc2U7Ci0KLSAgICBpZiAoZGlyZWN0aW9uICE9
IE5TRGlyZWN0U2VsZWN0aW9uKQotICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1
cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0KTsKLQorICAgIAorICAgIGlmIChkaXJlY3Rp
b24gIT0gTlNEaXJlY3RTZWxlY3Rpb24pIHsKKyAgICAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNB
cHAgY3VycmVudEV2ZW50XTsKKyAgICAgICAgYm9vbCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJv
bUtleWJvYXJkID0gW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0g
TlNLZXlVcDsKKyAgICAgICAgaWYgKCFiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJvYXJk
KQorICAgICAgICAgICAgZXZlbnQgPSBuaWw7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+c2V0SW5p
dGlhbEZvY3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQsIGJlY29taW5nRmlyc3RSZXNw
b25kZXJGcm9tS2V5Ym9hcmQsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIHNlbGYpKTsK
KyAgICB9CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA1Nzg5ZTE0NjI2OGFkMWNmZGIzM2U3YWE2NTFiMWQ3ZTRiYTY0
NDA3Li43MjJkZjlkMDlhNzdkMzRlOTFiM2IzNWE2ZWMxMWEzNmYxNDk1Y2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjg0LDExICs2ODQsMTEgQEAg
SW50U2l6ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdl
Q2xpZW50LT52aWV3U2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZv
Y3VzKGJvb2wgZm9yd2FyZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9v
bCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2
ZW50JiBrZXlib2FyZEV2ZW50KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9j
dXMoZm9yd2FyZCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5
Ym9hcmRFdmVudCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRv
d1Jlc2l6ZXJTaXplKGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVlM2M5ZmJhZDEwMTM0NDc4YWJlMTQy
YzBlOGY1MzYxOWM1OTUyZjkuLmFlOGI4NDkxYzhkYmVhZTczYjUyZmVlZTc4N2EzYjZlZWY4YTMx
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI2Miw3ICsy
NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAg
IHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1
cyhib29sKTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sLCBib29sLCBjb25zdCBXZWJL
ZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJik7CiAgICAgCiAgICAgdm9pZCBjbGVhclNlbGVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggMGEyZjViYTU0Mzk1OTM5NDAy
YTEyYTg4MmU2MjVlNTM4MDY4MGJlOS4uOTI5Y2Q1ZWRhYTBjZTBjMjg5MzA2NjAyZWZjMWY5NjQ4
MWVkZjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0x
MDY4LDkgKzEwNjgsOSBAQCB2b2lkIFdlYlZpZXc6OnNldE92ZXJyaWRlQ3Vyc29yKEhDVVJTT1Ig
b3ZlcnJpZGVDdXJzb3IpCiAgICAgdXBkYXRlTmF0aXZlQ3Vyc29yKCk7CiB9CiAKLXZvaWQgV2Vi
Vmlldzo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKK3ZvaWQgV2ViVmlldzo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7Ci0gICAgbV9wYWdlLT5zZXRJbml0aWFsRm9jdXMo
Zm9yd2FyZCk7CisgICAgbV9wYWdlLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGV2ZW50KTsKIH0KIAogdm9pZCBXZWJWaWV3OjpzZXRTY3JvbGxPZmZzZXRP
bk5leHRSZXNpemUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaAppbmRleCA2NzE1ODFkN2VjNDVhNDk2MDg4MjE4OTNhOGEzZDc5
NWNlYjI5YmE1Li43NWQ1ODZjN2Y1OTc4Y2FhZGY1NmI1YzJhMDllZWUwN2NhYjFlNWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaApAQCAtNzksNyArNzksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwogICAgIHZvaWQgc2V0SXNWaXNpYmxl
KGJvb2wpOwogICAgIHZvaWQgc2V0T3ZlcnJpZGVDdXJzb3IoSENVUlNPUik7Ci0gICAgdm9pZCBz
ZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhi
b29sLCBib29sLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRTY3JvbGxP
ZmZzZXRPbk5leHRSZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0
RmluZEluZGljYXRvckNhbGxiYWNrKFdLVmlld0ZpbmRJbmRpY2F0b3JDYWxsYmFjaywgdm9pZCop
OwogICAgIFdLVmlld0ZpbmRJbmRpY2F0b3JDYWxsYmFjayBnZXRGaW5kSW5kaWNhdG9yQ2FsbGJh
Y2sodm9pZCoqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBlMjU3NjYzYmY1ZTc3MjJmYTlhNDViNWU4MDNjZmU3Y2QxMTI0YzU4Li4yZjM4
YTY2NGZmMDk2ZWFkYTE3ODNmYmMyNGM0ZTRkMzYzYWM5Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMjkyLDE0ICsxMjkyLDIxIEBA
IHZvaWQgV2ViUGFnZTo6c2V0Rm9jdXNlZChib29sIGlzRm9jdXNlZCkKICAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGlzRm9jdXNlZCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5pdGlh
bEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZSgwKTsKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9y
d2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIDApOworCisgICAgaWYgKGlzS2V5Ym9hcmRF
dmVudFZhbGlkICYmIGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgeworICAgICAg
ICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOwor
ICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZv
Y3VzRGlyZWN0aW9uQmFja3dhcmQsIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkuZ2V0KCkpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2Fy
ZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIDApOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IEludFNpemUmIHdp
bmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggNjIzZGEzOWI5YzNjMjdjMDVmNTgwMTQzYzUzODgyMDhmNzgwMzllZi4uN2Qy
ZjE1YWRjYWUwZWJkY2VhYmVlZmRhOWQ4ZDUwZDI5YWY5OTFhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wpOwogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKTsKLSAgICB2b2lkIHNldEluaXRp
YWxGb2N1cyhib29sKTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sLCBib29sLCBjb25z
dCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwogICAg
IHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggNDk0YjdjZTA5MjIxM2FiMWQ3ODVkMDYyNjhhOWYzNDc5OTExYTA1NS4uMjJmMjk0Yzg3
MmM0YTI2NzBiMTA3MmY1ODljYjY5MzNiNjMxOGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIz
LDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldEFjdGl2ZShib29sIGFjdGl2ZSkK
ICAgICBTZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKLSAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBm
b3J3YXJkKQorICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCkKICAgICBTZXRJc0lu
V2luZG93KGJvb2wgaXNJbldpbmRvdykKIAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRy
YXdzQmFja2dyb3VuZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA4OWNjYWU1NWNiMzRjYWJjZTY4NzkwZDBjYzdmOGIzMmIzYWQ1ZTIwLi4wNmI2
NzEwOTJkYjYxMGY5NDE5ZTc4ODcxZjM4NTQ1MjEyZjE4YzZmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTEtMDkt
MjIgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdL
Mik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5z
aXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5
ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gb3JkZXIgdG8gY3JlYXRlIGEgdGVzdCBmb3IgdGhlIGJ1ZywgSSBoYWQgdG8gdXBkYXRlIERS
VCBhbmQgV0tUUiB0byBjcmVhdGUgc29tZQorICAgICAgICB3aWRnZXQgdGhhdCBhbGxvd3MgZmly
c3QgcmVzcG9uZGVyIHN0YXR1cyB0byBtb3ZlIGF3YXkgZnJvbSB0aGUgbWFpbiB3ZWIgdmlldy4K
KworICAgICAgICBUaHJlZSBtZXRob2RzIHdlcmUgYWRkZWQgdG8gbGF5b3V0VGVzdENvbnRyb2xs
ZXI6IGFkZENocm9tZUlucHV0RmllbGQsCisgICAgICAgIHJlbW92ZUNocm9tZUlucHV0RmllbGQs
IGFuZCBmb2N1c1dlYlZpZXcuIGFkZENocm9tZUlucHV0RmllbGQgYWRkcyBhIHRleHQgZmllbGQK
KyAgICAgICAgdGhhdCBpcyBhIHNpYmxpbmcgdG8gdGhlIHdlYiB2aWV3LCBhbmQgc2V0cyB1cCB0
aGUga2V5IGV2ZW50IGxvb3AgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICByZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkIHJlbW92ZXMgdGhhdCBmaWVsZC4gZm9jdXNXZWJWaWV3IG1vdmVzIGZpcnN0IHJl
c3BvbmRlcgorICAgICAgICBzdGF0dXMgdG8gdGhlIHdlYiB2aWV3LgorCisgICAgICAgIFRoZSB0
ZXN0IG1ha2VzIHRoZSBjYWxsIHZpYSBsYXlvdXRUZXN0Q29udHJvbGxlciBhbmQgcGFzc2VzIGEg
Y2FsbGJhY2sgdGhhdCBpdAorICAgICAgICBhc3N1bWVzIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0
aGUgdGFzayBpcyBjb21wbGV0ZWQuIEluIERSVCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkCisgICAg
ICAgIHN5bmNocm9ub3VzbHkuIEluIFdLVFIgdGhpcyBpcyBoYW5kbGVkIHdpdGggbWVzc2FnZSBw
YXNzaW5nIGJldHdlZW4gdGhlIHR3bworICAgICAgICBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChhZGRDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAocmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENh
bGxiYWNrKToKKyAgICAgICAgKGZvY3VzV2ViVmlld0NhbGxiYWNrKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
Ojpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJv
bWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJv
bWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZp
ZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVs
ZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVs
ZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RD
b250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RBZGRDaHJv
bWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RSZW1vdmVD
aHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RGb2N1
c1dlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y2FsbGJhY2tNYXApOiBD
cmVhdGUgYSBoYXNoIG1hcCB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBjYWxsYmFja3MgcHJvdmlk
ZWQKKyAgICAgICAgdGhyb3VnaCBKUy4KKyAgICAgICAgKFdUUjo6Y2FjaGVMYXlvdXRUZXN0Q29u
dHJvbGxlckNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6Y2FsbExheW91dFRlc3RDb250cm9sbGVy
Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21l
SW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVD
aHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmZv
Y3VzV2ViVmlldyk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsQWRk
Q2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAoV1RS
OjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwOgorICAg
ICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKKyAgICAg
ICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVUZXh0RmllbGQpOgorICAgICAgICAo
V1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZVRleHRGaWVsZCk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcik6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcDoKKyAgICAgICAg
KFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAg
ICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6Cisg
ICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjptYWtlV2ViVmlld0ZpcnN0UmVzcG9u
ZGVyKToKKwogMjAxMS0wOS0xNiAgRWxsaW90IFBvZ2VyICA8ZXBvZ2VyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgYWRkIG5vbi1DRyBXZWJraXQtTWFjIGJ1aWxkcyB0byBmbGFraW5lc3MgZGFzaGJv
YXJkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMmUxYmRiNDkzNjUxNWZhMGYxYmU5ZDYwMTZiZTA2Yzk2N2NiOTJlMy4uMDM2MzkzNjk4M2Q5
MTBhYWRjNjcwNGFjOTk4NTM0YTc1ODUxMTYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjE2MCw2ICsyMTYwLDM2IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkQ2Fs
bGJhY2soSlNDb250ZXh0CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmFkZENocm9tZUlucHV0RmllbGQoKTsKKyAg
ICAvLyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNl
IHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRlZAorICAgIGlmIChhcmd1bWVudENvdW50ID09
IDEpCisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCksIHRoaXNPYmplY3QsIDAsIDAsIDApOworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFs
dWVSZWYgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICBjb250cm9sbGVyLT5yZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgLy8gdGhlIGZpcnN0
IGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgb25jZSB0aGUgaW5wdXQgZmll
bGQgaGFzIGJlZW4gYWRkZWQKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBK
U09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBh
cmd1bWVudHNbMF0sIDApLCB0aGlzT2JqZWN0LCAwLCAwLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGZvY3VzV2Vi
Vmlld0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5mb2N1c1dlYlZp
ZXcoKTsKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBjYWxsYmFjayB0aGF0IGlzIGNh
bGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRlZAorICAgIGlmIChhcmd1bWVu
dENvdW50ID09IDEpCisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCksIHRoaXNPYmplY3QsIDAsIDAs
IDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogLy8g
U3RhdGljIFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjQzNiw2ICsyNDY2LDkg
QEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9u
cygpCiAgICAgICAgIHsgInNldFRleHREaXJlY3Rpb24iLCBzZXRUZXh0RGlyZWN0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiYWxsb3dSb3VuZGluZ0hhY2tzIiwgYWxsb3dSb3VuZGlu
Z0hhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2hvdWxkU3RheU9uUGFnZUFm
dGVySGFuZGxpbmdCZWZvcmVVbmxvYWQiLCBzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGlu
Z0JlZm9yZVVubG9hZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImFkZENocm9tZUlucHV0
RmllbGQiLCBhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIsIHJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJmb2N1c1dlYlZpZXciLCBmb2N1c1dlYlZpZXdDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGQ1Y2ZiYTc3YzNkYzRiODg2YTQwYTZi
NmY1MjkxYmY4NmMxOWRhZDAuLmJhYzhiNGRkYjk4MTJjYTJlMDllOTRkYjgxYzM5YWNjN2Q1OWI4
NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAt
MzE0LDYgKzMxNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJI
YW5kbGluZ0JlZm9yZVVubG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3RheU9uUGFnZUFm
dGVySGFuZGxpbmdCZWZvcmVVbmxvYWQ7IH0KICAgICB2b2lkIHNldFNob3VsZFN0YXlPblBhZ2VB
ZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxp
bmdCZWZvcmVVbmxvYWQpIHsgbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVu
bG9hZCA9IHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkOyB9CiAKKyAg
ICB2b2lkIGFkZENocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0
RmllbGQoKTsKKyAgICB2b2lkIGZvY3VzV2ViVmlldygpOworICAgIAogICAgIHZvaWQgc2V0UE9T
SVhMb2NhbGUoSlNTdHJpbmdSZWYgbG9jYWxlKTsKIAogICAgIHZvaWQgc2V0V2ViVmlld0VkaXRh
YmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAKaW5kZXggYzgxN2IyYjZhY2IzYTU5OWQxMTNjZjI4YmJkYzdhZTJl
ODQwNDA5OS4uMTY0OTExNTJjMDc4NDNjNzIzNmIzNDI3MDAyOWRhZDgwNjlkNTY1MSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC05ODcsMyArOTg3LDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRl
eHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWxsb3dSb3VuZGluZ0hhY2tzKCkKIHsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpmb2N1c1dlYlZpZXcoKQoreworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGY2ZTU0M2ZhZTU2ZWE4
MmEwYzhhYmI5MTMwYTgyMGFlZmY2NWFlMjYuLjEyMTkxOWJlNDI5OGI3Yzk0NTc3MDZlYjAzNjY1
YjQ0MjIxNzFhMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTExNDMsMyArMTE0MywyNSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbk5hbWUp
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CisKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIE5TVGV4dEZpZWxk
KiB0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAxOworICAgIFtbW1ttYWlu
RnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGRd
OworICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgCisgICAgW3RleHRGaWVsZCBzZXROZXh0
S2V5VmlldzpbbWFpbkZyYW1lIHdlYlZpZXddXTsKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBz
ZXROZXh0S2V5Vmlldzp0ZXh0RmllbGRdOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBbW1tbW21haW5GcmFtZSB3ZWJWaWV3
XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzoxXSByZW1vdmVGcm9tU3VwZXJ2aWV3
XTsKKyAgICBmb2N1c1dlYlZpZXcoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Zm9jdXNXZWJWaWV3KCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBtYWtl
Rmlyc3RSZXNwb25kZXI6W21haW5GcmFtZSB3ZWJWaWV3XV07Cit9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYzc4ZmVhNTU1NDIwZTEyOWJhZDI0YzlmNWMxNGM2YjNj
ZGY3YjZjYy4uNWM5N2VlNmM4MTVkMTM0ODJhNzNiMTQ5ODk4ZTRiZjc5Y2I4Mzg1ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCkBAIC0xNTQwLDMgKzE1NDAsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjphbGxvd1JvdW5kaW5nSGFja3MoKQogewogfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldygpCit7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaWRsCmluZGV4IDUyMWFiN2MwYTYwMGNjZTVmY2VjNzMwMmUyYjdi
NDhhYzE3M2Y5N2IuLjUwY2E0NjI2ODc3YjA4YjhjYTRkZTZkYzZlYTYxZGQ3Y2UyNDYyZmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCkBAIC0xMTcsNiAr
MTE3LDExIEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsKGluIGJvb2xlYW4gZmxhZyk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldFNo
b3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKGluIGJvb2xlYW4gZmxhZyk7
CisgICAgICAgIAorICAgICAgICAvLyBGb2N1cyB0ZXN0aW5nLgorICAgICAgICB2b2lkIGFkZENo
cm9tZUlucHV0RmllbGQoaW4gb2JqZWN0IGNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCByZW1vdmVD
aHJvbWVJbnB1dEZpZWxkKGluIG9iamVjdCBjYWxsYmFjayk7CisgICAgICAgIHZvaWQgZm9jdXNX
ZWJWaWV3KGluIG9iamVjdCBjYWxsYmFjayk7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApp
bmRleCBkZDA0NTc4NmI0Y2E2YjRkOTIyZTQxMDI2Y2I0NzM2NjkxMDFiOTRmLi5kZTNkMjUxN2Nl
ZmNlZjFjN2E4MTRlMzg5YWI4YzllMWJiZDAzYjMxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTU4
LDYgKzE1OCwxOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZShXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZwogCiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJDYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRU
ZXN0Q29udHJvbGxlci0+Y2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiQ2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayIpKSB7CisgICAg
ICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2Fs
bGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjayIpKSB7
CisgICAgICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbGxGb2N1c1dlYlZpZXdDYWxsYmFj
aygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGVycm9yTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkVycm9yIikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VC
b2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwpA
QCAtMjQxLDQgKzI1MywyMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0TmV3QmVmb3JlVW5s
b2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVu
ZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIElu
amVjdGVkQnVuZGxlOjpwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJBZGRDaHJvbWVJbnB1dEZpZWxkIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3Nh
Z2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwordm9pZCBJbmplY3RlZEJ1
bmRsZTo6cG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnBvc3RGb2N1c1dlYlZpZXcoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRm9jdXNX
ZWJWaWV3IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1l
LmdldCgpLCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggNTA2
YmVkZjhkMzM5ODBiMTJlMzFkNTMyMmIzOTI2OTAzNGE4NjY3Zi4uMzljNjkyZDQ3YjdhMTQxZTcx
YzY2ZjQ0YTZlMDUzYzJjMWM4YjdjOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtNzMsNiArNzMsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGREdW1wUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1w
UGl4ZWxzOyB9CiAgICAgCiAgICAgdm9pZCBwb3N0TmV3QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUo
Ym9vbCk7CisgICAgdm9pZCBwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgcG9z
dFJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIHBvc3RGb2N1c1dlYlZpZXcoKTsK
IAogcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAppbmRleCAwM2MyN2Y2NTE0NjI3NTcwMzYwOGFiMjhiNzZjZThiOTRkZjE1MGQxLi42MTdk
NWJjMjFlNTE5YzExOGM1YmNjN2ZmMjAzYWJiNzQ4ZTYxN2M5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcApAQCAtNTAwLDQgKzUwMCw2MyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChib29sIHNobwog
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0TmV3QmVmb3JlVW5sb2FkUmV0dXJuVmFs
dWUoIXNob3VsZFN0YXlPblBhZ2UpOwogfQogCit0eXBlZGVmIFdURjo6SGFzaE1hcDx1bnNpZ25l
ZCwgSlNWYWx1ZVJlZj4gQ2FsbGJhY2tNYXA7CitzdGF0aWMgQ2FsbGJhY2tNYXAmIGNhbGxiYWNr
TWFwKCkKK3sKKyAgICBzdGF0aWMgQ2FsbGJhY2tNYXAmIG1hcCA9ICpuZXcgQ2FsbGJhY2tNYXA7
CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIHZvaWQgY2FjaGVMYXlvdXRUZXN0Q29udHJv
bGxlckNhbGxiYWNrKHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAg
IFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVm
IGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsK
KyAgICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBjYWxsYmFjayk7CisgICAgY2FsbGJhY2tNYXAo
KS5hZGQoaW5kZXgsIGNhbGxiYWNrKTsKK30KKworc3RhdGljIHZvaWQgY2FsbExheW91dFRlc3RD
b250cm9sbGVyQ2FsbGJhY2sodW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKCFjYWxsYmFja01h
cCgpLmNvbnRhaW5zKGluZGV4KSkKKyAgICAgICAgcmV0dXJuOworICAgIFdLQnVuZGxlRnJhbWVS
ZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1
bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICBKU09iamVjdFJl
ZiBjYWxsYmFjayA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBjYWxsYmFja01hcCgpLnRha2Uo
aW5kZXgpLCAwKTsKKyAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNr
LCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCksIDAsIDAsIDApOworICAgIEpTVmFs
dWVVbnByb3RlY3QoY29udGV4dCwgY2FsbGJhY2spOworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAg
Y2FjaGVMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDEsIGNhbGxiYWNrKTsKKyAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkucG9zdEFkZENocm9tZUlucHV0RmllbGQoKTsKK30KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVm
IGNhbGxiYWNrKQoreworICAgIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygyLCBj
YWxsYmFjayk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RSZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmll
dyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJD
YWxsYmFjaygzLCBjYWxsYmFjayk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RG
b2N1c1dlYlZpZXcoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEFkZENo
cm9tZUlucHV0RmllbGRDYWxsYmFjaygpCit7CisgICAgY2FsbExheW91dFRlc3RDb250cm9sbGVy
Q2FsbGJhY2soMSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxSZW1vdmVD
aHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29udHJvbGxl
ckNhbGxiYWNrKDIpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsRm9jdXNX
ZWJWaWV3Q2FsbGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNr
KDMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRl
eCA2YTlhMTFlN2I3OWU0ZjAyODczNjI4NTdhN2M5ZTE4NTBkOTBiZjRkLi40ZDdiNjk5MmIyMGM5
Y2JkMjJiZjEwNTU3ODE3NjAyYzc1NGUwMWVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBA
IC0xNzIsNiArMTcyLDEzIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGdsb2JhbEZsYWcoKSBj
b25zdCB7IHJldHVybiBtX2dsb2JhbEZsYWc7IH0KICAgICB2b2lkIHNldEdsb2JhbEZsYWcoYm9v
bCB2YWx1ZSkgeyBtX2dsb2JhbEZsYWcgPSB2YWx1ZTsgfQorICAgIAorICAgIHZvaWQgYWRkQ2hy
b21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0Rmll
bGQoSlNWYWx1ZVJlZik7CisgICAgdm9pZCBmb2N1c1dlYlZpZXcoSlNWYWx1ZVJlZik7CisgICAg
dm9pZCBjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgdm9pZCBjYWxsUmVt
b3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgdm9pZCBjYWxsRm9jdXNXZWJWaWV3
Q2FsbGJhY2soKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdl
YlZpZXcuaAppbmRleCA1ZWJjNDE3ZDZiYjM0YjUzZDA0NTgxZjE5YmM2ZTkxNzE3NmE3YmQ4Li5h
M2ZkYTc1OWE5YTljOTdjNzYzMmM4MGE5MDMyMDI5MGE1ZjMwZjk5IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKIAog
ICAgIFdLUmVjdCB3aW5kb3dGcmFtZSgpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoV0tSZWN0
KTsKKyAgICAKKyAgICB2b2lkIGFkZENocm9tZVRleHRGaWVsZCgpOworICAgIHZvaWQgcmVtb3Zl
Q2hyb21lVGV4dEZpZWxkKCk7CisgICAgdm9pZCBtYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCk7
CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1XS1ZpZXcgbV92aWV3OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBiZTIwMDQ2YTIxYjAxMzUwMTIyOTFkZWMz
N2VlNWJmMTYxMTAxMzQyLi4wNTM5NGE3YzFhZDU3ZGU4OWViN2ViNDA3MmM1MGUxNmY2NWEyNTk4
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMjQ1LDYg
KzI0NSwyNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkuc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoV0tCb29sZWFuR2V0VmFsdWUo
YmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkFkZENo
cm9tZUlucHV0RmllbGQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFp
bldlYlZpZXcoKS0+YWRkQ2hyb21lVGV4dEZpZWxkKCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29u
dGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCku
Y29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJl
bW92ZUNocm9tZUlucHV0RmllbGQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVk
KCkubWFpbldlYlZpZXcoKS0+cmVtb3ZlQ2hyb21lVGV4dEZpZWxkKCk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7Cisg
ICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJGb2N1c1dlYlZpZXciKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2siKSk7Cisg
ICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCmluZGV4IGU1Yjgw
MzhhODY1NjUwMzcxNjhlYWViYTYzMzFkNTlkMWFmZDcxZTAuLjM3MzVkYzVlNmMyZTU4YjliOTgx
ZDQ0M2FjNTU2Nzc4ZGYwNDc2MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Z3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtOTcsNSArOTcsMTcgQEAgdm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFtZSkKICAgICByZXNpemVUbyhmcmFt
ZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6
bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
aW5kZXggYWZmMTBlZDUwNGNhMDg2OWI3ZTBmNTA4ZWU1YTRiMzcyNzc0NmNiZi4uYjc3MjA3Y2Zj
NjE3NDUzNDJkYjY0YzE5OTc3MmY3Mjg4OTNkZjliYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtODAsNCArODAsMjYgQEAgdm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFtZSkKICAgICBbbV93
aW5kb3cgc2V0RnJhbWU6TlNNYWtlUmVjdChmcmFtZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnks
IGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0KSBkaXNwbGF5OllFU107CiB9CiAK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVUZXh0RmllbGQoKQoreworICAgIE5TVGV4
dEZpZWxkKiB0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAxOworICAgIFtb
bV93aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKKyAgICBbdGV4dEZp
ZWxkIHJlbGVhc2VdOworCisgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5VmlldzptX3ZpZXddOwor
ICAgIFttX3ZpZXcgc2V0TmV4dEtleVZpZXc6dGV4dEZpZWxkXTsKK30KKwordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OnJlbW92ZUNocm9tZVRleHRGaWVsZCgpCit7CisgICAgW1tbbV93aW5kb3cgY29u
dGVudFZpZXddIHZpZXdXaXRoVGFnOjFdIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIG1ha2VX
ZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VX
ZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQoreworICAgIFttX3dpbmRvdyBtYWtlRmlyc3RSZXNwb25k
ZXI6bV92aWV3XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAppbmRleCA5ZTIzZDcwZTVlM2My
NjYyOWVmNmJlZGE2OGNmNjA1ZjY1MWYwODQ3Li5hMmY0MzYzNDc0ZGRiZWY4ZTg4M2MwZjZkZjRk
MmU0N2U2YTljZTNmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0
Zm9ybVdlYlZpZXdXaW4uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRm
b3JtV2ViVmlld1dpbi5jcHAKQEAgLTk3LDQgKzk3LDE3IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QpCiAgICAgLy8gSW1wbGVtZW50LgogfQogCisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108414</attachid>
            <date>2011-09-22 15:52:28 -0700</date>
            <delta_ts>2011-09-23 11:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110922155228.patch</filename>
            <type>text/plain</type>
            <size>35787</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MjI0YWVhMzFlOTYyYjQ1ZGMxNmQz
NWEzNDc0MGQ0MzE1NDUzNDljLi41MzNhMmI3ZjdhMmRiMTY5YzA5Zjc0YTg4M2MxZDk2YzE3MzRi
M2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjIgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTEt
MDktMjIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY1MApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNkOWY2YzdhNjI1NGVhY2Y0Y2U0OTQ0M2Q2YzBlYjJh
YjFiMDVlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMt
b3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQxMj4gVGhpcyB0ZXN0IGNo
ZWNrcyB0byBzZWUgaWYgb3B0aW9uKGFsdCktdGFiYmluZyBwcm9wZXJseSBmb2N1c2VzIGZvcm0g
ZWxlbWVudHMgdGhhdCBhcmUgbm9ybWFsbHkgbm90IGZvY3VzZWQuIEZvciB0ZXN0aW5nLCB0aGUg
YXNzdW1wdGlvbiBpcyB0aGF0IGJ5IGRlZmF1bHQgcHJlc3NpbmcgdGFiIHdpbGwgc2tpcCBvdmVy
IGJ1dHRvbnMsIGFuZCBvcHRpb24tdGFiIHdpbGwgaW5jbHVkZSBidXR0b25zLgorCisgIAorVGFi
OgorMDoyCisxOgorMjoyCiszOgorU2hpZnQtdGFiOgorMDoyCisxOgorMjoyCiszOgorT3B0aW9u
LXRhYjoKKzA6MQorMToyCisyOjMKKzM6CitTaGlmdC1vcHRpb24tdGFiOgorMDozCisxOjIKKzI6
MQorMzoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNv
bnRyb2wtb24tcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24t
Y29udHJvbC1vbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIzYjUyOWRmYmNmODY2MmIxYWMyNmNi
YzdiOTc3OGU0M2U3OGI1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzxw
PiZsdDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTImZ3Q7IFRo
aXMgdGVzdCBjaGVja3MgdG8gc2VlIGlmIG9wdGlvbihhbHQpLXRhYmJpbmcgcHJvcGVybHkgZm9j
dXNlcyBmb3JtIGVsZW1lbnRzIHRoYXQgYXJlIG5vcm1hbGx5IG5vdCBmb2N1c2VkLiBGb3IgdGVz
dGluZywgdGhlIGFzc3VtcHRpb24gaXMgdGhhdCBieSBkZWZhdWx0IHByZXNzaW5nIHRhYiB3aWxs
IHNraXAgb3ZlciBidXR0b25zLCBhbmQgb3B0aW9uLXRhYiB3aWxsIGluY2x1ZGUgYnV0dG9ucy48
L3A+Cis8aHI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiAgICAgICAgICAgICAgICAgICAgICAgIG9u
Zm9jdXM9ImxvZygxKSIgdmFsdWU9ImJ1dHRvbiI+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRl
eHRGaWVsZCIgICAgICAgICAgIG9uZm9jdXM9ImxvZygyKSIgdmFsdWU9InRleHQiPgorPGlucHV0
IHR5cGU9ImJ1dHRvbiIgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPSJsb2coMykiIHZh
bHVlPSJidXR0b24iPgorPGhyPgorPHAgaWQ9ImxvZyI+PC9wPgorCis8c2NyaXB0PgorCitmdW5j
dGlvbiBsb2coc3RyKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5l
ckhUTUwgKz0gc3RyOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkQ2hyb21l
SW5wdXRGaWVsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKHN0YXJ0VGVzdCk7
Cit9CisKK3ZhciBpdGVyYXRpb24gPSAwOwordmFyIG1vZGlmaWVyczsKK2Z1bmN0aW9uIHN0YXJ0
VGVzdCgpIHsKKyAgICBsb2coIlRhYjoiKTsKKyAgICBtb2RpZmllcnMgPSB1bmRlZmluZWQ7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bGF5b3V0VGVzdENvbnRyb2xsZXIucmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZChub3RpZnlEb25lKX0sIDIwMDApOworfQorCitmdW5jdGlvbiBydW5LZXlQcmVz
c2VzKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIGxvZygi
PGJyLz4iICsgaSArICI6Iik7CisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlx0IiwgbW9k
aWZpZXJzKTsKKyAgICB9CisgICAgCisgICAgaXRlcmF0aW9uKys7CisgICAgc3dpdGNoIChpdGVy
YXRpb24pIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgbG9nKCI8YnIvPlNoaWZ0LXRh
YjoiKTsKKyAgICAgICAgICAgIG1vZGlmaWVycyA9IFsic2hpZnRLZXkiXTsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2ViVmlldyhydW5LZXlQcmVzc2VzKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBsb2coIjxici8+T3B0
aW9uLXRhYjoiKTsKKyAgICAgICAgICAgIG1vZGlmaWVycyA9IFsiYWx0S2V5Il07CisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgbG9nKCI8YnIv
PlNoaWZ0LW9wdGlvbi10YWI6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5
IiwgImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJW
aWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQo
bm90aWZ5RG9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG5v
dGlmeURvbmUoKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGRhZjIwYjA5Mjk2YWMxMzA4NmNhMTJkMTg5YmQ2MDE4
MzcwMWM0NC4uODA4NTYzMGIwMGJmYmE3YWE1NjgwMmM5NjNmNTc5Yjk1MmQ1ZmQwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTA5LTIyICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQtKW9wdGlvbi10YWJiaW5n
IHNraXBzIG92ZXIgZWxlbWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gY2hyb21lIHRvIHdl
YnZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NDEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdLMSBzZXRJbml0aWFsRm9jdXMoKSBp
cyBjYWxsZWQgb24gRm9jdXNDb250cm9sbGVyIHdpdGggdGhlIGtleSBldmVudCB0aGF0CisgICAg
ICAgIGNhdXNlZCB0aGUgd2ViIHZpZXcgdG8gYmVjb21lIGZpcnN0IHJlc3BvbmRlci4gSW4gV0sy
IG5vIGV2ZW50IGlzIHNlbnQuIFNvIGlmCisgICAgICAgIHRoZSBrZXkgc3Ryb2tlIHRoYXQgY2F1
c2VkIHRoZSBjaGFuZ2UgaW4gZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBjb250YWlucyB0aGUKKyAg
ICAgICAgb3B0aW9uIG1vZGlmaWVyIGtleSwgRm9jdXNDb250cm9sbGVyIGRpZCBub3Qga25vdyB0
aGF0IGl0IGhhZCB0byBzd2l0Y2ggYmVoYXZpb3IuCisKKyAgICAgICAgQmVjYXVzZSB0aGVyZSBh
cmUgbXVsdGlwbGUgd2F5cyB0aGF0IHRoZSBXS1ZpZXcgY2FuIGJlY29tZUZpcnN0UmVzcG9uZGVy
LCBJIGNoYW5nZWQKKyAgICAgICAgdGhlIHNpZ25hdHVyZSB0byBzZXRJbml0aWFsRm9jdXMgdG8g
ZXhwcmVzcyB3aGV0aGVyIHRoZSBrZXkgZXZlbnQgcGFyYW1ldGVyIGlzIGFuCisgICAgICAgIGFj
dHVhbCBrZXkgZXZlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06
CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBUYWtlIHRoZSBOU0Fw
cCBjdXJyZW50RXZlbnQgYW5kIHBhc3MgaXQgYWxvbmcgaWYKKyAgICAgICAgdGhlIGV2ZW50IGlz
IGEga2V5Ym9hcmQgZXZlbnQsIG90aGVyd2lzZSBwYXNzIGFuIGVtcHR5IGV2ZW50LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldEluaXRpYWxGb2N1cyk6IENoYW5nZSBpbiBmdW5jdGlvbiBzaWduYXR1cmUgdG8g
Y29uZmlybSB0aGF0CisgICAgICAgIHRoZSBldmVudCB0aGF0IGNhdXNlZCB0aGUgaW5pdGlhbCBm
b2N1cyB3YXMgYSBrZXlib2FyZCBldmVudCwgYW5kIHByb3ZpZGUgdGhlIGtleWJvYXJkCisgICAg
ICAgIGV2ZW50IGl0c2VsZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6IElmIHdlIGtub3cgdGhhdCB0aGUgY2F1
c2Ugb2YgdGhpcyB3YXMgYSBrZXlib2FyZAorICAgICAgICBldmVudCwgd2UgcGFzcyB0aGF0IGV2
ZW50IHRvIHRoZSBGb2N1c0NvbnRyb2xsZXIuIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhl
IG9yaWdpbmFsCisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBpcyB0byBwYXNzIG5vIGV2ZW50IGF0
IGFsbC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDExLTA5LTIyICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFVJUHJv
Y2VzcyBzaG91bGQgY2hlY2sgdGhhdCBXZWJQcm9jZXNzIGlzbid0IHNlbmRpbmcgdW5leHBlY3Rl
ZCBmaWxlOiBVUkxzIHRvIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KaW5kZXggMGI4OGQzMjRhNTliNmU1NTg1NzY4MTk1MGM0ZGM0ZTk0N2QyNWE1OS4uYjYw
YzgzYzQ2NGQzMzY3YjQ3ZDMyMGQxYWRjYzE1OWQxN2FmOTQ0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzA0LDE3ICszMDQsMjEgQEAgc3RydWN0
IFdLVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogLSAoQk9PTCliZWNvbWVGaXJz
dFJlc3BvbmRlcgogewogICAgIE5TU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFtbc2Vs
ZiB3aW5kb3ddIGtleVZpZXdTZWxlY3Rpb25EaXJlY3Rpb25dOwotCisgICAgCiAgICAgX2RhdGEt
Pl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gdHJ1ZTsKICAgICAKICAgICBbc2VsZiBfdXBkYXRl
U2VjdXJlSW5wdXRTdGF0ZV07CiAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
V2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKLQorICAgIAogICAgIF9kYXRhLT5faW5CZWNv
bWVGaXJzdFJlc3BvbmRlciA9IGZhbHNlOwotCi0gICAgaWYgKGRpcmVjdGlvbiAhPSBOU0RpcmVj
dFNlbGVjdGlvbikKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5zZXRJbml0aWFsRm9jdXMoZGlyZWN0
aW9uID09IE5TU2VsZWN0aW5nTmV4dCk7Ci0KKyAgICAKKyAgICBpZiAoZGlyZWN0aW9uICE9IE5T
RGlyZWN0U2VsZWN0aW9uKSB7CisgICAgICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TQXBwIGN1cnJl
bnRFdmVudF07CisgICAgICAgIGJvb2wgYmVjb21pbmdGaXJzdFJlc3BvbmRlckZyb21LZXlib2Fy
ZCA9IFtldmVudCB0eXBlXSA9PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5VXA7
CisgICAgICAgIGlmICghYmVjb21pbmdGaXJzdFJlc3BvbmRlckZyb21LZXlib2FyZCkKKyAgICAg
ICAgICAgIGV2ZW50ID0gbmlsOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1
cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0LCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJv
bUtleWJvYXJkLCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2ZW50LCBzZWxmKSk7CisgICAgfQog
ICAgIHJldHVybiBZRVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggN2Q4ZDRjMmRlNGRlNmQyN2M4NTU3MWY3MjE5OWFhMTdmYmRiZDhiNC4uN2Jh
ZGI3YjUwMGUzNGMyODBmZDgyZjFkNWI2ZTExYjQ1OTU5NDc1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcwMCwxMSArNzAwLDExIEBAIEludFNpemUg
V2ViUGFnZVByb3h5Ojp2aWV3U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC0+
dmlld1NpemUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29s
IGZvcndhcmQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5
Ym9hcmRFdmVudCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndh
cmQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZl
bnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRXaW5kb3dSZXNpemVy
U2l6ZShjb25zdCBJbnRTaXplJiB3aW5kb3dSZXNpemVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyYTljY2I3MjczNzcwOGE2MDU2YTU1YjI1NjE1MTUw
NzEyOGY4MzQzLi40NzBiNjQwOWEyNzZhYWEwMjM1MTFkYWUxNzE5MDgxYjJiNWViNTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNjIsNyArMjYyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZp
ZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCk7
CisgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRF
dmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRXaW5kb3dS
ZXNpemVyU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgCiAgICAgdm9pZCBjbGVh
clNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5k
ZXggMGEyZjViYTU0Mzk1OTM5NDAyYTEyYTg4MmU2MjVlNTM4MDY4MGJlOS4uOTI5Y2Q1ZWRhYTBj
ZTBjMjg5MzA2NjAyZWZjMWY5NjQ4MWVkZjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuY3BwCkBAIC0xMDY4LDkgKzEwNjgsOSBAQCB2b2lkIFdlYlZpZXc6OnNldE92
ZXJyaWRlQ3Vyc29yKEhDVVJTT1Igb3ZlcnJpZGVDdXJzb3IpCiAgICAgdXBkYXRlTmF0aXZlQ3Vy
c29yKCk7CiB9CiAKLXZvaWQgV2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkK
K3ZvaWQgV2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJv
YXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7Ci0gICAgbV9w
YWdlLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCk7CisgICAgbV9wYWdlLT5zZXRJbml0aWFsRm9j
dXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGV2ZW50KTsKIH0KIAogdm9pZCBXZWJW
aWV3OjpzZXRTY3JvbGxPZmZzZXRPbk5leHRSZXNpemUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zm
c2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAppbmRleCA2NzE1ODFkN2Vj
NDVhNDk2MDg4MjE4OTNhOGEzZDc5NWNlYjI5YmE1Li5iZGMwN2VmYTdjZWJmN2U2MzZhYjRhMjA2
Yjk2YzRjMTc5MzE3MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaApA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwog
ICAgIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0T3ZlcnJpZGVDdXJzb3Io
SENVUlNPUik7Ci0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKTsKKyAgICB2
b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFs
aWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIHNldFNjcm9sbE9mZnNldE9u
TmV4dFJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRGaW5kSW5k
aWNhdG9yQ2FsbGJhY2soV0tWaWV3RmluZEluZGljYXRvckNhbGxiYWNrLCB2b2lkKik7CiAgICAg
V0tWaWV3RmluZEluZGljYXRvckNhbGxiYWNrIGdldEZpbmRJbmRpY2F0b3JDYWxsYmFjayh2b2lk
KiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGExZjAwYWU1NjE2MGNiMjY0NDNlMGRhN2E0MDIxMjJiNTA2MjZiYzQuLjNiMDM1NmJlMDgw
ODQ3MjMzODgyY2I5OTUzOGMzNWU1YTc3YmE1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMTEsMTQgKzEzMTEsMjEgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRGb2N1c2VkKGJvb2wgaXNGb2N1c2VkKQogICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEZvY3VzZWQoaXNGb2N1c2VkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRJ
bml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQordm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMo
Ym9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgCiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgZnJhbWUt
PmRvY3VtZW50KCktPnNldEZvY3VzZWROb2RlKDApOwotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDog
Rm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgMCk7CisKKyAgICBpZiAoaXNLZXlib2FyZEV2ZW50VmFs
aWQgJiYgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CisgICAgICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7CisgICAgICAg
IHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNl
dEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJl
Y3Rpb25CYWNrd2FyZCwgS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGZyYW1l
LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9j
dXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgMCk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6c2V0V2luZG93UmVzaXplclNpemUoY29uc3QgSW50U2l6ZSYgd2luZG93UmVz
aXplclNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBjYmI4OGZlOTA0YzgxYjg3MGYwY2M1ZTllMDI5MzMxNjc0NmQxMjYzLi40ZDY0ZWI0NTM1
OWVmMWMyNGEwNzljYTRlZDQ3MmRmOGJmZGU4NWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9v
bCk7CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOwotICAgIHZvaWQgc2V0SW5pdGlhbEZvY3Vz
KGJvb2wpOworICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tl
eWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgc2V0
V2luZG93UmVzaXplclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0
SXNJbldpbmRvdyhib29sKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcm
LCB1aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGMyNmYyZTM3Mzk2MTNjNzBmZDExNTgxZjA1M2Nh
YTBkNjBhMWQwYjYuLjcwZTRmNWY0YmNjOGEyZWFkMzk4NDUxNmE5MzlkZjlhNjNlOGQzZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBT
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgU2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCi0gICAg
U2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKKyAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBm
b3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZl
bnQgZXZlbnQpCiAgICAgU2V0SXNJbldpbmRvdyhib29sIGlzSW5XaW5kb3cpCiAKICAgICBTZXRE
cmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjNlMDcyNzM0MzEyYjM1Y2RkMjEyMzMw
OTBjMGI3MWE5ODc2NjU5MC4uZTk4NTBjNWQzYzRhZTc4YmFlMTIwNjJmODAyNGRjNmRiOTNiNGU2
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc4IEBACisyMDExLTA5LTIyICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQtKW9wdGlvbi10YWJiaW5nIHNraXBzIG92
ZXIgZWxlbWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gY2hyb21lIHRvIHdlYnZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNyZWF0ZSBhIHRlc3QgZm9yIHRoZSBi
dWcsIEkgaGFkIHRvIHVwZGF0ZSBEUlQgYW5kIFdLVFIgdG8gY3JlYXRlIHNvbWUKKyAgICAgICAg
d2lkZ2V0IHRoYXQgYWxsb3dzIGZpcnN0IHJlc3BvbmRlciBzdGF0dXMgdG8gbW92ZSBhd2F5IGZy
b20gdGhlIG1haW4gd2ViIHZpZXcuCisKKyAgICAgICAgVGhyZWUgbWV0aG9kcyB3ZXJlIGFkZGVk
IHRvIGxheW91dFRlc3RDb250cm9sbGVyOiBhZGRDaHJvbWVJbnB1dEZpZWxkLAorICAgICAgICBy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkLCBhbmQgZm9jdXNXZWJWaWV3LiBhZGRDaHJvbWVJbnB1dEZp
ZWxkIGFkZHMgYSB0ZXh0IGZpZWxkCisgICAgICAgIHRoYXQgaXMgYSBzaWJsaW5nIHRvIHRoZSB3
ZWIgdmlldywgYW5kIHNldHMgdXAgdGhlIGtleSBldmVudCBsb29wIGJldHdlZW4gdGhlIHR3by4K
KyAgICAgICAgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCByZW1vdmVzIHRoYXQgZmllbGQuIGZvY3Vz
V2ViVmlldyBtb3ZlcyBmaXJzdCByZXNwb25kZXIKKyAgICAgICAgc3RhdHVzIHRvIHRoZSB3ZWIg
dmlldy4KKworICAgICAgICBUaGUgdGVzdCBtYWtlcyB0aGUgY2FsbCB2aWEgbGF5b3V0VGVzdENv
bnRyb2xsZXIgYW5kIHBhc3NlcyBhIGNhbGxiYWNrIHRoYXQgaXQKKyAgICAgICAgYXNzdW1lcyB3
aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHRhc2sgaXMgY29tcGxldGVkLiBJbiBEUlQgdGhlIGNh
bGxiYWNrIGlzIGNhbGxlZAorICAgICAgICBzeW5jaHJvbm91c2x5LiBJbiBXS1RSIHRoaXMgaXMg
aGFuZGxlZCB3aXRoIG1lc3NhZ2UgcGFzc2luZyBiZXR3ZWVuIHRoZSB0d28KKyAgICAgICAgcHJv
Y2Vzc2VzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoYWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKHJl
bW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAgICAgIChmb2N1c1dlYlZpZXdDYWxs
YmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmZvY3VzV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpwb3N0Rm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OmNhbGxiYWNrTWFwKTogQ3JlYXRlIGEgaGFzaCBtYXAgdGhhdCBrZWVwcyB0cmFjayBv
ZiB0aGUgY2FsbGJhY2tzIHByb3ZpZGVkCisgICAgICAgIHRocm91Z2ggSlMuCisgICAgICAgIChX
VFI6OmNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OmNh
bGxMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6Okxh
eW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAoV1RSOjpMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Y2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAgICAg
IChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENh
bGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxGb2N1c1dl
YlZpZXdDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZv
cm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJv
bWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJv
bWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmll
d0ZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9y
bVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21l
SW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdG
aXJzdFJlc3BvbmRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1X
ZWJWaWV3V2luLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENo
cm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVt
b3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVy
OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKwogMjAxMS0wOS0yMiAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEZpbmRTYWZhcmkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAyZTFiZGI0OTM2
NTE1ZmEwZjFiZTlkNjAxNmJlMDZjOTY3Y2I5MmUzLi4wMzYzOTM2OTgzZDkxMGFhZGM2NzA0YWM5
OTg1MzRhNzU4NTExNjE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0yMTYwLDYgKzIxNjAsMzYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWRDYWxsYmFjayhKU0NvbnRl
eHQKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIGFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
CisgICAgY29udHJvbGxlci0+YWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIC8vIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlucHV0IGZp
ZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAg
SlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwg
YXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiByZW1vdmVD
aHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXIt
PnJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQgaXMg
YSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBh
ZGRlZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIEpTT2JqZWN0Q2FsbEFz
RnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
MCksIHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZm9jdXNXZWJWaWV3Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmZvY3VzV2ViVmlldygpOworICAgIC8v
IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhl
IGlucHV0IGZpZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkK
KyAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3Qo
Y29udGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBTdGF0aWMgVmFsdWVz
CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDM2LDYgKzI0NjYsOSBAQCBKU1N0YXRpY0Z1
bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAg
eyAic2V0VGV4dERpcmVjdGlvbiIsIHNldFRleHREaXJlY3Rpb25DYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJhbGxvd1JvdW5kaW5nSGFja3MiLCBhbGxvd1JvdW5kaW5nSGFja3NDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0Jl
Zm9yZVVubG9hZCIsIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2Fk
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYWRkQ2hyb21lSW5wdXRGaWVsZCIsIGFkZENo
cm9tZUlucHV0RmllbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJyZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkIiwgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgImZvY3VzV2ViVmlldyIsIGZvY3VzV2ViVmlld0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKaW5kZXggZDVjZmJhNzdjM2RjNGI4ODZhNDBhNmI2ZjUyOTFiZjg2YzE5
ZGFkMC4uYmFjOGI0ZGRiOTgxMmNhMmUwOWU5NGRiODFjMzlhY2M3ZDU5Yjg1MSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMTQsNiArMzE0LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3Jl
VW5sb2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0Jl
Zm9yZVVubG9hZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdC
ZWZvcmVVbmxvYWQoYm9vbCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9h
ZCkgeyBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkID0gc2hvdWxk
U3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQ7IH0KIAorICAgIHZvaWQgYWRkQ2hy
b21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAg
IHZvaWQgZm9jdXNXZWJWaWV3KCk7CisgICAgCiAgICAgdm9pZCBzZXRQT1NJWExvY2FsZShKU1N0
cmluZ1JlZiBsb2NhbGUpOwogCiAgICAgdm9pZCBzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcAppbmRleCBjODE3YjJiNmFjYjNhNTk5ZDExM2NmMjhiYmRjN2FlMmU4NDA0MDk5Li4xNjQ5
MTE1MmMwNzg0M2M3MjM2YjM0MjcwMDI5ZGFkODA2OWQ1NjUxIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTk4Nywz
ICs5ODcsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihK
U1N0cmluZ1JlZiBkaXJlY3Rpb24pCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphbGxvd1Jv
dW5kaW5nSGFja3MoKQogewogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJv
bWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
Q2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZv
Y3VzV2ViVmlldygpCit7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMzEwZGFmYTQ1Mzk3ZmZmOTBjOTE4NWQ3MmVj
ZjA2YmIyZGQ0NTFhOC4uZDYwNjlkZGJkYmRhZTk4YTUxMGU4M2YxMGM1YWU5ZDhlOWVmNTdkYSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQpAQCAtMTIwMiwzICsxMjAyLDI1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7CisgICAgTlNUZXh0RmllbGQqIHRleHRGaWVsZCA9
IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAs
IDIwKV07CisgICAgdGV4dEZpZWxkLnRhZyA9IDE7CisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3
XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZF07CisgICAgW3RleHRG
aWVsZCByZWxlYXNlXTsKKyAgICAKKyAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OlttYWlu
RnJhbWUgd2ViVmlld11dOworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldE5leHRLZXlWaWV3
OnRleHRGaWVsZF07Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9t
ZUlucHV0RmllbGQoKQoreworICAgIFtbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gY29u
dGVudFZpZXddIHZpZXdXaXRoVGFnOjFdIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIGZvY3Vz
V2ViVmlldygpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXco
KQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRl
cjpbbWFpbkZyYW1lIHdlYlZpZXddXTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGM3OGZlYTU1NTQyMGUxMjli
YWQyNGM5ZjVjMTRjNmIzY2RmN2I2Y2MuLjVjOTdlZTZjODE1ZDEzNDgyYTczYjE0OTg5OGU0YmY3
OWNiODM4NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcApAQCAtMTU0MCwzICsxNTQwLDE1IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWxsb3dSb3VuZGluZ0hhY2tzKCkKIHsKIH0KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcoKQoreworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlv
dXRUZXN0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCA1MjFhYjdjMGE2MDBj
Y2U1ZmNlYzczMDJlMmI3YjQ4YWMxNzNmOTdiLi41MGNhNDYyNjg3N2IwOGI4Y2E0ZGU2ZGM2ZWE2
MWRkN2NlMjQ2MmZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVy
LmlkbApAQCAtMTE3LDYgKzExNywxMSBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBzZXRX
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChpbiBib29sZWFuIGZsYWcpOwogICAgICAgICAKICAg
ICAgICAgdm9pZCBzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChp
biBib29sZWFuIGZsYWcpOworICAgICAgICAKKyAgICAgICAgLy8gRm9jdXMgdGVzdGluZy4KKyAg
ICAgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKGluIG9iamVjdCBjYWxsYmFjayk7CisgICAg
ICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChpbiBvYmplY3QgY2FsbGJhY2spOworICAg
ICAgICB2b2lkIGZvY3VzV2ViVmlldyhpbiBvYmplY3QgY2FsbGJhY2spOwogICAgIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggZGQwNDU3ODZiNGNhNmI0ZDkyMmU0MTAyNmNiNDczNjY5MTAx
Yjk0Zi4uZGUzZDI1MTdjZWZjZWYxYzdhODE0ZTM4OWFiOGM5ZTFiYmQwM2IzMSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTE1OCw2ICsxNTgsMTggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWcKIAog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayIpKSB7Cisg
ICAgICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2Fs
bGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2Fs
bGJhY2siKSkgeworICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsUmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRm9jdXNXZWJW
aWV3Q2FsbGJhY2siKSkgeworICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsRm9j
dXNXZWJWaWV3Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gZXJyb3JNZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiVW5rbm93biIpKTsKQEAgLTI0MSw0ICsyNTMsMjIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUpCiAgICAgV0tCdW5kbGVQ
b3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
KTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdEFkZENocm9tZUlucHV0RmllbGQoKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKTsKKyAgICBX
S0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW92ZUNocm9tZUlucHV0RmllbGQiKSk7CisgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2
b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0Rm9jdXNXZWJWaWV3KCkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkZvY3VzV2ViVmlldyIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVu
ZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCmluZGV4IDUwNmJlZGY4ZDMzOTgwYjEyZTMxZDUzMjJiMzkyNjkwMzRhODY2N2YuLjM5
YzY5MmQ0N2I3YTE0MWU3MWM2NmY0NGE2ZTA1M2MyYzFjOGI3YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAg
LTczLDYgKzczLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRHVtcFBpeGVscygpIGNvbnN0
IHsgcmV0dXJuIG1fZHVtcFBpeGVsczsgfQogICAgIAogICAgIHZvaWQgcG9zdE5ld0JlZm9yZVVu
bG9hZFJldHVyblZhbHVlKGJvb2wpOworICAgIHZvaWQgcG9zdEFkZENocm9tZUlucHV0RmllbGQo
KTsKKyAgICB2b2lkIHBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0
Rm9jdXNXZWJWaWV3KCk7CiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGUoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDNjMjdmNjUxNDYyNzU3MDM2MDhhYjI4Yjc2Y2U4
Yjk0ZGYxNTBkMS4uNjE3ZDViYzIxZTUxOWMxMThjNWJjYzdmZjIwM2FiYjc0OGU2MTdjOSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTUwMCw0ICs1MDAsNjMgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoYm9vbCBzaG8KICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucG9zdE5ld0JlZm9y
ZVVubG9hZFJldHVyblZhbHVlKCFzaG91bGRTdGF5T25QYWdlKTsKIH0KIAordHlwZWRlZiBXVEY6
Okhhc2hNYXA8dW5zaWduZWQsIEpTVmFsdWVSZWY+IENhbGxiYWNrTWFwOworc3RhdGljIENhbGxi
YWNrTWFwJiBjYWxsYmFja01hcCgpCit7CisgICAgc3RhdGljIENhbGxiYWNrTWFwJiBtYXAgPSAq
bmV3IENhbGxiYWNrTWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyB2b2lkIGNhY2hl
TGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayh1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZVJlZiBj
YWxsYmFjaykKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFn
ZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOwor
ICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KG1haW5GcmFtZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgY2FsbGJhY2spOwor
ICAgIGNhbGxiYWNrTWFwKCkuYWRkKGluZGV4LCBjYWxsYmFjayk7Cit9CisKK3N0YXRpYyB2b2lk
IGNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKHVuc2lnbmVkIGluZGV4KQoreworICAg
IGlmICghY2FsbGJhY2tNYXAoKS5jb250YWlucyhpbmRleCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7
CisgICAgSlNPYmplY3RSZWYgY2FsbGJhY2sgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgY2Fs
bGJhY2tNYXAoKS50YWtlKGluZGV4KSwgMCk7CisgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihj
b250ZXh0LCBjYWxsYmFjaywgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCAwLCAw
LCAwKTsKKyAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRleHQsIGNhbGxiYWNrKTsKK30KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmIGNh
bGxiYWNrKQoreworICAgIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygxLCBjYWxs
YmFjayk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RBZGRDaHJvbWVJbnB1dEZp
ZWxkKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0
RmllbGQoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9s
bGVyQ2FsbGJhY2soMiwgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
b3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpmb2N1c1dlYlZpZXcoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91
dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMywgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wb3N0Rm9jdXNXZWJWaWV3KCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKQoreworICAgIGNhbGxMYXlv
dXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDEpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpjYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5
b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygyKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5b3V0VGVzdENv
bnRyb2xsZXJDYWxsYmFjaygzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKaW5kZXggNmE5YTExZTdiNzllNGYwMjg3MzYyODU3YTdjOWUxODUwZDkwYmY0
ZC4uNGQ3YjY5OTJiMjBjOWNiZDIyYmYxMDU1NzgxNzYwMmM3NTRlMDFlZCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaApAQCAtMTcyLDYgKzE3MiwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCBnbG9iYWxGbGFnKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBz
ZXRHbG9iYWxGbGFnKGJvb2wgdmFsdWUpIHsgbV9nbG9iYWxGbGFnID0gdmFsdWU7IH0KKyAgICAK
KyAgICB2b2lkIGFkZENocm9tZUlucHV0RmllbGQoSlNWYWx1ZVJlZik7CisgICAgdm9pZCByZW1v
dmVDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYpOworICAgIHZvaWQgZm9jdXNXZWJWaWV3KEpT
VmFsdWVSZWYpOworICAgIHZvaWQgY2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOwor
ICAgIHZvaWQgY2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgIHZvaWQg
Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggNDY0NDkwYjdhZGU0MWVlOTUxZTJkNmY3NWQ3
NDkwY2RkZTU0NGE0Zi4uYzEyMmE4NmJiZDhmZDY4NjAwZGQyMmY2YWM4MTU5MzBhZjZiNTVhZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC03MSw2ICs3MSwx
MCBAQCBwdWJsaWM6CiAKICAgICBXS1JlY3Qgd2luZG93RnJhbWUoKTsKICAgICB2b2lkIHNldFdp
bmRvd0ZyYW1lKFdLUmVjdCk7CisgICAgCisgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKCk7
CisgICAgdm9pZCByZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBtYWtlV2ViVmll
d0ZpcnN0UmVzcG9uZGVyKCk7CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1XS1ZpZXcgbV92aWV3
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBiZTIwMDQ2
YTIxYjAxMzUwMTIyOTFkZWMzN2VlNWJmMTYxMTAxMzQyLi4zNWZjODIzODUwODAwNjAwOWEyOWRl
NWJlMmQ1MTdkMThhNDkyNzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcApAQCAtMjQ1LDYgKzI0NSwyNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUo
V0tCb29sZWFuR2V0VmFsdWUoYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIkFkZENocm9tZUlucHV0RmllbGQiKSkgeworICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+YWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNr
IikpOworICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENv
bnRyb2xsZXI6OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJSZW1vdmVDaHJvbWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnJlbW92ZUNocm9tZUlucHV0Rmll
bGQoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbFJlbW92ZUNocm9tZUlucHV0
RmllbGRDYWxsYmFjayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkZvY3VzV2ViVmlldyIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5tYWtlV2ViVmlld0Zp
cnN0UmVzcG9uZGVyKCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxGb2N1c1dl
YlZpZXdDYWxsYmFjayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1X
ZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmll
d0d0ay5jcHAKaW5kZXggZTViODAzOGE4NjU2NTAzNzE2OGVhZWJhNjMzMWQ1OWQxYWZkNzFlMC4u
MzczNWRjNWU2YzJlNThiOWI5ODFkNDQzYWM1NTY3NzhkZjA0NzYwNiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCkBAIC05Nyw1ICs5
NywxNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1l
KQogICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0KTsKIH0K
IAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQorCit2
b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3Zv
aWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RSCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Bs
YXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBhZmYxMGVkNTA0Y2EwODY5YjdlMGY1MDhlZTVhNGIz
NzI3NzQ2Y2JmLi41MzQyNjQzMDdkZjcyZmEyMGQzZTQ5NjA0YTkzNThiNTNiMGQ0NzdiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBA
IC04MCw0ICs4MCwyNiBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tS
ZWN0IGZyYW1lKQogICAgIFttX3dpbmRvdyBzZXRGcmFtZTpOU01ha2VSZWN0KGZyYW1lLm9yaWdp
bi54LCBmcmFtZS5vcmlnaW4ueSwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQp
IGRpc3BsYXk6WUVTXTsKIH0KIAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0
RmllbGQoKQoreworICAgIE5TVGV4dEZpZWxkKiB0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldOworICAgIHRleHRG
aWVsZC50YWcgPSAxOworICAgIFtbbV93aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4
dEZpZWxkXTsKKyAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOworCisgICAgW3RleHRGaWVsZCBzZXRO
ZXh0S2V5VmlldzptX3ZpZXddOworICAgIFttX3ZpZXcgc2V0TmV4dEtleVZpZXc6dGV4dEZpZWxk
XTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQor
eworICAgIFtbW21fd2luZG93IGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzoxXSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKyAgICBtYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKKyAgICBbbV93
aW5kb3cgbWFrZUZpcnN0UmVzcG9uZGVyOm1fdmlld107Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
UgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3
V2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5j
cHAKaW5kZXggOWUyM2Q3MGU1ZTNjMjY2MjllZjZiZWRhNjhjZjYwNWY2NTFmMDg0Ny4uYTJmNDM2
MzQ3NGRkYmVmOGU4ODNjMGY2ZGY0ZDJlNDdlNmE5Y2UzZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCkBAIC05Nyw0ICs5NywxNyBA
QCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0KQogICAgIC8vIElt
cGxlbWVudC4KIH0KIAorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1
dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1ha2VXZWJW
aWV3Rmlyc3RSZXNwb25kZXIoKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108497</attachid>
            <date>2011-09-23 11:23:27 -0700</date>
            <delta_ts>2011-09-26 14:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110923112328.patch</filename>
            <type>text/plain</type>
            <size>43318</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MjI0YWVhMzFlOTYyYjQ1ZGMxNmQz
NWEzNDc0MGQ0MzE1NDUzNDljLi5hOWJjMzZjNjQwM2QxYWY1NmIzNjk4MTA1ZjZiZmE4N2FmZmYx
MjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjMgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5q
czogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuS2V5UHJlc3Nlcyk6
CisgICAgICAgIChub3RpZnlEb25lKToKKyAgICAgICAgKGxvZyk6CisKIDIwMTEtMDktMjIgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY1MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2FhMWRmNmYyMWIyMGE0M2JlNzZhOGM2MjAyYzkzZGZhODcwMjhlNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNv
bnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAoraHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyIC0gVGhpcyB0ZXN0IGNoZWNrcyB0byBz
ZWUgaWYgb3B0aW9uKGFsdCktdGFiYmluZyBwcm9wZXJseSBmb2N1c2VzIGZvcm0gZWxlbWVudHMg
dGhhdCBhcmUgbm9ybWFsbHkgbm90IGZvY3VzZWQuIEZvciB0ZXN0aW5nLCB0aGUgYXNzdW1wdGlv
biBpcyB0aGF0IGJ5IGRlZmF1bHQgcHJlc3NpbmcgdGFiIHdpbGwgc2tpcCBvdmVyIGJ1dHRvbnMs
IGFuZCBvcHRpb24tdGFiIHdpbGwgaW5jbHVkZSBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworICAKK1ByZXNzaW5nIHRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMg
IiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiCitQ
cmVzc2luZyBzaGlmdC10YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNlZCB0
ZXh0IGZpZWxkIC8yOiAvMzpmb2N1c2VkIHRleHQgZmllbGQgLzQ6IgorUHJlc3Npbmcgb3B0aW9u
LXRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAv
Mjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiIKK1ByZXNz
aW5nIHNoaWZ0LW9wdGlvbi10YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNl
ZCBzZWNvbmQgYnV0dG9uIC8yOmZvY3VzZWQgdGV4dCBmaWVsZCAvMzpmb2N1c2VkIGZpcnN0IGJ1
dHRvbiAvNDoiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0
aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb2N1cy1v
cHRpb24tY29udHJvbC1vbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMzNmNhYzE2ZDNjYzg4ODVj
MTJmYTRlZWY3MDdhYTZlMGVkNzQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8aW5wdXQgdHlw
ZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgZmlyc3QgYnV0dG9uJykiIHZhbHVlPSIx
Ij4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgdGV4dCBmaWVsZCcp
IiB2YWx1ZT0iMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQg
c2Vjb25kIGJ1dHRvbicpIiB2YWx1ZT0iMyI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2Uu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29u
dHJvbC1vbi1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ZTAzM2UzMDU3MDVmN2I5MzMxNTdjM2Y3Nzlk
ZWEwMTkyYjA5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCkBAIC0wLDAgKzEsNjEg
QEAKK2Rlc2NyaXB0aW9uKCdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg0MTIgLSBUaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5nIHBy
b3Blcmx5IGZvY3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9jdXNl
ZC4gRm9yIHRlc3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVzc2lu
ZyB0YWIgd2lsbCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNsdWRl
IGJ1dHRvbnMuJyk7CisKK3ZhciBpdGVyYXRpb24gPSAwOwordmFyIG1vZGlmaWVyczsKK3ZhciBy
ZXN1bHQ7CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZGVidWcoIlByZXNzaW5nIHRhYiA0
IHRpbWVzOiIpOworICAgIG1vZGlmaWVycyA9IHVuZGVmaW5lZDsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7Cit9CisKK2Z1bmN0aW9uIHJ1bktl
eVByZXNzZXMoKSB7CisgICAgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0
OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9ICcgLycgKyAoaSArIDEpICsgJzonOworICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1vZGlmaWVycyk7CisgICAgfQorICAgIGl0ZXJh
dGlvbisrOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8z
OmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiJyk7CisgICAgICAgICAgICBkZWJ1ZygiUHJlc3Npbmcg
c2hpZnQtdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5
Il07CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5
UHJlc3Nlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgdGV4dCBmaWVsZCAvMjogLzM6Zm9j
dXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKKyAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBvcHRp
b24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNz
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHNo
b3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRl
eHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGRl
YnVnKCJQcmVzc2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBt
b2RpZmllcnMgPSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAv
MTpmb2N1c2VkIHNlY29uZCBidXR0b24gLzI6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8zOmZvY3VzZWQg
Zmlyc3QgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnJl
bW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2codmFsKSB7CisgICAgcmVzdWx0ICs9
IHZhbDsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiBsYXlvdXRUZXN0
Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmFkZENocm9tZUlucHV0RmllbGQo
c3RhcnRUZXN0KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xheW91dFRlc3RDb250cm9s
bGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSl9LCAyMDAwKTsKK30gZWxzZQor
ICAgIGZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAwZGFmMjBiMDkyOTZhYzEzMDg2Y2ExMmQxODliZDYwMTgzNzAxYzQ0Li42ZjE4
MjdjNzkyYTY5M2RkYjUxMzM1YTUwNmQwMzFjMTVhMzJkY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTEtMDktMjMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBl
bGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gV0sxIHNldEluaXRpYWxGb2N1cygpIGlzIGNhbGxlZCBvbiBG
b2N1c0NvbnRyb2xsZXIgd2l0aCB0aGUga2V5IGV2ZW50IHRoYXQKKyAgICAgICAgY2F1c2VkIHRo
ZSB3ZWIgdmlldyB0byBiZWNvbWUgZmlyc3QgcmVzcG9uZGVyLiBJbiBXSzIgbm8gZXZlbnQgaXMg
c2VudC4gU28gaWYKKyAgICAgICAgdGhlIGtleSBzdHJva2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5n
ZSBpbiBmaXJzdCByZXNwb25kZXIgc3RhdHVzIGNvbnRhaW5zIHRoZQorICAgICAgICBvcHRpb24g
bW9kaWZpZXIga2V5LCBGb2N1c0NvbnRyb2xsZXIgZGlkIG5vdCBrbm93IHRoYXQgaXQgaGFkIHRv
IHN3aXRjaCBiZWhhdmlvci4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZSB3
YXlzIHRoYXQgdGhlIFdLVmlldyBjYW4gYmVjb21lRmlyc3RSZXNwb25kZXIsIEkgY2hhbmdlZAor
ICAgICAgICB0aGUgc2lnbmF0dXJlIHRvIHNldEluaXRpYWxGb2N1cyB0byBleHByZXNzIHdoZXRo
ZXIgdGhlIGtleSBldmVudCBwYXJhbWV0ZXIgaXMgYW4KKyAgICAgICAgYWN0dWFsIGtleSBldmVu
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcDogVXBkYXRlIGZ1
bmN0aW9uIHNpZ25hdHVyZS4KKyAgICAgICAgKFdLVmlld1NldEluaXRpYWxGb2N1cyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRl
cl0pOiBUYWtlIHRoZSBOU0FwcCBjdXJyZW50RXZlbnQgYW5kIHBhc3MgaXQgYWxvbmcgaWYKKyAg
ICAgICAgdGhlIGV2ZW50IGlzIGEga2V5Ym9hcmQgZXZlbnQsIG90aGVyd2lzZSBwYXNzIGFuIGVt
cHR5IGV2ZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyk6IENoYW5nZSBpbiBmdW5j
dGlvbiBzaWduYXR1cmUgdG8gY29uZmlybSB0aGF0CisgICAgICAgIHRoZSBldmVudCB0aGF0IGNh
dXNlZCB0aGUgaW5pdGlhbCBmb2N1cyB3YXMgYSBrZXlib2FyZCBldmVudCwgYW5kIHByb3ZpZGUg
dGhlIGtleWJvYXJkCisgICAgICAgIGV2ZW50IGl0c2VsZi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6IElmIHdl
IGtub3cgdGhhdCB0aGUgY2F1c2Ugb2YgdGhpcyB3YXMgYSBrZXlib2FyZAorICAgICAgICBldmVu
dCwgd2UgcGFzcyB0aGF0IGV2ZW50IHRvIHRoZSBGb2N1c0NvbnRyb2xsZXIuIE90aGVyd2lzZSB3
ZSBmYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFsCisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBpcyB0
byBwYXNzIG5vIGV2ZW50IGF0IGFsbC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDExLTA5LTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXSzJdIFVJUHJvY2VzcyBzaG91bGQgY2hlY2sgdGhhdCBXZWJQcm9jZXNzIGlzbid0
IHNlbmRpbmcgdW5leHBlY3RlZCBmaWxlOiBVUkxzIHRvIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKaW5kZXggZTdjOTJlMDUxMzEyODlmMmVkM2U3
OGFmZmIxYTRlMTY1ZmUxYjBjZS4uZTNhMjBhNzY0MWU3NzNjNGU5NjNmNGEzM2I4YTAzNDg3YTQ4
NmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNw
cApAQCAtNjcsOSArNjcsOSBAQCB2b2lkIFdLVmlld1NldElzSW5XaW5kb3coV0tWaWV3UmVmIHZp
ZXdSZWYsIGJvb2wgaXNJbldpbmRvdykKICAgICB0b0ltcGwodmlld1JlZiktPnNldElzSW5XaW5k
b3coaXNJbldpbmRvdyk7CiB9CiAKLXZvaWQgV0tWaWV3U2V0SW5pdGlhbEZvY3VzKFdLVmlld1Jl
ZiB2aWV3UmVmLCBib29sIGZvcndhcmQpCit2b2lkIFdLVmlld1NldEluaXRpYWxGb2N1cyhXS1Zp
ZXdSZWYgdmlld1JlZiwgYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogewotICAgIHRvSW1wbCh2aWV3
UmVmKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQpOworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0
SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50
KTsKIH0KIAogdm9pZCBXS1ZpZXdTZXRTY3JvbGxPZmZzZXRPbk5leHRSZXNpemUoV0tWaWV3UmVm
IHZpZXdSZWYsIFdLU2l6ZSBzY3JvbGxPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3dpbi9XS1ZpZXcuaAppbmRleCBiNTQwOTNmNjMyM2JjMjBhYzUxNzE1MWQ5YmI2MDhj
MGNhY2RhYjY4Li41MWE1MWRhNDMwMzk2MGI1YTM3NmY4MmY3NmVmOTk3MDMwOWVlMTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgKQEAgLTc1LDcgKzc1
LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tWaWV3VW5hcHBseUVkaXRDb21tYW5kKFdLVmlld1JlZiB2
aWV3LCBXS0VkaXRDb21tYW5kUmVmIGNvbW1hbmQKIFdLX0VYUE9SVCB2b2lkIFdLVmlld1NldFBh
cmVudFdpbmRvdyhXS1ZpZXdSZWYgdmlldywgSFdORCBwYXJlbnRXaW5kb3cpOwogV0tfRVhQT1JU
IHZvaWQgV0tWaWV3V2luZG93QW5jZXN0cnlEaWRDaGFuZ2UoV0tWaWV3UmVmIHZpZXcpOwogV0tf
RVhQT1JUIHZvaWQgV0tWaWV3U2V0SXNJbldpbmRvdyhXS1ZpZXdSZWYgdmlldywgYm9vbCBpc0lu
V2luZG93KTsKLVdLX0VYUE9SVCB2b2lkIFdLVmlld1NldEluaXRpYWxGb2N1cyhXS1ZpZXdSZWYg
dmlldywgYm9vbCBmb3J3YXJkKTsKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1NldEluaXRpYWxGb2N1
cyhXS1ZpZXdSZWYgdmlldywgYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRTY3Jv
bGxPZmZzZXRPbk5leHRSZXNpemUoV0tWaWV3UmVmIHZpZXcsIFdLU2l6ZSBzY3JvbGxPZmZzZXQp
OwogCiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2spKFdLVmlld1Jl
ZiwgSEJJVE1BUCBzZWxlY3Rpb25CaXRtYXAsIFJFQ1Qgc2VsZWN0aW9uUmVjdEluV2luZG93Q29v
cmRpbmF0ZXMsIGJvb2wgZmFkZW91dCwgdm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDBiODhkMzI0YTU5YjZlNTU4NTc2ODE5NTBjNGRjNGU5
NDdkMjVhNTkuLmI2MGM4M2M0NjRkMzM2N2I0N2QzMjBkMWFkY2MxNTlkMTdhZjk0NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTMwNCwxNyArMzA0
LDIxIEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIC0gKEJP
T0wpYmVjb21lRmlyc3RSZXNwb25kZXIKIHsKICAgICBOU1NlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24gPSBbW3NlbGYgd2luZG93XSBrZXlWaWV3U2VsZWN0aW9uRGlyZWN0aW9uXTsKLQorICAg
IAogICAgIF9kYXRhLT5faW5CZWNvbWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CiAgICAgCiAgICAg
W3NlbGYgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwogICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCk7Ci0KKyAgICAKICAgICBf
ZGF0YS0+X2luQmVjb21lRmlyc3RSZXNwb25kZXIgPSBmYWxzZTsKLQotICAgIGlmIChkaXJlY3Rp
b24gIT0gTlNEaXJlY3RTZWxlY3Rpb24pCi0gICAgICAgIF9kYXRhLT5fcGFnZS0+c2V0SW5pdGlh
bEZvY3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQpOwotCisgICAgCisgICAgaWYgKGRp
cmVjdGlvbiAhPSBOU0RpcmVjdFNlbGVjdGlvbikgeworICAgICAgICBOU0V2ZW50ICpldmVudCA9
IFtOU0FwcCBjdXJyZW50RXZlbnRdOworICAgICAgICBib29sIGJlY29taW5nRmlyc3RSZXNwb25k
ZXJGcm9tS2V5Ym9hcmQgPSBbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBl
XSA9PSBOU0tleVVwOworICAgICAgICBpZiAoIWJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tS2V5
Ym9hcmQpCisgICAgICAgICAgICBldmVudCA9IG5pbDsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT5z
ZXRJbml0aWFsRm9jdXMoZGlyZWN0aW9uID09IE5TU2VsZWN0aW5nTmV4dCwgYmVjb21pbmdGaXJz
dFJlc3BvbmRlckZyb21LZXlib2FyZCwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCwgc2Vs
ZikpOworICAgIH0KICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdkOGQ0YzJkZTRkZTZkMjdjODU1NzFmNzIxOTlhYTE3
ZmJkYmQ4YjQuLjdiYWRiN2I1MDBlMzRjMjgwZmQ4MmYxZDViNmUxMWI0NTk1OTQ3NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MDAsMTEgKzcwMCwx
MSBAQCBJbnRTaXplIFdlYlBhZ2VQcm94eTo6dmlld1NpemUoKSBjb25zdAogICAgIHJldHVybiBt
X3BhZ2VDbGllbnQtPnZpZXdTaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQordm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1
cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRp
YWxGb2N1cyhmb3J3YXJkKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBrZXlib2FyZEV2ZW50KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
V2luZG93UmVzaXplclNpemUoY29uc3QgSW50U2l6ZSYgd2luZG93UmVzaXplclNpemUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMmE5Y2NiNzI3Mzc3MDhhNjA1
NmE1NWIyNTYxNTE1MDcxMjhmODM0My4uNDcwYjY0MDlhMjc2YWFhMDIzNTExZGFlMTcxOTA4MWIy
YjVlYjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjYy
LDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7
CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgc2V0SW5pdGlh
bEZvY3VzKGJvb2wpOworICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9v
bCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZv
aWQgc2V0V2luZG93UmVzaXplclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIAog
ICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCmluZGV4IDBhMmY1YmE1NDM5NTkzOTQwMmExMmE4ODJlNjI1ZTUzODA2ODBiZTku
LjkyOWNkNWVkYWEwY2UwYzI4OTMwNjYwMmVmYzFmOTY0ODFlZGY1OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMTA2OCw5ICsxMDY4LDkgQEAgdm9pZCBX
ZWJWaWV3OjpzZXRPdmVycmlkZUN1cnNvcihIQ1VSU09SIG92ZXJyaWRlQ3Vyc29yKQogICAgIHVw
ZGF0ZU5hdGl2ZUN1cnNvcigpOwogfQogCi12b2lkIFdlYlZpZXc6OnNldEluaXRpYWxGb2N1cyhi
b29sIGZvcndhcmQpCit2b2lkIFdlYlZpZXc6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50
KQogewotICAgIG1fcGFnZS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQpOworICAgIG1fcGFnZS0+
c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBldmVudCk7CiB9
CiAKIHZvaWQgV2ViVmlldzo6c2V0U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0IEludFNp
emUmIHNjcm9sbE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKaW5k
ZXggNjcxNTgxZDdlYzQ1YTQ5NjA4ODIxODkzYThhM2Q3OTVjZWIyOWJhNS4uYmRjMDdlZmE3Y2Vi
ZjdlNjM2YWI0YTIwNmI5NmM0YzE3OTMxNzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNJbldp
bmRvdyhib29sKTsKICAgICB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICB2b2lkIHNldE92
ZXJyaWRlQ3Vyc29yKEhDVVJTT1IpOwotICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCk7CisgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5
Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRT
Y3JvbGxPZmZzZXRPbk5leHRSZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZv
aWQgc2V0RmluZEluZGljYXRvckNhbGxiYWNrKFdLVmlld0ZpbmRJbmRpY2F0b3JDYWxsYmFjaywg
dm9pZCopOwogICAgIFdLVmlld0ZpbmRJbmRpY2F0b3JDYWxsYmFjayBnZXRGaW5kSW5kaWNhdG9y
Q2FsbGJhY2sodm9pZCoqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBhMWYwMGFlNTYxNjBjYjI2NDQzZTBkYTdhNDAyMTIyYjUwNjI2YmM0
Li42NDlmMzg3OGZkZWRkZDJkNTIwNDRlOTJkNWJiNTA1NGNlYzhiOGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzExLDE0ICsxMzEx
LDIwIEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9jdXNlZChib29sIGlzRm9jdXNlZCkKICAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGlzRm9jdXNlZCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKK3ZvaWQgV2ViUGFnZTo6c2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZSgwKTsKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9y
d2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIDApOworCisgICAgaWYgKGlzS2V5Ym9hcmRF
dmVudFZhbGlkICYmIGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgeworICAgICAg
ICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOwor
ICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZv
Y3VzRGlyZWN0aW9uQmFja3dhcmQsIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkuZ2V0KCkpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2Fy
ZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIDApOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IEludFNpemUmIHdp
bmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggY2JiODhmZTkwNGM4MWI4NzBmMGNjNWU5ZTAyOTMzMTY3NDZkMTI2My4uNGQ2
NGViNDUzNTllZjFjMjRhMDc5Y2E0ZWQ0NzJkZjhiZmRlODVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wpOwogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKTsKLSAgICB2b2lkIHNldEluaXRp
YWxGb2N1cyhib29sKTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2
b2lkIHNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2
b2lkIHNldElzSW5XaW5kb3coYm9vbCk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBjMjZmMmUzNzM5NjEzYzcwZmQxMTU4
MWYwNTNjYWEwZDYwYTFkMGI2Li43MGU0ZjVmNGJjYzhhMmVhZDM5ODQ1MTZhOTM5ZGY5YTYzZThk
M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVzc2FnZXMgLT4gV2ViUGFnZSB7
CiAgICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIFNldEZvY3VzZWQoYm9vbCBmb2N1c2Vk
KQotICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQpCisgICAgU2V0SW5pdGlhbEZvY3Vz
KGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXli
b2FyZEV2ZW50IGV2ZW50KQogICAgIFNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogCiAg
ICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYzZTA3MjczNDMxMmIzNWNk
ZDIxMjMzMDkwYzBiNzFhOTg3NjY1OTAuLmY2ZmViNDk5M2U5OTY5NjA3MGQyNTMyOWE0NDVmZjYw
OTM5NTdiMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMS0wOS0yMyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoV0syKTogKFNoaWZ0LSlvcHRpb24tdGFiYmluZyBz
a2lwcyBvdmVyIGVsZW1lbnRzIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGNocm9tZSB0byB3ZWJ2
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQx
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTk4ODI1Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBjcmVhdGUgYSB0ZXN0IGZv
ciB0aGUgYnVnLCBJIGhhZCB0byB1cGRhdGUgRFJUIGFuZCBXS1RSIHRvIGNyZWF0ZSBzb21lCisg
ICAgICAgIHdpZGdldCB0aGF0IGFsbG93cyBmaXJzdCByZXNwb25kZXIgc3RhdHVzIHRvIG1vdmUg
YXdheSBmcm9tIHRoZSBtYWluIHdlYiB2aWV3LgorCisgICAgICAgIFRocmVlIG1ldGhvZHMgd2Vy
ZSBhZGRlZCB0byBsYXlvdXRUZXN0Q29udHJvbGxlcjogYWRkQ2hyb21lSW5wdXRGaWVsZCwKKyAg
ICAgICAgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCwgYW5kIGZvY3VzV2ViVmlldy4gYWRkQ2hyb21l
SW5wdXRGaWVsZCBhZGRzIGEgdGV4dCBmaWVsZAorICAgICAgICB0aGF0IGlzIGEgc2libGluZyB0
byB0aGUgd2ViIHZpZXcsIGFuZCBzZXRzIHVwIHRoZSBrZXkgZXZlbnQgbG9vcCBiZXR3ZWVuIHRo
ZSB0d28uCisgICAgICAgIHJlbW92ZUNocm9tZUlucHV0RmllbGQgcmVtb3ZlcyB0aGF0IGZpZWxk
LiBmb2N1c1dlYlZpZXcgbW92ZXMgZmlyc3QgcmVzcG9uZGVyCisgICAgICAgIHN0YXR1cyB0byB0
aGUgd2ViIHZpZXcuCisKKyAgICAgICAgVGhlIHRlc3QgbWFrZXMgdGhlIGNhbGwgdmlhIGxheW91
dFRlc3RDb250cm9sbGVyIGFuZCBwYXNzZXMgYSBjYWxsYmFjayB0aGF0IGl0CisgICAgICAgIGFz
c3VtZXMgd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSB0YXNrIGlzIGNvbXBsZXRlZC4gSW4gRFJU
IHRoZSBjYWxsYmFjayBpcyBjYWxsZWQKKyAgICAgICAgc3luY2hyb25vdXNseS4gSW4gV0tUUiB0
aGlzIGlzIGhhbmRsZWQgd2l0aCBtZXNzYWdlIHBhc3NpbmcgYmV0d2VlbiB0aGUgdHdvCisgICAg
ICAgIHByb2Nlc3Nlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKGFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAg
ICAgIChyZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAoZm9jdXNXZWJW
aWV3Q2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZTo6cG9zdEFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZTo6cG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdEZvY3VzV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpjYWxsYmFja01hcCk6IENyZWF0ZSBhIGhhc2ggbWFwIHRoYXQga2VlcHMg
dHJhY2sgb2YgdGhlIGNhbGxiYWNrcyBwcm92aWRlZAorICAgICAgICB0aHJvdWdoIEpTLgorICAg
ICAgICAoV1RSOjpjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2spOgorICAgICAgICAo
V1RSOjpjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6Okxh
eW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAo
V1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgor
ICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbFJlbW92ZUNocm9tZUlucHV0
RmllbGRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxs
Rm9jdXNXZWJWaWV3Q2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3Rr
L1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6
YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVt
b3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6bWFr
ZVdlYlZpZXdGaXJzdFJlc3BvbmRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMv
UGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFk
ZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92
ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1ha2VX
ZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Bs
YXRmb3JtV2ViVmlld1dpbi5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVy
OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcik6CisgICAgICAgIAorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbTogVGhlc2UgZnVu
Y3Rpb25zIGhhdmUgbm90aGluZyB0byBkbworICAgICAgICB3aXRoIHRoZSBwYXRjaC0tIGp1c3Qg
Y2xlYW5pbmcgdXAgc3R5bGUuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkRGlz
YWxsb3dlZFVSTCk6CisgICAgICAgIChvcmlnaW5zQXJyYXlUb0pTKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yKToKKwogMjAxMS0wOS0yMiAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEZpbmRTYWZhcmkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAyZTFiZGI0OTM2NTE1
ZmEwZjFiZTlkNjAxNmJlMDZjOTY3Y2I5MmUzLi4wMzYzOTM2OTgzZDkxMGFhZGM2NzA0YWM5OTg1
MzRhNzU4NTExNjE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0yMTYwLDYgKzIxNjAsMzYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0U2hv
dWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWRDYWxsYmFjayhKU0NvbnRleHQK
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBK
U1ZhbHVlUmVmIGFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgY29udHJvbGxlci0+YWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIC8vIHRoZSBmaXJzdCBh
cmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlucHV0IGZpZWxk
IGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJn
dW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiByZW1vdmVDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnJl
bW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBj
YWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRl
ZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCks
IHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZm9jdXNXZWJWaWV3Q2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmZvY3VzV2ViVmlldygpOworICAgIC8vIHRo
ZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlu
cHV0IGZpZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAg
ICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAK
IHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDM2LDYgKzI0NjYsOSBAQCBKU1N0YXRpY0Z1bmN0
aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAi
c2V0VGV4dERpcmVjdGlvbiIsIHNldFRleHREaXJlY3Rpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJhbGxvd1JvdW5kaW5nSGFja3MiLCBhbGxvd1JvdW5kaW5nSGFja3NDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZCIsIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYWRkQ2hyb21lSW5wdXRGaWVsZCIsIGFkZENocm9t
ZUlucHV0RmllbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJyZW1vdmVDaHJvbWVJbnB1
dEZpZWxkIiwgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgImZvY3VzV2ViVmlldyIsIGZvY3VzV2ViVmlld0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKaW5kZXggZDVjZmJhNzdjM2RjNGI4ODZhNDBhNmI2ZjUyOTFiZjg2YzE5ZGFk
MC4uYmFjOGI0ZGRiOTgxMmNhMmUwOWU5NGRiODFjMzlhY2M3ZDU5Yjg1MSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMTQsNiArMzE0LDEwIEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5s
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZv
cmVVbmxvYWQoYm9vbCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCkg
eyBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkID0gc2hvdWxkU3Rh
eU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQ7IH0KIAorICAgIHZvaWQgYWRkQ2hyb21l
SW5wdXRGaWVsZCgpOworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZv
aWQgZm9jdXNXZWJWaWV3KCk7CisgICAgCiAgICAgdm9pZCBzZXRQT1NJWExvY2FsZShKU1N0cmlu
Z1JlZiBsb2NhbGUpOwogCiAgICAgdm9pZCBzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAppbmRleCBjODE3YjJiNmFjYjNhNTk5ZDExM2NmMjhiYmRjN2FlMmU4NDA0MDk5Li4xNjQ5MTE1
MmMwNzg0M2M3MjM2YjM0MjcwMDI5ZGFkODA2OWQ1NjUxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTk4NywzICs5
ODcsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0
cmluZ1JlZiBkaXJlY3Rpb24pCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphbGxvd1JvdW5k
aW5nSGFja3MoKQogewogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJ
bnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3Vz
V2ViVmlldygpCit7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMzEwZGFmYTQ1Mzk3ZmZmOTBjOTE4NWQ3MmVjZjA2
YmIyZGQ0NTFhOC4uMTgwNWYxNWEzMmY0NmM4NzI5ODVhZWZmMjZmMzNkYmJlMGY0ZDY5OSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZERp
c2FsbG93ZWRVUkwoSlNTdHJpbmdSZWYgdXJsKQogICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IENG
U2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBOVUxMKTsKIAogICAgIC8v
IENhbm9uaWNhbGl6ZSB0aGUgVVJMCi0gICAgTlNVUkxSZXF1ZXN0KiByZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1
cmxDRi5nZXQoKV1dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0
KCldXTsKICAgICByZXF1ZXN0ID0gW05TVVJMUHJvdG9jb2wgY2Fub25pY2FsUmVxdWVzdEZvclJl
cXVlc3Q6cmVxdWVzdF07CiAKICAgICBDRlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxzLCBbcmVx
dWVzdCBVUkxdKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogICAgIFtv
cmlnaW4gcmVsZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0NvbnRl
eHRSZWYgY29udGV4dCwgTlNBcnJheSogb3JpZ2lucykKK0pTVmFsdWVSZWYgb3JpZ2luc0FycmF5
VG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKIHsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW29yaWdpbnMgY291bnRdOwogCkBAIC00MjUsNyArNDI1LDcgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJp
bmdSZWYgdGFyZ2V0KQogICAgIE5TU3RyaW5nICp1cmxOUyA9IChOU1N0cmluZyAqKXVybENGLmdl
dCgpOwogCiAgICAgTlNVUkwgKm5zdXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsTlMgcmVs
YXRpdmVUb1VSTDpbW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0gcmVzcG9uc2VdIFVSTF1dOwotICAg
IE5TU3RyaW5nKiBuc3VybFN0cmluZyA9IFtuc3VybCBhYnNvbHV0ZVN0cmluZ107CisgICAgTlNT
dHJpbmcgKm5zdXJsU3RyaW5nID0gW25zdXJsIGFic29sdXRlU3RyaW5nXTsKIAogICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBhYnNvbHV0ZVVSTChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoW25zdXJsU3RyaW5nIFVURjhTdHJpbmddKSk7CiAgICAgV29ya1F1ZXVlOjpz
aGFyZWQoKS0+cXVldWUobmV3IExvYWRJdGVtKGFic29sdXRlVVJMLmdldCgpLCB0YXJnZXQpKTsK
QEAgLTUwOCw4ICs1MDgsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZQogewogICAgIC8vIER1
bXBSZW5kZXJUcmVlIGNvbmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNlIFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLgogICAgIGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+
IHByb3ZpZGVyID0gW1ttYWluRnJhbWUgd2ViVmlld10gX2RldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJdOwotICAgIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKiBtb2NrUHJvdmlkZXIg
PSBzdGF0aWNfY2FzdDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayo+KHByb3ZpZGVy
KTsKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiogb3JpZW50YXRpb24gPSBbW1dlYkRldmljZU9y
aWVudGF0aW9uIGFsbG9jXSBpbml0V2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEg
YWxwaGE6YWxwaGEgY2FuUHJvdmlkZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblBy
b3ZpZGVHYW1tYTpjYW5Qcm92aWRlR2FtbWEgZ2FtbWE6Z2FtbWFdOworICAgIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrICptb2NrUHJvdmlkZXIgPSBzdGF0aWNfY2FzdDxXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayo+KHByb3ZpZGVyKTsKKyAgICBXZWJEZXZpY2VPcmll
bnRhdGlvbiAqb3JpZW50YXRpb24gPSBbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0
V2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJvdmlk
ZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92aWRl
R2FtbWEgZ2FtbWE6Z2FtbWFdOwogICAgIFttb2NrUHJvdmlkZXIgc2V0T3JpZW50YXRpb246b3Jp
ZW50YXRpb25dOwogICAgIFtvcmllbnRhdGlvbiByZWxlYXNlXTsKIH0KQEAgLTU1MCw3ICs1NTAs
NyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KEpTQ29udGV4
dFJlZiBpbnB1dEVsZW1lbnQpCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0
YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTog
V29ya2Fyb3VuZCA8cmRhcjovL3Byb2JsZW0vNjQ4MDEwOD4KLSAgICBzdGF0aWMgV2ViSWNvbkRh
dGFiYXNlKiBzaGFyZWRXZWJJY29uRGF0YWJhc2UgPSBOVUxMOworICAgIHN0YXRpYyBXZWJJY29u
RGF0YWJhc2UgKnNoYXJlZFdlYkljb25EYXRhYmFzZSA9IE5VTEw7CiAgICAgaWYgKCFzaGFyZWRX
ZWJJY29uRGF0YWJhc2UpIHsKICAgICAgICAgaWYgKCFpY29uRGF0YWJhc2VFbmFibGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE1MSw3ICsxMTUxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVm
IHVzZXIKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yKGNv
bnN0IGNoYXIqIGVkaXRpbmdCZWhhdmlvcikKIHsKLSAgICBOU1N0cmluZyogZWRpdGluZ0JlaGF2
aW9yTlMgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6ZWRpdGluZ0JlaGF2
aW9yXTsKKyAgICBOU1N0cmluZyAqZWRpdGluZ0JlaGF2aW9yTlMgPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFVURjhTdHJpbmc6ZWRpdGluZ0JlaGF2aW9yXTsKICAgICBpZiAoW2VkaXRpbmdC
ZWhhdmlvck5TIGlzRXF1YWxUb1N0cmluZzpAIm1hYyJdKQogICAgICAgICBbW1dlYlByZWZlcmVu
Y2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldEVkaXRpbmdCZWhhdmlvcjpXZWJLaXRFZGl0aW5n
TWFjQmVoYXZpb3JdOwogICAgIGVsc2UgaWYgKFtlZGl0aW5nQmVoYXZpb3JOUyBpc0VxdWFsVG9T
dHJpbmc6QCJ3aW4iXSkKQEAgLTEyMDIsMyArMTIwMiwyNSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbk5hbWUpCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIE5TVGV4dEZpZWxkICp0ZXh0
RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAxOworICAgIFtbW1ttYWluRnJhbWUg
d2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGRdOworICAg
IFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgCisgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5Vmll
dzpbbWFpbkZyYW1lIHdlYlZpZXddXTsKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXROZXh0
S2V5Vmlldzp0ZXh0RmllbGRdOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1v
dmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBbW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5k
b3ddIGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzoxXSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAg
ICBmb2N1c1dlYlZpZXcoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNX
ZWJWaWV3KCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBtYWtlRmlyc3RS
ZXNwb25kZXI6W21haW5GcmFtZSB3ZWJWaWV3XV07Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBjNzhmZWE1NTU0
MjBlMTI5YmFkMjRjOWY1YzE0YzZiM2NkZjdiNmNjLi41Yzk3ZWU2YzgxNWQxMzQ4MmE3M2IxNDk4
OThlNGJmNzljYjgzODVkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTE1NDAsMyArMTU0MCwxNSBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlv
bikKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFsbG93Um91bmRpbmdIYWNrcygpCiB7CiB9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQorewor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkK
K3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KCkKK3sKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKaW5kZXggNTIxYWI3
YzBhNjAwY2NlNWZjZWM3MzAyZTJiN2I0OGFjMTczZjk3Yi4uNTBjYTQ2MjY4NzdiMDhiOGNhNGRl
NmRjNmVhNjFkZDdjZTI0NjJmZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29u
dHJvbGxlci5pZGwKQEAgLTExNyw2ICsxMTcsMTEgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIHZv
aWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoaW4gYm9vbGVhbiBmbGFnKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoaW4gYm9vbGVhbiBmbGFnKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZvY3VzIHRlc3Rp
bmcuCisgICAgICAgIHZvaWQgYWRkQ2hyb21lSW5wdXRGaWVsZChpbiBvYmplY3QgY2FsbGJhY2sp
OworICAgICAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0RmllbGQoaW4gb2JqZWN0IGNhbGxiYWNr
KTsKKyAgICAgICAgdm9pZCBmb2N1c1dlYlZpZXcoaW4gb2JqZWN0IGNhbGxiYWNrKTsKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGRkMDQ1Nzg2YjRjYTZiNGQ5MjJlNDEwMjZjYjQ3
MzY2OTEwMWI5NGYuLmRlM2QyNTE3Y2VmY2VmMWM3YTgxNGUzODlhYjhjOWUxYmJkMDNiMzEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC0xNTgsNiArMTU4LDE4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnCiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2si
KSkgeworICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsQWRkQ2hyb21lSW5wdXRG
aWVsZENhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsUmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZENhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRUZXN0Q29udHJvbGxlci0+Y2FsbFJl
bW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbEZv
Y3VzV2ViVmlld0NhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRUZXN0Q29udHJvbGxlci0+
Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlVua25vd24iKSk7CkBAIC0yNDEsNCArMjUzLDIyIEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKQogICAgIFdL
QnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RBZGRDaHJvbWVJbnB1dEZp
ZWxkKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFkZENocm9tZUlucHV0RmllbGQiKSk7
CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAp
OworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVDaHJvbWVJbnB1dEZpZWxkIikpOwor
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsK
K30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdEZvY3VzV2ViVmlldygpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJGb2N1c1dlYlZpZXciKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaAppbmRleCA1MDZiZWRmOGQzMzk4MGIxMmUzMWQ1MzIyYjM5MjY5MDM0YTg2
NjdmLi4zOWM2OTJkNDdiN2ExNDFlNzFjNjZmNDRhNmUwNTNjMmMxYzhiN2M5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1bXBQaXhlbHMo
KSBjb25zdCB7IHJldHVybiBtX2R1bXBQaXhlbHM7IH0KICAgICAKICAgICB2b2lkIHBvc3ROZXdC
ZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sKTsKKyAgICB2b2lkIHBvc3RBZGRDaHJvbWVJbnB1
dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZv
aWQgcG9zdEZvY3VzV2ViVmlldygpOwogCiBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDAzYzI3ZjY1MTQ2Mjc1NzAzNjA4YWIy
OGI3NmNlOGI5NGRmMTUwZDEuLjYxN2Q1YmMyMWU1MTljMTE4YzViY2M3ZmYyMDNhYmI3NDhlNjE3
YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01MDAsNCArNTAwLDYzIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5n
QmVmb3JlVW5sb2FkKGJvb2wgc2hvCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RO
ZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSghc2hvdWxkU3RheU9uUGFnZSk7CiB9CiAKK3R5cGVk
ZWYgV1RGOjpIYXNoTWFwPHVuc2lnbmVkLCBKU1ZhbHVlUmVmPiBDYWxsYmFja01hcDsKK3N0YXRp
YyBDYWxsYmFja01hcCYgY2FsbGJhY2tNYXAoKQoreworICAgIHN0YXRpYyBDYWxsYmFja01hcCYg
bWFwID0gKm5ldyBDYWxsYmFja01hcDsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0aWMgdm9p
ZCBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2sodW5zaWduZWQgaW5kZXgsIEpTVmFs
dWVSZWYgY2FsbGJhY2spCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2Ny
aXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIGNhbGxi
YWNrKTsKKyAgICBjYWxsYmFja01hcCgpLmFkZChpbmRleCwgY2FsbGJhY2spOworfQorCitzdGF0
aWMgdm9pZCBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayh1bnNpZ25lZCBpbmRleCkK
K3sKKyAgICBpZiAoIWNhbGxiYWNrTWFwKCkuY29udGFpbnMoaW5kZXgpKQorICAgICAgICByZXR1
cm47CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0Nv
bnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWlu
RnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGNhbGxiYWNrID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIGNhbGxiYWNrTWFwKCkudGFrZShpbmRleCksIDApOworICAgIEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oY29udGV4dCwgY2FsbGJhY2ssIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0
KSwgMCwgMCwgMCk7CisgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBjYWxsYmFjayk7Cit9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoSlNWYWx1
ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2so
MSwgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0QWRkQ2hyb21l
SW5wdXRGaWVsZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJv
bWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2FjaGVMYXlvdXRUZXN0
Q29udHJvbGxlckNhbGxiYWNrKDIsIGNhbGxiYWNrKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2Fj
aGVMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDMsIGNhbGxiYWNrKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkucG9zdEZvY3VzV2ViVmlldygpOworfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCkKK3sKKyAgICBj
YWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygxKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Y2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpCit7CisgICAg
Y2FsbExheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMik7Cit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpCit7CisgICAgY2FsbExheW91
dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDZhOWExMWU3Yjc5ZTRmMDI4NzM2Mjg1N2E3YzllMTg1
MGQ5MGJmNGQuLjRkN2I2OTkyYjIwYzljYmQyMmJmMTA1NTc4MTc2MDJjNzU0ZTAxZWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTE3Miw2ICsxNzIsMTMgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgZ2xvYmFsRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRmxhZzsgfQogICAg
IHZvaWQgc2V0R2xvYmFsRmxhZyhib29sIHZhbHVlKSB7IG1fZ2xvYmFsRmxhZyA9IHZhbHVlOyB9
CisgICAgCisgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYpOworICAgIHZv
aWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGZvY3VzV2Vi
VmlldyhKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJh
Y2soKTsKKyAgICB2b2lkIGNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKTsKKyAg
ICB2b2lkIGNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpOwogCiBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IDQ2NDQ5MGI3YWRlNDFlZTk1MWUy
ZDZmNzVkNzQ5MGNkZGU1NDRhNGYuLmMxMjJhODZiYmQ4ZmQ2ODYwMGRkMjJmNmFjODE1OTMwYWY2
YjU1YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNzEs
NiArNzEsMTAgQEAgcHVibGljOgogCiAgICAgV0tSZWN0IHdpbmRvd0ZyYW1lKCk7CiAgICAgdm9p
ZCBzZXRXaW5kb3dGcmFtZShXS1JlY3QpOworICAgIAorICAgIHZvaWQgYWRkQ2hyb21lSW5wdXRG
aWVsZCgpOworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgbWFr
ZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOwogCiBwcml2YXRlOgogICAgIFBsYXRmb3JtV0tWaWV3
IG1fdmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXgg
YmUyMDA0NmEyMWIwMTM1MDEyMjkxZGVjMzdlZTViZjE2MTEwMTM0Mi4uMzVmYzgyMzg1MDgwMDYw
MDlhMjlkZTViZTJkNTE3ZDE4YTQ5Mjc4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKQEAgLTI0NSw2ICsyNDUsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldEJlZm9yZVVubG9hZFJldHVy
blZhbHVlKFdLQm9vbGVhbkdldFZhbHVlKGJlZm9yZVVubG9hZFJldHVyblZhbHVlKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJBZGRDaHJvbWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPmFkZENocm9tZUlucHV0RmllbGQo
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbEFkZENocm9tZUlucHV0RmllbGRD
YWxsYmFjayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5yZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxSZW1vdmVDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJGb2N1c1dlYlZpZXciKSkg
eworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+bWFrZVdl
YlZpZXdGaXJzdFJlc3BvbmRlcigpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
Rm9jdXNXZWJWaWV3Q2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Bs
YXRmb3JtV2ViVmlld0d0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9y
bVdlYlZpZXdHdGsuY3BwCmluZGV4IGU1YjgwMzhhODY1NjUwMzcxNjhlYWViYTYzMzFkNTlkMWFm
ZDcxZTAuLjM3MzVkYzVlNmMyZTU4YjliOTgxZDQ0M2FjNTU2Nzc4ZGYwNDc2MDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAt
OTcsNSArOTcsMTcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVj
dCBmcmFtZSkKICAgICByZXNpemVUbyhmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdo
dCk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sK
K30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQorewor
fQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggYWZmMTBlZDUwNGNhMDg2OWI3ZTBmNTA4
ZWU1YTRiMzcyNzc0NmNiZi4uNTM0MjY0MzA3ZGY3MmZhMjBkM2U0OTYwNGE5MzU4YjUzYjBkNDc3
YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3
TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbQpAQCAtODAsNCArODAsMjYgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0Zy
YW1lKFdLUmVjdCBmcmFtZSkKICAgICBbbV93aW5kb3cgc2V0RnJhbWU6TlNNYWtlUmVjdChmcmFt
ZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnksIGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUu
aGVpZ2h0KSBkaXNwbGF5OllFU107CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJv
bWVJbnB1dEZpZWxkKCkKK3sKKyAgICBOU1RleHRGaWVsZCogdGV4dEZpZWxkID0gW1tOU1RleHRG
aWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKKyAg
ICB0ZXh0RmllbGQudGFnID0gMTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2
aWV3OnRleHRGaWVsZF07CisgICAgW3RleHRGaWVsZCByZWxlYXNlXTsKKworICAgIFt0ZXh0Rmll
bGQgc2V0TmV4dEtleVZpZXc6bV92aWV3XTsKKyAgICBbbV92aWV3IHNldE5leHRLZXlWaWV3OnRl
eHRGaWVsZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZp
ZWxkKCkKK3sKKyAgICBbW1ttX3dpbmRvdyBjb250ZW50Vmlld10gdmlld1dpdGhUYWc6MV0gcmVt
b3ZlRnJvbVN1cGVydmlld107CisgICAgbWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cisg
ICAgW21fd2luZG93IG1ha2VGaXJzdFJlc3BvbmRlcjptX3ZpZXddOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZp
ZXdXaW4uY3BwCmluZGV4IDllMjNkNzBlNWUzYzI2NjI5ZWY2YmVkYTY4Y2Y2MDVmNjUxZjA4NDcu
LmEyZjQzNjM0NzRkZGJlZjhlODgzYzBmNmRmNGQyZTQ3ZTZhOWNlM2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcApAQCAtOTcsNCAr
OTcsMTcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCkKICAg
ICAvLyBJbXBsZW1lbnQuCiB9CiAKKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hy
b21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92
ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpt
YWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108725</attachid>
            <date>2011-09-26 14:41:06 -0700</date>
            <delta_ts>2011-09-26 16:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110926144109.patch</filename>
            <type>text/plain</type>
            <size>43130</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MjI0YWVhMzFlOTYyYjQ1ZGMxNmQz
NWEzNDc0MGQ0MzE1NDUzNDljLi40NzliODdjM2Y4YWY1MWJiODhlMmI5NGQ0OTJhMTc3MjNkNmMy
OTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjYgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5q
czogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuS2V5UHJlc3Nlcyk6
CisgICAgICAgIChub3RpZnlEb25lKToKKyAgICAgICAgKGxvZyk6CisKIDIwMTEtMDktMjIgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY1MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2FhMWRmNmYyMWIyMGE0M2JlNzZhOGM2MjAyYzkzZGZhODcwMjhlNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNv
bnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAoraHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyIC0gVGhpcyB0ZXN0IGNoZWNrcyB0byBz
ZWUgaWYgb3B0aW9uKGFsdCktdGFiYmluZyBwcm9wZXJseSBmb2N1c2VzIGZvcm0gZWxlbWVudHMg
dGhhdCBhcmUgbm9ybWFsbHkgbm90IGZvY3VzZWQuIEZvciB0ZXN0aW5nLCB0aGUgYXNzdW1wdGlv
biBpcyB0aGF0IGJ5IGRlZmF1bHQgcHJlc3NpbmcgdGFiIHdpbGwgc2tpcCBvdmVyIGJ1dHRvbnMs
IGFuZCBvcHRpb24tdGFiIHdpbGwgaW5jbHVkZSBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworICAKK1ByZXNzaW5nIHRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMg
IiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiCitQ
cmVzc2luZyBzaGlmdC10YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNlZCB0
ZXh0IGZpZWxkIC8yOiAvMzpmb2N1c2VkIHRleHQgZmllbGQgLzQ6IgorUHJlc3Npbmcgb3B0aW9u
LXRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAv
Mjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiIKK1ByZXNz
aW5nIHNoaWZ0LW9wdGlvbi10YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNl
ZCBzZWNvbmQgYnV0dG9uIC8yOmZvY3VzZWQgdGV4dCBmaWVsZCAvMzpmb2N1c2VkIGZpcnN0IGJ1
dHRvbiAvNDoiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0
aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb2N1cy1v
cHRpb24tY29udHJvbC1vbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMzNmNhYzE2ZDNjYzg4ODVj
MTJmYTRlZWY3MDdhYTZlMGVkNzQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8aW5wdXQgdHlw
ZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgZmlyc3QgYnV0dG9uJykiIHZhbHVlPSIx
Ij4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgdGV4dCBmaWVsZCcp
IiB2YWx1ZT0iMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQg
c2Vjb25kIGJ1dHRvbicpIiB2YWx1ZT0iMyI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2Uu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29u
dHJvbC1vbi1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ZTAzM2UzMDU3MDVmN2I5MzMxNTdjM2Y3Nzlk
ZWEwMTkyYjA5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCkBAIC0wLDAgKzEsNjEg
QEAKK2Rlc2NyaXB0aW9uKCdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg0MTIgLSBUaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5nIHBy
b3Blcmx5IGZvY3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9jdXNl
ZC4gRm9yIHRlc3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVzc2lu
ZyB0YWIgd2lsbCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNsdWRl
IGJ1dHRvbnMuJyk7CisKK3ZhciBpdGVyYXRpb24gPSAwOwordmFyIG1vZGlmaWVyczsKK3ZhciBy
ZXN1bHQ7CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZGVidWcoIlByZXNzaW5nIHRhYiA0
IHRpbWVzOiIpOworICAgIG1vZGlmaWVycyA9IHVuZGVmaW5lZDsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7Cit9CisKK2Z1bmN0aW9uIHJ1bktl
eVByZXNzZXMoKSB7CisgICAgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0
OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9ICcgLycgKyAoaSArIDEpICsgJzonOworICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1vZGlmaWVycyk7CisgICAgfQorICAgIGl0ZXJh
dGlvbisrOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8z
OmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiJyk7CisgICAgICAgICAgICBkZWJ1ZygiUHJlc3Npbmcg
c2hpZnQtdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5
Il07CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5
UHJlc3Nlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgdGV4dCBmaWVsZCAvMjogLzM6Zm9j
dXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKKyAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBvcHRp
b24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNz
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHNo
b3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRl
eHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGRl
YnVnKCJQcmVzc2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBt
b2RpZmllcnMgPSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAv
MTpmb2N1c2VkIHNlY29uZCBidXR0b24gLzI6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8zOmZvY3VzZWQg
Zmlyc3QgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnJl
bW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2codmFsKSB7CisgICAgcmVzdWx0ICs9
IHZhbDsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiBsYXlvdXRUZXN0
Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmFkZENocm9tZUlucHV0RmllbGQo
c3RhcnRUZXN0KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xheW91dFRlc3RDb250cm9s
bGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSl9LCAyMDAwKTsKK30gZWxzZQor
ICAgIGZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAwZGFmMjBiMDkyOTZhYzEzMDg2Y2ExMmQxODliZDYwMTgzNzAxYzQ0Li5kYWE3
ZTMwYmM1NmQ0NjA2M2Y4ZWJiOWJhYjkyMDdhNzUwNTc3MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjMgQEAKKzIwMTEtMDktMjYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBl
bGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gV0sxIHNldEluaXRpYWxGb2N1cygpIGlzIGNhbGxlZCBvbiBG
b2N1c0NvbnRyb2xsZXIgd2l0aCB0aGUga2V5IGV2ZW50IHRoYXQKKyAgICAgICAgY2F1c2VkIHRo
ZSB3ZWIgdmlldyB0byBiZWNvbWUgZmlyc3QgcmVzcG9uZGVyLiBJbiBXSzIgbm8gZXZlbnQgaXMg
c2VudC4gU28gaWYKKyAgICAgICAgdGhlIGtleSBzdHJva2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5n
ZSBpbiBmaXJzdCByZXNwb25kZXIgc3RhdHVzIGNvbnRhaW5zIHRoZQorICAgICAgICBvcHRpb24g
bW9kaWZpZXIga2V5LCBGb2N1c0NvbnRyb2xsZXIgZGlkIG5vdCBrbm93IHRoYXQgaXQgaGFkIHRv
IHN3aXRjaCBiZWhhdmlvci4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZSB3
YXlzIHRoYXQgdGhlIFdLVmlldyBjYW4gYmVjb21lRmlyc3RSZXNwb25kZXIsIEkgY2hhbmdlZAor
ICAgICAgICB0aGUgc2lnbmF0dXJlIHRvIHNldEluaXRpYWxGb2N1cyB0byBleHByZXNzIHdoZXRo
ZXIgdGhlIGtleSBldmVudCBwYXJhbWV0ZXIgaXMgYW4KKyAgICAgICAgYWN0dWFsIGtleSBldmVu
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldEluaXRpYWxGb2N1cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBUYWtlIHRoZSBOU0FwcCBjdXJyZW50
RXZlbnQgYW5kIHBhc3MgaXQgYWxvbmcgaWYKKyAgICAgICAgdGhlIGV2ZW50IGlzIGEga2V5Ym9h
cmQgZXZlbnQsIG90aGVyd2lzZSBwYXNzIGFuIGVtcHR5IGV2ZW50LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dEluaXRpYWxGb2N1cyk6IENoYW5nZSBpbiBmdW5jdGlvbiBzaWduYXR1cmUgdG8gY29uZmlybSB0
aGF0CisgICAgICAgIHRoZSBldmVudCB0aGF0IGNhdXNlZCB0aGUgaW5pdGlhbCBmb2N1cyB3YXMg
YSBrZXlib2FyZCBldmVudCwgYW5kIHByb3ZpZGUgdGhlIGtleWJvYXJkCisgICAgICAgIGV2ZW50
IGl0c2VsZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0
SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6IElmIHdlIGtub3cgdGhhdCB0aGUgY2F1c2Ugb2YgdGhp
cyB3YXMgYSBrZXlib2FyZAorICAgICAgICBldmVudCwgd2UgcGFzcyB0aGF0IGV2ZW50IHRvIHRo
ZSBGb2N1c0NvbnRyb2xsZXIuIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFs
CisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBpcyB0byBwYXNzIG5vIGV2ZW50IGF0IGFsbC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisyMDExLTA5LTIzICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQtKW9w
dGlvbi10YWJiaW5nIHNraXBzIG92ZXIgZWxlbWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20g
Y2hyb21lIHRvIHdlYnZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdLMSBzZXRJbml0
aWFsRm9jdXMoKSBpcyBjYWxsZWQgb24gRm9jdXNDb250cm9sbGVyIHdpdGggdGhlIGtleSBldmVu
dCB0aGF0CisgICAgICAgIGNhdXNlZCB0aGUgd2ViIHZpZXcgdG8gYmVjb21lIGZpcnN0IHJlc3Bv
bmRlci4gSW4gV0syIG5vIGV2ZW50IGlzIHNlbnQuIFNvIGlmCisgICAgICAgIHRoZSBrZXkgc3Ry
b2tlIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2UgaW4gZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBjb250
YWlucyB0aGUKKyAgICAgICAgb3B0aW9uIG1vZGlmaWVyIGtleSwgRm9jdXNDb250cm9sbGVyIGRp
ZCBub3Qga25vdyB0aGF0IGl0IGhhZCB0byBzd2l0Y2ggYmVoYXZpb3IuCisKKyAgICAgICAgQmVj
YXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0aGF0IHRoZSBXS1ZpZXcgY2FuIGJlY29tZUZp
cnN0UmVzcG9uZGVyLCBJIGNoYW5nZWQKKyAgICAgICAgdGhlIHNpZ25hdHVyZSB0byBzZXRJbml0
aWFsRm9jdXMgdG8gZXhwcmVzcyB3aGV0aGVyIHRoZSBrZXkgZXZlbnQgcGFyYW1ldGVyIGlzIGFu
CisgICAgICAgIGFjdHVhbCBrZXkgZXZlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
d2luL1dLVmlldy5jcHA6IFVwZGF0ZSBmdW5jdGlvbiBzaWduYXR1cmUuCisgICAgICAgIChXS1Zp
ZXdTZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3
Lmg6CisKKwogMjAxMS0wOS0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV0syXSBVSVByb2Nlc3Mgc2hvdWxkIGNoZWNrIHRoYXQgV2ViUHJvY2VzcyBp
c24ndCBzZW5kaW5nIHVuZXhwZWN0ZWQgZmlsZTogVVJMcyB0byBpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCmluZGV4IGU3YzkyZTA1MTMxMjg5ZjJl
ZDNlNzhhZmZiMWE0ZTE2NWZlMWIwY2UuLjk4ZThhMzVkMDUwMjRhNjU0NTlhY2JlN2Y5NzY3NDYw
YzA3M2NhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4v
V0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmll
dy5jcHAKQEAgLTY5LDcgKzY5LDggQEAgdm9pZCBXS1ZpZXdTZXRJc0luV2luZG93KFdLVmlld1Jl
ZiB2aWV3UmVmLCBib29sIGlzSW5XaW5kb3cpCiAKIHZvaWQgV0tWaWV3U2V0SW5pdGlhbEZvY3Vz
KFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGZvcndhcmQpCiB7Ci0gICAgdG9JbXBsKHZpZXdSZWYp
LT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCk7CisgICAgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxp
ZCA9IGZhbHNlOworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQs
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLZXlib2FyZEV2ZW50KCkpOwogfQogCiB2b2lkIFdL
Vmlld1NldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShXS1ZpZXdSZWYgdmlld1JlZiwgV0tTaXpl
IHNjcm9sbE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQppbmRleCAwYjg4ZDMyNGE1OWI2ZTU1ODU3NjgxOTUwYzRkYzRlOTQ3ZDI1YTU5Li5iNjBjODNj
NDY0ZDMzNjdiNDdkMzIwZDFhZGNjMTU5ZDE3YWY5NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQsMTcgKzMwNCwyMSBAQCBzdHJ1Y3QgV0tW
aWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAtIChCT09MKWJlY29tZUZpcnN0UmVz
cG9uZGVyCiB7CiAgICAgTlNTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gW1tzZWxmIHdp
bmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0KKyAgICAKICAgICBfZGF0YS0+X2lu
QmVjb21lRmlyc3RSZXNwb25kZXIgPSB0cnVlOwogICAgIAogICAgIFtzZWxmIF91cGRhdGVTZWN1
cmVJbnB1dFN0YXRlXTsKICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQ
YWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOwotCisgICAgCiAgICAgX2RhdGEtPl9pbkJlY29tZUZp
cnN0UmVzcG9uZGVyID0gZmFsc2U7Ci0KLSAgICBpZiAoZGlyZWN0aW9uICE9IE5TRGlyZWN0U2Vs
ZWN0aW9uKQotICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24g
PT0gTlNTZWxlY3RpbmdOZXh0KTsKLQorICAgIAorICAgIGlmIChkaXJlY3Rpb24gIT0gTlNEaXJl
Y3RTZWxlY3Rpb24pIHsKKyAgICAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNBcHAgY3VycmVudEV2
ZW50XTsKKyAgICAgICAgYm9vbCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJvYXJkID0g
W2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcDsKKyAg
ICAgICAgaWYgKCFiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJvYXJkKQorICAgICAgICAg
ICAgZXZlbnQgPSBuaWw7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+c2V0SW5pdGlhbEZvY3VzKGRp
cmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQsIGJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tS2V5
Ym9hcmQsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIHNlbGYpKTsKKyAgICB9CiAgICAg
cmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA3ZDhkNGMyZGU0ZGU2ZDI3Yzg1NTcxZjcyMTk5YWExN2ZiZGJkOGI0Li43YmFkYjdi
NTAwZTM0YzI4MGZkODJmMWQ1YjZlMTFiNDU5NTk0NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAwLDExICs3MDAsMTEgQEAgSW50U2l6ZSBXZWJQ
YWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LT52aWV3
U2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2Fy
ZEV2ZW50KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElu
aXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCks
IG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd1Jlc2l6ZXJTaXpl
KGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDJhOWNjYjcyNzM3NzA4YTYwNTZhNTViMjU2MTUxNTA3MTI4
ZjgzNDMuLjQ3MGI2NDA5YTI3NmFhYTAyMzUxMWRhZTE3MTkwODFiMmI1ZWI1NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI2Miw3ICsyNjIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmlld1dp
bGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sKTsKKyAg
ICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50
VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIHNldFdpbmRvd1Jlc2l6
ZXJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICAKICAgICB2b2lkIGNsZWFyU2Vs
ZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCAw
YTJmNWJhNTQzOTU5Mzk0MDJhMTJhODgyZTYyNWU1MzgwNjgwYmU5Li45MjljZDVlZGFhMGNlMGMy
ODkzMDY2MDJlZmMxZjk2NDgxZWRmNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKQEAgLTEwNjgsOSArMTA2OCw5IEBAIHZvaWQgV2ViVmlldzo6c2V0T3ZlcnJp
ZGVDdXJzb3IoSENVUlNPUiBvdmVycmlkZUN1cnNvcikKICAgICB1cGRhdGVOYXRpdmVDdXJzb3Io
KTsKIH0KIAotdm9pZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQordm9p
ZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRF
dmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBtX3BhZ2Ut
PnNldEluaXRpYWxGb2N1cyhmb3J3YXJkKTsKKyAgICBtX3BhZ2UtPnNldEluaXRpYWxGb2N1cyhm
b3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgZXZlbnQpOwogfQogCiB2b2lkIFdlYlZpZXc6
OnNldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IDY3MTU4MWQ3ZWM0NWE0
OTYwODgyMTg5M2E4YTNkNzk1Y2ViMjliYTUuLmJkYzA3ZWZhN2NlYmY3ZTYzNmFiNGEyMDZiOTZj
NGMxNzkzMTcxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7CiAgICAg
dm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRPdmVycmlkZUN1cnNvcihIQ1VS
U09SKTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQpOworICAgIHZvaWQg
c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0T25OZXh0
UmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0
b3JDYWxsYmFjayhXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2ssIHZvaWQqKTsKICAgICBXS1Zp
ZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2sgZ2V0RmluZEluZGljYXRvckNhbGxiYWNrKHZvaWQqKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
YTFmMDBhZTU2MTYwY2IyNjQ0M2UwZGE3YTQwMjEyMmI1MDYyNmJjNC4uNjQ5ZjM4NzhmZGVkZGQy
ZDUyMDQ0ZTkyZDViYjUwNTRjZWM4YjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTMxMSwxNCArMTMxMSwyMCBAQCB2b2lkIFdlYlBh
Z2U6OnNldEZvY3VzZWQoYm9vbCBpc0ZvY3VzZWQpCiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+c2V0Rm9jdXNlZChpc0ZvY3VzZWQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQpCit2b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29s
IGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIGV2ZW50KQogewogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2V0Rm9jdXNlZE5vZGUoMCk7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0
SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVj
dGlvbkJhY2t3YXJkLCAwKTsKKworICAgIGlmIChpc0tleWJvYXJkRXZlbnRWYWxpZCAmJiBldmVu
dC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKKyAgICAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKKyAgICAgICAgcGxhdGZvcm1F
dmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duKTsKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZv
Y3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3
YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZnJhbWUtPmRvY3VtZW50
KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlv
bkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCAwKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBJbnRTaXplJiB3aW5kb3dSZXNpemVyU2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGNiYjg4
ZmU5MDRjODFiODcwZjBjYzVlOWUwMjkzMzE2NzQ2ZDEyNjMuLjRkNjRlYjQ1MzU5ZWYxYzI0YTA3
OWNhNGVkNDcyZGY4YmZkZTg1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICB2
b2lkIHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCk7Cisg
ICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRXaW5kb3dSZXNp
emVyU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRJc0luV2luZG93
KGJvb2wpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggYzI2ZjJlMzczOTYxM2M3MGZkMTE1ODFmMDUzY2FhMGQ2MGExZDBi
Ni4uNzBlNGY1ZjRiY2M4YTJlYWQzOTg0NTE2YTkzOWRmOWE2M2U4ZDNmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldEFjdGl2ZShi
b29sIGFjdGl2ZSkKICAgICBTZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKLSAgICBTZXRJbml0aWFs
Rm9jdXMoYm9vbCBmb3J3YXJkKQorICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCkK
ICAgICBTZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIAogICAgIFNldERyYXdzQmFja2dy
b3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2M2UwNzI3MzQzMTJiMzVjZGQyMTIzMzA5MGMwYjcxYTk4
NzY2NTkwLi44NWM1ZWE3ODc0MzlkY2NhNDMxN2U0NDlhM2IxMWY0ZWY4MGZmNmRjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcg
QEAKKzIwMTEtMDktMjYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJF
R1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50
cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgdGVzdCBmb3IgdGhlIGJ1ZywgSSBoYWQg
dG8gdXBkYXRlIERSVCBhbmQgV0tUUiB0byBjcmVhdGUgc29tZQorICAgICAgICB3aWRnZXQgdGhh
dCBhbGxvd3MgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byBtb3ZlIGF3YXkgZnJvbSB0aGUgbWFp
biB3ZWIgdmlldy4KKworICAgICAgICBUaHJlZSBtZXRob2RzIHdlcmUgYWRkZWQgdG8gbGF5b3V0
VGVzdENvbnRyb2xsZXI6IGFkZENocm9tZUlucHV0RmllbGQsCisgICAgICAgIHJlbW92ZUNocm9t
ZUlucHV0RmllbGQsIGFuZCBmb2N1c1dlYlZpZXcuIGFkZENocm9tZUlucHV0RmllbGQgYWRkcyBh
IHRleHQgZmllbGQKKyAgICAgICAgdGhhdCBpcyBhIHNpYmxpbmcgdG8gdGhlIHdlYiB2aWV3LCBh
bmQgc2V0cyB1cCB0aGUga2V5IGV2ZW50IGxvb3AgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkIHJlbW92ZXMgdGhhdCBmaWVsZC4gZm9jdXNXZWJWaWV3IG1v
dmVzIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBzdGF0dXMgdG8gdGhlIHdlYiB2aWV3LgorCisg
ICAgICAgIFRoZSB0ZXN0IG1ha2VzIHRoZSBjYWxsIHZpYSBsYXlvdXRUZXN0Q29udHJvbGxlciBh
bmQgcGFzc2VzIGEgY2FsbGJhY2sgdGhhdCBpdAorICAgICAgICBhc3N1bWVzIHdpbGwgYmUgZXhl
Y3V0ZWQgb25jZSB0aGUgdGFzayBpcyBjb21wbGV0ZWQuIEluIERSVCB0aGUgY2FsbGJhY2sgaXMg
Y2FsbGVkCisgICAgICAgIHN5bmNocm9ub3VzbHkuIEluIFdLVFIgdGhpcyBpcyBoYW5kbGVkIHdp
dGggbWVzc2FnZSBwYXNzaW5nIGJldHdlZW4gdGhlIHR3bworICAgICAgICBwcm9jZXNzZXMuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAocmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKGZvY3VzV2ViVmlld0NhbGxiYWNrKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
Ojpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hy
b21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnBvc3RGb2N1c1dlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y2Fs
bGJhY2tNYXApOiBDcmVhdGUgYSBoYXNoIG1hcCB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBjYWxs
YmFja3MgcHJvdmlkZWQKKyAgICAgICAgdGhyb3VnaCBKUy4KKyAgICAgICAgKFdUUjo6Y2FjaGVM
YXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6Y2FsbExheW91dFRl
c3RDb250cm9sbGVyQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENv
bnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgor
ICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEZvY3VzV2ViVmlld0NhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdH
dGsuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0Rmll
bGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0Rmll
bGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNw
b25kZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9u
ZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4u
Y3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRG
aWVsZCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6Om1ha2VXZWJW
aWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06IFRoZXNlIGZ1bmN0aW9ucyBoYXZlIG5vdGhp
bmcgdG8gZG8KKyAgICAgICAgd2l0aCB0aGUgcGF0Y2gtLSBqdXN0IGNsZWFuaW5nIHVwIHN0eWxl
LgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZERpc2FsbG93ZWRVUkwpOgorICAg
ICAgICAob3JpZ2luc0FycmF5VG9KUyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cXVldWVMb2FkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRh
YmFzZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEVkaXRpbmdC
ZWhhdmlvcik6CisKIDIwMTEtMDktMjIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBGaW5kU2FmYXJpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMmUxYmRiNDkzNjUxNWZhMGYxYmU5ZDYwMTZiZTA2
Yzk2N2NiOTJlMy4uMDM2MzkzNjk4M2Q5MTBhYWRjNjcwNGFjOTk4NTM0YTc1ODUxMTYxOCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjE2
MCw2ICsyMTYwLDM2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNob3VsZFN0YXlPblBhZ2VBZnRl
ckhhbmRsaW5nQmVmb3JlVW5sb2FkQ2FsbGJhY2soSlNDb250ZXh0CiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBhZGRDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmFk
ZENocm9tZUlucHV0RmllbGQoKTsKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBjYWxs
YmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRlZAor
ICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCksIHRo
aXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5yZW1vdmVDaHJvbWVJbnB1dEZp
ZWxkKCk7CisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgdGhhdCBpcyBj
YWxsZWQgb25jZSB0aGUgaW5wdXQgZmllbGQgaGFzIGJlZW4gYWRkZWQKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA9PSAxKQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0sIDApLCB0aGlzT2JqZWN0LCAwLCAw
LCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0
YXRpYyBKU1ZhbHVlUmVmIGZvY3VzV2ViVmlld0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICBjb250cm9sbGVyLT5mb2N1c1dlYlZpZXcoKTsKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQg
aXMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVl
biBhZGRlZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIEpTT2JqZWN0Q2Fs
bEFzRnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgMCksIHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogLy8gU3RhdGljIFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQpAQCAtMjQzNiw2ICsyNDY2LDkgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFRleHREaXJlY3Rpb24i
LCBzZXRUZXh0RGlyZWN0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYWxsb3dSb3Vu
ZGluZ0hhY2tzIiwgYWxsb3dSb3VuZGluZ0hhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQiLCBzZXRTaG91
bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgICAgIHsgImFkZENocm9tZUlucHV0RmllbGQiLCBhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAicmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIsIHJlbW92ZUNo
cm9tZUlucHV0RmllbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJmb2N1c1dlYlZpZXci
LCBmb2N1c1dlYlZpZXdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4
IGQ1Y2ZiYTc3YzNkYzRiODg2YTQwYTZiNmY1MjkxYmY4NmMxOWRhZDAuLmJhYzhiNGRkYjk4MTJj
YTJlMDllOTRkYjgxYzM5YWNjN2Q1OWI4NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzE0LDYgKzMxNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQ7IH0KICAgICB2
b2lkIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKGJvb2wgc2hv
dWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQpIHsgbV9zaG91bGRTdGF5T25Q
YWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCA9IHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRs
aW5nQmVmb3JlVW5sb2FkOyB9CiAKKyAgICB2b2lkIGFkZENocm9tZUlucHV0RmllbGQoKTsKKyAg
ICB2b2lkIHJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIGZvY3VzV2ViVmlldygp
OworICAgIAogICAgIHZvaWQgc2V0UE9TSVhMb2NhbGUoSlNTdHJpbmdSZWYgbG9jYWxlKTsKIAog
ICAgIHZvaWQgc2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggYzgxN2IyYjZh
Y2IzYTU5OWQxMTNjZjI4YmJkYzdhZTJlODQwNDA5OS4uMTY0OTExNTJjMDc4NDNjNzIzNmIzNDI3
MDAyOWRhZDgwNjlkNTY1MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05ODcsMyArOTg3LDE1IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9u
KQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWxsb3dSb3VuZGluZ0hhY2tzKCkKIHsKIH0K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQor
eworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcoKQoreworfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCmluZGV4IDMxMGRhZmE0NTM5N2ZmZjkwYzkxODVkNzJlY2YwNmJiMmRkNDUxYTguLjE4MDVm
MTVhMzJmNDZjODcyOTg1YWVmZjI2ZjMzZGJiZTBmNGQ2OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTExOSw3ICsx
MTksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGREaXNhbGxvd2VkVVJMKEpTU3Ry
aW5nUmVmIHVybCkKICAgICAgICAgZGlzYWxsb3dlZFVSTHMgPSBDRlNldENyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgTlVMTCk7CiAKICAgICAvLyBDYW5vbmljYWxpemUgdGhl
IFVSTAotICAgIE5TVVJMUmVxdWVzdCogcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKKyAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVybENGLmdldCgpXV07CiAgICAgcmVxdWVz
dCA9IFtOU1VSTFByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3RdOwog
CiAgICAgQ0ZTZXRBZGRWYWx1ZShkaXNhbGxvd2VkVVJMcywgW3JlcXVlc3QgVVJMXSk7CkBAIC0x
NjgsNyArMTY4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKICAgICBbb3JpZ2luIHJlbGVhc2VdOwog
fQogCi1KU1ZhbHVlUmVmIG9yaWdpbnNBcnJheVRvSlMoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5T
QXJyYXkqIG9yaWdpbnMpCitKU1ZhbHVlUmVmIG9yaWdpbnNBcnJheVRvSlMoSlNDb250ZXh0UmVm
IGNvbnRleHQsIE5TQXJyYXkgKm9yaWdpbnMpCiB7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtv
cmlnaW5zIGNvdW50XTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKICAg
ICBOU1N0cmluZyAqdXJsTlMgPSAoTlNTdHJpbmcgKil1cmxDRi5nZXQoKTsKIAogICAgIE5TVVJM
ICpuc3VybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVybE5TIHJlbGF0aXZlVG9VUkw6W1tbbWFp
bkZyYW1lIGRhdGFTb3VyY2VdIHJlc3BvbnNlXSBVUkxdXTsKLSAgICBOU1N0cmluZyogbnN1cmxT
dHJpbmcgPSBbbnN1cmwgYWJzb2x1dGVTdHJpbmddOworICAgIE5TU3RyaW5nICpuc3VybFN0cmlu
ZyA9IFtuc3VybCBhYnNvbHV0ZVN0cmluZ107CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYWJzb2x1dGVVUkwoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKFtuc3Vy
bFN0cmluZyBVVEY4U3RyaW5nXSkpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5l
dyBMb2FkSXRlbShhYnNvbHV0ZVVSTC5nZXQoKSwgdGFyZ2V0KSk7CkBAIC01MDgsOCArNTA4LDgg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJv
b2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUKIHsKICAgICAvLyBEdW1wUmVuZGVyVHJlZSBjb25m
aWd1cmVkIHRoZSBXZWJWaWV3IHRvIHVzZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay4KICAgICBpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPiBwcm92aWRlciA9IFtbbWFp
bkZyYW1lIHdlYlZpZXddIF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyXTsKLSAgICBXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayogbW9ja1Byb3ZpZGVyID0gc3RhdGljX2Nhc3Q8V2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sqPihwcm92aWRlcik7Ci0gICAgV2ViRGV2aWNl
T3JpZW50YXRpb24qIG9yaWVudGF0aW9uID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10g
aW5pdFdpdGhDYW5Qcm92aWRlQWxwaGE6Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblBy
b3ZpZGVCZXRhOmNhblByb3ZpZGVCZXRhIGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJv
dmlkZUdhbW1hIGdhbW1hOmdhbW1hXTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayAqbW9ja1Byb3ZpZGVyID0gc3RhdGljX2Nhc3Q8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2sqPihwcm92aWRlcik7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24gKm9yaWVudGF0
aW9uID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDYW5Qcm92aWRlQWxw
aGE6Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblByb3ZpZGVCZXRhOmNhblByb3ZpZGVC
ZXRhIGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJvdmlkZUdhbW1hIGdhbW1hOmdhbW1h
XTsKICAgICBbbW9ja1Byb3ZpZGVyIHNldE9yaWVudGF0aW9uOm9yaWVudGF0aW9uXTsKICAgICBb
b3JpZW50YXRpb24gcmVsZWFzZV07CiB9CkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50
KQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29s
IGljb25EYXRhYmFzZUVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgPHJkYXI6
Ly9wcm9ibGVtLzY0ODAxMDg+Ci0gICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSogc2hhcmVkV2Vi
SWNvbkRhdGFiYXNlID0gTlVMTDsKKyAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNlICpzaGFyZWRX
ZWJJY29uRGF0YWJhc2UgPSBOVUxMOwogICAgIGlmICghc2hhcmVkV2ViSWNvbkRhdGFiYXNlKSB7
CiAgICAgICAgIGlmICghaWNvbkRhdGFiYXNlRW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTExNTEsNyArMTE1MSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmF1dGhlbnRp
Y2F0ZVNlc3Npb24oSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB1c2VyCiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEVkaXRpbmdCZWhhdmlvcihjb25zdCBjaGFyKiBlZGl0aW5n
QmVoYXZpb3IpCiB7Ci0gICAgTlNTdHJpbmcqIGVkaXRpbmdCZWhhdmlvck5TID0gW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOmVkaXRpbmdCZWhhdmlvcl07CisgICAgTlNTdHJp
bmcgKmVkaXRpbmdCZWhhdmlvck5TID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3Ry
aW5nOmVkaXRpbmdCZWhhdmlvcl07CiAgICAgaWYgKFtlZGl0aW5nQmVoYXZpb3JOUyBpc0VxdWFs
VG9TdHJpbmc6QCJtYWMiXSkKICAgICAgICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZl
cmVuY2VzXSBzZXRFZGl0aW5nQmVoYXZpb3I6V2ViS2l0RWRpdGluZ01hY0JlaGF2aW9yXTsKICAg
ICBlbHNlIGlmIChbZWRpdGluZ0JlaGF2aW9yTlMgaXNFcXVhbFRvU3RyaW5nOkAid2luIl0pCkBA
IC0xMjAyLDMgKzEyMDIsMjUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERp
cmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb25OYW1lKQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICNlbmRpZgogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJv
bWVJbnB1dEZpZWxkKCkKK3sKKyAgICBOU1RleHRGaWVsZCAqdGV4dEZpZWxkID0gW1tOU1RleHRG
aWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKKyAg
ICB0ZXh0RmllbGQudGFnID0gMTsKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10g
Y29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKKyAgICBbdGV4dEZpZWxkIHJlbGVh
c2VdOworICAgIAorICAgIFt0ZXh0RmllbGQgc2V0TmV4dEtleVZpZXc6W21haW5GcmFtZSB3ZWJW
aWV3XV07CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0TmV4dEtleVZpZXc6dGV4dEZpZWxk
XTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVs
ZCgpCit7CisgICAgW1tbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10g
dmlld1dpdGhUYWc6MV0gcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgZm9jdXNXZWJWaWV3KCk7
Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldygpCit7CisgICAg
W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOlttYWluRnJh
bWUgd2ViVmlld11dOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYzc4ZmVhNTU1NDIwZTEyOWJhZDI0YzlmNWMx
NGM2YjNjZGY3YjZjYy4uNWM5N2VlNmM4MTVkMTM0ODJhNzNiMTQ5ODk4ZTRiZjc5Y2I4Mzg1ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCkBAIC0xNTQwLDMgKzE1NDAsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphbGxvd1JvdW5kaW5nSGFja3MoKQogewogfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldygpCit7Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCmluZGV4IDUyMWFiN2MwYTYwMGNjZTVmY2VjNzMw
MmUyYjdiNDhhYzE3M2Y5N2IuLjUwY2E0NjI2ODc3YjA4YjhjYTRkZTZkYzZlYTYxZGQ3Y2UyNDYy
ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCkBAIC0x
MTcsNiArMTE3LDExIEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2b2lkIHNldFdpbGxTZW5kUmVx
dWVzdFJldHVybnNOdWxsKGluIGJvb2xlYW4gZmxhZyk7CiAgICAgICAgIAogICAgICAgICB2b2lk
IHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKGluIGJvb2xlYW4g
ZmxhZyk7CisgICAgICAgIAorICAgICAgICAvLyBGb2N1cyB0ZXN0aW5nLgorICAgICAgICB2b2lk
IGFkZENocm9tZUlucHV0RmllbGQoaW4gb2JqZWN0IGNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKGluIG9iamVjdCBjYWxsYmFjayk7CisgICAgICAgIHZvaWQg
Zm9jdXNXZWJWaWV3KGluIG9iamVjdCBjYWxsYmFjayk7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAppbmRleCBkZDA0NTc4NmI0Y2E2YjRkOTIyZTQxMDI2Y2I0NzM2NjkxMDFiOTRmLi5kZTNk
MjUxN2NlZmNlZjFjN2E4MTRlMzg5YWI4YzllMWJiZDAzYjMxIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApA
QCAtMTU4LDYgKzE1OCwxOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2Fn
ZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZwogCiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJDYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpIHsKKyAgICAgICAgbV9s
YXlvdXRUZXN0Q29udHJvbGxlci0+Y2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayIpKSB7
CisgICAgICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbGxSZW1vdmVDaHJvbWVJbnB1dEZp
ZWxkQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxGb2N1c1dlYlZpZXdDYWxsYmFj
ayIpKSB7CisgICAgICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbGxGb2N1c1dlYlZpZXdD
YWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGVycm9yTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkVycm9yIikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3du
IikpOwpAQCAtMjQxLDQgKzI1MywyMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0TmV3QmVm
b3JlVW5sb2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCit2
b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJBZGRDaHJvbWVJbnB1dEZpZWxkIikpOworICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwordm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6cG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIpKTsKKyAgICBXS0J1bmRsZVBvc3RN
ZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnBvc3RGb2N1c1dlYlZpZXcoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Rm9jdXNXZWJWaWV3IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5k
ZXggNTA2YmVkZjhkMzM5ODBiMTJlMzFkNTMyMmIzOTI2OTAzNGE4NjY3Zi4uMzljNjkyZDQ3Yjdh
MTQxZTcxYzY2ZjQ0YTZlMDUzYzJjMWM4YjdjOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtNzMsNiArNzMs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREdW1wUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4g
bV9kdW1wUGl4ZWxzOyB9CiAgICAgCiAgICAgdm9pZCBwb3N0TmV3QmVmb3JlVW5sb2FkUmV0dXJu
VmFsdWUoYm9vbCk7CisgICAgdm9pZCBwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZv
aWQgcG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIHBvc3RGb2N1c1dlYlZp
ZXcoKTsKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZSgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAppbmRleCAwM2MyN2Y2NTE0NjI3NTcwMzYwOGFiMjhiNzZjZThiOTRkZjE1MGQx
Li42MTdkNWJjMjFlNTE5YzExOGM1YmNjN2ZmMjAzYWJiNzQ4ZTYxN2M5IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcApAQCAtNTAwLDQgKzUwMCw2MyBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChib29s
IHNobwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0TmV3QmVmb3JlVW5sb2FkUmV0
dXJuVmFsdWUoIXNob3VsZFN0YXlPblBhZ2UpOwogfQogCit0eXBlZGVmIFdURjo6SGFzaE1hcDx1
bnNpZ25lZCwgSlNWYWx1ZVJlZj4gQ2FsbGJhY2tNYXA7CitzdGF0aWMgQ2FsbGJhY2tNYXAmIGNh
bGxiYWNrTWFwKCkKK3sKKyAgICBzdGF0aWMgQ2FsbGJhY2tNYXAmIG1hcCA9ICpuZXcgQ2FsbGJh
Y2tNYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIHZvaWQgY2FjaGVMYXlvdXRUZXN0
Q29udHJvbGxlckNhbGxiYWNrKHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQor
eworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZy
YW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250
ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZy
YW1lKTsKKyAgICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBjYWxsYmFjayk7CisgICAgY2FsbGJh
Y2tNYXAoKS5hZGQoaW5kZXgsIGNhbGxiYWNrKTsKK30KKworc3RhdGljIHZvaWQgY2FsbExheW91
dFRlc3RDb250cm9sbGVyQ2FsbGJhY2sodW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKCFjYWxs
YmFja01hcCgpLmNvbnRhaW5zKGluZGV4KSkKKyAgICAgICAgcmV0dXJuOworICAgIFdLQnVuZGxl
RnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQg
PSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICBKU09i
amVjdFJlZiBjYWxsYmFjayA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBjYWxsYmFja01hcCgp
LnRha2UoaW5kZXgpLCAwKTsKKyAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGNh
bGxiYWNrLCBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCksIDAsIDAsIDApOworICAg
IEpTVmFsdWVVbnByb3RlY3QoY29udGV4dCwgY2FsbGJhY2spOworfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7
CisgICAgY2FjaGVMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDEsIGNhbGxiYWNrKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucG9zdEFkZENocm9tZUlucHV0RmllbGQoKTsKK30K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChKU1Zh
bHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFj
aygyLCBjYWxsYmFjayk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RSZW1vdmVD
aHJvbWVJbnB1dEZpZWxkKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3Vz
V2ViVmlldyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlTGF5b3V0VGVzdENvbnRy
b2xsZXJDYWxsYmFjaygzLCBjYWxsYmFjayk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBvc3RGb2N1c1dlYlZpZXcoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2Fs
bEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaygpCit7CisgICAgY2FsbExheW91dFRlc3RDb250
cm9sbGVyQ2FsbGJhY2soMSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxS
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29u
dHJvbGxlckNhbGxiYWNrKDIpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxs
Rm9jdXNXZWJWaWV3Q2FsbGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNh
bGxiYWNrKDMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAppbmRleCA2YTlhMTFlN2I3OWU0ZjAyODczNjI4NTdhN2M5ZTE4NTBkOTBiZjRkLi40ZDdiNjk5
MmIyMGM5Y2JkMjJiZjEwNTU3ODE3NjAyYzc1NGUwMWVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC0xNzIsNiArMTcyLDEzIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGdsb2JhbEZs
YWcoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbEZsYWc7IH0KICAgICB2b2lkIHNldEdsb2JhbEZs
YWcoYm9vbCB2YWx1ZSkgeyBtX2dsb2JhbEZsYWcgPSB2YWx1ZTsgfQorICAgIAorICAgIHZvaWQg
YWRkQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIHJlbW92ZUNocm9tZUlu
cHV0RmllbGQoSlNWYWx1ZVJlZik7CisgICAgdm9pZCBmb2N1c1dlYlZpZXcoSlNWYWx1ZVJlZik7
CisgICAgdm9pZCBjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgdm9pZCBj
YWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgdm9pZCBjYWxsRm9jdXNX
ZWJWaWV3Q2FsbGJhY2soKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybVdlYlZpZXcuaAppbmRleCA0NjQ0OTBiN2FkZTQxZWU5NTFlMmQ2Zjc1ZDc0OTBjZGRlNTQ0
YTRmLi5jMTIyYTg2YmJkOGZkNjg2MDBkZDIyZjZhYzgxNTkzMGFmNmI1NWFkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTcxLDYgKzcxLDEwIEBAIHB1Ymxp
YzoKIAogICAgIFdLUmVjdCB3aW5kb3dGcmFtZSgpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUo
V0tSZWN0KTsKKyAgICAKKyAgICB2b2lkIGFkZENocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lk
IHJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIG1ha2VXZWJWaWV3Rmlyc3RSZXNw
b25kZXIoKTsKIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVdLVmlldyBtX3ZpZXc7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGJlMjAwNDZhMjFiMDEzNTAx
MjI5MWRlYzM3ZWU1YmYxNjExMDEzNDIuLjM1ZmM4MjM4NTA4MDA2MDA5YTI5ZGU1YmUyZDUxN2Qx
OGE0OTI3OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBA
IC0yNDUsNiArMjQ1LDI3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5zZXRCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShXS0Jvb2xlYW5H
ZXRWYWx1ZShiZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFy
ZWQoKS5tYWluV2ViVmlldygpLT5hZGRDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7CisgICAg
ICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6
c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIlJlbW92ZUNocm9tZUlucHV0RmllbGQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxi
YWNrIikpOworICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRm9jdXNXZWJWaWV3IikpIHsKKyAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPm1ha2VXZWJWaWV3Rmlyc3RSZXNwb25k
ZXIoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbEZvY3VzV2ViVmlld0NhbGxi
YWNrIikpOworICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApp
bmRleCBlNWI4MDM4YTg2NTY1MDM3MTY4ZWFlYmE2MzMxZDU5ZDFhZmQ3MWUwLi4zNzM1ZGM1ZTZj
MmU1OGI5Yjk4MWQ0NDNhYzU1Njc3OGRmMDQ3NjA2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTk3LDUgKzk3LDE3IEBAIHZv
aWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QgZnJhbWUpCiAgICAgcmVz
aXplVG8oZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpOwogfQogCit2b2lkIFBs
YXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQoreworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZv
cm1XZWJWaWV3TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tCmluZGV4IGFmZjEwZWQ1MDRjYTA4NjliN2UwZjUwOGVlNWE0YjM3Mjc3NDZjYmYu
LjUzNDI2NDMwN2RmNzJmYTIwZDNlNDk2MDRhOTM1OGI1M2IwZDQ3N2IgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTgwLDQgKzgw
LDI2IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QgZnJhbWUp
CiAgICAgW21fd2luZG93IHNldEZyYW1lOk5TTWFrZVJlY3QoZnJhbWUub3JpZ2luLngsIGZyYW1l
Lm9yaWdpbi55LCBmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCkgZGlzcGxheTpZ
RVNdOwogfQogCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7
CisgICAgTlNUZXh0RmllbGQqIHRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDIwKV07CisgICAgdGV4dEZpZWxkLnRhZyA9
IDE7CisgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGRdOwor
ICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisKKyAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3
Om1fdmlld107CisgICAgW21fdmlldyBzZXROZXh0S2V5Vmlldzp0ZXh0RmllbGRdOworfQorCit2
b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7CisgICAgW1tb
bV93aW5kb3cgY29udGVudFZpZXddIHZpZXdXaXRoVGFnOjFdIHJlbW92ZUZyb21TdXBlcnZpZXdd
OworICAgIG1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKK30KKwordm9pZCBQbGF0Zm9ybVdl
YlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQoreworICAgIFttX3dpbmRvdyBtYWtl
Rmlyc3RSZXNwb25kZXI6bV92aWV3XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAppbmRleCA5
ZTIzZDcwZTVlM2MyNjYyOWVmNmJlZGE2OGNmNjA1ZjY1MWYwODQ3Li5hMmY0MzYzNDc0ZGRiZWY4
ZTg4M2MwZjZkZjRkMmU0N2U2YTljZTNmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKQEAgLTk3LDQgKzk3LDE3IEBAIHZvaWQgUGxh
dGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QpCiAgICAgLy8gSW1wbGVtZW50Lgog
fQogCisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQor
eworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFrZVdlYlZpZXdGaXJzdFJl
c3BvbmRlcigpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108750</attachid>
            <date>2011-09-26 16:19:56 -0700</date>
            <delta_ts>2011-09-27 14:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110926161956.patch</filename>
            <type>text/plain</type>
            <size>43092</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MjI0YWVhMzFlOTYyYjQ1ZGMxNmQz
NWEzNDc0MGQ0MzE1NDUzNDljLi40NzliODdjM2Y4YWY1MWJiODhlMmI5NGQ0OTJhMTc3MjNkNmMy
OTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjYgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5q
czogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuS2V5UHJlc3Nlcyk6
CisgICAgICAgIChub3RpZnlEb25lKToKKyAgICAgICAgKGxvZyk6CisKIDIwMTEtMDktMjIgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY1MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2FhMWRmNmYyMWIyMGE0M2JlNzZhOGM2MjAyYzkzZGZhODcwMjhlNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNv
bnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAoraHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyIC0gVGhpcyB0ZXN0IGNoZWNrcyB0byBz
ZWUgaWYgb3B0aW9uKGFsdCktdGFiYmluZyBwcm9wZXJseSBmb2N1c2VzIGZvcm0gZWxlbWVudHMg
dGhhdCBhcmUgbm9ybWFsbHkgbm90IGZvY3VzZWQuIEZvciB0ZXN0aW5nLCB0aGUgYXNzdW1wdGlv
biBpcyB0aGF0IGJ5IGRlZmF1bHQgcHJlc3NpbmcgdGFiIHdpbGwgc2tpcCBvdmVyIGJ1dHRvbnMs
IGFuZCBvcHRpb24tdGFiIHdpbGwgaW5jbHVkZSBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworICAKK1ByZXNzaW5nIHRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMg
IiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiCitQ
cmVzc2luZyBzaGlmdC10YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNlZCB0
ZXh0IGZpZWxkIC8yOiAvMzpmb2N1c2VkIHRleHQgZmllbGQgLzQ6IgorUHJlc3Npbmcgb3B0aW9u
LXRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAv
Mjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiIKK1ByZXNz
aW5nIHNoaWZ0LW9wdGlvbi10YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNl
ZCBzZWNvbmQgYnV0dG9uIC8yOmZvY3VzZWQgdGV4dCBmaWVsZCAvMzpmb2N1c2VkIGZpcnN0IGJ1
dHRvbiAvNDoiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtb3B0
aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb2N1cy1v
cHRpb24tY29udHJvbC1vbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMzNmNhYzE2ZDNjYzg4ODVj
MTJmYTRlZWY3MDdhYTZlMGVkNzQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8aW5wdXQgdHlw
ZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgZmlyc3QgYnV0dG9uJykiIHZhbHVlPSIx
Ij4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgdGV4dCBmaWVsZCcp
IiB2YWx1ZT0iMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQg
c2Vjb25kIGJ1dHRvbicpIiB2YWx1ZT0iMyI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2Uu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29u
dHJvbC1vbi1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ZTAzM2UzMDU3MDVmN2I5MzMxNTdjM2Y3Nzlk
ZWEwMTkyYjA5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCkBAIC0wLDAgKzEsNjEg
QEAKK2Rlc2NyaXB0aW9uKCdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg0MTIgLSBUaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5nIHBy
b3Blcmx5IGZvY3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9jdXNl
ZC4gRm9yIHRlc3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVzc2lu
ZyB0YWIgd2lsbCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNsdWRl
IGJ1dHRvbnMuJyk7CisKK3ZhciBpdGVyYXRpb24gPSAwOwordmFyIG1vZGlmaWVyczsKK3ZhciBy
ZXN1bHQ7CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZGVidWcoIlByZXNzaW5nIHRhYiA0
IHRpbWVzOiIpOworICAgIG1vZGlmaWVycyA9IHVuZGVmaW5lZDsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7Cit9CisKK2Z1bmN0aW9uIHJ1bktl
eVByZXNzZXMoKSB7CisgICAgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0
OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9ICcgLycgKyAoaSArIDEpICsgJzonOworICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1vZGlmaWVycyk7CisgICAgfQorICAgIGl0ZXJh
dGlvbisrOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8z
OmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiJyk7CisgICAgICAgICAgICBkZWJ1ZygiUHJlc3Npbmcg
c2hpZnQtdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5
Il07CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5
UHJlc3Nlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgdGV4dCBmaWVsZCAvMjogLzM6Zm9j
dXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKKyAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBvcHRp
b24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJdOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNz
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHNo
b3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRl
eHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGRl
YnVnKCJQcmVzc2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBt
b2RpZmllcnMgPSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAv
MTpmb2N1c2VkIHNlY29uZCBidXR0b24gLzI6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8zOmZvY3VzZWQg
Zmlyc3QgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnJl
bW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2codmFsKSB7CisgICAgcmVzdWx0ICs9
IHZhbDsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiBsYXlvdXRUZXN0
Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmFkZENocm9tZUlucHV0RmllbGQo
c3RhcnRUZXN0KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xheW91dFRlc3RDb250cm9s
bGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSl9LCAyMDAwKTsKK30gZWxzZQor
ICAgIGZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAwZGFmMjBiMDkyOTZhYzEzMDg2Y2ExMmQxODliZDYwMTgzNzAxYzQ0Li5kYWE3
ZTMwYmM1NmQ0NjA2M2Y4ZWJiOWJhYjkyMDdhNzUwNTc3MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjMgQEAKKzIwMTEtMDktMjYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBl
bGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gV0sxIHNldEluaXRpYWxGb2N1cygpIGlzIGNhbGxlZCBvbiBG
b2N1c0NvbnRyb2xsZXIgd2l0aCB0aGUga2V5IGV2ZW50IHRoYXQKKyAgICAgICAgY2F1c2VkIHRo
ZSB3ZWIgdmlldyB0byBiZWNvbWUgZmlyc3QgcmVzcG9uZGVyLiBJbiBXSzIgbm8gZXZlbnQgaXMg
c2VudC4gU28gaWYKKyAgICAgICAgdGhlIGtleSBzdHJva2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5n
ZSBpbiBmaXJzdCByZXNwb25kZXIgc3RhdHVzIGNvbnRhaW5zIHRoZQorICAgICAgICBvcHRpb24g
bW9kaWZpZXIga2V5LCBGb2N1c0NvbnRyb2xsZXIgZGlkIG5vdCBrbm93IHRoYXQgaXQgaGFkIHRv
IHN3aXRjaCBiZWhhdmlvci4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZSB3
YXlzIHRoYXQgdGhlIFdLVmlldyBjYW4gYmVjb21lRmlyc3RSZXNwb25kZXIsIEkgY2hhbmdlZAor
ICAgICAgICB0aGUgc2lnbmF0dXJlIHRvIHNldEluaXRpYWxGb2N1cyB0byBleHByZXNzIHdoZXRo
ZXIgdGhlIGtleSBldmVudCBwYXJhbWV0ZXIgaXMgYW4KKyAgICAgICAgYWN0dWFsIGtleSBldmVu
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldEluaXRpYWxGb2N1cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBUYWtlIHRoZSBOU0FwcCBjdXJyZW50
RXZlbnQgYW5kIHBhc3MgaXQgYWxvbmcgaWYKKyAgICAgICAgdGhlIGV2ZW50IGlzIGEga2V5Ym9h
cmQgZXZlbnQsIG90aGVyd2lzZSBwYXNzIGFuIGVtcHR5IGV2ZW50LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dEluaXRpYWxGb2N1cyk6IENoYW5nZSBpbiBmdW5jdGlvbiBzaWduYXR1cmUgdG8gY29uZmlybSB0
aGF0CisgICAgICAgIHRoZSBldmVudCB0aGF0IGNhdXNlZCB0aGUgaW5pdGlhbCBmb2N1cyB3YXMg
YSBrZXlib2FyZCBldmVudCwgYW5kIHByb3ZpZGUgdGhlIGtleWJvYXJkCisgICAgICAgIGV2ZW50
IGl0c2VsZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0
SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6IElmIHdlIGtub3cgdGhhdCB0aGUgY2F1c2Ugb2YgdGhp
cyB3YXMgYSBrZXlib2FyZAorICAgICAgICBldmVudCwgd2UgcGFzcyB0aGF0IGV2ZW50IHRvIHRo
ZSBGb2N1c0NvbnRyb2xsZXIuIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFs
CisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBpcyB0byBwYXNzIG5vIGV2ZW50IGF0IGFsbC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisyMDExLTA5LTIzICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQtKW9w
dGlvbi10YWJiaW5nIHNraXBzIG92ZXIgZWxlbWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20g
Y2hyb21lIHRvIHdlYnZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdLMSBzZXRJbml0
aWFsRm9jdXMoKSBpcyBjYWxsZWQgb24gRm9jdXNDb250cm9sbGVyIHdpdGggdGhlIGtleSBldmVu
dCB0aGF0CisgICAgICAgIGNhdXNlZCB0aGUgd2ViIHZpZXcgdG8gYmVjb21lIGZpcnN0IHJlc3Bv
bmRlci4gSW4gV0syIG5vIGV2ZW50IGlzIHNlbnQuIFNvIGlmCisgICAgICAgIHRoZSBrZXkgc3Ry
b2tlIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2UgaW4gZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBjb250
YWlucyB0aGUKKyAgICAgICAgb3B0aW9uIG1vZGlmaWVyIGtleSwgRm9jdXNDb250cm9sbGVyIGRp
ZCBub3Qga25vdyB0aGF0IGl0IGhhZCB0byBzd2l0Y2ggYmVoYXZpb3IuCisKKyAgICAgICAgQmVj
YXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0aGF0IHRoZSBXS1ZpZXcgY2FuIGJlY29tZUZp
cnN0UmVzcG9uZGVyLCBJIGNoYW5nZWQKKyAgICAgICAgdGhlIHNpZ25hdHVyZSB0byBzZXRJbml0
aWFsRm9jdXMgdG8gZXhwcmVzcyB3aGV0aGVyIHRoZSBrZXkgZXZlbnQgcGFyYW1ldGVyIGlzIGFu
CisgICAgICAgIGFjdHVhbCBrZXkgZXZlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
d2luL1dLVmlldy5jcHA6IFVwZGF0ZSBmdW5jdGlvbiBzaWduYXR1cmUuCisgICAgICAgIChXS1Zp
ZXdTZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3
Lmg6CisKKwogMjAxMS0wOS0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV0syXSBVSVByb2Nlc3Mgc2hvdWxkIGNoZWNrIHRoYXQgV2ViUHJvY2VzcyBp
c24ndCBzZW5kaW5nIHVuZXhwZWN0ZWQgZmlsZTogVVJMcyB0byBpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCmluZGV4IGU3YzkyZTA1MTMxMjg5ZjJl
ZDNlNzhhZmZiMWE0ZTE2NWZlMWIwY2UuLjk4ZThhMzVkMDUwMjRhNjU0NTlhY2JlN2Y5NzY3NDYw
YzA3M2NhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4v
V0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmll
dy5jcHAKQEAgLTY5LDcgKzY5LDggQEAgdm9pZCBXS1ZpZXdTZXRJc0luV2luZG93KFdLVmlld1Jl
ZiB2aWV3UmVmLCBib29sIGlzSW5XaW5kb3cpCiAKIHZvaWQgV0tWaWV3U2V0SW5pdGlhbEZvY3Vz
KFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGZvcndhcmQpCiB7Ci0gICAgdG9JbXBsKHZpZXdSZWYp
LT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCk7CisgICAgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxp
ZCA9IGZhbHNlOworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQs
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLZXlib2FyZEV2ZW50KCkpOwogfQogCiB2b2lkIFdL
Vmlld1NldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShXS1ZpZXdSZWYgdmlld1JlZiwgV0tTaXpl
IHNjcm9sbE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQppbmRleCAwYjg4ZDMyNGE1OWI2ZTU1ODU3NjgxOTUwYzRkYzRlOTQ3ZDI1YTU5Li5iNjBjODNj
NDY0ZDMzNjdiNDdkMzIwZDFhZGNjMTU5ZDE3YWY5NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQsMTcgKzMwNCwyMSBAQCBzdHJ1Y3QgV0tW
aWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAtIChCT09MKWJlY29tZUZpcnN0UmVz
cG9uZGVyCiB7CiAgICAgTlNTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gW1tzZWxmIHdp
bmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0KKyAgICAKICAgICBfZGF0YS0+X2lu
QmVjb21lRmlyc3RSZXNwb25kZXIgPSB0cnVlOwogICAgIAogICAgIFtzZWxmIF91cGRhdGVTZWN1
cmVJbnB1dFN0YXRlXTsKICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQ
YWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOwotCisgICAgCiAgICAgX2RhdGEtPl9pbkJlY29tZUZp
cnN0UmVzcG9uZGVyID0gZmFsc2U7Ci0KLSAgICBpZiAoZGlyZWN0aW9uICE9IE5TRGlyZWN0U2Vs
ZWN0aW9uKQotICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24g
PT0gTlNTZWxlY3RpbmdOZXh0KTsKLQorICAgIAorICAgIGlmIChkaXJlY3Rpb24gIT0gTlNEaXJl
Y3RTZWxlY3Rpb24pIHsKKyAgICAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNBcHAgY3VycmVudEV2
ZW50XTsKKyAgICAgICAgYm9vbCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJvYXJkID0g
W2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcDsKKyAg
ICAgICAgaWYgKCFiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJvYXJkKQorICAgICAgICAg
ICAgZXZlbnQgPSBuaWw7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+c2V0SW5pdGlhbEZvY3VzKGRp
cmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQsIGJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tS2V5
Ym9hcmQsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIHNlbGYpKTsKKyAgICB9CiAgICAg
cmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA3ZDhkNGMyZGU0ZGU2ZDI3Yzg1NTcxZjcyMTk5YWExN2ZiZGJkOGI0Li43YmFkYjdi
NTAwZTM0YzI4MGZkODJmMWQ1YjZlMTFiNDU5NTk0NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAwLDExICs3MDAsMTEgQEAgSW50U2l6ZSBXZWJQ
YWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LT52aWV3
U2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2Fy
ZEV2ZW50KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElu
aXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCks
IG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd1Jlc2l6ZXJTaXpl
KGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDJhOWNjYjcyNzM3NzA4YTYwNTZhNTViMjU2MTUxNTA3MTI4
ZjgzNDMuLjQ3MGI2NDA5YTI3NmFhYTAyMzUxMWRhZTE3MTkwODFiMmI1ZWI1NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI2Miw3ICsyNjIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmlld1dp
bGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sKTsKKyAg
ICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50
VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIHNldFdpbmRvd1Jlc2l6
ZXJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICAKICAgICB2b2lkIGNsZWFyU2Vs
ZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCAw
YTJmNWJhNTQzOTU5Mzk0MDJhMTJhODgyZTYyNWU1MzgwNjgwYmU5Li45MjljZDVlZGFhMGNlMGMy
ODkzMDY2MDJlZmMxZjk2NDgxZWRmNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKQEAgLTEwNjgsOSArMTA2OCw5IEBAIHZvaWQgV2ViVmlldzo6c2V0T3ZlcnJp
ZGVDdXJzb3IoSENVUlNPUiBvdmVycmlkZUN1cnNvcikKICAgICB1cGRhdGVOYXRpdmVDdXJzb3Io
KTsKIH0KIAotdm9pZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQordm9p
ZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRF
dmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBtX3BhZ2Ut
PnNldEluaXRpYWxGb2N1cyhmb3J3YXJkKTsKKyAgICBtX3BhZ2UtPnNldEluaXRpYWxGb2N1cyhm
b3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgZXZlbnQpOwogfQogCiB2b2lkIFdlYlZpZXc6
OnNldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IDY3MTU4MWQ3ZWM0NWE0
OTYwODgyMTg5M2E4YTNkNzk1Y2ViMjliYTUuLmJkYzA3ZWZhN2NlYmY3ZTYzNmFiNGEyMDZiOTZj
NGMxNzkzMTcxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7CiAgICAg
dm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRPdmVycmlkZUN1cnNvcihIQ1VS
U09SKTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQpOworICAgIHZvaWQg
c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0T25OZXh0
UmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0
b3JDYWxsYmFjayhXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2ssIHZvaWQqKTsKICAgICBXS1Zp
ZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2sgZ2V0RmluZEluZGljYXRvckNhbGxiYWNrKHZvaWQqKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
YTFmMDBhZTU2MTYwY2IyNjQ0M2UwZGE3YTQwMjEyMmI1MDYyNmJjNC4uNjQ5ZjM4NzhmZGVkZGQy
ZDUyMDQ0ZTkyZDViYjUwNTRjZWM4YjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTMxMSwxNCArMTMxMSwyMCBAQCB2b2lkIFdlYlBh
Z2U6OnNldEZvY3VzZWQoYm9vbCBpc0ZvY3VzZWQpCiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+c2V0Rm9jdXNlZChpc0ZvY3VzZWQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQpCit2b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29s
IGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIGV2ZW50KQogewogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2V0Rm9jdXNlZE5vZGUoMCk7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0
SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVj
dGlvbkJhY2t3YXJkLCAwKTsKKworICAgIGlmIChpc0tleWJvYXJkRXZlbnRWYWxpZCAmJiBldmVu
dC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKKyAgICAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKKyAgICAgICAgcGxhdGZvcm1F
dmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duKTsKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZv
Y3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3
YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZnJhbWUtPmRvY3VtZW50
KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlv
bkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCAwKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBJbnRTaXplJiB3aW5kb3dSZXNpemVyU2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGNiYjg4
ZmU5MDRjODFiODcwZjBjYzVlOWUwMjkzMzE2NzQ2ZDEyNjMuLjRkNjRlYjQ1MzU5ZWYxYzI0YTA3
OWNhNGVkNDcyZGY4YmZkZTg1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICB2
b2lkIHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCk7Cisg
ICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRXaW5kb3dSZXNp
emVyU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRJc0luV2luZG93
KGJvb2wpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggYzI2ZjJlMzczOTYxM2M3MGZkMTE1ODFmMDUzY2FhMGQ2MGExZDBi
Ni4uNzBlNGY1ZjRiY2M4YTJlYWQzOTg0NTE2YTkzOWRmOWE2M2U4ZDNmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldEFjdGl2ZShi
b29sIGFjdGl2ZSkKICAgICBTZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKLSAgICBTZXRJbml0aWFs
Rm9jdXMoYm9vbCBmb3J3YXJkKQorICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCkK
ICAgICBTZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIAogICAgIFNldERyYXdzQmFja2dy
b3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2M2UwNzI3MzQzMTJiMzVjZGQyMTIzMzA5MGMwYjcxYTk4
NzY2NTkwLi5kYmNhMWY1NTliZTUyMDUxZWU5ZThmYTI3ZjIzMjlhYjRiZmJkNjRiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcg
QEAKKzIwMTEtMDktMjYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJF
R1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50
cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgdGVzdCBmb3IgdGhlIGJ1ZywgSSBoYWQg
dG8gdXBkYXRlIERSVCBhbmQgV0tUUiB0byBjcmVhdGUgc29tZQorICAgICAgICB3aWRnZXQgdGhh
dCBhbGxvd3MgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byBtb3ZlIGF3YXkgZnJvbSB0aGUgbWFp
biB3ZWIgdmlldy4KKworICAgICAgICBUaHJlZSBtZXRob2RzIHdlcmUgYWRkZWQgdG8gbGF5b3V0
VGVzdENvbnRyb2xsZXI6IGFkZENocm9tZUlucHV0RmllbGQsCisgICAgICAgIHJlbW92ZUNocm9t
ZUlucHV0RmllbGQsIGFuZCBmb2N1c1dlYlZpZXcuIGFkZENocm9tZUlucHV0RmllbGQgYWRkcyBh
IHRleHQgZmllbGQKKyAgICAgICAgdGhhdCBpcyBhIHNpYmxpbmcgdG8gdGhlIHdlYiB2aWV3LCBh
bmQgc2V0cyB1cCB0aGUga2V5IGV2ZW50IGxvb3AgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkIHJlbW92ZXMgdGhhdCBmaWVsZC4gZm9jdXNXZWJWaWV3IG1v
dmVzIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBzdGF0dXMgdG8gdGhlIHdlYiB2aWV3LgorCisg
ICAgICAgIFRoZSB0ZXN0IG1ha2VzIHRoZSBjYWxsIHZpYSBsYXlvdXRUZXN0Q29udHJvbGxlciBh
bmQgcGFzc2VzIGEgY2FsbGJhY2sgdGhhdCBpdAorICAgICAgICBhc3N1bWVzIHdpbGwgYmUgZXhl
Y3V0ZWQgb25jZSB0aGUgdGFzayBpcyBjb21wbGV0ZWQuIEluIERSVCB0aGUgY2FsbGJhY2sgaXMg
Y2FsbGVkCisgICAgICAgIHN5bmNocm9ub3VzbHkuIEluIFdLVFIgdGhpcyBpcyBoYW5kbGVkIHdp
dGggbWVzc2FnZSBwYXNzaW5nIGJldHdlZW4gdGhlIHR3bworICAgICAgICBwcm9jZXNzZXMuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAocmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKGZvY3VzV2ViVmlld0NhbGxiYWNrKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
Ojpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hy
b21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnBvc3RGb2N1c1dlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y2Fs
bGJhY2tNYXApOiBDcmVhdGUgYSBoYXNoIG1hcCB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBjYWxs
YmFja3MgcHJvdmlkZWQKKyAgICAgICAgdGhyb3VnaCBKUy4KKyAgICAgICAgKFdUUjo6Y2FjaGVM
YXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6Y2FsbExheW91dFRl
c3RDb250cm9sbGVyQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENv
bnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgor
ICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEZvY3VzV2ViVmlld0NhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdH
dGsuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0Rmll
bGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0Rmll
bGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNw
b25kZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9u
ZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4u
Y3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQp
OgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQp
OgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25k
ZXIpOgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tOiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBub3RoaW5nIHRvIGRvCisgICAgICAgIHdpdGgg
dGhlIHBhdGNoLS0ganVzdCBjbGVhbmluZyB1cCBzdHlsZS4KKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKG9yaWdpbnNBcnJheVRvSlMp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoYXZpb3IpOgorCiAyMDExLTA5LTIy
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRmluZFNh
ZmFyaQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDJlMWJkYjQ5MzY1MTVmYTBmMWJlOWQ2MDE2YmUwNmM5NjdjYjkyZTMuLjAzNjM5MzY5ODNk
OTEwYWFkYzY3MDRhYzk5ODUzNGE3NTg1MTE2MTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIxNjAsNiArMjE2MCwzNiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZENh
bGxiYWNrKEpTQ29udGV4dAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5hZGRDaHJvbWVJbnB1dEZpZWxkKCk7Cisg
ICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgb25j
ZSB0aGUgaW5wdXQgZmllbGQgaGFzIGJlZW4gYWRkZWQKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9
PSAxKQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0sIDApLCB0aGlzT2JqZWN0LCAwLCAwLCAwKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIHJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgY29udHJvbGxlci0+cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIC8vIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlucHV0IGZp
ZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAg
SlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwg
YXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBmb2N1c1dl
YlZpZXdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+Zm9jdXNXZWJW
aWV3KCk7CisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgdGhhdCBpcyBj
YWxsZWQgb25jZSB0aGUgaW5wdXQgZmllbGQgaGFzIGJlZW4gYWRkZWQKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA9PSAxKQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0sIDApLCB0aGlzT2JqZWN0LCAwLCAw
LCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIC8v
IFN0YXRpYyBWYWx1ZXMKIAogc3RhdGljIEpTVmFsdWVSZWYgZ2V0R2xvYmFsRmxhZ0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTI0MzYsNiArMjQ2Niw5
IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMoKQogICAgICAgICB7ICJzZXRUZXh0RGlyZWN0aW9uIiwgc2V0VGV4dERpcmVjdGlvbkNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImFsbG93Um91bmRpbmdIYWNrcyIsIGFsbG93Um91bmRp
bmdIYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNob3VsZFN0YXlPblBhZ2VB
ZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkIiwgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxp
bmdCZWZvcmVVbmxvYWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJhZGRDaHJvbWVJbnB1
dEZpZWxkIiwgYWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsg
InJlbW92ZUNocm9tZUlucHV0RmllbGQiLCByZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAiZm9jdXNXZWJWaWV3IiwgZm9jdXNXZWJWaWV3Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBkNWNmYmE3N2MzZGM0Yjg4NmE0MGE2
YjZmNTI5MWJmODZjMTlkYWQwLi5iYWM4YjRkZGI5ODEyY2EyZTA5ZTk0ZGI4MWMzOWFjYzdkNTli
ODUxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAg
LTMxNCw2ICszMTQsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVy
SGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN0YXlPblBhZ2VB
ZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTdGF5T25QYWdl
QWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRs
aW5nQmVmb3JlVW5sb2FkKSB7IG1fc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQgPSBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZDsgfQogCisg
ICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCByZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKCk7CisgICAgdm9pZCBmb2N1c1dlYlZpZXcoKTsKKyAgICAKICAgICB2b2lkIHNldFBP
U0lYTG9jYWxlKEpTU3RyaW5nUmVmIGxvY2FsZSk7CiAKICAgICB2b2lkIHNldFdlYlZpZXdFZGl0
YWJsZShib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGM4MTdiMmI2YWNiM2E1OTlkMTEzY2YyOGJiZGM3YWUy
ZTg0MDQwOTkuLjE2NDkxMTUyYzA3ODQzYzcyMzZiMzQyNzAwMjlkYWQ4MDY5ZDU2NTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcApAQCAtOTg3LDMgKzk4NywxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRU
ZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbikKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmFsbG93Um91bmRpbmdIYWNrcygpCiB7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KCkKK3sKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCAzMTBkYWZhNDUzOTdm
ZmY5MGM5MTg1ZDcyZWNmMDZiYjJkZDQ1MWE4Li4xODA1ZjE1YTMyZjQ2Yzg3Mjk4NWFlZmYyNmYz
M2RiYmUwZjRkNjk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmluZ1JlZiB1cmwpCiAgICAgICAgIGRp
c2FsbG93ZWRVUkxzID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
IE5VTEwpOwogCiAgICAgLy8gQ2Fub25pY2FsaXplIHRoZSBVUkwKLSAgICBOU1VSTFJlcXVlc3Qq
IHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOihOU1N0cmluZyAqKXVybENGLmdldCgpXV07CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNT
dHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAgIHJlcXVlc3QgPSBbTlNVUkxQcm90b2NvbCBjYW5v
bmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1ZXN0XTsKIAogICAgIENGU2V0QWRkVmFsdWUoZGlz
YWxsb3dlZFVSTHMsIFtyZXF1ZXN0IFVSTF0pOwpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmlu
Z1JlZiB1cmwpCiAgICAgW29yaWdpbiByZWxlYXNlXTsKIH0KIAotSlNWYWx1ZVJlZiBvcmlnaW5z
QXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5KiBvcmlnaW5zKQorSlNWYWx1
ZVJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpvcmln
aW5zKQogewogICAgIE5TVUludGVnZXIgY291bnQgPSBbb3JpZ2lucyBjb3VudF07CiAKQEAgLTQy
NSw3ICs0MjUsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNTdHJp
bmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCiAgICAgTlNTdHJpbmcgKnVybE5TID0gKE5T
U3RyaW5nICopdXJsQ0YuZ2V0KCk7CiAKICAgICBOU1VSTCAqbnN1cmwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzp1cmxOUyByZWxhdGl2ZVRvVVJMOltbW21haW5GcmFtZSBkYXRhU291cmNlXSByZXNw
b25zZV0gVVJMXV07Ci0gICAgTlNTdHJpbmcqIG5zdXJsU3RyaW5nID0gW25zdXJsIGFic29sdXRl
U3RyaW5nXTsKKyAgICBOU1N0cmluZyAqbnN1cmxTdHJpbmcgPSBbbnN1cmwgYWJzb2x1dGVTdHJp
bmddOwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFic29sdXRlVVJMKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhbbnN1cmxTdHJpbmcgVVRGOFN0cmluZ10pKTsK
ICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgTG9hZEl0ZW0oYWJzb2x1dGVVUkwu
Z2V0KCksIHRhcmdldCkpOwpAQCAtNTA4LDggKzUwOCw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91
YmxlCiB7CiAgICAgLy8gRHVtcFJlbmRlclRyZWUgY29uZmlndXJlZCB0aGUgV2ViVmlldyB0byB1
c2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suCiAgICAgaWQ8V2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlcj4gcHJvdmlkZXIgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlcl07Ci0gICAgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2sqIG1vY2tQcm92aWRlciA9IHN0YXRpY19jYXN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrKj4ocHJvdmlkZXIpOwotICAgIFdlYkRldmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlv
biA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhh
OmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBoYSBjYW5Qcm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0
YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1hOmNhblByb3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV07
CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgKm1vY2tQcm92aWRlciA9IHN0
YXRpY19jYXN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKj4ocHJvdmlkZXIpOwor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uICpvcmllbnRhdGlvbiA9IFtbV2ViRGV2aWNlT3JpZW50
YXRpb24gYWxsb2NdIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBo
YTphbHBoYSBjYW5Qcm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlk
ZUdhbW1hOmNhblByb3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV07CiAgICAgW21vY2tQcm92aWRlciBz
ZXRPcmllbnRhdGlvbjpvcmllbnRhdGlvbl07CiAgICAgW29yaWVudGF0aW9uIHJlbGVhc2VdOwog
fQpAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3Bl
ZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBpY29uRGF0YWJhc2VFbmFibGVkKQog
ewogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS82NDgwMTA4PgotICAg
IHN0YXRpYyBXZWJJY29uRGF0YWJhc2UqIHNoYXJlZFdlYkljb25EYXRhYmFzZSA9IE5VTEw7Cisg
ICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSAqc2hhcmVkV2ViSWNvbkRhdGFiYXNlID0gTlVMTDsK
ICAgICBpZiAoIXNoYXJlZFdlYkljb25EYXRhYmFzZSkgewogICAgICAgICBpZiAoIWljb25EYXRh
YmFzZUVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTUxLDcgKzExNTEsNyBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphdXRoZW50aWNhdGVTZXNzaW9uKEpTU3RyaW5nUmVm
IHVybCwgSlNTdHJpbmdSZWYgdXNlcgogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRF
ZGl0aW5nQmVoYXZpb3IoY29uc3QgY2hhciogZWRpdGluZ0JlaGF2aW9yKQogewotICAgIE5TU3Ry
aW5nKiBlZGl0aW5nQmVoYXZpb3JOUyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0
cmluZzplZGl0aW5nQmVoYXZpb3JdOworICAgIE5TU3RyaW5nICplZGl0aW5nQmVoYXZpb3JOUyA9
IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzplZGl0aW5nQmVoYXZpb3JdOwog
ICAgIGlmIChbZWRpdGluZ0JlaGF2aW9yTlMgaXNFcXVhbFRvU3RyaW5nOkAibWFjIl0pCiAgICAg
ICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0RWRpdGluZ0JlaGF2
aW9yOldlYktpdEVkaXRpbmdNYWNCZWhhdmlvcl07CiAgICAgZWxzZSBpZiAoW2VkaXRpbmdCZWhh
dmlvck5TIGlzRXF1YWxUb1N0cmluZzpAIndpbiJdKQpAQCAtMTIwMiwzICsxMjAyLDI1IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGly
ZWN0aW9uTmFtZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7CisgICAg
TlNUZXh0RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDIwKV07CisgICAgdGV4dEZpZWxkLnRhZyA9IDE7Cisg
ICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3
OnRleHRGaWVsZF07CisgICAgW3RleHRGaWVsZCByZWxlYXNlXTsKKyAgICAKKyAgICBbdGV4dEZp
ZWxkIHNldE5leHRLZXlWaWV3OlttYWluRnJhbWUgd2ViVmlld11dOworICAgIFtbbWFpbkZyYW1l
IHdlYlZpZXddIHNldE5leHRLZXlWaWV3OnRleHRGaWVsZF07Cit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworICAgIFtbW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIHZpZXdXaXRoVGFnOjFdIHJlbW92ZUZy
b21TdXBlcnZpZXddOworICAgIGZvY3VzV2ViVmlldygpOworfQorCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpmb2N1c1dlYlZpZXcoKQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSB3
aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpbbWFpbkZyYW1lIHdlYlZpZXddXTsKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CmluZGV4IGM3OGZlYTU1NTQyMGUxMjliYWQyNGM5ZjVjMTRjNmIzY2RmN2I2Y2MuLjVjOTdlZTZj
ODE1ZDEzNDgyYTczYjE0OTg5OGU0YmY3OWNiODM4NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTU0MCwzICsx
NTQwLDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNT
dHJpbmdSZWYgZGlyZWN0aW9uKQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWxsb3dSb3Vu
ZGluZ0hhY2tzKCkKIHsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21l
SW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNo
cm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1
c1dlYlZpZXcoKQoreworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVy
LmlkbAppbmRleCA1MjFhYjdjMGE2MDBjY2U1ZmNlYzczMDJlMmI3YjQ4YWMxNzNmOTdiLi41MGNh
NDYyNjg3N2IwOGI4Y2E0ZGU2ZGM2ZWE2MWRkN2NlMjQ2MmZkIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9s
bGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMTE3LDYgKzExNywxMSBAQCBtb2R1bGUg
V1RSIHsKICAgICAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChpbiBib29s
ZWFuIGZsYWcpOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRTaG91bGRTdGF5T25QYWdlQWZ0
ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChpbiBib29sZWFuIGZsYWcpOworICAgICAgICAKKyAgICAg
ICAgLy8gRm9jdXMgdGVzdGluZy4KKyAgICAgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKGlu
IG9iamVjdCBjYWxsYmFjayk7CisgICAgICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChp
biBvYmplY3QgY2FsbGJhY2spOworICAgICAgICB2b2lkIGZvY3VzV2ViVmlldyhpbiBvYmplY3Qg
Y2FsbGJhY2spOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZGQwNDU3ODZiNGNh
NmI0ZDkyMmU0MTAyNmNiNDczNjY5MTAxYjk0Zi4uZGUzZDI1MTdjZWZjZWYxYzdhODE0ZTM4OWFi
OGM5ZTFiYmQwM2IzMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTE1OCw2ICsxNTgsMTggQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiBtZXNzYWcKIAogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbEFkZENocm9tZUlu
cHV0RmllbGRDYWxsYmFjayIpKSB7CisgICAgICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmNh
bGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxS
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSkgeworICAgICAgICBtX2xheW91dFRlc3RD
b250cm9sbGVyLT5jYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJDYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2siKSkgeworICAgICAgICBtX2xheW91
dFRlc3RDb250cm9sbGVyLT5jYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKTsKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVW5rbm93biIpKTsKQEAgLTI0MSw0ICsyNTMsMjIg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVlKGJv
b2wgdmFsdWUpCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9z
dEFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWRkQ2hy
b21lSW5wdXRGaWVsZCIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNz
YWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RSZW1vdmVD
aHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW92ZUNocm9t
ZUlucHV0RmllbGQiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0Rm9jdXNXZWJW
aWV3KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZvY3VzV2ViVmlldyIpKTsKKyAgICBX
S0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDUwNmJlZGY4ZDMzOTgwYjEyZTMx
ZDUzMjJiMzkyNjkwMzRhODY2N2YuLjM5YzY5MmQ0N2I3YTE0MWU3MWM2NmY0NGE2ZTA1M2MyYzFj
OGI3YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTczLDYgKzczLDkgQEAgcHVibGljOgogICAgIGJvb2wg
c2hvdWxkRHVtcFBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFBpeGVsczsgfQogICAgIAog
ICAgIHZvaWQgcG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wpOworICAgIHZvaWQg
cG9zdEFkZENocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lkIHBvc3RSZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0Rm9jdXNXZWJWaWV3KCk7CiAKIHByaXZhdGU6CiAgICAg
SW5qZWN0ZWRCdW5kbGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDNjMjdm
NjUxNDYyNzU3MDM2MDhhYjI4Yjc2Y2U4Yjk0ZGYxNTBkMS4uNjE3ZDViYzIxZTUxOWMxMThjNWJj
YzdmZjIwM2FiYjc0OGU2MTdjOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTUw
MCw0ICs1MDAsNjMgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2hvdWxkU3RheU9u
UGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoYm9vbCBzaG8KICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkucG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVlKCFzaG91bGRTdGF5T25Q
YWdlKTsKIH0KIAordHlwZWRlZiBXVEY6Okhhc2hNYXA8dW5zaWduZWQsIEpTVmFsdWVSZWY+IENh
bGxiYWNrTWFwOworc3RhdGljIENhbGxiYWNrTWFwJiBjYWxsYmFja01hcCgpCit7CisgICAgc3Rh
dGljIENhbGxiYWNrTWFwJiBtYXAgPSAqbmV3IENhbGxiYWNrTWFwOworICAgIHJldHVybiBtYXA7
Cit9CisKK3N0YXRpYyB2b2lkIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayh1bnNp
Z25lZCBpbmRleCwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVm
IG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisgICAgSlNWYWx1ZVByb3Rl
Y3QoY29udGV4dCwgY2FsbGJhY2spOworICAgIGNhbGxiYWNrTWFwKCkuYWRkKGluZGV4LCBjYWxs
YmFjayk7Cit9CisKK3N0YXRpYyB2b2lkIGNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNr
KHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmICghY2FsbGJhY2tNYXAoKS5jb250YWlucyhpbmRl
eCkpCisgICAgICAgIHJldHVybjsKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdL
QnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5w
YWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFT
Y3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisgICAgSlNPYmplY3RSZWYgY2FsbGJhY2sgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgY2FsbGJhY2tNYXAoKS50YWtlKGluZGV4KSwgMCk7CisgICAg
SlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaywgSlNDb250ZXh0R2V0R2xv
YmFsT2JqZWN0KGNvbnRleHQpLCAwLCAwLCAwKTsKKyAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRl
eHQsIGNhbGxiYWNrKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21l
SW5wdXRGaWVsZChKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlTGF5b3V0VGVzdENv
bnRyb2xsZXJDYWxsYmFjaygxLCBjYWxsYmFjayk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAg
ICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMiwgY2FsbGJhY2spOworICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcoSlNWYWx1ZVJlZiBjYWxs
YmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMywgY2FsbGJh
Y2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0Rm9jdXNXZWJWaWV3KCk7Cit9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2Fs
bGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDEpOworfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENh
bGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygyKTsKK30K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCkK
K3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygzKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNmE5YTExZTdiNzllNGYw
Mjg3MzYyODU3YTdjOWUxODUwZDkwYmY0ZC4uNGQ3YjY5OTJiMjBjOWNiZDIyYmYxMDU1NzgxNzYw
MmM3NTRlMDFlZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTcyLDYgKzE3MiwxMyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBnbG9iYWxGbGFnKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxGbGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxGbGFnKGJvb2wgdmFsdWUpIHsgbV9nbG9i
YWxGbGFnID0gdmFsdWU7IH0KKyAgICAKKyAgICB2b2lkIGFkZENocm9tZUlucHV0RmllbGQoSlNW
YWx1ZVJlZik7CisgICAgdm9pZCByZW1vdmVDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYpOwor
ICAgIHZvaWQgZm9jdXNXZWJWaWV3KEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbEFkZENocm9t
ZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgIHZvaWQgY2FsbFJlbW92ZUNocm9tZUlucHV0Rmll
bGRDYWxsYmFjaygpOworICAgIHZvaWQgY2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CiAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklu
dGVydmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggNDY0
NDkwYjdhZGU0MWVlOTUxZTJkNmY3NWQ3NDkwY2RkZTU0NGE0Zi4uYzEyMmE4NmJiZDhmZDY4NjAw
ZGQyMmY2YWM4MTU5MzBhZjZiNTVhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3Jt
V2ViVmlldy5oCkBAIC03MSw2ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICBXS1JlY3Qgd2luZG93
RnJhbWUoKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdLUmVjdCk7CisgICAgCisgICAgdm9p
ZCBhZGRDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCByZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KCk7CisgICAgdm9pZCBtYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCk7CiAKIHByaXZhdGU6CiAg
ICAgUGxhdGZvcm1XS1ZpZXcgbV92aWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAppbmRleCBiZTIwMDQ2YTIxYjAxMzUwMTIyOTFkZWMzN2VlNWJmMTYxMTAxMzQy
Li4zNWZjODIzODUwODAwNjAwOWEyOWRlNWJlMmQ1MTdkMThhNDkyNzhkIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMjQ1LDYgKzI0NSwyNyBAQCB2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuc2V0
QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoV0tCb29sZWFuR2V0VmFsdWUoYmVmb3JlVW5sb2FkUmV0
dXJuVmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkFkZENocm9tZUlucHV0RmllbGQi
KSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+YWRk
Q2hyb21lSW5wdXRGaWVsZCgpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsQWRk
Q2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpOworICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSZW1vdmVDaHJvbWVJbnB1
dEZpZWxkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3
KCktPnJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayIpKTsKKyAgICAgICAgV0tDb250
ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5j
b250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkZvY3VzV2ViVmlldyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWlu
V2ViVmlldygpLT5tYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCk7CisgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjayIpKTsKKyAgICAgICAgV0tDb250
ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5j
b250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKaW5kZXggZTViODAzOGE4NjU2NTAzNzE2
OGVhZWJhNjMzMWQ1OWQxYWZkNzFlMC4uMzczNWRjNWU2YzJlNThiOWI5ODFkNDQzYWM1NTY3Nzhk
ZjA0NzYwNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1X
ZWJWaWV3R3RrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdl
YlZpZXdHdGsuY3BwCkBAIC05Nyw1ICs5NywxNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0
V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lKQogICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUud2lkdGgs
IGZyYW1lLnNpemUuaGVpZ2h0KTsKIH0KIAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9t
ZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0Zp
cnN0UmVzcG9uZGVyKCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBhZmYxMGVk
NTA0Y2EwODY5YjdlMGY1MDhlZTVhNGIzNzI3NzQ2Y2JmLi41MzQyNjQzMDdkZjcyZmEyMGQzZTQ5
NjA0YTkzNThiNTNiMGQ0NzdiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
UGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBAIC04MCw0ICs4MCwyNiBAQCB2b2lkIFBsYXRmb3JtV2Vi
Vmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lKQogICAgIFttX3dpbmRvdyBzZXRGcmFt
ZTpOU01ha2VSZWN0KGZyYW1lLm9yaWdpbi54LCBmcmFtZS5vcmlnaW4ueSwgZnJhbWUuc2l6ZS53
aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpIGRpc3BsYXk6WUVTXTsKIH0KIAordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIE5TVGV4dEZpZWxkKiB0ZXh0
RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAxOworICAgIFtbbV93aW5kb3cgY29u
dGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKKyAgICBbdGV4dEZpZWxkIHJlbGVhc2Vd
OworCisgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5VmlldzptX3ZpZXddOworICAgIFttX3ZpZXcg
c2V0TmV4dEtleVZpZXc6dGV4dEZpZWxkXTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJl
bW92ZUNocm9tZUlucHV0RmllbGQoKQoreworICAgIFtbW21fd2luZG93IGNvbnRlbnRWaWV3XSB2
aWV3V2l0aFRhZzoxXSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBtYWtlV2ViVmlld0ZpcnN0
UmVzcG9uZGVyKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0
UmVzcG9uZGVyKCkKK3sKKyAgICBbbV93aW5kb3cgbWFrZUZpcnN0UmVzcG9uZGVyOm1fdmlld107
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKaW5kZXggOWUyM2Q3MGU1ZTNjMjY2MjllZjZiZWRh
NjhjZjYwNWY2NTFmMDg0Ny4uMzQyMDVhMGZlNjA5MGFjNWQ3NmZkOTNjNmMxMmZlZDM4NGIxZjRk
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3
V2luLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdX
aW4uY3BwCkBAIC05Nyw0ICs5NywxNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93
RnJhbWUoV0tSZWN0KQogICAgIC8vIEltcGxlbWVudC4KIH0KIAorCit2b2lkIFBsYXRmb3JtV2Vi
Vmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6
Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108894</attachid>
            <date>2011-09-27 14:14:07 -0700</date>
            <delta_ts>2011-10-03 17:49:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20110927141410.patch</filename>
            <type>text/plain</type>
            <size>43341</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MjI0YWVhMzFlOTYyYjQ1ZGMxNmQz
NWEzNDc0MGQ0MzE1NDUzNDljLi4zMTYzMGE4YTlmZDRjN2Q3ZDdmYzVhMjljNDk3Y2ExZThlNGRh
NDhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjcgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG9wdGlvbi1rZXkgbmF2aWdh
dGlvbiBpcyBvbmx5IHJlbGV2YW50IHRvIHRoZSBNYWMgcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvZm9jdXMt
b3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5q
czogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuS2V5UHJlc3Nlcyk6
CisgICAgICAgIChub3RpZnlEb25lKToKKyAgICAgICAgKGxvZyk6CisKIDIwMTEtMDktMjIgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY1MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24t
Y29udHJvbC1vbi1wYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWExZGY2ZjIxYjIwYTQz
YmU3NmE4YzYyMDJjOTNkZmE4NzAyOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAoraHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDEyIC0gVGhpcyB0ZXN0IGNoZWNrcyB0byBzZWUgaWYgb3B0aW9uKGFsdCkt
dGFiYmluZyBwcm9wZXJseSBmb2N1c2VzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgbm9ybWFsbHkg
bm90IGZvY3VzZWQuIEZvciB0ZXN0aW5nLCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGJ5IGRlZmF1
bHQgcHJlc3NpbmcgdGFiIHdpbGwgc2tpcCBvdmVyIGJ1dHRvbnMsIGFuZCBvcHRpb24tdGFiIHdp
bGwgaW5jbHVkZSBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworICAK
K1ByZXNzaW5nIHRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIHRleHQg
ZmllbGQgLzI6IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiCitQcmVzc2luZyBzaGlmdC10YWIg
NCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8yOiAvMzpm
b2N1c2VkIHRleHQgZmllbGQgLzQ6IgorUHJlc3Npbmcgb3B0aW9uLXRhYiA0IHRpbWVzOgorUEFT
UyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRleHQgZmll
bGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiIKK1ByZXNzaW5nIHNoaWZ0LW9wdGlvbi10
YWIgNCB0aW1lczoKK1BBU1MgcmVzdWx0IGlzICIgLzE6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC8y
OmZvY3VzZWQgdGV4dCBmaWVsZCAvMzpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvNDoiCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1j
b250cm9sLW9uLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzIxNGZmYWY0
OGQyZjQ5YzkxYjZkYTNmNjdjZWQwNjZiNzM3MjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFn
ZS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2co
J2ZvY3VzZWQgZmlyc3QgYnV0dG9uJykiIHZhbHVlPSIxIj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBv
bmZvY3VzPSJsb2coJ2ZvY3VzZWQgdGV4dCBmaWVsZCcpIiB2YWx1ZT0iMiI+Cis8aW5wdXQgdHlw
ZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgc2Vjb25kIGJ1dHRvbicpIiB2YWx1ZT0i
MyI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
Zm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2ZvY3VzLW9w
dGlvbi1jb250cm9sLW9uLXBhZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzllMDMzZTMwNTcwNWY3YjkzMzE1
N2MzZjc3OWRlYTAxOTJiMDlkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1w
YWdlLmpzCkBAIC0wLDAgKzEsNjEgQEAKK2Rlc2NyaXB0aW9uKCdodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIgLSBUaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBv
cHRpb24oYWx0KS10YWJiaW5nIHByb3Blcmx5IGZvY3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFy
ZSBub3JtYWxseSBub3QgZm9jdXNlZC4gRm9yIHRlc3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRo
YXQgYnkgZGVmYXVsdCBwcmVzc2luZyB0YWIgd2lsbCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9w
dGlvbi10YWIgd2lsbCBpbmNsdWRlIGJ1dHRvbnMuJyk7CisKK3ZhciBpdGVyYXRpb24gPSAwOwor
dmFyIG1vZGlmaWVyczsKK3ZhciByZXN1bHQ7CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ZGVidWcoIlByZXNzaW5nIHRhYiA0IHRpbWVzOiIpOworICAgIG1vZGlmaWVycyA9IHVuZGVmaW5l
ZDsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7
Cit9CisKK2Z1bmN0aW9uIHJ1bktleVByZXNzZXMoKSB7CisgICAgcmVzdWx0ID0gJyc7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9ICcgLycgKyAo
aSArIDEpICsgJzonOworICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1vZGlmaWVy
cyk7CisgICAgfQorICAgIGl0ZXJhdGlvbisrOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7Cisg
ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1
c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiJyk7CisgICAgICAg
ICAgICBkZWJ1ZygiUHJlc3Npbmcgc2hpZnQtdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBt
b2RpZmllcnMgPSBbInNoaWZ0S2V5Il07CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAyOgorICAgICAgICAgICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQg
dGV4dCBmaWVsZCAvMjogLzM6Zm9jdXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKKyAgICAgICAgICAg
IGRlYnVnKCJQcmVzc2luZyBvcHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2Rp
ZmllcnMgPSBbImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9j
dXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgMzoKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0
IGJ1dHRvbiAvMjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80
OiInKTsKKyAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGlt
ZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNz
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHNo
b3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHNlY29uZCBidXR0b24gLzI6Zm9jdXNlZCB0
ZXh0IGZpZWxkIC8zOmZvY3VzZWQgZmlyc3QgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2co
dmFsKSB7CisgICAgcmVzdWx0ICs9IHZhbDsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVu
dFNlbmRlciAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKSB7Cisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmFkZENocm9tZUlucHV0RmllbGQoc3RhcnRUZXN0KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkge2xheW91dFRlc3RDb250cm9sbGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9u
ZSl9LCAyMDAwKTsKK30gZWxzZQorICAgIGZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZGFmMjBiMDkyOTZhYzEzMDg2Y2ExMmQx
ODliZDYwMTgzNzAxYzQ0Li43ZjJhNzkzOTkyZTQwNzQwMGY4NTllMTI4Njk5MmNiNmNiZGEzOGVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDktMjcgIEpvbiBMZWUgIDxqb25s
ZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9u
LXRhYmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJv
bWUgdG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gV0sxIHNldEluaXRpYWxG
b2N1cygpIGlzIGNhbGxlZCBvbiBGb2N1c0NvbnRyb2xsZXIgd2l0aCB0aGUga2V5IGV2ZW50IHRo
YXQKKyAgICAgICAgY2F1c2VkIHRoZSB3ZWIgdmlldyB0byBiZWNvbWUgZmlyc3QgcmVzcG9uZGVy
LiBJbiBXSzIgbm8gZXZlbnQgaXMgc2VudC4gU28gaWYKKyAgICAgICAgdGhlIGtleSBzdHJva2Ug
dGhhdCBjYXVzZWQgdGhlIGNoYW5nZSBpbiBmaXJzdCByZXNwb25kZXIgc3RhdHVzIGNvbnRhaW5z
IHRoZQorICAgICAgICBvcHRpb24gbW9kaWZpZXIga2V5LCBGb2N1c0NvbnRyb2xsZXIgZGlkIG5v
dCBrbm93IHRoYXQgaXQgaGFkIHRvIHN3aXRjaCBiZWhhdmlvci4KKworICAgICAgICBCZWNhdXNl
IHRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRoYXQgdGhlIFdLVmlldyBjYW4gYmVjb21lRmlyc3RS
ZXNwb25kZXIsIEkgY2hhbmdlZAorICAgICAgICB0aGUgc2lnbmF0dXJlIHRvIHNldEluaXRpYWxG
b2N1cyB0byBleHByZXNzIHdoZXRoZXIgdGhlIGtleSBldmVudCBwYXJhbWV0ZXIgaXMgYW4KKyAg
ICAgICAgYWN0dWFsIGtleSBldmVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4v
V0tWaWV3LmNwcDoKKyAgICAgICAgKFdLVmlld1NldEluaXRpYWxGb2N1cyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBU
YWtlIHRoZSBOU0FwcCBjdXJyZW50RXZlbnQgYW5kIHBhc3MgaXQgYWxvbmcgaWYKKyAgICAgICAg
dGhlIGV2ZW50IGlzIGEga2V5Ym9hcmQgZXZlbnQsIG90aGVyd2lzZSBwYXNzIGFuIGVtcHR5IGV2
ZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyk6IENoYW5nZSBpbiBmdW5jdGlvbiBz
aWduYXR1cmUgdG8gY29uZmlybSB0aGF0CisgICAgICAgIHRoZSBldmVudCB0aGF0IGNhdXNlZCB0
aGUgaW5pdGlhbCBmb2N1cyB3YXMgYSBrZXlib2FyZCBldmVudCwgYW5kIHByb3ZpZGUgdGhlIGtl
eWJvYXJkCisgICAgICAgIGV2ZW50IGl0c2VsZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
d2luL1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6IElmIHdlIGtub3cg
dGhhdCB0aGUgY2F1c2Ugb2YgdGhpcyB3YXMgYSBrZXlib2FyZAorICAgICAgICBldmVudCwgd2Ug
cGFzcyB0aGF0IGV2ZW50IHRvIHRoZSBGb2N1c0NvbnRyb2xsZXIuIE90aGVyd2lzZSB3ZSBmYWxs
IGJhY2sgdG8gdGhlIG9yaWdpbmFsCisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBpcyB0byBwYXNz
IG5vIGV2ZW50IGF0IGFsbC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisy
MDExLTA5LTIzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OIChXSzIpOiAoU2hpZnQtKW9wdGlvbi10YWJiaW5nIHNraXBzIG92ZXIgZWxlbWVudHMgd2hl
biB0cmFuc2l0aW9uaW5nIGZyb20gY2hyb21lIHRvIHdlYnZpZXcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS85OTg4MjUyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIFdLMSBzZXRJbml0aWFsRm9jdXMoKSBpcyBjYWxsZWQgb24gRm9jdXNDb250cm9s
bGVyIHdpdGggdGhlIGtleSBldmVudCB0aGF0CisgICAgICAgIGNhdXNlZCB0aGUgd2ViIHZpZXcg
dG8gYmVjb21lIGZpcnN0IHJlc3BvbmRlci4gSW4gV0syIG5vIGV2ZW50IGlzIHNlbnQuIFNvIGlm
CisgICAgICAgIHRoZSBrZXkgc3Ryb2tlIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2UgaW4gZmlyc3Qg
cmVzcG9uZGVyIHN0YXR1cyBjb250YWlucyB0aGUKKyAgICAgICAgb3B0aW9uIG1vZGlmaWVyIGtl
eSwgRm9jdXNDb250cm9sbGVyIGRpZCBub3Qga25vdyB0aGF0IGl0IGhhZCB0byBzd2l0Y2ggYmVo
YXZpb3IuCisKKyAgICAgICAgQmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0aGF0IHRo
ZSBXS1ZpZXcgY2FuIGJlY29tZUZpcnN0UmVzcG9uZGVyLCBJIGNoYW5nZWQKKyAgICAgICAgdGhl
IHNpZ25hdHVyZSB0byBzZXRJbml0aWFsRm9jdXMgdG8gZXhwcmVzcyB3aGV0aGVyIHRoZSBrZXkg
ZXZlbnQgcGFyYW1ldGVyIGlzIGFuCisgICAgICAgIGFjdHVhbCBrZXkgZXZlbnQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHA6IFVwZGF0ZSBmdW5jdGlvbiBzaWdu
YXR1cmUuCisgICAgICAgIChXS1ZpZXdTZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3Lmg6CisKKwogMjAxMS0wOS0yMiAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBVSVByb2Nlc3Mgc2hvdWxkIGNo
ZWNrIHRoYXQgV2ViUHJvY2VzcyBpc24ndCBzZW5kaW5nIHVuZXhwZWN0ZWQgZmlsZTogVVJMcyB0
byBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCmlu
ZGV4IGU3YzkyZTA1MTMxMjg5ZjJlZDNlNzhhZmZiMWE0ZTE2NWZlMWIwY2UuLjk4ZThhMzVkMDUw
MjRhNjU0NTlhY2JlN2Y5NzY3NDYwYzA3M2NhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKQEAgLTY5LDcgKzY5LDggQEAgdm9pZCBXS1ZpZXdT
ZXRJc0luV2luZG93KFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGlzSW5XaW5kb3cpCiAKIHZvaWQg
V0tWaWV3U2V0SW5pdGlhbEZvY3VzKFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGZvcndhcmQpCiB7
Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCk7CisgICAgYm9v
bCBpc0tleWJvYXJkRXZlbnRWYWxpZCA9IGZhbHNlOworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0
SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLZXlib2FyZEV2
ZW50KCkpOwogfQogCiB2b2lkIFdLVmlld1NldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShXS1Zp
ZXdSZWYgdmlld1JlZiwgV0tTaXplIHNjcm9sbE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAwYjg4ZDMyNGE1OWI2ZTU1ODU3NjgxOTUwYzRk
YzRlOTQ3ZDI1YTU5Li5iNjBjODNjNDY0ZDMzNjdiNDdkMzIwZDFhZGNjMTU5ZDE3YWY5NDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQsMTcg
KzMwNCwyMSBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAt
IChCT09MKWJlY29tZUZpcnN0UmVzcG9uZGVyCiB7CiAgICAgTlNTZWxlY3Rpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uID0gW1tzZWxmIHdpbmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0K
KyAgICAKICAgICBfZGF0YS0+X2luQmVjb21lRmlyc3RSZXNwb25kZXIgPSB0cnVlOwogICAgIAog
ICAgIFtzZWxmIF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKICAgICBfZGF0YS0+X3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOwotCisgICAgCiAg
ICAgX2RhdGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gZmFsc2U7Ci0KLSAgICBpZiAoZGly
ZWN0aW9uICE9IE5TRGlyZWN0U2VsZWN0aW9uKQotICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldElu
aXRpYWxGb2N1cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0KTsKLQorICAgIAorICAgIGlm
IChkaXJlY3Rpb24gIT0gTlNEaXJlY3RTZWxlY3Rpb24pIHsKKyAgICAgICAgTlNFdmVudCAqZXZl
bnQgPSBbTlNBcHAgY3VycmVudEV2ZW50XTsKKyAgICAgICAgYm9vbCBiZWNvbWluZ0ZpcnN0UmVz
cG9uZGVyRnJvbUtleWJvYXJkID0gW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQg
dHlwZV0gPT0gTlNLZXlVcDsKKyAgICAgICAgaWYgKCFiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJv
bUtleWJvYXJkKQorICAgICAgICAgICAgZXZlbnQgPSBuaWw7CisgICAgICAgIF9kYXRhLT5fcGFn
ZS0+c2V0SW5pdGlhbEZvY3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQsIGJlY29taW5n
Rmlyc3RSZXNwb25kZXJGcm9tS2V5Ym9hcmQsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQs
IHNlbGYpKTsKKyAgICB9CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3ZDhkNGMyZGU0ZGU2ZDI3Yzg1NTcxZjcyMTk5
YWExN2ZiZGJkOGI0Li43YmFkYjdiNTAwZTM0YzI4MGZkODJmMWQ1YjZlMTFiNDU5NTk0NzU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAwLDExICs3
MDAsMTEgQEAgSW50U2l6ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QKICAgICByZXR1
cm4gbV9wYWdlQ2xpZW50LT52aWV3U2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFs
Rm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJ
bml0aWFsRm9jdXMoZm9yd2FyZCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRW
YWxpZCwga2V5Ym9hcmRFdmVudCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDJhOWNjYjcyNzM3NzA4
YTYwNTZhNTViMjU2MTUxNTA3MTI4ZjgzNDMuLjQ3MGI2NDA5YTI3NmFhYTAyMzUxMWRhZTE3MTkw
ODFiMmI1ZWI1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTI2Miw3ICsyNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6
ZSgpOwogICAgIHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIHNldElu
aXRpYWxGb2N1cyhib29sKTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAg
ICB2b2lkIHNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAg
ICAKICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmNwcAppbmRleCAwYTJmNWJhNTQzOTU5Mzk0MDJhMTJhODgyZTYyNWU1MzgwNjgw
YmU5Li45MjljZDVlZGFhMGNlMGMyODkzMDY2MDJlZmMxZjk2NDgxZWRmNThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTEwNjgsOSArMTA2OCw5IEBAIHZv
aWQgV2ViVmlldzo6c2V0T3ZlcnJpZGVDdXJzb3IoSENVUlNPUiBvdmVycmlkZUN1cnNvcikKICAg
ICB1cGRhdGVOYXRpdmVDdXJzb3IoKTsKIH0KIAotdm9pZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9j
dXMoYm9vbCBmb3J3YXJkKQordm9pZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCkKIHsKLSAgICBtX3BhZ2UtPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkKTsKKyAgICBtX3Bh
Z2UtPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgZXZlbnQp
OwogfQogCiB2b2lkIFdlYlZpZXc6OnNldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShjb25zdCBJ
bnRTaXplJiBzY3JvbGxPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5o
CmluZGV4IDY3MTU4MWQ3ZWM0NWE0OTYwODgyMTg5M2E4YTNkNzk1Y2ViMjliYTUuLmJkYzA3ZWZh
N2NlYmY3ZTYzNmFiNGEyMDZiOTZjNGMxNzkzMTcxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElz
SW5XaW5kb3coYm9vbCk7CiAgICAgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgdm9pZCBz
ZXRPdmVycmlkZUN1cnNvcihIQ1VSU09SKTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29s
IGZvcndhcmQpOworICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBp
c0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQg
c2V0U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAg
ICB2b2lkIHNldEZpbmRJbmRpY2F0b3JDYWxsYmFjayhXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJh
Y2ssIHZvaWQqKTsKICAgICBXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2sgZ2V0RmluZEluZGlj
YXRvckNhbGxiYWNrKHZvaWQqKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggYTFmMDBhZTU2MTYwY2IyNjQ0M2UwZGE3YTQwMjEyMmI1MDYy
NmJjNC4uNjQ5ZjM4NzhmZGVkZGQyZDUyMDQ0ZTkyZDViYjUwNTRjZWM4YjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTMxMSwxNCAr
MTMxMSwyMCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvY3VzZWQoYm9vbCBpc0ZvY3VzZWQpCiAgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZChpc0ZvY3VzZWQpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQpCit2b2lkIFdlYlBhZ2U6
OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQs
IGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIGlmICghbV9wYWdlIHx8ICFt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZE5vZGUoMCk7Ci0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlv
bkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCAwKTsKKworICAgIGlmIChpc0tleWJv
YXJkRXZlbnRWYWxpZCAmJiBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKKyAg
ICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQp
KTsKKyAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQg
OiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1F
dmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZv
cndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCAw
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBJbnRTaXpl
JiB3aW5kb3dSZXNpemVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGNiYjg4ZmU5MDRjODFiODcwZjBjYzVlOWUwMjkzMzE2NzQ2ZDEyNjMu
LjRkNjRlYjQ1MzU5ZWYxYzI0YTA3OWNhNGVkNDcyZGY4YmZkZTg1ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHNl
dEFjdGl2ZShib29sKTsKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRJ
bml0aWFsRm9jdXMoYm9vbCk7CisgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJk
LCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAg
ICAgdm9pZCBzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAg
ICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYzI2ZjJlMzczOTYxM2M3MGZk
MTE1ODFmMDUzY2FhMGQ2MGExZDBiNi4uNzBlNGY1ZjRiY2M4YTJlYWQzOTg0NTE2YTkzOWRmOWE2
M2U4ZDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgewogICAgIFNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBTZXRGb2N1c2VkKGJvb2wgZm9j
dXNlZCkKLSAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQorICAgIFNldEluaXRpYWxG
b2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2Vi
S2V5Ym9hcmRFdmVudCBldmVudCkKICAgICBTZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykK
IAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2M2UwNzI3MzQzMTJi
MzVjZGQyMTIzMzA5MGMwYjcxYTk4NzY2NTkwLi45M2MxMmQyZDJkNmU3YzhjYjY2Y2FjZjViMTdi
ZjQyYjUzNDNmZmJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMTEtMDktMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBw
bGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJp
bmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8g
d2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgdGVz
dCBmb3IgdGhlIGJ1ZywgSSBoYWQgdG8gdXBkYXRlIERSVCBhbmQgV0tUUiB0byBjcmVhdGUgc29t
ZQorICAgICAgICB3aWRnZXQgdGhhdCBhbGxvd3MgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byBt
b3ZlIGF3YXkgZnJvbSB0aGUgbWFpbiB3ZWIgdmlldy4KKworICAgICAgICBUaHJlZSBtZXRob2Rz
IHdlcmUgYWRkZWQgdG8gbGF5b3V0VGVzdENvbnRyb2xsZXI6IGFkZENocm9tZUlucHV0RmllbGQs
CisgICAgICAgIHJlbW92ZUNocm9tZUlucHV0RmllbGQsIGFuZCBmb2N1c1dlYlZpZXcuIGFkZENo
cm9tZUlucHV0RmllbGQgYWRkcyBhIHRleHQgZmllbGQKKyAgICAgICAgdGhhdCBpcyBhIHNpYmxp
bmcgdG8gdGhlIHdlYiB2aWV3LCBhbmQgc2V0cyB1cCB0aGUga2V5IGV2ZW50IGxvb3AgYmV0d2Vl
biB0aGUgdHdvLgorICAgICAgICByZW1vdmVDaHJvbWVJbnB1dEZpZWxkIHJlbW92ZXMgdGhhdCBm
aWVsZC4gZm9jdXNXZWJWaWV3IG1vdmVzIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBzdGF0dXMg
dG8gdGhlIHdlYiB2aWV3LgorCisgICAgICAgIFRoZSB0ZXN0IG1ha2VzIHRoZSBjYWxsIHZpYSBs
YXlvdXRUZXN0Q29udHJvbGxlciBhbmQgcGFzc2VzIGEgY2FsbGJhY2sgdGhhdCBpdAorICAgICAg
ICBhc3N1bWVzIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0aGUgdGFzayBpcyBjb21wbGV0ZWQuIElu
IERSVCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkCisgICAgICAgIHN5bmNocm9ub3VzbHkuIEluIFdL
VFIgdGhpcyBpcyBoYW5kbGVkIHdpdGggbWVzc2FnZSBwYXNzaW5nIGJldHdlZW4gdGhlIHR3bwor
ICAgICAgICBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgor
ICAgICAgICAocmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKGZvY3Vz
V2ViVmlld0NhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RGb2N1c1dlYlZpZXcpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6Y2FsbGJhY2tNYXApOiBDcmVhdGUgYSBoYXNoIG1hcCB0aGF0IGtl
ZXBzIHRyYWNrIG9mIHRoZSBjYWxsYmFja3MgcHJvdmlkZWQKKyAgICAgICAgdGhyb3VnaCBKUy4K
KyAgICAgICAgKFdUUjo6Y2FjaGVMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdUUjo6Y2FsbExheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2spOgorICAgICAgICAoV1RS
OjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChX
VFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAg
ICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6CisgICAgICAgIChX
VFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNr
KToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxSZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6
OnJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6
Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojpy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojpt
YWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6
OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJl
bW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1h
a2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBub3RoaW5n
IHRvIGRvCisgICAgICAgIHdpdGggdGhlIHBhdGNoLS0ganVzdCBjbGVhbmluZyB1cCBzdHlsZS4K
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAg
ICAgKG9yaWdpbnNBcnJheVRvSlMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1
ZXVlTG9hZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9y
aWVudGF0aW9uKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJh
c2VFbmFibGVkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVo
YXZpb3IpOgorCiAyMDExLTA5LTIyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgRmluZFNhZmFyaQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDJlMWJkYjQ5MzY1MTVmYTBmMWJlOWQ2MDE2YmUwNmM5
NjdjYjkyZTMuLjAzNjM5MzY5ODNkOTEwYWFkYzY3MDRhYzk5ODUzNGE3NTg1MTE2MTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIxNjAs
NiArMjE2MCwzNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJI
YW5kbGluZ0JlZm9yZVVubG9hZENhbGxiYWNrKEpTQ29udGV4dAogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYWRkQ2hyb21l
SW5wdXRGaWVsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5hZGRD
aHJvbWVJbnB1dEZpZWxkKCk7CisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgY2FsbGJh
Y2sgdGhhdCBpcyBjYWxsZWQgb25jZSB0aGUgaW5wdXQgZmllbGQgaGFzIGJlZW4gYWRkZWQKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9u
KGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0sIDApLCB0aGlz
T2JqZWN0LCAwLCAwLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+cmVtb3ZlQ2hyb21lSW5wdXRGaWVs
ZCgpOworICAgIC8vIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2Fs
bGVkIG9uY2UgdGhlIGlucHV0IGZpZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPT0gMSkKKyAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwg
MCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0
aWMgSlNWYWx1ZVJlZiBmb2N1c1dlYlZpZXdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlv
dXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
Y29udHJvbGxlci0+Zm9jdXNXZWJWaWV3KCk7CisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50IGlz
IGEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgb25jZSB0aGUgaW5wdXQgZmllbGQgaGFzIGJlZW4g
YWRkZWQKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBKU09iamVjdENhbGxB
c0Z1bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0s
IDApLCB0aGlzT2JqZWN0LCAwLCAwLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKIC8vIFN0YXRpYyBWYWx1ZXMKIAogc3RhdGljIEpTVmFsdWVSZWYg
Z2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKQEAgLTI0MzYsNiArMjQ2Niw5IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRUZXh0RGlyZWN0aW9uIiwg
c2V0VGV4dERpcmVjdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFsbG93Um91bmRp
bmdIYWNrcyIsIGFsbG93Um91bmRpbmdIYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkIiwgc2V0U2hvdWxk
U3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJhZGRDaHJvbWVJbnB1dEZpZWxkIiwgYWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInJlbW92ZUNocm9tZUlucHV0RmllbGQiLCByZW1vdmVDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiZm9jdXNXZWJWaWV3Iiwg
Zm9jdXNXZWJWaWV3Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9
OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBk
NWNmYmE3N2MzZGM0Yjg4NmE0MGE2YjZmNTI5MWJmODZjMTlkYWQwLi5iYWM4YjRkZGI5ODEyY2Ey
ZTA5ZTk0ZGI4MWMzOWFjYzdkNTliODUxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKQEAgLTMxNCw2ICszMTQsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
c2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkOyB9CiAgICAgdm9p
ZCBzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChib29sIHNob3Vs
ZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKSB7IG1fc2hvdWxkU3RheU9uUGFn
ZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQgPSBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGlu
Z0JlZm9yZVVubG9hZDsgfQogCisgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAg
dm9pZCByZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBmb2N1c1dlYlZpZXcoKTsK
KyAgICAKICAgICB2b2lkIHNldFBPU0lYTG9jYWxlKEpTU3RyaW5nUmVmIGxvY2FsZSk7CiAKICAg
ICB2b2lkIHNldFdlYlZpZXdFZGl0YWJsZShib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGM4MTdiMmI2YWNi
M2E1OTlkMTEzY2YyOGJiZGM3YWUyZTg0MDQwOTkuLjE2NDkxMTUyYzA3ODQzYzcyMzZiMzQyNzAw
MjlkYWQ4MDY5ZDU2NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtOTg3LDMgKzk4NywxNSBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbikK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFsbG93Um91bmRpbmdIYWNrcygpCiB7CiB9CisK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sK
K30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KCkKK3sKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQppbmRleCAzMTBkYWZhNDUzOTdmZmY5MGM5MTg1ZDcyZWNmMDZiYjJkZDQ1MWE4Li4xODA1ZjE1
YTMyZjQ2Yzg3Mjk4NWFlZmYyNmYzM2RiYmUwZjRkNjk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmlu
Z1JlZiB1cmwpCiAgICAgICAgIGRpc2FsbG93ZWRVUkxzID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpOwogCiAgICAgLy8gQ2Fub25pY2FsaXplIHRoZSBV
UkwKLSAgICBOU1VSTFJlcXVlc3QqIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVybENGLmdldCgpXV07CisgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAgIHJlcXVlc3Qg
PSBbTlNVUkxQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1ZXN0XTsKIAog
ICAgIENGU2V0QWRkVmFsdWUoZGlzYWxsb3dlZFVSTHMsIFtyZXF1ZXN0IFVSTF0pOwpAQCAtMTY4
LDcgKzE2OCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25D
YWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiAgICAgW29yaWdpbiByZWxlYXNlXTsKIH0K
IAotSlNWYWx1ZVJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBjb250ZXh0LCBOU0Fy
cmF5KiBvcmlnaW5zKQorSlNWYWx1ZVJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBOU0FycmF5ICpvcmlnaW5zKQogewogICAgIE5TVUludGVnZXIgY291bnQgPSBbb3Jp
Z2lucyBjb3VudF07CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCiAgICAg
TlNTdHJpbmcgKnVybE5TID0gKE5TU3RyaW5nICopdXJsQ0YuZ2V0KCk7CiAKICAgICBOU1VSTCAq
bnN1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxOUyByZWxhdGl2ZVRvVVJMOltbW21haW5G
cmFtZSBkYXRhU291cmNlXSByZXNwb25zZV0gVVJMXV07Ci0gICAgTlNTdHJpbmcqIG5zdXJsU3Ry
aW5nID0gW25zdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBOU1N0cmluZyAqbnN1cmxTdHJpbmcg
PSBbbnN1cmwgYWJzb2x1dGVTdHJpbmddOwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGFic29sdXRlVVJMKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhbbnN1cmxT
dHJpbmcgVVRGOFN0cmluZ10pKTsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcg
TG9hZEl0ZW0oYWJzb2x1dGVVUkwuZ2V0KCksIHRhcmdldCkpOwpAQCAtNTA4LDggKzUwOCw4IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29s
IGNhblByb3ZpZGVBbHBoYSwgZG91YmxlCiB7CiAgICAgLy8gRHVtcFJlbmRlclRyZWUgY29uZmln
dXJlZCB0aGUgV2ViVmlldyB0byB1c2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2su
CiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gcHJvdmlkZXIgPSBbW21haW5G
cmFtZSB3ZWJWaWV3XSBfZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcl07Ci0gICAgV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2sqIG1vY2tQcm92aWRlciA9IHN0YXRpY19jYXN0PFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKj4ocHJvdmlkZXIpOwotICAgIFdlYkRldmljZU9y
aWVudGF0aW9uKiBvcmllbnRhdGlvbiA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGlu
aXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBoYSBjYW5Qcm92
aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1hOmNhblByb3Zp
ZGVHYW1tYSBnYW1tYTpnYW1tYV07CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2sgKm1vY2tQcm92aWRlciA9IHN0YXRpY19jYXN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrKj4ocHJvdmlkZXIpOworICAgIFdlYkRldmljZU9yaWVudGF0aW9uICpvcmllbnRhdGlv
biA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhh
OmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBoYSBjYW5Qcm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0
YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1hOmNhblByb3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV07
CiAgICAgW21vY2tQcm92aWRlciBzZXRPcmllbnRhdGlvbjpvcmllbnRhdGlvbl07CiAgICAgW29y
aWVudGF0aW9uIHJlbGVhc2VdOwogfQpAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBp
Y29uRGF0YWJhc2VFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIDxyZGFyOi8v
cHJvYmxlbS82NDgwMTA4PgotICAgIHN0YXRpYyBXZWJJY29uRGF0YWJhc2UqIHNoYXJlZFdlYklj
b25EYXRhYmFzZSA9IE5VTEw7CisgICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSAqc2hhcmVkV2Vi
SWNvbkRhdGFiYXNlID0gTlVMTDsKICAgICBpZiAoIXNoYXJlZFdlYkljb25EYXRhYmFzZSkgewog
ICAgICAgICBpZiAoIWljb25EYXRhYmFzZUVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMTUxLDcgKzExNTEsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphdXRoZW50aWNh
dGVTZXNzaW9uKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdXNlcgogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoYXZpb3IoY29uc3QgY2hhciogZWRpdGluZ0Jl
aGF2aW9yKQogewotICAgIE5TU3RyaW5nKiBlZGl0aW5nQmVoYXZpb3JOUyA9IFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzplZGl0aW5nQmVoYXZpb3JdOworICAgIE5TU3RyaW5n
ICplZGl0aW5nQmVoYXZpb3JOUyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmlu
ZzplZGl0aW5nQmVoYXZpb3JdOwogICAgIGlmIChbZWRpdGluZ0JlaGF2aW9yTlMgaXNFcXVhbFRv
U3RyaW5nOkAibWFjIl0pCiAgICAgICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc10gc2V0RWRpdGluZ0JlaGF2aW9yOldlYktpdEVkaXRpbmdNYWNCZWhhdmlvcl07CiAgICAg
ZWxzZSBpZiAoW2VkaXRpbmdCZWhhdmlvck5TIGlzRXF1YWxUb1N0cmluZzpAIndpbiJdKQpAQCAt
MTIwMiwzICsxMjAyLDI1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJl
Y3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAjZW5kaWYKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21l
SW5wdXRGaWVsZCgpCit7CisgICAgTlNUZXh0RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0Rmll
bGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDIwKV07CisgICAg
dGV4dEZpZWxkLnRhZyA9IDE7CisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGNv
bnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZF07CisgICAgW3RleHRGaWVsZCByZWxlYXNl
XTsKKyAgICAKKyAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OlttYWluRnJhbWUgd2ViVmll
d11dOworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldE5leHRLZXlWaWV3OnRleHRGaWVsZF07
Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQo
KQoreworICAgIFtbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gY29udGVudFZpZXddIHZp
ZXdXaXRoVGFnOjFdIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIGZvY3VzV2ViVmlldygpOwor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcoKQoreworICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpbbWFpbkZyYW1l
IHdlYlZpZXddXTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGM3OGZlYTU1NTQyMGUxMjliYWQyNGM5ZjVjMTRj
NmIzY2RmN2I2Y2MuLjVjOTdlZTZjODE1ZDEzNDgyYTczYjE0OTg5OGU0YmY3OWNiODM4NWQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcApAQCAtMTU0MCwzICsxNTQwLDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWxsb3dSb3VuZGluZ0hhY2tzKCkKIHsKIH0KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcoKQoreworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0xheW91dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCA1MjFhYjdjMGE2MDBjY2U1ZmNlYzczMDJl
MmI3YjQ4YWMxNzNmOTdiLi41MGNhNDYyNjg3N2IwOGI4Y2E0ZGU2ZGM2ZWE2MWRkN2NlMjQ2MmZk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMTE3
LDYgKzExNywxMSBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChpbiBib29sZWFuIGZsYWcpOwogICAgICAgICAKICAgICAgICAgdm9pZCBz
ZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChpbiBib29sZWFuIGZs
YWcpOworICAgICAgICAKKyAgICAgICAgLy8gRm9jdXMgdGVzdGluZy4KKyAgICAgICAgdm9pZCBh
ZGRDaHJvbWVJbnB1dEZpZWxkKGluIG9iamVjdCBjYWxsYmFjayk7CisgICAgICAgIHZvaWQgcmVt
b3ZlQ2hyb21lSW5wdXRGaWVsZChpbiBvYmplY3QgY2FsbGJhY2spOworICAgICAgICB2b2lkIGZv
Y3VzV2ViVmlldyhpbiBvYmplY3QgY2FsbGJhY2spOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKaW5kZXggZGQwNDU3ODZiNGNhNmI0ZDkyMmU0MTAyNmNiNDczNjY5MTAxYjk0Zi4uZGUzZDI1
MTdjZWZjZWYxYzdhODE0ZTM4OWFiOGM5ZTFiYmQwM2IzMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAg
LTE1OCw2ICsxNTgsMTggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWcKIAogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiQ2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayIpKSB7CisgICAgICAgIG1fbGF5
b3V0VGVzdENvbnRyb2xsZXItPmNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSkgewor
ICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVs
ZENhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2si
KSkgeworICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsRm9jdXNXZWJWaWV3Q2Fs
bGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBlcnJvck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJFcnJvciIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNz
YWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVW5rbm93biIp
KTsKQEAgLTI0MSw0ICsyNTMsMjIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdE5ld0JlZm9y
ZVVubG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUpCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZSht
X2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAordm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cG9zdEFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKTsKKyAgICBXS0J1bmRsZVBvc3RN
ZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlJlbW92ZUNocm9tZUlucHV0RmllbGQiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVz
c2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIEluamVjdGVk
QnVuZGxlOjpwb3N0Rm9jdXNXZWJWaWV3KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZv
Y3VzV2ViVmlldyIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4
IDUwNmJlZGY4ZDMzOTgwYjEyZTMxZDUzMjJiMzkyNjkwMzRhODY2N2YuLjM5YzY5MmQ0N2I3YTE0
MWU3MWM2NmY0NGE2ZTA1M2MyYzFjOGI3YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTczLDYgKzczLDkg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRHVtcFBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1f
ZHVtcFBpeGVsczsgfQogICAgIAogICAgIHZvaWQgcG9zdE5ld0JlZm9yZVVubG9hZFJldHVyblZh
bHVlKGJvb2wpOworICAgIHZvaWQgcG9zdEFkZENocm9tZUlucHV0RmllbGQoKTsKKyAgICB2b2lk
IHBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0Rm9jdXNXZWJWaWV3
KCk7CiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggMDNjMjdmNjUxNDYyNzU3MDM2MDhhYjI4Yjc2Y2U4Yjk0ZGYxNTBkMS4u
NjE3ZDViYzIxZTUxOWMxMThjNWJjYzdmZjIwM2FiYjc0OGU2MTdjOSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKQEAgLTUwMCw0ICs1MDAsNjMgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoYm9vbCBz
aG8KICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucG9zdE5ld0JlZm9yZVVubG9hZFJldHVy
blZhbHVlKCFzaG91bGRTdGF5T25QYWdlKTsKIH0KIAordHlwZWRlZiBXVEY6Okhhc2hNYXA8dW5z
aWduZWQsIEpTVmFsdWVSZWY+IENhbGxiYWNrTWFwOworc3RhdGljIENhbGxiYWNrTWFwJiBjYWxs
YmFja01hcCgpCit7CisgICAgc3RhdGljIENhbGxiYWNrTWFwJiBtYXAgPSAqbmV3IENhbGxiYWNr
TWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyB2b2lkIGNhY2hlTGF5b3V0VGVzdENv
bnRyb2xsZXJDYWxsYmFjayh1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sK
KyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFt
ZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4
dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFt
ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgY2FsbGJhY2spOworICAgIGNhbGxiYWNr
TWFwKCkuYWRkKGluZGV4LCBjYWxsYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkIGNhbGxMYXlvdXRU
ZXN0Q29udHJvbGxlckNhbGxiYWNrKHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmICghY2FsbGJh
Y2tNYXAoKS5jb250YWlucyhpbmRleCkpCisgICAgICAgIHJldHVybjsKKyAgICBXS0J1bmRsZUZy
YW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisgICAgSlNPYmpl
Y3RSZWYgY2FsbGJhY2sgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgY2FsbGJhY2tNYXAoKS50
YWtlKGluZGV4KSwgMCk7CisgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBjYWxs
YmFjaywgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCAwLCAwLCAwKTsKKyAgICBK
U1ZhbHVlVW5wcm90ZWN0KGNvbnRleHQsIGNhbGxiYWNrKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmIGNhbGxiYWNrKQorewor
ICAgIGNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygxLCBjYWxsYmFjayk7CisgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKCk7Cit9CisK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoSlNWYWx1
ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2so
MiwgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0UmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dl
YlZpZXcoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9s
bGVyQ2FsbGJhY2soMywgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
b3N0Rm9jdXNXZWJWaWV3KCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxB
ZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKQoreworICAgIGNhbGxMYXlvdXRUZXN0Q29udHJv
bGxlckNhbGxiYWNrKDEpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsUmVt
b3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRy
b2xsZXJDYWxsYmFjaygyKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbEZv
Y3VzV2ViVmlld0NhbGxiYWNrKCkKK3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxs
YmFjaygzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
aW5kZXggNmE5YTExZTdiNzllNGYwMjg3MzYyODU3YTdjOWUxODUwZDkwYmY0ZC4uNGQ3YjY5OTJi
MjBjOWNiZDIyYmYxMDU1NzgxNzYwMmM3NTRlMDFlZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aApAQCAtMTcyLDYgKzE3MiwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBnbG9iYWxGbGFn
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxGbGFn
KGJvb2wgdmFsdWUpIHsgbV9nbG9iYWxGbGFnID0gdmFsdWU7IH0KKyAgICAKKyAgICB2b2lkIGFk
ZENocm9tZUlucHV0RmllbGQoSlNWYWx1ZVJlZik7CisgICAgdm9pZCByZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKEpTVmFsdWVSZWYpOworICAgIHZvaWQgZm9jdXNXZWJWaWV3KEpTVmFsdWVSZWYpOwor
ICAgIHZvaWQgY2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgIHZvaWQgY2Fs
bFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgIHZvaWQgY2FsbEZvY3VzV2Vi
Vmlld0NhbGxiYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB3YWl0
VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1XZWJWaWV3LmgKaW5kZXggNDY0NDkwYjdhZGU0MWVlOTUxZTJkNmY3NWQ3NDkwY2RkZTU0NGE0
Zi4uYzEyMmE4NmJiZDhmZDY4NjAwZGQyMmY2YWM4MTU5MzBhZjZiNTVhZCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC03MSw2ICs3MSwxMCBAQCBwdWJsaWM6
CiAKICAgICBXS1JlY3Qgd2luZG93RnJhbWUoKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdL
UmVjdCk7CisgICAgCisgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBtYWtlV2ViVmlld0ZpcnN0UmVzcG9u
ZGVyKCk7CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1XS1ZpZXcgbV92aWV3OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBiZTIwMDQ2YTIxYjAxMzUwMTIy
OTFkZWMzN2VlNWJmMTYxMTAxMzQyLi4zNWZjODIzODUwODAwNjAwOWEyOWRlNWJlMmQ1MTdkMThh
NDkyNzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
MjQ1LDYgKzI0NSwyNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2hhcmVkKCkuc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoV0tCb29sZWFuR2V0
VmFsdWUoYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkFkZENocm9tZUlucHV0RmllbGQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVk
KCkubWFpbldlYlZpZXcoKS0+YWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJDYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpOworICAgICAg
ICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNo
YXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJSZW1vdmVDaHJvbWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFj
ayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkZvY3VzV2ViVmlldyIpKSB7CisgICAgICAgIFRlc3RDb250
cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5tYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVy
KCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxGb2N1c1dlYlZpZXdDYWxsYmFj
ayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKaW5k
ZXggZTViODAzOGE4NjU2NTAzNzE2OGVhZWJhNjMzMWQ1OWQxYWZkNzFlMC4uMzczNWRjNWU2YzJl
NThiOWI5ODFkNDQzYWM1NTY3NzhkZjA0NzYwNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCkBAIC05Nyw1ICs5NywxNyBAQCB2b2lk
IFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lKQogICAgIHJlc2l6
ZVRvKGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0KTsKIH0KIAordm9pZCBQbGF0
Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1X
ZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3Jt
V2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbQppbmRleCBhZmYxMGVkNTA0Y2EwODY5YjdlMGY1MDhlZTVhNGIzNzI3NzQ2Y2JmLi41
MzQyNjQzMDdkZjcyZmEyMGQzZTQ5NjA0YTkzNThiNTNiMGQ0NzdiIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBAIC04MCw0ICs4MCwy
NiBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lKQog
ICAgIFttX3dpbmRvdyBzZXRGcmFtZTpOU01ha2VSZWN0KGZyYW1lLm9yaWdpbi54LCBmcmFtZS5v
cmlnaW4ueSwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpIGRpc3BsYXk6WUVT
XTsKIH0KIAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQorewor
ICAgIE5TVGV4dEZpZWxkKiB0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAx
OworICAgIFtbbV93aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKKyAg
ICBbdGV4dEZpZWxkIHJlbGVhc2VdOworCisgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5Vmlldzpt
X3ZpZXddOworICAgIFttX3ZpZXcgc2V0TmV4dEtleVZpZXc6dGV4dEZpZWxkXTsKK30KKwordm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworICAgIFtbW21f
d2luZG93IGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzoxXSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsK
KyAgICBtYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKKyAgICBbbV93aW5kb3cgbWFrZUZp
cnN0UmVzcG9uZGVyOm1fdmlld107Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKaW5kZXggOWUy
M2Q3MGU1ZTNjMjY2MjllZjZiZWRhNjhjZjYwNWY2NTFmMDg0Ny4uMzQyMDVhMGZlNjA5MGFjNWQ3
NmZkOTNjNmMxMmZlZDM4NGIxZjRkMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCkBAIC05Nyw0ICs5NywxNyBAQCB2b2lkIFBsYXRm
b3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0KQogICAgIC8vIEltcGxlbWVudC4KIH0K
IAorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwor
dm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQoreworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109562</attachid>
            <date>2011-10-03 17:49:33 -0700</date>
            <delta_ts>2011-10-04 00:25:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20111003174951.patch</filename>
            <type>text/plain</type>
            <size>43189</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjM3MDFiZjNjZjVkMzkxYjlkZTZi
MjkyZWM2ZjZjNjIyYzVjNzk0Li5kYjY4ZjViNzVmMzUzNDljZDg5MWM3NjQ1ZTY4M2E0NDAzM2Uw
MGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMjcgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG9wdGlvbi1rZXkgbmF2aWdh
dGlvbiBpcyBvbmx5IHJlbGV2YW50IHRvIHRoZSBNYWMgcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvZm9jdXMt
b3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5q
czogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuS2V5UHJlc3Nlcyk6
CisgICAgICAgIChub3RpZnlEb25lKToKKyAgICAgICAgKGxvZyk6CisKIDIwMTEtMTAtMDMgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUgYm9ndXMgZXhw
ZWN0ZWQgUE5HLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9y
bXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWExZGY2ZjIxYjIwYTQzYmU3NmE4YzYyMDJjOTNkZmE4
NzAyOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNSBAQAoraHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyIC0g
VGhpcyB0ZXN0IGNoZWNrcyB0byBzZWUgaWYgb3B0aW9uKGFsdCktdGFiYmluZyBwcm9wZXJseSBm
b2N1c2VzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgbm9ybWFsbHkgbm90IGZvY3VzZWQuIEZvciB0
ZXN0aW5nLCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGJ5IGRlZmF1bHQgcHJlc3NpbmcgdGFiIHdp
bGwgc2tpcCBvdmVyIGJ1dHRvbnMsIGFuZCBvcHRpb24tdGFiIHdpbGwgaW5jbHVkZSBidXR0b25z
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworICAKK1ByZXNzaW5nIHRhYiA0IHRp
bWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3Vz
ZWQgdGV4dCBmaWVsZCAvNDoiCitQcmVzc2luZyBzaGlmdC10YWIgNCB0aW1lczoKK1BBU1MgcmVz
dWx0IGlzICIgLzE6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8yOiAvMzpmb2N1c2VkIHRleHQgZmllbGQg
LzQ6IgorUHJlc3Npbmcgb3B0aW9uLXRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpm
b2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNv
bmQgYnV0dG9uIC80OiIKK1ByZXNzaW5nIHNoaWZ0LW9wdGlvbi10YWIgNCB0aW1lczoKK1BBU1Mg
cmVzdWx0IGlzICIgLzE6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC8yOmZvY3VzZWQgdGV4dCBmaWVs
ZCAvMzpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvNDoiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250
cm9sLW9uLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzIxNGZmYWY0OGQyZjQ5YzkxYjZkYTNmNjdj
ZWQwNjZiNzM3MjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sCkBAIC0wLDAgKzEs
MTYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgZmlyc3QgYnV0
dG9uJykiIHZhbHVlPSIxIj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmZvY3VzPSJsb2coJ2ZvY3Vz
ZWQgdGV4dCBmaWVsZCcpIiB2YWx1ZT0iMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3Vz
PSJsb2coJ2ZvY3VzZWQgc2Vjb25kIGJ1dHRvbicpIiB2YWx1ZT0iMyI+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRy
b2wtb24tcGFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3NjcmlwdC10
ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBh
Z2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzllMDMzZTMwNTcwNWY3YjkzMzE1N2MzZjc3OWRlYTAxOTJiMDlk
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCkBAIC0wLDAgKzEs
NjEgQEAKK2Rlc2NyaXB0aW9uKCdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIgLSBUaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5n
IHByb3Blcmx5IGZvY3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9j
dXNlZC4gRm9yIHRlc3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVz
c2luZyB0YWIgd2lsbCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNs
dWRlIGJ1dHRvbnMuJyk7CisKK3ZhciBpdGVyYXRpb24gPSAwOwordmFyIG1vZGlmaWVyczsKK3Zh
ciByZXN1bHQ7CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZGVidWcoIlByZXNzaW5nIHRh
YiA0IHRpbWVzOiIpOworICAgIG1vZGlmaWVycyA9IHVuZGVmaW5lZDsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7Cit9CisKK2Z1bmN0aW9uIHJ1
bktleVByZXNzZXMoKSB7CisgICAgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9ICcgLycgKyAoaSArIDEpICsgJzonOworICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1vZGlmaWVycyk7CisgICAgfQorICAgIGl0
ZXJhdGlvbisrOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6
IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiJyk7CisgICAgICAgICAgICBkZWJ1ZygiUHJlc3Np
bmcgc2hpZnQtdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0
S2V5Il07CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVu
S2V5UHJlc3Nlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgdGV4dCBmaWVsZCAvMjogLzM6
Zm9jdXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKKyAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBv
cHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJd
OworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVBy
ZXNzZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
IHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2Vk
IHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAg
IGRlYnVnKCJQcmVzc2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAg
ICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAn
IiAvMTpmb2N1c2VkIHNlY29uZCBidXR0b24gLzI6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8zOmZvY3Vz
ZWQgZmlyc3QgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2codmFsKSB7CisgICAgcmVzdWx0
ICs9IHZhbDsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiBsYXlvdXRU
ZXN0Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKSB7CisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmFkZENocm9tZUlucHV0Rmll
bGQoc3RhcnRUZXN0KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xheW91dFRlc3RDb250
cm9sbGVyLnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSl9LCAyMDAwKTsKK30gZWxz
ZQorICAgIGZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxMDQyYzQ1NzFhYmE3NGNiNWUxYWViN2UyYzU3OGUwNDUzMmNlOGE3Li5j
ZTRkZTUzOWYwNTM0ODU5ZDExYmEzZGY4MmIzNWFkMThhNjExNDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjMgQEAKKzIwMTEtMDktMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisg
ICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3Zl
ciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gV0sxIHNldEluaXRpYWxGb2N1cygpIGlzIGNhbGxlZCBv
biBGb2N1c0NvbnRyb2xsZXIgd2l0aCB0aGUga2V5IGV2ZW50IHRoYXQKKyAgICAgICAgY2F1c2Vk
IHRoZSB3ZWIgdmlldyB0byBiZWNvbWUgZmlyc3QgcmVzcG9uZGVyLiBJbiBXSzIgbm8gZXZlbnQg
aXMgc2VudC4gU28gaWYKKyAgICAgICAgdGhlIGtleSBzdHJva2UgdGhhdCBjYXVzZWQgdGhlIGNo
YW5nZSBpbiBmaXJzdCByZXNwb25kZXIgc3RhdHVzIGNvbnRhaW5zIHRoZQorICAgICAgICBvcHRp
b24gbW9kaWZpZXIga2V5LCBGb2N1c0NvbnRyb2xsZXIgZGlkIG5vdCBrbm93IHRoYXQgaXQgaGFk
IHRvIHN3aXRjaCBiZWhhdmlvci4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBs
ZSB3YXlzIHRoYXQgdGhlIFdLVmlldyBjYW4gYmVjb21lRmlyc3RSZXNwb25kZXIsIEkgY2hhbmdl
ZAorICAgICAgICB0aGUgc2lnbmF0dXJlIHRvIHNldEluaXRpYWxGb2N1cyB0byBleHByZXNzIHdo
ZXRoZXIgdGhlIGtleSBldmVudCBwYXJhbWV0ZXIgaXMgYW4KKyAgICAgICAgYWN0dWFsIGtleSBl
dmVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcDoKKyAgICAg
ICAgKFdLVmlld1NldEluaXRpYWxGb2N1cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dp
bi9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAg
ICAgICgtW1dLVmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOiBUYWtlIHRoZSBOU0FwcCBjdXJy
ZW50RXZlbnQgYW5kIHBhc3MgaXQgYWxvbmcgaWYKKyAgICAgICAgdGhlIGV2ZW50IGlzIGEga2V5
Ym9hcmQgZXZlbnQsIG90aGVyd2lzZSBwYXNzIGFuIGVtcHR5IGV2ZW50LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldEluaXRpYWxGb2N1cyk6IENoYW5nZSBpbiBmdW5jdGlvbiBzaWduYXR1cmUgdG8gY29uZmly
bSB0aGF0CisgICAgICAgIHRoZSBldmVudCB0aGF0IGNhdXNlZCB0aGUgaW5pdGlhbCBmb2N1cyB3
YXMgYSBrZXlib2FyZCBldmVudCwgYW5kIHByb3ZpZGUgdGhlIGtleWJvYXJkCisgICAgICAgIGV2
ZW50IGl0c2VsZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6IElmIHdlIGtub3cgdGhhdCB0aGUgY2F1c2Ugb2Yg
dGhpcyB3YXMgYSBrZXlib2FyZAorICAgICAgICBldmVudCwgd2UgcGFzcyB0aGF0IGV2ZW50IHRv
IHRoZSBGb2N1c0NvbnRyb2xsZXIuIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIG9yaWdp
bmFsCisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBpcyB0byBwYXNzIG5vIGV2ZW50IGF0IGFsbC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisyMDExLTA5LTIzICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQt
KW9wdGlvbi10YWJiaW5nIHNraXBzIG92ZXIgZWxlbWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZy
b20gY2hyb21lIHRvIHdlYnZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY4NDEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdLMSBzZXRJ
bml0aWFsRm9jdXMoKSBpcyBjYWxsZWQgb24gRm9jdXNDb250cm9sbGVyIHdpdGggdGhlIGtleSBl
dmVudCB0aGF0CisgICAgICAgIGNhdXNlZCB0aGUgd2ViIHZpZXcgdG8gYmVjb21lIGZpcnN0IHJl
c3BvbmRlci4gSW4gV0syIG5vIGV2ZW50IGlzIHNlbnQuIFNvIGlmCisgICAgICAgIHRoZSBrZXkg
c3Ryb2tlIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2UgaW4gZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBj
b250YWlucyB0aGUKKyAgICAgICAgb3B0aW9uIG1vZGlmaWVyIGtleSwgRm9jdXNDb250cm9sbGVy
IGRpZCBub3Qga25vdyB0aGF0IGl0IGhhZCB0byBzd2l0Y2ggYmVoYXZpb3IuCisKKyAgICAgICAg
QmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0aGF0IHRoZSBXS1ZpZXcgY2FuIGJlY29t
ZUZpcnN0UmVzcG9uZGVyLCBJIGNoYW5nZWQKKyAgICAgICAgdGhlIHNpZ25hdHVyZSB0byBzZXRJ
bml0aWFsRm9jdXMgdG8gZXhwcmVzcyB3aGV0aGVyIHRoZSBrZXkgZXZlbnQgcGFyYW1ldGVyIGlz
IGFuCisgICAgICAgIGFjdHVhbCBrZXkgZXZlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0Mvd2luL1dLVmlldy5jcHA6IFVwZGF0ZSBmdW5jdGlvbiBzaWduYXR1cmUuCisgICAgICAgIChX
S1ZpZXdTZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tW
aWV3Lmg6CisKKwogMjAxMS0xMC0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIGZhaWxpbmcgdXJpIHBhcmFtZXRlciB0byBw
cm92aXNpb25hbC1sb2FkLWZhaWxlZCBhbmQgbG9hZC1mYWlsZWQgc2lnbmFscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCmluZGV4IGU3YzkyZTA1MTMx
Mjg5ZjJlZDNlNzhhZmZiMWE0ZTE2NWZlMWIwY2UuLjk4ZThhMzVkMDUwMjRhNjU0NTlhY2JlN2Y5
NzY3NDYwYzA3M2NhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy93aW4vV0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2lu
L1dLVmlldy5jcHAKQEAgLTY5LDcgKzY5LDggQEAgdm9pZCBXS1ZpZXdTZXRJc0luV2luZG93KFdL
Vmlld1JlZiB2aWV3UmVmLCBib29sIGlzSW5XaW5kb3cpCiAKIHZvaWQgV0tWaWV3U2V0SW5pdGlh
bEZvY3VzKFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGZvcndhcmQpCiB7Ci0gICAgdG9JbXBsKHZp
ZXdSZWYpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCk7CisgICAgYm9vbCBpc0tleWJvYXJkRXZl
bnRWYWxpZCA9IGZhbHNlOworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0SW5pdGlhbEZvY3VzKGZv
cndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLZXlib2FyZEV2ZW50KCkpOwogfQogCiB2
b2lkIFdLVmlld1NldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShXS1ZpZXdSZWYgdmlld1JlZiwg
V0tTaXplIHNjcm9sbE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQppbmRleCAwYjg4ZDMyNGE1OWI2ZTU1ODU3NjgxOTUwYzRkYzRlOTQ3ZDI1YTU5Li5i
NjBjODNjNDY0ZDMzNjdiNDdkMzIwZDFhZGNjMTU5ZDE3YWY5NDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQsMTcgKzMwNCwyMSBAQCBzdHJ1
Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAtIChCT09MKWJlY29tZUZp
cnN0UmVzcG9uZGVyCiB7CiAgICAgTlNTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gW1tz
ZWxmIHdpbmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0KKyAgICAKICAgICBfZGF0
YS0+X2luQmVjb21lRmlyc3RSZXNwb25kZXIgPSB0cnVlOwogICAgIAogICAgIFtzZWxmIF91cGRh
dGVTZWN1cmVJbnB1dFN0YXRlXTsKICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5n
ZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOwotCisgICAgCiAgICAgX2RhdGEtPl9pbkJl
Y29tZUZpcnN0UmVzcG9uZGVyID0gZmFsc2U7Ci0KLSAgICBpZiAoZGlyZWN0aW9uICE9IE5TRGly
ZWN0U2VsZWN0aW9uKQotICAgICAgICBfZGF0YS0+X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhkaXJl
Y3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0KTsKLQorICAgIAorICAgIGlmIChkaXJlY3Rpb24gIT0g
TlNEaXJlY3RTZWxlY3Rpb24pIHsKKyAgICAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNBcHAgY3Vy
cmVudEV2ZW50XTsKKyAgICAgICAgYm9vbCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJv
YXJkID0gW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlV
cDsKKyAgICAgICAgaWYgKCFiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbUtleWJvYXJkKQorICAg
ICAgICAgICAgZXZlbnQgPSBuaWw7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+c2V0SW5pdGlhbEZv
Y3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQsIGJlY29taW5nRmlyc3RSZXNwb25kZXJG
cm9tS2V5Ym9hcmQsIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIHNlbGYpKTsKKyAgICB9
CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA2YzA0NDdlMGM5MDRkY2IwN2Q2OTY5OGM5NmQyYzIxMmY5ZTNhNjc4Li41
YzJiY2YwNjJkNGVmODk4ZmJmOTQxMjFkODljNDU1NDc1MTI4MDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAwLDExICs3MDAsMTEgQEAgSW50U2l6
ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlQ2xpZW50
LT52aWV3U2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJv
b2wgZm9yd2FyZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBr
ZXlib2FyZEV2ZW50KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9y
d2FyZCksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRF
dmVudCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFdpbmRvd1Jlc2l6
ZXJTaXplKGNvbnN0IEludFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQ2YmQwYWVjNDFkMmU4NmJiN2UzNjVhM2JkMTQ1
MDJhNGVjNzg4MjQuLjFiMThhYjhiMmQ4MjM5MGNhNTIwMWJlM2QyMjM4Nzc4YjBkY2JmYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI2Miw3ICsyNjIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQg
dmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29s
KTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIHNldFdpbmRv
d1Jlc2l6ZXJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICAKICAgICB2b2lkIGNs
ZWFyU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApp
bmRleCAwYTJmNWJhNTQzOTU5Mzk0MDJhMTJhODgyZTYyNWU1MzgwNjgwYmU5Li45MjljZDVlZGFh
MGNlMGMyODkzMDY2MDJlZmMxZjk2NDgxZWRmNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKQEAgLTEwNjgsOSArMTA2OCw5IEBAIHZvaWQgV2ViVmlldzo6c2V0
T3ZlcnJpZGVDdXJzb3IoSENVUlNPUiBvdmVycmlkZUN1cnNvcikKICAgICB1cGRhdGVOYXRpdmVD
dXJzb3IoKTsKIH0KIAotdm9pZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJk
KQordm9pZCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5
Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBt
X3BhZ2UtPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkKTsKKyAgICBtX3BhZ2UtPnNldEluaXRpYWxG
b2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgZXZlbnQpOwogfQogCiB2b2lkIFdl
YlZpZXc6OnNldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShjb25zdCBJbnRTaXplJiBzY3JvbGxP
ZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IDY3MTU4MWQ3
ZWM0NWE0OTYwODgyMTg5M2E4YTNkNzk1Y2ViMjliYTUuLmJkYzA3ZWZhN2NlYmY3ZTYzNmFiNGEy
MDZiOTZjNGMxNzkzMTcxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5o
CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7
CiAgICAgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRPdmVycmlkZUN1cnNv
cihIQ1VSU09SKTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQpOworICAg
IHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRW
YWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0
T25OZXh0UmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldEZpbmRJ
bmRpY2F0b3JDYWxsYmFjayhXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2ssIHZvaWQqKTsKICAg
ICBXS1ZpZXdGaW5kSW5kaWNhdG9yQ2FsbGJhY2sgZ2V0RmluZEluZGljYXRvckNhbGxiYWNrKHZv
aWQqKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZTkyNjViZDJhZGRiZmRhMjEzYmIwZjRjODJhYzY3NGI5N2YyMDVlYi4uZjJlYTY5Mjdk
NTk4Y2YzZWFlNTc0OGU4ODJjYTk2MWYxZjU3OGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTM2NSwxMyArMTM2NSwyMSBAQCB2b2lk
IFdlYlBhZ2U6OnNldEZvY3VzZWQoYm9vbCBpc0ZvY3VzZWQpCiAgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+c2V0Rm9jdXNlZChpc0ZvY3VzZWQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNl
dEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQpCit2b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1
cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGV2ZW50KQogewogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2V0Rm9jdXNlZE5vZGUoMCk7CisKKyAgICBpZiAoaXNLZXlib2FyZEV2ZW50VmFs
aWQgJiYgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CisgICAgICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7CisgICAgICAg
IHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNl
dEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJl
Y3Rpb25CYWNrd2FyZCwgS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGZyYW1l
LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9y
d2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIDAp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBlNWQwYjk5NTFmOTEwODgxOGFmNjU5ZTExNDllZDc4MzdkYWM3N2RjLi40ZmJiMGE2MGVlYTlj
ZGQ2ZDFmMzllODQ5YzUyMmY4NjBmNDliYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ4MCw3ICs0ODAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7
CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOwotICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJv
b2wpOworICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJv
YXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgc2V0V2lu
ZG93UmVzaXplclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0SXNJ
bldpbmRvdyhib29sKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDkyNGYwMGRkOGVmZWQ3NzRmMzllNmJmODEwZjZkN2Vj
NzZkNGI1NzMuLjFiNzcxZDRkMjNhYTI4YWRhOWFiOTY2NmE3Zjk1ZWQ4NDFjMWIwZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRB
Y3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgU2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCi0gICAgU2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKKyAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQg
ZXZlbnQpCiAgICAgU2V0SXNJbldpbmRvdyhib29sIGlzSW5XaW5kb3cpCiAKICAgICBTZXREcmF3
c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGE1YzIwMmI2NmU1OGU2ODBjMDhiODM2ZjAz
YTM0ODIyYzk2YWY3MS4uM2E5NGM2ODI1NjRlZTM3NmQxN2EyZGJlYWJhMzIzNjE5YmEyYTE2NCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDg3IEBACisyMDExLTA5LTI3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQtKW9wdGlvbi10YWJiaW5nIHNraXBzIG92ZXIg
ZWxlbWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gY2hyb21lIHRvIHdlYnZpZXcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNyZWF0ZSBhIHRlc3QgZm9yIHRoZSBidWcs
IEkgaGFkIHRvIHVwZGF0ZSBEUlQgYW5kIFdLVFIgdG8gY3JlYXRlIHNvbWUKKyAgICAgICAgd2lk
Z2V0IHRoYXQgYWxsb3dzIGZpcnN0IHJlc3BvbmRlciBzdGF0dXMgdG8gbW92ZSBhd2F5IGZyb20g
dGhlIG1haW4gd2ViIHZpZXcuCisKKyAgICAgICAgVGhyZWUgbWV0aG9kcyB3ZXJlIGFkZGVkIHRv
IGxheW91dFRlc3RDb250cm9sbGVyOiBhZGRDaHJvbWVJbnB1dEZpZWxkLAorICAgICAgICByZW1v
dmVDaHJvbWVJbnB1dEZpZWxkLCBhbmQgZm9jdXNXZWJWaWV3LiBhZGRDaHJvbWVJbnB1dEZpZWxk
IGFkZHMgYSB0ZXh0IGZpZWxkCisgICAgICAgIHRoYXQgaXMgYSBzaWJsaW5nIHRvIHRoZSB3ZWIg
dmlldywgYW5kIHNldHMgdXAgdGhlIGtleSBldmVudCBsb29wIGJldHdlZW4gdGhlIHR3by4KKyAg
ICAgICAgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCByZW1vdmVzIHRoYXQgZmllbGQuIGZvY3VzV2Vi
VmlldyBtb3ZlcyBmaXJzdCByZXNwb25kZXIKKyAgICAgICAgc3RhdHVzIHRvIHRoZSB3ZWIgdmll
dy4KKworICAgICAgICBUaGUgdGVzdCBtYWtlcyB0aGUgY2FsbCB2aWEgbGF5b3V0VGVzdENvbnRy
b2xsZXIgYW5kIHBhc3NlcyBhIGNhbGxiYWNrIHRoYXQgaXQKKyAgICAgICAgYXNzdW1lcyB3aWxs
IGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHRhc2sgaXMgY29tcGxldGVkLiBJbiBEUlQgdGhlIGNhbGxi
YWNrIGlzIGNhbGxlZAorICAgICAgICBzeW5jaHJvbm91c2x5LiBJbiBXS1RSIHRoaXMgaXMgaGFu
ZGxlZCB3aXRoIG1lc3NhZ2UgcGFzc2luZyBiZXR3ZWVuIHRoZSB0d28KKyAgICAgICAgcHJvY2Vz
c2VzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoYWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKHJlbW92
ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAgICAgIChmb2N1c1dlYlZpZXdDYWxsYmFj
ayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6Zm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJl
bW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZv
Y3VzV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlOjpwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlOjpwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpwb3N0Rm9jdXNXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OmNhbGxiYWNrTWFwKTogQ3JlYXRlIGEgaGFzaCBtYXAgdGhhdCBrZWVwcyB0cmFjayBvZiB0
aGUgY2FsbGJhY2tzIHByb3ZpZGVkCisgICAgICAgIHRocm91Z2ggSlMuCisgICAgICAgIChXVFI6
OmNhY2hlTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OmNhbGxM
YXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENv
bnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OkxheW91
dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Y2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAgICAgIChX
VFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxi
YWNrKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxGb2N1c1dlYlZp
ZXdDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1X
ZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJ
bnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0Zp
cnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdl
YlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5w
dXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJz
dFJlc3BvbmRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJW
aWV3V2luLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1
dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0
UmVzcG9uZGVyKToKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbTogVGhlc2UgZnVuY3Rpb25zIGhhdmUgbm90aGluZyB0byBkbworICAgICAg
ICB3aXRoIHRoZSBwYXRjaC0tIGp1c3QgY2xlYW5pbmcgdXAgc3R5bGUuCisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6YWRkRGlzYWxsb3dlZFVSTCk6CisgICAgICAgIChvcmlnaW5zQXJy
YXlUb0pTKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQpOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yKToKKwogMjAx
MS0xMC0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gRml4IG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyB1cmwKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAyZTFiZGI0OTM2NTE1
ZmEwZjFiZTlkNjAxNmJlMDZjOTY3Y2I5MmUzLi4wMzYzOTM2OTgzZDkxMGFhZGM2NzA0YWM5OTg1
MzRhNzU4NTExNjE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0yMTYwLDYgKzIxNjAsMzYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0U2hv
dWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWRDYWxsYmFjayhKU0NvbnRleHQK
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBK
U1ZhbHVlUmVmIGFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgY29udHJvbGxlci0+YWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIC8vIHRoZSBmaXJzdCBh
cmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlucHV0IGZpZWxk
IGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJn
dW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiByZW1vdmVDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnJl
bW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBj
YWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRoZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRl
ZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCks
IHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZm9jdXNXZWJWaWV3Q2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmZvY3VzV2ViVmlldygpOworICAgIC8vIHRo
ZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlu
cHV0IGZpZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAg
ICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAK
IHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDM2LDYgKzI0NjYsOSBAQCBKU1N0YXRpY0Z1bmN0
aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAi
c2V0VGV4dERpcmVjdGlvbiIsIHNldFRleHREaXJlY3Rpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJhbGxvd1JvdW5kaW5nSGFja3MiLCBhbGxvd1JvdW5kaW5nSGFja3NDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZCIsIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYWRkQ2hyb21lSW5wdXRGaWVsZCIsIGFkZENocm9t
ZUlucHV0RmllbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJyZW1vdmVDaHJvbWVJbnB1
dEZpZWxkIiwgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgImZvY3VzV2ViVmlldyIsIGZvY3VzV2ViVmlld0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKaW5kZXggZDVjZmJhNzdjM2RjNGI4ODZhNDBhNmI2ZjUyOTFiZjg2YzE5ZGFk
MC4uYmFjOGI0ZGRiOTgxMmNhMmUwOWU5NGRiODFjMzlhY2M3ZDU5Yjg1MSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMTQsNiArMzE0LDEwIEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5s
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZv
cmVVbmxvYWQoYm9vbCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCkg
eyBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkID0gc2hvdWxkU3Rh
eU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQ7IH0KIAorICAgIHZvaWQgYWRkQ2hyb21l
SW5wdXRGaWVsZCgpOworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZv
aWQgZm9jdXNXZWJWaWV3KCk7CisgICAgCiAgICAgdm9pZCBzZXRQT1NJWExvY2FsZShKU1N0cmlu
Z1JlZiBsb2NhbGUpOwogCiAgICAgdm9pZCBzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAppbmRleCBjODE3YjJiNmFjYjNhNTk5ZDExM2NmMjhiYmRjN2FlMmU4NDA0MDk5Li4xNjQ5MTE1
MmMwNzg0M2M3MjM2YjM0MjcwMDI5ZGFkODA2OWQ1NjUxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTk4NywzICs5
ODcsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0
cmluZ1JlZiBkaXJlY3Rpb24pCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphbGxvd1JvdW5k
aW5nSGFja3MoKQogewogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJ
bnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3Vz
V2ViVmlldygpCit7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMzEwZGFmYTQ1Mzk3ZmZmOTBjOTE4NWQ3MmVjZjA2
YmIyZGQ0NTFhOC4uMTgwNWYxNWEzMmY0NmM4NzI5ODVhZWZmMjZmMzNkYmJlMGY0ZDY5OSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZERp
c2FsbG93ZWRVUkwoSlNTdHJpbmdSZWYgdXJsKQogICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IENG
U2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBOVUxMKTsKIAogICAgIC8v
IENhbm9uaWNhbGl6ZSB0aGUgVVJMCi0gICAgTlNVUkxSZXF1ZXN0KiByZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1
cmxDRi5nZXQoKV1dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0
KCldXTsKICAgICByZXF1ZXN0ID0gW05TVVJMUHJvdG9jb2wgY2Fub25pY2FsUmVxdWVzdEZvclJl
cXVlc3Q6cmVxdWVzdF07CiAKICAgICBDRlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxzLCBbcmVx
dWVzdCBVUkxdKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQogICAgIFtv
cmlnaW4gcmVsZWFzZV07CiB9CiAKLUpTVmFsdWVSZWYgb3JpZ2luc0FycmF5VG9KUyhKU0NvbnRl
eHRSZWYgY29udGV4dCwgTlNBcnJheSogb3JpZ2lucykKK0pTVmFsdWVSZWYgb3JpZ2luc0FycmF5
VG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgTlNBcnJheSAqb3JpZ2lucykKIHsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW29yaWdpbnMgY291bnRdOwogCkBAIC00MjUsNyArNDI1LDcgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJp
bmdSZWYgdGFyZ2V0KQogICAgIE5TU3RyaW5nICp1cmxOUyA9IChOU1N0cmluZyAqKXVybENGLmdl
dCgpOwogCiAgICAgTlNVUkwgKm5zdXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsTlMgcmVs
YXRpdmVUb1VSTDpbW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0gcmVzcG9uc2VdIFVSTF1dOwotICAg
IE5TU3RyaW5nKiBuc3VybFN0cmluZyA9IFtuc3VybCBhYnNvbHV0ZVN0cmluZ107CisgICAgTlNT
dHJpbmcgKm5zdXJsU3RyaW5nID0gW25zdXJsIGFic29sdXRlU3RyaW5nXTsKIAogICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBhYnNvbHV0ZVVSTChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoW25zdXJsU3RyaW5nIFVURjhTdHJpbmddKSk7CiAgICAgV29ya1F1ZXVlOjpz
aGFyZWQoKS0+cXVldWUobmV3IExvYWRJdGVtKGFic29sdXRlVVJMLmdldCgpLCB0YXJnZXQpKTsK
QEAgLTUwOCw4ICs1MDgsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZQogewogICAgIC8vIER1
bXBSZW5kZXJUcmVlIGNvbmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNlIFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLgogICAgIGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+
IHByb3ZpZGVyID0gW1ttYWluRnJhbWUgd2ViVmlld10gX2RldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJdOwotICAgIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKiBtb2NrUHJvdmlkZXIg
PSBzdGF0aWNfY2FzdDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayo+KHByb3ZpZGVy
KTsKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiogb3JpZW50YXRpb24gPSBbW1dlYkRldmljZU9y
aWVudGF0aW9uIGFsbG9jXSBpbml0V2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEg
YWxwaGE6YWxwaGEgY2FuUHJvdmlkZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblBy
b3ZpZGVHYW1tYTpjYW5Qcm92aWRlR2FtbWEgZ2FtbWE6Z2FtbWFdOworICAgIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrICptb2NrUHJvdmlkZXIgPSBzdGF0aWNfY2FzdDxXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayo+KHByb3ZpZGVyKTsKKyAgICBXZWJEZXZpY2VPcmll
bnRhdGlvbiAqb3JpZW50YXRpb24gPSBbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0
V2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJvdmlk
ZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92aWRl
R2FtbWEgZ2FtbWE6Z2FtbWFdOwogICAgIFttb2NrUHJvdmlkZXIgc2V0T3JpZW50YXRpb246b3Jp
ZW50YXRpb25dOwogICAgIFtvcmllbnRhdGlvbiByZWxlYXNlXTsKIH0KQEAgLTU1MCw3ICs1NTAs
NyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KEpTQ29udGV4
dFJlZiBpbnB1dEVsZW1lbnQpCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0
YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTog
V29ya2Fyb3VuZCA8cmRhcjovL3Byb2JsZW0vNjQ4MDEwOD4KLSAgICBzdGF0aWMgV2ViSWNvbkRh
dGFiYXNlKiBzaGFyZWRXZWJJY29uRGF0YWJhc2UgPSBOVUxMOworICAgIHN0YXRpYyBXZWJJY29u
RGF0YWJhc2UgKnNoYXJlZFdlYkljb25EYXRhYmFzZSA9IE5VTEw7CiAgICAgaWYgKCFzaGFyZWRX
ZWJJY29uRGF0YWJhc2UpIHsKICAgICAgICAgaWYgKCFpY29uRGF0YWJhc2VFbmFibGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE1MSw3ICsxMTUxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVm
IHVzZXIKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yKGNv
bnN0IGNoYXIqIGVkaXRpbmdCZWhhdmlvcikKIHsKLSAgICBOU1N0cmluZyogZWRpdGluZ0JlaGF2
aW9yTlMgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6ZWRpdGluZ0JlaGF2
aW9yXTsKKyAgICBOU1N0cmluZyAqZWRpdGluZ0JlaGF2aW9yTlMgPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFVURjhTdHJpbmc6ZWRpdGluZ0JlaGF2aW9yXTsKICAgICBpZiAoW2VkaXRpbmdC
ZWhhdmlvck5TIGlzRXF1YWxUb1N0cmluZzpAIm1hYyJdKQogICAgICAgICBbW1dlYlByZWZlcmVu
Y2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldEVkaXRpbmdCZWhhdmlvcjpXZWJLaXRFZGl0aW5n
TWFjQmVoYXZpb3JdOwogICAgIGVsc2UgaWYgKFtlZGl0aW5nQmVoYXZpb3JOUyBpc0VxdWFsVG9T
dHJpbmc6QCJ3aW4iXSkKQEAgLTEyMDIsMyArMTIwMiwyNSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbk5hbWUpCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworICAgIE5TVGV4dEZpZWxkICp0ZXh0
RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAyMCldOworICAgIHRleHRGaWVsZC50YWcgPSAxOworICAgIFtbW1ttYWluRnJhbWUg
d2ViVmlld10gd2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmlldzp0ZXh0RmllbGRdOworICAg
IFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgCisgICAgW3RleHRGaWVsZCBzZXROZXh0S2V5Vmll
dzpbbWFpbkZyYW1lIHdlYlZpZXddXTsKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXROZXh0
S2V5Vmlldzp0ZXh0RmllbGRdOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1v
dmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKKyAgICBbW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5k
b3ddIGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzoxXSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAg
ICBmb2N1c1dlYlZpZXcoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNX
ZWJWaWV3KCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBtYWtlRmlyc3RS
ZXNwb25kZXI6W21haW5GcmFtZSB3ZWJWaWV3XV07Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBjNzhmZWE1NTU0
MjBlMTI5YmFkMjRjOWY1YzE0YzZiM2NkZjdiNmNjLi41Yzk3ZWU2YzgxNWQxMzQ4MmE3M2IxNDk4
OThlNGJmNzljYjgzODVkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTE1NDAsMyArMTU0MCwxNSBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlv
bikKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFsbG93Um91bmRpbmdIYWNrcygpCiB7CiB9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoKQorewor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkK
K3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KCkKK3sKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKaW5kZXggOGUzZjc0
MmU3MTVlZjY3YjM4YTFiZGY1ZmI5Y2ZmMTdlNTA0MmJiNy4uYjhiMDZlMDVjYmQzMWNkMGQ5MDQy
M2E2ODJhNTQ3ZjI1NTdkMjZmNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29u
dHJvbGxlci5pZGwKQEAgLTEyMSw2ICsxMjEsMTEgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIHZv
aWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoaW4gYm9vbGVhbiBmbGFnKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoaW4gYm9vbGVhbiBmbGFnKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZvY3VzIHRlc3Rp
bmcuCisgICAgICAgIHZvaWQgYWRkQ2hyb21lSW5wdXRGaWVsZChpbiBvYmplY3QgY2FsbGJhY2sp
OworICAgICAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0RmllbGQoaW4gb2JqZWN0IGNhbGxiYWNr
KTsKKyAgICAgICAgdm9pZCBmb2N1c1dlYlZpZXcoaW4gb2JqZWN0IGNhbGxiYWNrKTsKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDFhOTQzN2E4MzA4OGU3MTMxMjY2Y2ZhYmZmOTBl
OWY5MWE2NGE5ZDguLjU2ODkxNmU2MGM1OTNjNTllN2I0ZmIyZmI2ZTAzMDkzOGNjNjk1ZjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC0xNTgsNiArMTU4LDE4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnCiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2si
KSkgeworICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsQWRkQ2hyb21lSW5wdXRG
aWVsZENhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsUmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZENhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRUZXN0Q29udHJvbGxlci0+Y2FsbFJl
bW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbEZv
Y3VzV2ViVmlld0NhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRUZXN0Q29udHJvbGxlci0+
Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlVua25vd24iKSk7CkBAIC0yNDYsNCArMjU4LDIyIEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKQogICAgIFdL
QnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RBZGRDaHJvbWVJbnB1dEZp
ZWxkKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFkZENocm9tZUlucHV0RmllbGQiKSk7
CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAp
OworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVDaHJvbWVJbnB1dEZpZWxkIikpOwor
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsK
K30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdEZvY3VzV2ViVmlldygpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJGb2N1c1dlYlZpZXciKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaAppbmRleCBiOTBmYTlmN2M1ZGUyYWExZjQ4NzUwMTIwNDZmNzk5N2VhYzVl
NTQ5Li42MmNkMGMwMzM4Zjc0YTk3ZWRjNTQ0YzgwYmJhMmZmNzUwMTI1Y2E3IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCkBAIC03NCw2ICs3NCw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1bXBQaXhlbHMo
KSBjb25zdCB7IHJldHVybiBtX2R1bXBQaXhlbHM7IH0KICAgICAKICAgICB2b2lkIHBvc3ROZXdC
ZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sKTsKKyAgICB2b2lkIHBvc3RBZGRDaHJvbWVJbnB1
dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZv
aWQgcG9zdEZvY3VzV2ViVmlldygpOwogCiBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI3OGNhODUzMDZkNDkyYTA5ZTBjNjJm
ZjliYzJiNzYyMjNkMzJkMmMuLjU4OGY3OGM5YmExNjhjOTVkMWMxMDUyYWY1Nzg3MzU4NmRkYTNk
MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01MTMsNCArNTEzLDYzIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5n
QmVmb3JlVW5sb2FkKGJvb2wgc2hvCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBvc3RO
ZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSghc2hvdWxkU3RheU9uUGFnZSk7CiB9CiAKK3R5cGVk
ZWYgV1RGOjpIYXNoTWFwPHVuc2lnbmVkLCBKU1ZhbHVlUmVmPiBDYWxsYmFja01hcDsKK3N0YXRp
YyBDYWxsYmFja01hcCYgY2FsbGJhY2tNYXAoKQoreworICAgIHN0YXRpYyBDYWxsYmFja01hcCYg
bWFwID0gKm5ldyBDYWxsYmFja01hcDsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0aWMgdm9p
ZCBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2sodW5zaWduZWQgaW5kZXgsIEpTVmFs
dWVSZWYgY2FsbGJhY2spCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2Ny
aXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIGNhbGxi
YWNrKTsKKyAgICBjYWxsYmFja01hcCgpLmFkZChpbmRleCwgY2FsbGJhY2spOworfQorCitzdGF0
aWMgdm9pZCBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayh1bnNpZ25lZCBpbmRleCkK
K3sKKyAgICBpZiAoIWNhbGxiYWNrTWFwKCkuY29udGFpbnMoaW5kZXgpKQorICAgICAgICByZXR1
cm47CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0Nv
bnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWlu
RnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGNhbGxiYWNrID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIGNhbGxiYWNrTWFwKCkudGFrZShpbmRleCksIDApOworICAgIEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oY29udGV4dCwgY2FsbGJhY2ssIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0
KSwgMCwgMCwgMCk7CisgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBjYWxsYmFjayk7Cit9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0RmllbGQoSlNWYWx1
ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2so
MSwgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0QWRkQ2hyb21l
SW5wdXRGaWVsZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJv
bWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2FjaGVMYXlvdXRUZXN0
Q29udHJvbGxlckNhbGxiYWNrKDIsIGNhbGxiYWNrKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2Fj
aGVMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDMsIGNhbGxiYWNrKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkucG9zdEZvY3VzV2ViVmlldygpOworfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCkKK3sKKyAgICBj
YWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygxKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Y2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpCit7CisgICAg
Y2FsbExheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMik7Cit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpCit7CisgICAgY2FsbExheW91
dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGM0NWIyZjE4ZjhhYTk3Mzk0NGQ3Y2EyMmYyMjdiMzlh
YzcwODZmMjcuLjkxYWJlZWRjY2M4YjhmYmUzY2VlMWJmZGMyMmU5ZGQyNTVlODdlZDkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTE3Niw2ICsxNzYsMTMgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgZ2xvYmFsRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRmxhZzsgfQogICAg
IHZvaWQgc2V0R2xvYmFsRmxhZyhib29sIHZhbHVlKSB7IG1fZ2xvYmFsRmxhZyA9IHZhbHVlOyB9
CisgICAgCisgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYpOworICAgIHZv
aWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGZvY3VzV2Vi
VmlldyhKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJh
Y2soKTsKKyAgICB2b2lkIGNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soKTsKKyAg
ICB2b2lkIGNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpOwogCiBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IDFjZmY2ODhlODk2ZDUzZmE3ZmZk
ZmIyOTE3MTdiNDNhYWZjYTljY2UuLjg4ODY2MDUzMzI2ZTYwNzA2MjIxZTNjYWFjMmMzNGEzZTNi
ZTlhOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNzAs
NiArNzAsMTAgQEAgcHVibGljOgogCiAgICAgV0tSZWN0IHdpbmRvd0ZyYW1lKCk7CiAgICAgdm9p
ZCBzZXRXaW5kb3dGcmFtZShXS1JlY3QpOworICAgIAorICAgIHZvaWQgYWRkQ2hyb21lSW5wdXRG
aWVsZCgpOworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgbWFr
ZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOwogCiBwcml2YXRlOgogICAgIFBsYXRmb3JtV0tWaWV3
IG1fdmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXgg
NjU3ZmI5NmUxNzExYzcyNmNiNGQyODQ0YWNhOGJiOWZjMDg5ZDliNS4uMDE4OWEyNTVmZTZhMDQw
Zjg1MDMxMTcwMjcwOTk3YzUxYWE0YzhmYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKQEAgLTI0OCw2ICsyNDgsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldEJlZm9yZVVubG9hZFJldHVy
blZhbHVlKFdLQm9vbGVhbkdldFZhbHVlKGJlZm9yZVVubG9hZFJldHVyblZhbHVlKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJBZGRDaHJvbWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPmFkZENocm9tZUlucHV0RmllbGQo
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbEFkZENocm9tZUlucHV0RmllbGRD
YWxsYmFjayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5yZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxSZW1vdmVDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJGb2N1c1dlYlZpZXciKSkg
eworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+bWFrZVdl
YlZpZXdGaXJzdFJlc3BvbmRlcigpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
Rm9jdXNXZWJWaWV3Q2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Bs
YXRmb3JtV2ViVmlld0d0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9y
bVdlYlZpZXdHdGsuY3BwCmluZGV4IGU1YjgwMzhhODY1NjUwMzcxNjhlYWViYTYzMzFkNTlkMWFm
ZDcxZTAuLjM3MzVkYzVlNmMyZTU4YjliOTgxZDQ0M2FjNTU2Nzc4ZGYwNDc2MDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAt
OTcsNSArOTcsMTcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVj
dCBmcmFtZSkKICAgICByZXNpemVUbyhmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdo
dCk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sK
K30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQorewor
fQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggYWZmMTBlZDUwNGNhMDg2OWI3ZTBmNTA4
ZWU1YTRiMzcyNzc0NmNiZi4uNTM0MjY0MzA3ZGY3MmZhMjBkM2U0OTYwNGE5MzU4YjUzYjBkNDc3
YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3
TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbQpAQCAtODAsNCArODAsMjYgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0Zy
YW1lKFdLUmVjdCBmcmFtZSkKICAgICBbbV93aW5kb3cgc2V0RnJhbWU6TlNNYWtlUmVjdChmcmFt
ZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnksIGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUu
aGVpZ2h0KSBkaXNwbGF5OllFU107CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJv
bWVJbnB1dEZpZWxkKCkKK3sKKyAgICBOU1RleHRGaWVsZCogdGV4dEZpZWxkID0gW1tOU1RleHRG
aWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKKyAg
ICB0ZXh0RmllbGQudGFnID0gMTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2
aWV3OnRleHRGaWVsZF07CisgICAgW3RleHRGaWVsZCByZWxlYXNlXTsKKworICAgIFt0ZXh0Rmll
bGQgc2V0TmV4dEtleVZpZXc6bV92aWV3XTsKKyAgICBbbV92aWV3IHNldE5leHRLZXlWaWV3OnRl
eHRGaWVsZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZp
ZWxkKCkKK3sKKyAgICBbW1ttX3dpbmRvdyBjb250ZW50Vmlld10gdmlld1dpdGhUYWc6MV0gcmVt
b3ZlRnJvbVN1cGVydmlld107CisgICAgbWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cisg
ICAgW21fd2luZG93IG1ha2VGaXJzdFJlc3BvbmRlcjptX3ZpZXddOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZp
ZXdXaW4uY3BwCmluZGV4IDllMjNkNzBlNWUzYzI2NjI5ZWY2YmVkYTY4Y2Y2MDVmNjUxZjA4NDcu
LjM0MjA1YTBmZTYwOTBhYzVkNzZmZDkzYzZjMTJmZWQzODRiMWY0ZDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcApAQCAtOTcsNCAr
OTcsMTcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCkKICAg
ICAvLyBJbXBsZW1lbnQuCiB9CiAKKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlu
cHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0
UmVzcG9uZGVyKCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109587</attachid>
            <date>2011-10-04 00:26:01 -0700</date>
            <delta_ts>2011-10-04 11:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68412-20111004002616.patch</filename>
            <type>text/plain</type>
            <size>45080</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjM3MDFiZjNjZjVkMzkxYjlkZTZi
MjkyZWM2ZjZjNjIyYzVjNzk0Li41YWU2ZmRiMjE4YjNiNDczZjgyZWRmNmVhYmY1NTM3NGRhYjg3
MmU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTAtMDMgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRh
YmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUg
dG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG9wdGlvbi1rZXkgbmF2aWdh
dGlvbiBpcyBvbmx5IHJlbGV2YW50IHRvIHRoZSBNYWMgcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvZm9jdXMt
b3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5q
czogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuS2V5UHJlc3Nlcyk6
CisgICAgICAgIChub3RpZnlEb25lKToKKyAgICAgICAgKGxvZyk6CisKIDIwMTEtMTAtMDMgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUgYm9ndXMgZXhw
ZWN0ZWQgUE5HLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9y
bXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWExZGY2ZjIxYjIwYTQzYmU3NmE4YzYyMDJjOTNkZmE4
NzAyOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNSBAQAoraHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyIC0g
VGhpcyB0ZXN0IGNoZWNrcyB0byBzZWUgaWYgb3B0aW9uKGFsdCktdGFiYmluZyBwcm9wZXJseSBm
b2N1c2VzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgbm9ybWFsbHkgbm90IGZvY3VzZWQuIEZvciB0
ZXN0aW5nLCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGJ5IGRlZmF1bHQgcHJlc3NpbmcgdGFiIHdp
bGwgc2tpcCBvdmVyIGJ1dHRvbnMsIGFuZCBvcHRpb24tdGFiIHdpbGwgaW5jbHVkZSBidXR0b25z
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworICAKK1ByZXNzaW5nIHRhYiA0IHRp
bWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3Vz
ZWQgdGV4dCBmaWVsZCAvNDoiCitQcmVzc2luZyBzaGlmdC10YWIgNCB0aW1lczoKK1BBU1MgcmVz
dWx0IGlzICIgLzE6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8yOiAvMzpmb2N1c2VkIHRleHQgZmllbGQg
LzQ6IgorUHJlc3Npbmcgb3B0aW9uLXRhYiA0IHRpbWVzOgorUEFTUyByZXN1bHQgaXMgIiAvMTpm
b2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNv
bmQgYnV0dG9uIC80OiIKK1ByZXNzaW5nIHNoaWZ0LW9wdGlvbi10YWIgNCB0aW1lczoKK1BBU1Mg
cmVzdWx0IGlzICIgLzE6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC8yOmZvY3VzZWQgdGV4dCBmaWVs
ZCAvMzpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvNDoiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBhZ2UuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2ZvY3VzLW9wdGlvbi1jb250
cm9sLW9uLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzIxNGZmYWY0OGQyZjQ5YzkxYjZkYTNmNjdj
ZWQwNjZiNzM3MjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24tcGFnZS5odG1sCkBAIC0wLDAgKzEs
MTYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3VzPSJsb2coJ2ZvY3VzZWQgZmlyc3QgYnV0
dG9uJykiIHZhbHVlPSIxIj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmZvY3VzPSJsb2coJ2ZvY3Vz
ZWQgdGV4dCBmaWVsZCcpIiB2YWx1ZT0iMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmZvY3Vz
PSJsb2coJ2ZvY3VzZWQgc2Vjb25kIGJ1dHRvbicpIiB2YWx1ZT0iMyI+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRy
b2wtb24tcGFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3NjcmlwdC10
ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2ZvY3VzLW9wdGlvbi1jb250cm9sLW9uLXBh
Z2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjMyOTJmOWYwMjJiN2ZkYjQyMDhhNmEyMGU2YmQ4ZGVmODE0MWNk
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCkBAIC0wLDAgKzEs
NjAgQEAKK2Rlc2NyaXB0aW9uKCdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg0MTIgLSBUaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBvcHRpb24oYWx0KS10YWJiaW5n
IHByb3Blcmx5IGZvY3VzZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBub3JtYWxseSBub3QgZm9j
dXNlZC4gRm9yIHRlc3RpbmcsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYnkgZGVmYXVsdCBwcmVz
c2luZyB0YWIgd2lsbCBza2lwIG92ZXIgYnV0dG9ucywgYW5kIG9wdGlvbi10YWIgd2lsbCBpbmNs
dWRlIGJ1dHRvbnMuJyk7CisKK3ZhciBpdGVyYXRpb24gPSAwOwordmFyIG1vZGlmaWVyczsKK3Zh
ciByZXN1bHQ7CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZGVidWcoIlByZXNzaW5nIHRh
YiA0IHRpbWVzOiIpOworICAgIG1vZGlmaWVycyA9IHVuZGVmaW5lZDsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7Cit9CisKK2Z1bmN0aW9uIHJ1
bktleVByZXNzZXMoKSB7CisgICAgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9ICcgLycgKyAoaSArIDEpICsgJzonOworICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIsIG1vZGlmaWVycyk7CisgICAgfQorICAgIGl0
ZXJhdGlvbisrOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6
IC8zOmZvY3VzZWQgdGV4dCBmaWVsZCAvNDoiJyk7CisgICAgICAgICAgICBkZWJ1ZygiUHJlc3Np
bmcgc2hpZnQtdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbInNoaWZ0
S2V5Il07CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5mb2N1c1dlYlZpZXcocnVu
S2V5UHJlc3Nlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgdGV4dCBmaWVsZCAvMjogLzM6
Zm9jdXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKKyAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBv
cHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAgICBtb2RpZmllcnMgPSBbImFsdEtleSJd
OworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVBy
ZXNzZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
IHNob3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2Vk
IHRleHQgZmllbGQgLzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAg
IGRlYnVnKCJQcmVzc2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGltZXM6Iik7CisgICAgICAgICAg
ICBtb2RpZmllcnMgPSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOworICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXN1bHQnLCAn
IiAvMTpmb2N1c2VkIHNlY29uZCBidXR0b24gLzI6Zm9jdXNlZCB0ZXh0IGZpZWxkIC8zOmZvY3Vz
ZWQgZmlyc3QgYnV0dG9uIC80OiInKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnJlbW92ZUNocm9tZUlucHV0RmllbGQobm90aWZ5RG9uZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKSB7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKK30KKwor
ZnVuY3Rpb24gbG9nKHZhbCkgeworICAgIHJlc3VsdCArPSB2YWw7Cit9CisKKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAm
JiB3aW5kb3cuZXZlbnRTZW5kZXIgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkQ2hyb21lSW5w
dXRGaWVsZCkgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5hZGRDaHJvbWVJbnB1dEZpZWxkKHN0YXJ0VGVzdCk7Cit9IGVsc2UKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMTA0MmM0NTcxYWJhNzRjYjVlMWFlYjdlMmM1NzhlMDQ1MzJjZThhNy4uNDJjMjQ0
ODA0OTViNGNjMDYxYjRkN2I4MjJjODY2MTlkOTUyNmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDExLTEwLTAzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OIChXSzIpOiAoU2hpZnQtKW9wdGlvbi10YWJiaW5nIHNraXBzIG92ZXIgZWxl
bWVudHMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gY2hyb21lIHRvIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDEyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS85OTg4MjUyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIFdLMSBzZXRJbml0aWFsRm9jdXMoKSBpcyBjYWxsZWQgb24gRm9j
dXNDb250cm9sbGVyIHdpdGggdGhlIGtleSBldmVudCB0aGF0CisgICAgICAgIGNhdXNlZCB0aGUg
d2ViIHZpZXcgdG8gYmVjb21lIGZpcnN0IHJlc3BvbmRlci4gSW4gV0syIG5vIGV2ZW50IGlzIHNl
bnQuIFNvIGlmCisgICAgICAgIHRoZSBrZXkgc3Ryb2tlIHRoYXQgY2F1c2VkIHRoZSBjaGFuZ2Ug
aW4gZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBjb250YWlucyB0aGUKKyAgICAgICAgb3B0aW9uIG1v
ZGlmaWVyIGtleSwgRm9jdXNDb250cm9sbGVyIGRpZCBub3Qga25vdyB0aGF0IGl0IGhhZCB0byBz
d2l0Y2ggYmVoYXZpb3IuCisKKyAgICAgICAgQmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5
cyB0aGF0IHRoZSBXS1ZpZXcgY2FuIGJlY29tZUZpcnN0UmVzcG9uZGVyLCBJIGNoYW5nZWQKKyAg
ICAgICAgdGhlIHNpZ25hdHVyZSB0byBzZXRJbml0aWFsRm9jdXMgdG8gZXhwcmVzcyB3aGV0aGVy
IHRoZSBrZXkgZXZlbnQgcGFyYW1ldGVyIGlzIGFuCisgICAgICAgIGFjdHVhbCBrZXkgZXZlbnQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHA6CisgICAgICAgIChX
S1ZpZXdTZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXSk6IFRha2UgdGhl
IE5TQXBwIGN1cnJlbnRFdmVudCBhbmQgcGFzcyBpdCBhbG9uZyBpZgorICAgICAgICB0aGUgZXZl
bnQgaXMgYSBrZXlib2FyZCBldmVudCwgb3RoZXJ3aXNlIHBhc3MgYW4gZW1wdHkgZXZlbnQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKTogQ2hhbmdlIGluIGZ1bmN0aW9uIHNpZ25hdHVy
ZSB0byBjb25maXJtIHRoYXQKKyAgICAgICAgdGhlIGV2ZW50IHRoYXQgY2F1c2VkIHRoZSBpbml0
aWFsIGZvY3VzIHdhcyBhIGtleWJvYXJkIGV2ZW50LCBhbmQgcHJvdmlkZSB0aGUga2V5Ym9hcmQK
KyAgICAgICAgZXZlbnQgaXRzZWxmLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKTogSWYgd2Uga25vdyB0aGF0IHRo
ZSBjYXVzZSBvZiB0aGlzIHdhcyBhIGtleWJvYXJkCisgICAgICAgIGV2ZW50LCB3ZSBwYXNzIHRo
YXQgZXZlbnQgdG8gdGhlIEZvY3VzQ29udHJvbGxlci4gT3RoZXJ3aXNlIHdlIGZhbGwgYmFjayB0
byB0aGUgb3JpZ2luYWwKKyAgICAgICAgYmVoYXZpb3IsIHdoaWNoIGlzIHRvIHBhc3Mgbm8gZXZl
bnQgYXQgYWxsLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKzIwMTEtMDkt
MjMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdL
Mik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcgc2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5z
aXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2VidmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5
ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gV0sxIHNldEluaXRpYWxGb2N1cygpIGlzIGNhbGxlZCBvbiBGb2N1c0NvbnRyb2xsZXIgd2l0
aCB0aGUga2V5IGV2ZW50IHRoYXQKKyAgICAgICAgY2F1c2VkIHRoZSB3ZWIgdmlldyB0byBiZWNv
bWUgZmlyc3QgcmVzcG9uZGVyLiBJbiBXSzIgbm8gZXZlbnQgaXMgc2VudC4gU28gaWYKKyAgICAg
ICAgdGhlIGtleSBzdHJva2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZSBpbiBmaXJzdCByZXNwb25k
ZXIgc3RhdHVzIGNvbnRhaW5zIHRoZQorICAgICAgICBvcHRpb24gbW9kaWZpZXIga2V5LCBGb2N1
c0NvbnRyb2xsZXIgZGlkIG5vdCBrbm93IHRoYXQgaXQgaGFkIHRvIHN3aXRjaCBiZWhhdmlvci4K
KworICAgICAgICBCZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRoYXQgdGhlIFdLVmll
dyBjYW4gYmVjb21lRmlyc3RSZXNwb25kZXIsIEkgY2hhbmdlZAorICAgICAgICB0aGUgc2lnbmF0
dXJlIHRvIHNldEluaXRpYWxGb2N1cyB0byBleHByZXNzIHdoZXRoZXIgdGhlIGtleSBldmVudCBw
YXJhbWV0ZXIgaXMgYW4KKyAgICAgICAgYWN0dWFsIGtleSBldmVudC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcDogVXBkYXRlIGZ1bmN0aW9uIHNpZ25hdHVyZS4K
KyAgICAgICAgKFdLVmlld1NldEluaXRpYWxGb2N1cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL3dpbi9XS1ZpZXcuaDoKKworCiAyMDExLTEwLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgZmFpbGluZyB1cmkgcGFy
YW1ldGVyIHRvIHByb3Zpc2lvbmFsLWxvYWQtZmFpbGVkIGFuZCBsb2FkLWZhaWxlZCBzaWduYWxz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKaW5kZXgg
ZTdjOTJlMDUxMzEyODlmMmVkM2U3OGFmZmIxYTRlMTY1ZmUxYjBjZS4uOThlOGEzNWQwNTAyNGE2
NTQ1OWFjYmU3Zjk3Njc0NjBjMDczY2E3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy93aW4vV0tWaWV3LmNwcApAQCAtNjksNyArNjksOCBAQCB2b2lkIFdLVmlld1NldElz
SW5XaW5kb3coV0tWaWV3UmVmIHZpZXdSZWYsIGJvb2wgaXNJbldpbmRvdykKIAogdm9pZCBXS1Zp
ZXdTZXRJbml0aWFsRm9jdXMoV0tWaWV3UmVmIHZpZXdSZWYsIGJvb2wgZm9yd2FyZCkKIHsKLSAg
ICB0b0ltcGwodmlld1JlZiktPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkKTsKKyAgICBib29sIGlz
S2V5Ym9hcmRFdmVudFZhbGlkID0gZmFsc2U7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRJbml0
aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktleWJvYXJkRXZlbnQo
KSk7CiB9CiAKIHZvaWQgV0tWaWV3U2V0U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKFdLVmlld1Jl
ZiB2aWV3UmVmLCBXS1NpemUgc2Nyb2xsT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDBiODhkMzI0YTU5YjZlNTU4NTc2ODE5NTBjNGRjNGU5
NDdkMjVhNTkuLmI2MGM4M2M0NjRkMzM2N2I0N2QzMjBkMWFkY2MxNTlkMTdhZjk0NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTMwNCwxNyArMzA0
LDIxIEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIC0gKEJP
T0wpYmVjb21lRmlyc3RSZXNwb25kZXIKIHsKICAgICBOU1NlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24gPSBbW3NlbGYgd2luZG93XSBrZXlWaWV3U2VsZWN0aW9uRGlyZWN0aW9uXTsKLQorICAg
IAogICAgIF9kYXRhLT5faW5CZWNvbWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CiAgICAgCiAgICAg
W3NlbGYgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwogICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCk7Ci0KKyAgICAKICAgICBf
ZGF0YS0+X2luQmVjb21lRmlyc3RSZXNwb25kZXIgPSBmYWxzZTsKLQotICAgIGlmIChkaXJlY3Rp
b24gIT0gTlNEaXJlY3RTZWxlY3Rpb24pCi0gICAgICAgIF9kYXRhLT5fcGFnZS0+c2V0SW5pdGlh
bEZvY3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQpOwotCisgICAgCisgICAgaWYgKGRp
cmVjdGlvbiAhPSBOU0RpcmVjdFNlbGVjdGlvbikgeworICAgICAgICBOU0V2ZW50ICpldmVudCA9
IFtOU0FwcCBjdXJyZW50RXZlbnRdOworICAgICAgICBib29sIGJlY29taW5nRmlyc3RSZXNwb25k
ZXJGcm9tS2V5Ym9hcmQgPSBbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBl
XSA9PSBOU0tleVVwOworICAgICAgICBpZiAoIWJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tS2V5
Ym9hcmQpCisgICAgICAgICAgICBldmVudCA9IG5pbDsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT5z
ZXRJbml0aWFsRm9jdXMoZGlyZWN0aW9uID09IE5TU2VsZWN0aW5nTmV4dCwgYmVjb21pbmdGaXJz
dFJlc3BvbmRlckZyb21LZXlib2FyZCwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCwgc2Vs
ZikpOworICAgIH0KICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZjMDQ0N2UwYzkwNGRjYjA3ZDY5Njk4Yzk2ZDJjMjEy
ZjllM2E2NzguLjVjMmJjZjA2MmQ0ZWY4OThmYmY5NDEyMWQ4OWM0NTU0NzUxMjgwNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MDAsMTEgKzcwMCwx
MSBAQCBJbnRTaXplIFdlYlBhZ2VQcm94eTo6dmlld1NpemUoKSBjb25zdAogICAgIHJldHVybiBt
X3BhZ2VDbGllbnQtPnZpZXdTaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQordm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1
cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRp
YWxGb2N1cyhmb3J3YXJkKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBrZXlib2FyZEV2ZW50KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
V2luZG93UmVzaXplclNpemUoY29uc3QgSW50U2l6ZSYgd2luZG93UmVzaXplclNpemUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDZiZDBhZWM0MWQyZTg2YmI3
ZTM2NWEzYmQxNDUwMmE0ZWM3ODgyNC4uMWIxOGFiOGIyZDgyMzkwY2E1MjAxYmUzZDIyMzg3Nzhi
MGRjYmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjYy
LDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7
CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgc2V0SW5pdGlh
bEZvY3VzKGJvb2wpOworICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9v
bCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZv
aWQgc2V0V2luZG93UmVzaXplclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIAog
ICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCmluZGV4IDBhMmY1YmE1NDM5NTkzOTQwMmExMmE4ODJlNjI1ZTUzODA2ODBiZTku
LjkyOWNkNWVkYWEwY2UwYzI4OTMwNjYwMmVmYzFmOTY0ODFlZGY1OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMTA2OCw5ICsxMDY4LDkgQEAgdm9pZCBX
ZWJWaWV3OjpzZXRPdmVycmlkZUN1cnNvcihIQ1VSU09SIG92ZXJyaWRlQ3Vyc29yKQogICAgIHVw
ZGF0ZU5hdGl2ZUN1cnNvcigpOwogfQogCi12b2lkIFdlYlZpZXc6OnNldEluaXRpYWxGb2N1cyhi
b29sIGZvcndhcmQpCit2b2lkIFdlYlZpZXc6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50
KQogewotICAgIG1fcGFnZS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQpOworICAgIG1fcGFnZS0+
c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBldmVudCk7CiB9
CiAKIHZvaWQgV2ViVmlldzo6c2V0U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0IEludFNp
emUmIHNjcm9sbE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKaW5k
ZXggNjcxNTgxZDdlYzQ1YTQ5NjA4ODIxODkzYThhM2Q3OTVjZWIyOWJhNS4uYmRjMDdlZmE3Y2Vi
ZjdlNjM2YWI0YTIwNmI5NmM0YzE3OTMxNzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNJbldp
bmRvdyhib29sKTsKICAgICB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICB2b2lkIHNldE92
ZXJyaWRlQ3Vyc29yKEhDVVJTT1IpOwotICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCk7CisgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5
Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzZXRT
Y3JvbGxPZmZzZXRPbk5leHRSZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZv
aWQgc2V0RmluZEluZGljYXRvckNhbGxiYWNrKFdLVmlld0ZpbmRJbmRpY2F0b3JDYWxsYmFjaywg
dm9pZCopOwogICAgIFdLVmlld0ZpbmRJbmRpY2F0b3JDYWxsYmFjayBnZXRGaW5kSW5kaWNhdG9y
Q2FsbGJhY2sodm9pZCoqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBlOTI2NWJkMmFkZGJmZGEyMTNiYjBmNGM4MmFjNjc0Yjk3ZjIwNWVi
Li5mMmVhNjkyN2Q1OThjZjNlYWU1NzQ4ZTg4MmNhOTYxZjFmNTc4ZWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzY1LDEzICsxMzY1
LDIxIEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9jdXNlZChib29sIGlzRm9jdXNlZCkKICAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGlzRm9jdXNlZCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCkKK3ZvaWQgV2ViUGFnZTo6c2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZSgwKTsKKworICAgIGlmIChpc0tleWJv
YXJkRXZlbnRWYWxpZCAmJiBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKKyAg
ICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQp
KTsKKyAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQg
OiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1F
dmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEluaXRp
YWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25C
YWNrd2FyZCwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGU1ZDBiOTk1MWY5MTA4ODE4YWY2NTllMTE0OWVkNzgzN2RhYzc3ZGMuLjRm
YmIwYTYwZWVhOWNkZDZkMWYzOWU4NDljNTIyZjg2MGY0OWJhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgwLDcgKzQ4MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHNldEFj
dGl2ZShib29sKTsKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCk7CisgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAg
dm9pZCBzZXRXaW5kb3dSZXNpemVyU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAg
dm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYsIHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOTI0ZjAwZGQ4ZWZlZDc3NGYzOWU2
YmY4MTBmNmQ3ZWM3NmQ0YjU3My4uMWI3NzFkNGQyM2FhMjhhZGE5YWI5NjY2YTdmOTVlZDg0MWMx
YjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
ewogICAgIFNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBTZXRGb2N1c2VkKGJvb2wgZm9jdXNl
ZCkKLSAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkKQorICAgIFNldEluaXRpYWxGb2N1
cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5
Ym9hcmRFdmVudCBldmVudCkKICAgICBTZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIAog
ICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0YTVjMjAyYjY2ZTU4ZTY4
MGMwOGI4MzZmMDNhMzQ4MjJjOTZhZjcxLi4yMTFiNWQ2YWYyZDBjZDVlOTExYTM2Zjk4MmFiNjI1
MTliODhhZjBkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTEtMTAtMDMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKFdLMik6IChTaGlmdC0pb3B0aW9uLXRhYmJpbmcg
c2tpcHMgb3ZlciBlbGVtZW50cyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBjaHJvbWUgdG8gd2Vi
dmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0
MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk5ODgyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY3JlYXRlIGEgdGVzdCBm
b3IgdGhlIGJ1ZywgSSBoYWQgdG8gdXBkYXRlIERSVCBhbmQgV0tUUiB0byBjcmVhdGUgc29tZQor
ICAgICAgICB3aWRnZXQgdGhhdCBhbGxvd3MgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyB0byBtb3Zl
IGF3YXkgZnJvbSB0aGUgbWFpbiB3ZWIgdmlldy4KKworICAgICAgICBUaHJlZSBtZXRob2RzIHdl
cmUgYWRkZWQgdG8gbGF5b3V0VGVzdENvbnRyb2xsZXI6IGFkZENocm9tZUlucHV0RmllbGQsCisg
ICAgICAgIHJlbW92ZUNocm9tZUlucHV0RmllbGQsIGFuZCBmb2N1c1dlYlZpZXcuIGFkZENocm9t
ZUlucHV0RmllbGQgYWRkcyBhIHRleHQgZmllbGQKKyAgICAgICAgdGhhdCBpcyBhIHNpYmxpbmcg
dG8gdGhlIHdlYiB2aWV3LCBhbmQgc2V0cyB1cCB0aGUga2V5IGV2ZW50IGxvb3AgYmV0d2VlbiB0
aGUgdHdvLgorICAgICAgICByZW1vdmVDaHJvbWVJbnB1dEZpZWxkIHJlbW92ZXMgdGhhdCBmaWVs
ZC4gZm9jdXNXZWJWaWV3IG1vdmVzIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICBzdGF0dXMgdG8g
dGhlIHdlYiB2aWV3LgorCisgICAgICAgIFRoZSB0ZXN0IG1ha2VzIHRoZSBjYWxsIHZpYSBsYXlv
dXRUZXN0Q29udHJvbGxlciBhbmQgcGFzc2VzIGEgY2FsbGJhY2sgdGhhdCBpdAorICAgICAgICBh
c3N1bWVzIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0aGUgdGFzayBpcyBjb21wbGV0ZWQuIEluIERS
VCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkCisgICAgICAgIHN5bmNocm9ub3VzbHkuIEluIFdLVFIg
dGhpcyBpcyBoYW5kbGVkIHdpdGggbWVzc2FnZSBwYXNzaW5nIGJldHdlZW4gdGhlIHR3bworICAg
ICAgICBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChhZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2spOgorICAg
ICAgICAocmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKToKKyAgICAgICAgKGZvY3VzV2Vi
Vmlld0NhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5j
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0V2Vi
Vmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6IFdoZW4gcmVzZXR0aW5nIGZvciB0
aGUgbmV4dCB0ZXN0LAorICAgICAgICBtYWtlIHN1cmUgdG8gcmVtb3ZlIHRoZSBjaHJvbWUgaW5w
dXQgZmllbGQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0
RmllbGQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlucHV0
RmllbGQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdEFkZENocm9tZUlucHV0
RmllbGQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdFJlbW92ZUNocm9tZUlu
cHV0RmllbGQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdEZvY3VzV2ViVmll
dyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpjYWxsYmFja01hcCk6IENyZWF0ZSBh
IGhhc2ggbWFwIHRoYXQga2VlcHMgdHJhY2sgb2YgdGhlIGNhbGxiYWNrcyBwcm92aWRlZAorICAg
ICAgICB0aHJvdWdoIEpTLgorICAgICAgICAoV1RSOjpjYWNoZUxheW91dFRlc3RDb250cm9sbGVy
Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFj
ayk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZp
ZWxkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9tZUlu
cHV0RmllbGQpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJW
aWV3KToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxBZGRDaHJvbWVJ
bnB1dEZpZWxkQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OkxheW91
dFRlc3RDb250cm9sbGVyOjpjYWxsRm9jdXNXZWJWaWV3Q2FsbGJhY2spOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6
UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxh
dGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxh
dGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRm
b3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRm
b3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcik6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcDoKKyAgICAgICAgKFdUUjo6UGxh
dGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbTogVGhlc2UgZnVuY3Rpb25z
IGhhdmUgbm90aGluZyB0byBkbworICAgICAgICB3aXRoIHRoZSBwYXRjaC0tIGp1c3QgY2xlYW5p
bmcgdXAgc3R5bGUuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkRGlzYWxsb3dl
ZFVSTCk6CisgICAgICAgIChvcmlnaW5zQXJyYXlUb0pTKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpxdWV1ZUxvYWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0RWRpdGluZ0JlaGF2aW9yKToKKwogMjAxMS0xMC0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRml4IG1lbW9yeSBsZWFrIHdo
ZW4gbG9hZGluZyB1cmwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAppbmRleCAyZTFiZGI0OTM2NTE1ZmEwZjFiZTlkNjAxNmJlMDZjOTY3Y2I5MmUzLi4w
MzYzOTM2OTgzZDkxMGFhZGM2NzA0YWM5OTg1MzRhNzU4NTExNjE4IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMTYwLDYgKzIxNjAsMzYg
QEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZv
cmVVbmxvYWRDYWxsYmFjayhKU0NvbnRleHQKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGFkZENocm9tZUlucHV0RmllbGRD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+YWRkQ2hyb21lSW5wdXRG
aWVsZCgpOworICAgIC8vIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMg
Y2FsbGVkIG9uY2UgdGhlIGlucHV0IGZpZWxkIGhhcyBiZWVuIGFkZGVkCisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPT0gMSkKKyAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgdGhpc09iamVjdCwgMCwg
MCwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitz
dGF0aWMgSlNWYWx1ZVJlZiByZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgIGNvbnRyb2xsZXItPnJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKKyAgICAv
LyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBvbmNlIHRo
ZSBpbnB1dCBmaWVsZCBoYXMgYmVlbiBhZGRlZAorICAgIGlmIChhcmd1bWVudENvdW50ID09IDEp
CisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgMCksIHRoaXNPYmplY3QsIDAsIDAsIDApOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgZm9jdXNXZWJWaWV3Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXIt
PmZvY3VzV2ViVmlldygpOworICAgIC8vIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNhbGxiYWNr
IHRoYXQgaXMgY2FsbGVkIG9uY2UgdGhlIGlucHV0IGZpZWxkIGhhcyBiZWVuIGFkZGVkCisgICAg
aWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihj
b250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCAwKSwgdGhpc09i
amVjdCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZs
YWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
SlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDM2
LDYgKzI0NjYsOSBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0VGV4dERpcmVjdGlvbiIsIHNldFRleHREaXJl
Y3Rpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhbGxvd1JvdW5kaW5nSGFja3MiLCBh
bGxvd1JvdW5kaW5nSGFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCIsIHNldFNob3VsZFN0YXlPblBhZ2VB
ZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYWRk
Q2hyb21lSW5wdXRGaWVsZCIsIGFkZENocm9tZUlucHV0RmllbGRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJyZW1vdmVDaHJvbWVJbnB1dEZpZWxkIiwgcmVtb3ZlQ2hyb21lSW5wdXRGaWVs
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImZvY3VzV2ViVmlldyIsIGZvY3VzV2ViVmll
d0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggZDVjZmJhNzdjM2Rj
NGI4ODZhNDBhNmI2ZjUyOTFiZjg2YzE5ZGFkMC4uYmFjOGI0ZGRiOTgxMmNhMmUwOWU5NGRiODFj
MzlhY2M3ZDU5Yjg1MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCkBAIC0zMTQsNiArMzE0LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFN0YXlP
blBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZDsgfQogICAgIHZvaWQgc2V0U2hvdWxk
U3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoYm9vbCBzaG91bGRTdGF5T25QYWdl
QWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCkgeyBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRs
aW5nQmVmb3JlVW5sb2FkID0gc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxv
YWQ7IH0KIAorICAgIHZvaWQgYWRkQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgcmVtb3Zl
Q2hyb21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgZm9jdXNXZWJWaWV3KCk7CisgICAgCiAgICAg
dm9pZCBzZXRQT1NJWExvY2FsZShKU1N0cmluZ1JlZiBsb2NhbGUpOwogCiAgICAgdm9pZCBzZXRX
ZWJWaWV3RWRpdGFibGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBjODE3YjJiNmFjYjNhNTk5ZDExM2Nm
MjhiYmRjN2FlMmU4NDA0MDk5Li4xNjQ5MTE1MmMwNzg0M2M3MjM2YjM0MjcwMDI5ZGFkODA2OWQ1
NjUxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTk4NywzICs5ODcsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphbGxvd1JvdW5kaW5nSGFja3MoKQogewogfQorCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmZvY3VzV2ViVmlldygpCit7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggYzM1N2MzYzgxM2Q2NWY5NDYxYzI5
NzkxY2IzZWI2MDllN2E1OWM3MS4uZWNlNmJkZjllM2ZhODYzOTUzNjhhNTg5N2RmZjZkMmVkODhj
Yjk5NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAt
MTE2Myw4ICsxMTYzLDExIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0
YXRlQmVmb3JlVGVzdGluZygpCiAgICAgCiAgICAgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZh
bHVlcygpOwogCi0gICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoZ0xheW91
dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6cmVzZXRJbnRl
cm5hbHNPYmplY3QoW21haW5GcmFtZSBnbG9iYWxDb250ZXh0XSk7CisgICAgICAgIC8vIGluIHRo
ZSBjYXNlIHRoYXQgYSB0ZXN0IHVzaW5nIHRoZSBjaHJvbWUgaW5wdXQgZmllbGQgZmFpbGVkLCBi
ZSBzdXJlIHRvIGNsZWFuIHVwIGZvciB0aGUgbmV4dCB0ZXN0CisgICAgICAgIGdMYXlvdXRUZXN0
Q29udHJvbGxlci0+cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAgIH0KIAogICAgIFtbbWFp
bkZyYW1lIHdlYlZpZXddIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDpZRVNdOwogICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkOk5PXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQppbmRleCAzMTBkYWZhNDUzOTdmZmY5MGM5MTg1ZDcyZWNmMDZiYjJkZDQ1
MWE4Li43NzViNjc4MWI5NGQzNDRhY2UxY2EzMmFlYjgxZTJlZWUyZGFmOTQ5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBA
IC0xMTksNyArMTE5LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkRGlzYWxsb3dl
ZFVSTChKU1N0cmluZ1JlZiB1cmwpCiAgICAgICAgIGRpc2FsbG93ZWRVUkxzID0gQ0ZTZXRDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpOwogCiAgICAgLy8gQ2Fub25p
Y2FsaXplIHRoZSBVUkwKLSAgICBOU1VSTFJlcXVlc3QqIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVybENGLmdl
dCgpXV07CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwog
ICAgIHJlcXVlc3QgPSBbTlNVUkxQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpy
ZXF1ZXN0XTsKIAogICAgIENGU2V0QWRkVmFsdWUoZGlzYWxsb3dlZFVSTHMsIFtyZXF1ZXN0IFVS
TF0pOwpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCiAgICAgW29yaWdpbiBy
ZWxlYXNlXTsKIH0KIAotSlNWYWx1ZVJlZiBvcmlnaW5zQXJyYXlUb0pTKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBOU0FycmF5KiBvcmlnaW5zKQorSlNWYWx1ZVJlZiBvcmlnaW5zQXJyYXlUb0pTKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBOU0FycmF5ICpvcmlnaW5zKQogewogICAgIE5TVUludGVnZXIg
Y291bnQgPSBbb3JpZ2lucyBjb3VudF07CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0
YXJnZXQpCiAgICAgTlNTdHJpbmcgKnVybE5TID0gKE5TU3RyaW5nICopdXJsQ0YuZ2V0KCk7CiAK
ICAgICBOU1VSTCAqbnN1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxOUyByZWxhdGl2ZVRv
VVJMOltbW21haW5GcmFtZSBkYXRhU291cmNlXSByZXNwb25zZV0gVVJMXV07Ci0gICAgTlNTdHJp
bmcqIG5zdXJsU3RyaW5nID0gW25zdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBOU1N0cmluZyAq
bnN1cmxTdHJpbmcgPSBbbnN1cmwgYWJzb2x1dGVTdHJpbmddOwogCiAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGFic29sdXRlVVJMKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhbbnN1cmxTdHJpbmcgVVRGOFN0cmluZ10pKTsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgp
LT5xdWV1ZShuZXcgTG9hZEl0ZW0oYWJzb2x1dGVVUkwuZ2V0KCksIHRhcmdldCkpOwpAQCAtNTA4
LDggKzUwOCw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmll
bnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlCiB7CiAgICAgLy8gRHVtcFJlbmRl
clRyZWUgY29uZmlndXJlZCB0aGUgV2ViVmlldyB0byB1c2UgV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2suCiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gcHJvdmlk
ZXIgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcl07Ci0g
ICAgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sqIG1vY2tQcm92aWRlciA9IHN0YXRp
Y19jYXN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrKj4ocHJvdmlkZXIpOwotICAg
IFdlYkRldmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlvbiA9IFtbV2ViRGV2aWNlT3JpZW50YXRp
b24gYWxsb2NdIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTph
bHBoYSBjYW5Qcm92aWRlQmV0YTpjYW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdh
bW1hOmNhblByb3ZpZGVHYW1tYSBnYW1tYTpnYW1tYV07CisgICAgV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2sgKm1vY2tQcm92aWRlciA9IHN0YXRpY19jYXN0PFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrKj4ocHJvdmlkZXIpOworICAgIFdlYkRldmljZU9yaWVudGF0aW9u
ICpvcmllbnRhdGlvbiA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGluaXRXaXRoQ2Fu
UHJvdmlkZUFscGhhOmNhblByb3ZpZGVBbHBoYSBhbHBoYTphbHBoYSBjYW5Qcm92aWRlQmV0YTpj
YW5Qcm92aWRlQmV0YSBiZXRhOmJldGEgY2FuUHJvdmlkZUdhbW1hOmNhblByb3ZpZGVHYW1tYSBn
YW1tYTpnYW1tYV07CiAgICAgW21vY2tQcm92aWRlciBzZXRPcmllbnRhdGlvbjpvcmllbnRhdGlv
bl07CiAgICAgW29yaWVudGF0aW9uIHJlbGVhc2VdOwogfQpAQCAtNTUwLDcgKzU1MCw3IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlu
cHV0RWxlbWVudCkKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVu
YWJsZWQoYm9vbCBpY29uRGF0YWJhc2VFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBXb3JrYXJv
dW5kIDxyZGFyOi8vcHJvYmxlbS82NDgwMTA4PgotICAgIHN0YXRpYyBXZWJJY29uRGF0YWJhc2Uq
IHNoYXJlZFdlYkljb25EYXRhYmFzZSA9IE5VTEw7CisgICAgc3RhdGljIFdlYkljb25EYXRhYmFz
ZSAqc2hhcmVkV2ViSWNvbkRhdGFiYXNlID0gTlVMTDsKICAgICBpZiAoIXNoYXJlZFdlYkljb25E
YXRhYmFzZSkgewogICAgICAgICBpZiAoIWljb25EYXRhYmFzZUVuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMTUxLDcgKzExNTEsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjphdXRoZW50aWNhdGVTZXNzaW9uKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdXNlcgog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoYXZpb3IoY29uc3QgY2hh
ciogZWRpdGluZ0JlaGF2aW9yKQogewotICAgIE5TU3RyaW5nKiBlZGl0aW5nQmVoYXZpb3JOUyA9
IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzplZGl0aW5nQmVoYXZpb3JdOwor
ICAgIE5TU3RyaW5nICplZGl0aW5nQmVoYXZpb3JOUyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoVVRGOFN0cmluZzplZGl0aW5nQmVoYXZpb3JdOwogICAgIGlmIChbZWRpdGluZ0JlaGF2aW9y
TlMgaXNFcXVhbFRvU3RyaW5nOkAibWFjIl0pCiAgICAgICAgIFtbV2ViUHJlZmVyZW5jZXMgc3Rh
bmRhcmRQcmVmZXJlbmNlc10gc2V0RWRpdGluZ0JlaGF2aW9yOldlYktpdEVkaXRpbmdNYWNCZWhh
dmlvcl07CiAgICAgZWxzZSBpZiAoW2VkaXRpbmdCZWhhdmlvck5TIGlzRXF1YWxUb1N0cmluZzpA
IndpbiJdKQpAQCAtMTIwMiwzICsxMjAyLDI4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uTmFtZSkKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7CisgICAgTlNUZXh0RmllbGQgKnRleHRGaWVsZCA9
IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAs
IDIwKV07CisgICAgdGV4dEZpZWxkLnRhZyA9IDE7CisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3
XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRleHRGaWVsZF07CisgICAgW3RleHRG
aWVsZCByZWxlYXNlXTsKKyAgICAKKyAgICBbdGV4dEZpZWxkIHNldE5leHRLZXlWaWV3OlttYWlu
RnJhbWUgd2ViVmlld11dOworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldE5leHRLZXlWaWV3
OnRleHRGaWVsZF07Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUNocm9t
ZUlucHV0RmllbGQoKQoreworICAgIE5TVmlldyogdGV4dEZpZWxkID0gW1tbW21haW5GcmFtZSB3
ZWJWaWV3XSB3aW5kb3ddIGNvbnRlbnRWaWV3XSB2aWV3V2l0aFRhZzoxXTsKKyAgICBpZiAodGV4
dEZpZWxkKSB7CisgICAgICAgIFt0ZXh0RmllbGQgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAg
ICAgIGZvY3VzV2ViVmlldygpOworICAgIH0KK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Zm9jdXNXZWJWaWV3KCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBt
YWtlRmlyc3RSZXNwb25kZXI6W21haW5GcmFtZSB3ZWJWaWV3XV07Cit9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBj
NzhmZWE1NTU0MjBlMTI5YmFkMjRjOWY1YzE0YzZiM2NkZjdiNmNjLi41Yzk3ZWU2YzgxNWQxMzQ4
MmE3M2IxNDk4OThlNGJmNzljYjgzODVkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTE1NDAsMyArMTU0MCwxNSBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVm
IGRpcmVjdGlvbikKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFsbG93Um91bmRpbmdIYWNr
cygpCiB7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0Rmll
bGQoKQoreworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVDaHJvbWVJbnB1
dEZpZWxkKCkKK3sKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3
KCkKK3sKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKaW5k
ZXggOGUzZjc0MmU3MTVlZjY3YjM4YTFiZGY1ZmI5Y2ZmMTdlNTA0MmJiNy4uYjhiMDZlMDVjYmQz
MWNkMGQ5MDQyM2E2ODJhNTQ3ZjI1NTdkMjZmNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlv
dXRUZXN0Q29udHJvbGxlci5pZGwKQEAgLTEyMSw2ICsxMjEsMTEgQEAgbW9kdWxlIFdUUiB7CiAg
ICAgICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoaW4gYm9vbGVhbiBmbGFn
KTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxp
bmdCZWZvcmVVbmxvYWQoaW4gYm9vbGVhbiBmbGFnKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZv
Y3VzIHRlc3RpbmcuCisgICAgICAgIHZvaWQgYWRkQ2hyb21lSW5wdXRGaWVsZChpbiBvYmplY3Qg
Y2FsbGJhY2spOworICAgICAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0RmllbGQoaW4gb2JqZWN0
IGNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBmb2N1c1dlYlZpZXcoaW4gb2JqZWN0IGNhbGxiYWNr
KTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDFhOTQzN2E4MzA4OGU3MTMxMjY2
Y2ZhYmZmOTBlOWY5MWE2NGE5ZDguLjU2ODkxNmU2MGM1OTNjNTllN2I0ZmIyZmI2ZTAzMDkzOGNj
Njk1ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xNTgsNiArMTU4LDE4IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnCiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxk
Q2FsbGJhY2siKSkgeworICAgICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsQWRkQ2hy
b21lSW5wdXRGaWVsZENhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsUmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZENhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRUZXN0Q29udHJvbGxl
ci0+Y2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiQ2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrIikpIHsKKyAgICAgICAgbV9sYXlvdXRUZXN0Q29u
dHJvbGxlci0+Y2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSk7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlVua25vd24iKSk7CkBAIC0yNDYsNCArMjU4LDIyIEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZhbHVl
KQogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RBZGRDaHJv
bWVJbnB1dEZpZWxkKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFkZENocm9tZUlucHV0
RmllbGQiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUu
Z2V0KCksIDApOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0UmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZCgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVDaHJvbWVJbnB1dEZp
ZWxkIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdl
dCgpLCAwKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdEZvY3VzV2ViVmlldygpCit7
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJGb2N1c1dlYlZpZXciKSk7CisgICAgV0tCdW5kbGVQ
b3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCBiOTBmYTlmN2M1ZGUyYWExZjQ4NzUwMTIwNDZm
Nzk5N2VhYzVlNTQ5Li42MmNkMGMwMzM4Zjc0YTk3ZWRjNTQ0YzgwYmJhMmZmNzUwMTI1Y2E3IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCkBAIC03NCw2ICs3NCw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1
bXBQaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBQaXhlbHM7IH0KICAgICAKICAgICB2b2lk
IHBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sKTsKKyAgICB2b2lkIHBvc3RBZGRD
aHJvbWVJbnB1dEZpZWxkKCk7CisgICAgdm9pZCBwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgp
OworICAgIHZvaWQgcG9zdEZvY3VzV2ViVmlldygpOwogCiBwcml2YXRlOgogICAgIEluamVjdGVk
QnVuZGxlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI3OGNhODUzMDZkNDky
YTA5ZTBjNjJmZjliYzJiNzYyMjNkMzJkMmMuLjU4OGY3OGM5YmExNjhjOTVkMWMxMDUyYWY1Nzg3
MzU4NmRkYTNkMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01MTMsNCArNTEz
LDYzIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNob3VsZFN0YXlPblBhZ2VBZnRl
ckhhbmRsaW5nQmVmb3JlVW5sb2FkKGJvb2wgc2hvCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSghc2hvdWxkU3RheU9uUGFnZSk7CiB9
CiAKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPHVuc2lnbmVkLCBKU1ZhbHVlUmVmPiBDYWxsYmFja01h
cDsKK3N0YXRpYyBDYWxsYmFja01hcCYgY2FsbGJhY2tNYXAoKQoreworICAgIHN0YXRpYyBDYWxs
YmFja01hcCYgbWFwID0gKm5ldyBDYWxsYmFja01hcDsKKyAgICByZXR1cm4gbWFwOworfQorCitz
dGF0aWMgdm9pZCBjYWNoZUxheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2sodW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJh
bWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVH
ZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRl
eHQsIGNhbGxiYWNrKTsKKyAgICBjYWxsYmFja01hcCgpLmFkZChpbmRleCwgY2FsbGJhY2spOwor
fQorCitzdGF0aWMgdm9pZCBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjayh1bnNpZ25l
ZCBpbmRleCkKK3sKKyAgICBpZiAoIWNhbGxiYWNrTWFwKCkuY29udGFpbnMoaW5kZXgpKQorICAg
ICAgICByZXR1cm47CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBh
Z2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsK
KyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29u
dGV4dChtYWluRnJhbWUpOworICAgIEpTT2JqZWN0UmVmIGNhbGxiYWNrID0gSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGNhbGxiYWNrTWFwKCkudGFrZShpbmRleCksIDApOworICAgIEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2ssIEpTQ29udGV4dEdldEdsb2JhbE9iamVj
dChjb250ZXh0KSwgMCwgMCwgMCk7CisgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBjYWxs
YmFjayk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZENocm9tZUlucHV0Rmll
bGQoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZUxheW91dFRlc3RDb250cm9sbGVy
Q2FsbGJhY2soMSwgY2FsbGJhY2spOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wb3N0
QWRkQ2hyb21lSW5wdXRGaWVsZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpy
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2FjaGVM
YXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDIsIGNhbGxiYWNrKTsKKyAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKK30KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9jdXNXZWJWaWV3KEpTVmFsdWVSZWYgY2FsbGJhY2spCit7
CisgICAgY2FjaGVMYXlvdXRUZXN0Q29udHJvbGxlckNhbGxiYWNrKDMsIGNhbGxiYWNrKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucG9zdEZvY3VzV2ViVmlldygpOworfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrKCkK
K3sKKyAgICBjYWxsTGF5b3V0VGVzdENvbnRyb2xsZXJDYWxsYmFjaygxKTsKK30KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbFJlbW92ZUNocm9tZUlucHV0RmllbGRDYWxsYmFjaygp
Cit7CisgICAgY2FsbExheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMik7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpCit7CisgICAg
Y2FsbExheW91dFRlc3RDb250cm9sbGVyQ2FsbGJhY2soMyk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGM0NWIyZjE4ZjhhYTk3Mzk0NGQ3Y2Ey
MmYyMjdiMzlhYzcwODZmMjcuLjkxYWJlZWRjY2M4YjhmYmUzY2VlMWJmZGMyMmU5ZGQyNTVlODdl
ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTE3Niw2ICsxNzYsMTMgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgZ2xvYmFsRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRmxh
ZzsgfQogICAgIHZvaWQgc2V0R2xvYmFsRmxhZyhib29sIHZhbHVlKSB7IG1fZ2xvYmFsRmxhZyA9
IHZhbHVlOyB9CisgICAgCisgICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYp
OworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKKyAgICB2b2lk
IGZvY3VzV2ViVmlldyhKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGNhbGxBZGRDaHJvbWVJbnB1dEZp
ZWxkQ2FsbGJhY2soKTsKKyAgICB2b2lkIGNhbGxSZW1vdmVDaHJvbWVJbnB1dEZpZWxkQ2FsbGJh
Y2soKTsKKyAgICB2b2lkIGNhbGxGb2N1c1dlYlZpZXdDYWxsYmFjaygpOwogCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IDFjZmY2ODhlODk2
ZDUzZmE3ZmZkZmIyOTE3MTdiNDNhYWZjYTljY2UuLjg4ODY2MDUzMzI2ZTYwNzA2MjIxZTNjYWFj
MmMzNGEzZTNiZTlhOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aApAQCAtNzAsNiArNzAsMTAgQEAgcHVibGljOgogCiAgICAgV0tSZWN0IHdpbmRvd0ZyYW1lKCk7
CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZShXS1JlY3QpOworICAgIAorICAgIHZvaWQgYWRkQ2hy
b21lSW5wdXRGaWVsZCgpOworICAgIHZvaWQgcmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOworICAg
IHZvaWQgbWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOwogCiBwcml2YXRlOgogICAgIFBsYXRm
b3JtV0tWaWV3IG1fdmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKaW5kZXggNzcxYzc2MjRmZjI4YmU1NTA3NmE2MjAxZjAxNDJlYTc4OGI2NTJjYi4uNzQ0ZjA1
OGYxOTk1MTFlZjdkN2JlZjE1ZWRlMTcxNmIzOWNjMGIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQyNiw2ICs0MjYsOCBAQCBib29sIFRlc3RDb250
cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBXS1ByZWZlcmVuY2Vz
U2V0U2VyaWZGb250RmFtaWx5KHByZWZlcmVuY2VzLCBzZXJpZkZvbnRGYW1pbHkpOwogI2VuZGlm
CiAKKyAgICAvLyBpbiB0aGUgY2FzZSB0aGF0IGEgdGVzdCB1c2luZyB0aGUgY2hyb21lIGlucHV0
IGZpZWxkIGZhaWxlZCwgYmUgc3VyZSB0byBjbGVhbiB1cCBmb3IgdGhlIG5leHQgdGVzdAorICAg
IG1fbWFpbldlYlZpZXctPnJlbW92ZUNocm9tZUlucHV0RmllbGQoKTsKICAgICBtX21haW5XZWJW
aWV3LT5mb2N1cygpOwogCiAgICAgLy8gUmVzZXQgbWFpbiBwYWdlIGJhY2sgdG8gYWJvdXQ6Ymxh
bmsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNjU3ZmI5
NmUxNzExYzcyNmNiNGQyODQ0YWNhOGJiOWZjMDg5ZDliNS4uMDE4OWEyNTVmZTZhMDQwZjg1MDMx
MTcwMjcwOTk3YzUxYWE0YzhmYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKQEAgLTI0OCw2ICsyNDgsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldEJlZm9yZVVubG9hZFJldHVyblZhbHVl
KFdLQm9vbGVhbkdldFZhbHVlKGJlZm9yZVVubG9hZFJldHVyblZhbHVlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJBZGRDaHJvbWVJbnB1dEZpZWxkIikpIHsKKyAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPmFkZENocm9tZUlucHV0RmllbGQoKTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFj
ayIpKTsKKyAgICAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCIpKSB7CisgICAgICAgIFRl
c3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5yZW1vdmVDaHJvbWVJbnB1dEZp
ZWxkKCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxSZW1vdmVDaHJvbWVJbnB1
dEZpZWxkQ2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJGb2N1c1dlYlZpZXciKSkgeworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+bWFrZVdlYlZpZXdG
aXJzdFJlc3BvbmRlcigpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRm9jdXNX
ZWJWaWV3Q2FsbGJhY2siKSk7CisgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3Jt
V2ViVmlld0d0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZp
ZXdHdGsuY3BwCmluZGV4IGU1YjgwMzhhODY1NjUwMzcxNjhlYWViYTYzMzFkNTlkMWFmZDcxZTAu
LjM3MzVkYzVlNmMyZTU4YjliOTgxZDQ0M2FjNTU2Nzc4ZGYwNDc2MDYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtOTcsNSAr
OTcsMTcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFt
ZSkKICAgICByZXNpemVUbyhmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCk7CiB9
CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwor
dm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2
b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdUUgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9Q
bGF0Zm9ybVdlYlZpZXdNYWMubW0KaW5kZXggYWZmMTBlZDUwNGNhMDg2OWI3ZTBmNTA4ZWU1YTRi
MzcyNzc0NmNiZi4uNDY5MzgzZDFhMDgzOGU5M2E1MDg5NzRmYTBlOGNjYzU1MDhiNzNmOSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpA
QCAtODAsNCArODAsMjkgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdL
UmVjdCBmcmFtZSkKICAgICBbbV93aW5kb3cgc2V0RnJhbWU6TlNNYWtlUmVjdChmcmFtZS5vcmln
aW4ueCwgZnJhbWUub3JpZ2luLnksIGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0
KSBkaXNwbGF5OllFU107CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1
dEZpZWxkKCkKK3sKKyAgICBOU1RleHRGaWVsZCogdGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMjApXTsKKyAgICB0ZXh0
RmllbGQudGFnID0gMTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnRl
eHRGaWVsZF07CisgICAgW3RleHRGaWVsZCByZWxlYXNlXTsKKworICAgIFt0ZXh0RmllbGQgc2V0
TmV4dEtleVZpZXc6bV92aWV3XTsKKyAgICBbbV92aWV3IHNldE5leHRLZXlWaWV3OnRleHRGaWVs
ZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkK
K3sKKyAgICBOU1ZpZXcqIHRleHRGaWVsZCA9IFtbbV93aW5kb3cgY29udGVudFZpZXddIHZpZXdX
aXRoVGFnOjFdOworICAgIGlmICh0ZXh0RmllbGQpIHsKKyAgICAgICAgW3RleHRGaWVsZCByZW1v
dmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgbWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpOwor
ICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25k
ZXIoKQoreworICAgIFttX3dpbmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6bV92aWV3XTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcAppbmRleCA5ZTIzZDcwZTVlM2MyNjYyOWVmNmJlZGE2OGNmNjA1
ZjY1MWYwODQ3Li4zNDIwNWEwZmU2MDkwYWM1ZDc2ZmQ5M2M2YzEyZmVkMzg0YjFmNGQzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAK
QEAgLTk3LDQgKzk3LDE3IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dGcmFtZShX
S1JlY3QpCiAgICAgLy8gSW1wbGVtZW50LgogfQogCisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojph
ZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92
ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdl
YlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>
<flag name="review"
          id="106855"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>