<?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>58652</bug_id>
          
          <creation_ts>2011-04-15 05:50:18 -0700</creation_ts>
          <short_desc>Web Inspector: Background network events collection - add GUI to Inspector</short_desc>
          <delta_ts>2011-05-20 09:15:47 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Sergey Vorobyev">sergeyvorobyev</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386536</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-04-15 05:50:18 -0700</bug_when>
    <thetext>Related bugs:
https://bugs.webkit.org/show_bug.cgi?id=58064

Feature will be disable by default (&apos;cause it&apos;s expensive)
So we need mechanism for customer to enable it from Inspector frontend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394432</commentid>
    <comment_count>1</comment_count>
      <attachid>91492</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-04-28 08:11:25 -0700</bug_when>
    <thetext>Created attachment 91492
Gui added. 1 simple test

Just a draft.
We need new icon for new button</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394433</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 08:13:30 -0700</bug_when>
    <thetext>Attachment 91492 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorResourceAgent.cpp:349:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/inspector/InspectorResourceAgent.cpp:408:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394531</commentid>
    <comment_count>3</comment_count>
      <attachid>91513</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-04-28 10:37:28 -0700</bug_when>
    <thetext>Created attachment 91513
Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395168</commentid>
    <comment_count>4</comment_count>
      <attachid>91650</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-04-29 01:19:57 -0700</bug_when>
    <thetext>Created attachment 91650
Fix merge conflicts in gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395180</commentid>
    <comment_count>5</comment_count>
      <attachid>91650</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-29 02:15:27 -0700</bug_when>
    <thetext>Comment on attachment 91650
Fix merge conflicts in gtk

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

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:6
&gt; +function reopenFrontend() {

Please move this function to inspector-test.js since it&apos;s shared by at least two tests.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:35
&gt; +            InspectorTest.evaluateInPage(&quot;reopenFrontend()&quot;);

You might start reopening front-end before the resources have loaded.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:40
&gt; +            for (i = 0; i &lt; resourcesCount; i++) {

How can you be sure that all the images have already loaded?

&gt; Source/WebCore/inspector/Inspector.json:451
&gt; +                &quot;name&quot;: &quot;switchBackgroundEventsCollectionTo&quot;,

Should be setBackgroundEventCollectionEnabled(true/false).

&gt; Source/WebCore/inspector/Inspector.json:458
&gt; +                &quot;name&quot;: &quot;backgroundEventsCollectionEnabled&quot;,

getBackgroundEventCollectionState

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:94
&gt; +        disable(0);

The contract is that ErrorString* is non-0.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:-186
&gt; -        ErrorString error;

Please revert this.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:351
&gt; +        InspectorFrontendChannel* client = m_frontend-&gt;getInspectorFrontendChannel();

Please put an ASSERT(m_frontend)

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:355
&gt; +        // Take out Message Proxy from reveiver chain.

reveiver -&gt; receiver

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:108
&gt; +    Frame* frameForId(const String&amp; frameId);

Should be removed?

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:603
&gt; +        var self = this;

Use eventCollectionEnabled.bind(this) instead(like we do in other places).

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:604
&gt; +        function callbackEventsCollectionEnabled(error, enabled)

eventCollectionEnabled

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:610
&gt; +        this._backgroundEventsCollectionToggle.addEventListener(&quot;click&quot;, this._toggleBackgroundEventsCollection.bind(this), false);

I believe we should first try adding context menu item instead of the status bar item. We can move it to the status bar later when the feature will be tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395245</commentid>
    <comment_count>6</comment_count>
      <attachid>91650</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-04-29 06:51:52 -0700</bug_when>
    <thetext>Comment on attachment 91650
Fix merge conflicts in gtk

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

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:6
&gt;&gt; +function reopenFrontend() {
&gt; 
&gt; Please move this function to inspector-test.js since it&apos;s shared by at least two tests.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:35
&gt;&gt; +            InspectorTest.evaluateInPage(&quot;reopenFrontend()&quot;);
&gt; 
&gt; You might start reopening front-end before the resources have loaded.

Done. Add image.onload

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:40
&gt;&gt; +            for (i = 0; i &lt; resourcesCount; i++) {
&gt; 
&gt; How can you be sure that all the images have already loaded?

Done, I think (same as previous)

&gt;&gt; Source/WebCore/inspector/Inspector.json:451
&gt;&gt; +                &quot;name&quot;: &quot;switchBackgroundEventsCollectionTo&quot;,
&gt; 
&gt; Should be setBackgroundEventCollectionEnabled(true/false).

Done.

&gt;&gt; Source/WebCore/inspector/Inspector.json:458
&gt;&gt; +                &quot;name&quot;: &quot;backgroundEventsCollectionEnabled&quot;,
&gt; 
&gt; getBackgroundEventCollectionState

Done.

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:94
&gt;&gt; +        disable(0);
&gt; 
&gt; The contract is that ErrorString* is non-0.

ok, done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:-186
&gt;&gt; -        ErrorString error;
&gt; 
&gt; Please revert this.

done.

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:351
&gt;&gt; +        InspectorFrontendChannel* client = m_frontend-&gt;getInspectorFrontendChannel();
&gt; 
&gt; Please put an ASSERT(m_frontend)

done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:355
&gt;&gt; +        // Take out Message Proxy from reveiver chain.
&gt; 
&gt; reveiver -&gt; receiver

done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.h:108
&gt;&gt; +    Frame* frameForId(const String&amp; frameId);
&gt; 
&gt; Should be removed?

yes, thanks

&gt;&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:603
&gt;&gt; +        var self = this;
&gt; 
&gt; Use eventCollectionEnabled.bind(this) instead(like we do in other places).

done

&gt;&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:604
&gt;&gt; +        function callbackEventsCollectionEnabled(error, enabled)
&gt; 
&gt; eventCollectionEnabled

done

&gt;&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:610
&gt;&gt; +        this._backgroundEventsCollectionToggle.addEventListener(&quot;click&quot;, this._toggleBackgroundEventsCollection.bind(this), false);
&gt; 
&gt; I believe we should first try adding context menu item instead of the status bar item. We can move it to the status bar later when the feature will be tested.

Ok, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395246</commentid>
    <comment_count>7</comment_count>
      <attachid>91674</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-04-29 06:53:13 -0700</bug_when>
    <thetext>Created attachment 91674
fix error after review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399445</commentid>
    <comment_count>8</comment_count>
      <attachid>91674</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-06 03:12:09 -0700</bug_when>
    <thetext>Comment on attachment 91674
fix error after review

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Web Inspector: Background network events collection - add GUI to Inspector.

Bug description and URL should go first(see other log entries).

&gt; LayoutTests/http/tests/inspector/inspector-test.js:318
&gt; +var reopenedFrontendCount = 0;

frontendReopeningCount

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:34
&gt; +        }

Style nit: else should go on the same line.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:38
&gt; +            InspectorTest.addResult(&quot;resources count = &quot; + resourcesCount);

Could you also dump the resources before frontend reopening. Ideally the two sets should also be compared after the reopening.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:54
&gt; +Tests that network panel displays resource content correctly after the open - load - reopen sequence.

Test that when background event collection is enabled network panel correctly restores network log after the frontend reopening.

&gt; Source/WebCore/ChangeLog:7
&gt; +

You should provide a brief description of the UI and semantic changes.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Test: http/tests/inspector/network/network-open-load-reopen.html

This test doesn&apos;t check event collection with closed frontend, it only verifies that the network log will be restore after the frontend reopening. I&apos;d recommend you add a test that would test the background event collection.

&gt; Source/WebCore/inspector/InspectorFrontendProxy.cpp:58
&gt; +InspectorFrontendChannel* InspectorFrontendProxy::getInspectorFrontendChannel()

getInspectorFrontendChannel -&gt; inspectorFrontendChannel (we don&apos;t use get prefix for getters in the native part of WebCore).

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:71
&gt; +static const char getBackgroundEventsCollectionState[] = &quot;getBackgroundEventsCollectionState&quot;;

getBackgroundEventsCollectionState -&gt; backgroundEventsCollectionEnabled (like resourceAgentEnabled above)

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:342
&gt; +bool InspectorResourceAgent::getBackgroundEventsCollectionState()

getBackgroundEventsCollectionState -&gt; backgroundEventsCollectionEnabled

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:347
&gt; +void InspectorResourceAgent::setBackgroundEventsCollectionEnabled(ErrorString*, bool&amp; enabled)

bool&amp; -&gt; bool

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:399
&gt; +    , m_eventsCollector(adoptPtr(new EventsCollector()))

I think these objects may be created lazily only when the option is enabled.

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:33
&gt; +    var eventsCollectionEnabled = function(error, enabled)

Please use a local named function and then bind it to &apos;this&apos; like we do in other places in the front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401912</commentid>
    <comment_count>9</comment_count>
      <attachid>91674</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-11 05:05:38 -0700</bug_when>
    <thetext>Comment on attachment 91674
fix error after review

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

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        Web Inspector: Background network events collection - add GUI to Inspector.
&gt; 
&gt; Bug description and URL should go first(see other log entries).

done

&gt;&gt; LayoutTests/http/tests/inspector/inspector-test.js:318
&gt;&gt; +var reopenedFrontendCount = 0;
&gt; 
&gt; frontendReopeningCount

done

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:34
&gt;&gt; +        }
&gt; 
&gt; Style nit: else should go on the same line.

done

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:38
&gt;&gt; +            InspectorTest.addResult(&quot;resources count = &quot; + resourcesCount);
&gt; 
&gt; Could you also dump the resources before frontend reopening. Ideally the two sets should also be compared after the reopening.

It&apos;s will be too complicate source:
We need save all data in page local property and get it after reopen.
Also, it is not really nesesary

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:54
&gt;&gt; +Tests that network panel displays resource content correctly after the open - load - reopen sequence.
&gt; 
&gt; Test that when background event collection is enabled network panel correctly restores network log after the frontend reopening.

done

&gt;&gt; Source/WebCore/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; You should provide a brief description of the UI and semantic changes.

done

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Test: http/tests/inspector/network/network-open-load-reopen.html
&gt; 
&gt; This test doesn&apos;t check event collection with closed frontend, it only verifies that the network log will be restore after the frontend reopening. I&apos;d recommend you add a test that would test the background event collection.

ok

&gt;&gt; Source/WebCore/inspector/InspectorFrontendProxy.cpp:58
&gt;&gt; +InspectorFrontendChannel* InspectorFrontendProxy::getInspectorFrontendChannel()
&gt; 
&gt; getInspectorFrontendChannel -&gt; inspectorFrontendChannel (we don&apos;t use get prefix for getters in the native part of WebCore).

done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:71
&gt;&gt; +static const char getBackgroundEventsCollectionState[] = &quot;getBackgroundEventsCollectionState&quot;;
&gt; 
&gt; getBackgroundEventsCollectionState -&gt; backgroundEventsCollectionEnabled (like resourceAgentEnabled above)

done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:342
&gt;&gt; +bool InspectorResourceAgent::getBackgroundEventsCollectionState()
&gt; 
&gt; getBackgroundEventsCollectionState -&gt; backgroundEventsCollectionEnabled

done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:347
&gt;&gt; +void InspectorResourceAgent::setBackgroundEventsCollectionEnabled(ErrorString*, bool&amp; enabled)
&gt; 
&gt; bool&amp; -&gt; bool

done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:399
&gt;&gt; +    , m_eventsCollector(adoptPtr(new EventsCollector()))
&gt; 
&gt; I think these objects may be created lazily only when the option is enabled.

done

&gt;&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:33
&gt;&gt; +    var eventsCollectionEnabled = function(error, enabled)
&gt; 
&gt; Please use a local named function and then bind it to &apos;this&apos; like we do in other places in the front-end.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401920</commentid>
    <comment_count>10</comment_count>
      <attachid>93110</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-11 05:25:22 -0700</bug_when>
    <thetext>Created attachment 93110
Add 3 tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402861</commentid>
    <comment_count>11</comment_count>
      <attachid>93110</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-12 08:43:48 -0700</bug_when>
    <thetext>Comment on attachment 93110
Add 3 tests

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

&gt; LayoutTests/http/tests/inspector/inspector-test.js:343
&gt; +    setTimeout(function() {

Why do we need this setTimeout?

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:8
&gt; +    var size = 400 + 200 * loadedResourceCount;

What&apos;s the purpose of this expression? It looks like you can use some arbitrary numbers to get two different URLs.

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:34
&gt; +            WebInspector.panels.network._toggleBackgroundEventsCollection();

Which state is it supposed to go in? Is it possible that the background collection is already on? Would be better to call something like enableBackgroundEventCollection that would make sure that the new state is on, no matter what the previous state was.

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:61
&gt; +Test that network panel is empty after reopening. Even if before reopening resources are loading in background collection mode.

It&apos;s hard to understand what the test does from the description, could you change the wording?

&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:8
&gt; +    size = 400;

This can be inlined.

&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:44
&gt; +            WebInspector.panels.network._toggleBackgroundEventsCollection();

There should be a more reliable way of doing this so that even if the test fails background collection would be turned off.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:55
&gt; +Test that when background event collection is enabled network panel correctly restores network log after the frontend reopening.

What&apos;s the difference between this test and network-close-load-open.html ?

&gt; Source/WebCore/ChangeLog:9
&gt; +        &quot;Backgroune events collection&quot;. It&apos;s allows save all network events when inspector

Backgroune -&gt; Background. It&apos;s allows save -&gt; It allows to save

&gt; Source/WebCore/ChangeLog:10
&gt; +        frontend closed. Events occasion before collection enabling are not preserved after

Events that occur before...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402972</commentid>
    <comment_count>12</comment_count>
      <attachid>93110</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-12 11:08:29 -0700</bug_when>
    <thetext>Comment on attachment 93110
Add 3 tests

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

&gt;&gt; LayoutTests/http/tests/inspector/inspector-test.js:343
&gt;&gt; +    setTimeout(function() {
&gt; 
&gt; Why do we need this setTimeout?

Probably no reasons. I remove it.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:8
&gt;&gt; +    var size = 400 + 200 * loadedResourceCount;
&gt; 
&gt; What&apos;s the purpose of this expression? It looks like you can use some arbitrary numbers to get two different URLs.

Exactly. It&apos;s look confusing, yeah. I fix it.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:34
&gt;&gt; +            WebInspector.panels.network._toggleBackgroundEventsCollection();
&gt; 
&gt; Which state is it supposed to go in? Is it possible that the background collection is already on? Would be better to call something like enableBackgroundEventCollection that would make sure that the new state is on, no matter what the previous state was.

done

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:61
&gt;&gt; +Test that network panel is empty after reopening. Even if before reopening resources are loading in background collection mode.
&gt; 
&gt; It&apos;s hard to understand what the test does from the description, could you change the wording?

Test that reopening clears network panel in background events collection disabled mode.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:8
&gt;&gt; +    size = 400;
&gt; 
&gt; This can be inlined.

done

&gt;&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:44
&gt;&gt; +            WebInspector.panels.network._toggleBackgroundEventsCollection();
&gt; 
&gt; There should be a more reliable way of doing this so that even if the test fails background collection would be turned off.

done. But not pure safe. We need add InspectorTest.disableBackgroundEventCollection call to InspectorTest.completeTest for really safety.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:55
&gt;&gt; +Test that when background event collection is enabled network panel correctly restores network log after the frontend reopening.
&gt; 
&gt; What&apos;s the difference between this test and network-close-load-open.html ?

Different in actions sequences.
open-load-reopen test that collection work with opened frontend
close-load-open test that collection work with closed frontend

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        &quot;Backgroune events collection&quot;. It&apos;s allows save all network events when inspector
&gt; 
&gt; Backgroune -&gt; Background. It&apos;s allows save -&gt; It allows to save

done.

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        frontend closed. Events occasion before collection enabling are not preserved after
&gt; 
&gt; Events that occur before...

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402986</commentid>
    <comment_count>13</comment_count>
      <attachid>93311</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-12 11:19:37 -0700</bug_when>
    <thetext>Created attachment 93311
Another one

I add try-catch statements in my tests.
They duplicate InspectorTest.disableBackengCollectionEvents() call, but I didn&apos;t think up how avoid duplicate and use finally correct in this cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403433</commentid>
    <comment_count>14</comment_count>
      <attachid>93311</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 01:46:24 -0700</bug_when>
    <thetext>Comment on attachment 93311
Another one

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

&gt; LayoutTests/http/tests/inspector/inspector-test.js:323
&gt; +InspectorTest.enableBackgroundEventCollection = function()

These three methods are specific to network inspection. They should go to network-test.js

&gt; LayoutTests/http/tests/inspector/inspector-test.js:330
&gt; +        WebInspector.panels.network._toggleBackgroundEventsCollection();

It&apos;s overcomplicated. We don&apos;t need to reload page in enableBackgroundEventCollection. If you would like to clear resources you can send disable command followed by enable but I&apos;d rather make the test not depend on the previous state.

&gt; LayoutTests/http/tests/inspector/inspector-test.js:342
&gt; +InspectorTest.addToResultNetworkResources = function()

dumpNetworkResources

&gt; LayoutTests/http/tests/inspector/inspector-test.js:345
&gt; +    resources.sort(function(a, b) {return a.url.localeCompare(b.url);});

Wouldn&apos;t resources.sort() give the same result?

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:6
&gt; +function loadImages(size)

loadImagesAndReopenFrontend

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:19
&gt; +function loadImages400()

Inline this function?

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:24
&gt; +function loadImages600()

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403444</commentid>
    <comment_count>15</comment_count>
      <attachid>93311</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 02:48:03 -0700</bug_when>
    <thetext>Comment on attachment 93311
Another one

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

&gt;&gt; LayoutTests/http/tests/inspector/inspector-test.js:323
&gt;&gt; +InspectorTest.enableBackgroundEventCollection = function()
&gt; 
&gt; These three methods are specific to network inspection. They should go to network-test.js

done

&gt;&gt; LayoutTests/http/tests/inspector/inspector-test.js:330
&gt;&gt; +        WebInspector.panels.network._toggleBackgroundEventsCollection();
&gt; 
&gt; It&apos;s overcomplicated. We don&apos;t need to reload page in enableBackgroundEventCollection. If you would like to clear resources you can send disable command followed by enable but I&apos;d rather make the test not depend on the previous state.

done.

&gt;&gt; LayoutTests/http/tests/inspector/inspector-test.js:342
&gt;&gt; +InspectorTest.addToResultNetworkResources = function()
&gt; 
&gt; dumpNetworkResources

done

&gt;&gt; LayoutTests/http/tests/inspector/inspector-test.js:345

&gt; 
&gt; Wouldn&apos;t resources.sort() give the same result?

No, it wouldn&apos;t

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:6
&gt;&gt; +function loadImages(size)
&gt; 
&gt; loadImagesAndReopenFrontend

done. Same done in other tests

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:19
&gt;&gt; +function loadImages400()
&gt; 
&gt; Inline this function?

done

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:24
&gt;&gt; +function loadImages600()
&gt; 
&gt; ditto

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403445</commentid>
    <comment_count>16</comment_count>
      <attachid>93419</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 02:49:09 -0700</bug_when>
    <thetext>Created attachment 93419
Split network-specific InspectorTest methods to network-test.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403468</commentid>
    <comment_count>17</comment_count>
      <attachid>93419</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 04:13:59 -0700</bug_when>
    <thetext>Comment on attachment 93419
Split network-specific InspectorTest methods to network-test.js

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

Overall looks good except a couple of minor suggestions.

&gt; LayoutTests/http/tests/inspector/network-test.js:3
&gt; +InspectorTest.enableBackgroundEventCollection = function()

This method is not used anymore, please remove it.

&gt; LayoutTests/http/tests/inspector/network-test.js:9
&gt; +InspectorTest.enableBackgroundEventCollectionInsure = function()

I think it can be just enableBackgroundEventCollection, or ensureBackgroundEventCollectionEnabled if you prefer the latter form.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:56
&gt; +Test that when background event collection is enabled network panel correctly restores network log after the frontend reopening.

It&apos;s a good practice to put a link to the bug into the test description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403484</commentid>
    <comment_count>18</comment_count>
      <attachid>93419</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 05:09:19 -0700</bug_when>
    <thetext>Comment on attachment 93419
Split network-specific InspectorTest methods to network-test.js

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

&gt;&gt; LayoutTests/http/tests/inspector/network-test.js:3
&gt;&gt; +InspectorTest.enableBackgroundEventCollection = function()
&gt; 
&gt; This method is not used anymore, please remove it.

done.

&gt;&gt; LayoutTests/http/tests/inspector/network-test.js:9
&gt;&gt; +InspectorTest.enableBackgroundEventCollectionInsure = function()
&gt; 
&gt; I think it can be just enableBackgroundEventCollection, or ensureBackgroundEventCollectionEnabled if you prefer the latter form.

done.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:56
&gt;&gt; +Test that when background event collection is enabled network panel correctly restores network log after the frontend reopening.
&gt; 
&gt; It&apos;s a good practice to put a link to the bug into the test description.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403485</commentid>
    <comment_count>19</comment_count>
      <attachid>93436</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 05:09:50 -0700</bug_when>
    <thetext>Created attachment 93436
Minor fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403489</commentid>
    <comment_count>20</comment_count>
      <attachid>93436</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 05:27:00 -0700</bug_when>
    <thetext>Comment on attachment 93436
Minor fix

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:352
&gt; +        if (!isBackgroundCollectionInit)

This may well be replaced with if (!m_eventsCollector), no need to introduce additional field.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:397
&gt; +void InspectorResourceAgent::backgroundCollectionInit()

initializeBackgroundCollection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403497</commentid>
    <comment_count>21</comment_count>
      <attachid>93436</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 06:00:43 -0700</bug_when>
    <thetext>Comment on attachment 93436
Minor fix

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

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:352
&gt;&gt; +        if (!isBackgroundCollectionInit)
&gt; 
&gt; This may well be replaced with if (!m_eventsCollector), no need to introduce additional field.

Yeah, I&apos;m dumb. done

&gt;&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:397
&gt;&gt; +void InspectorResourceAgent::backgroundCollectionInit()
&gt; 
&gt; initializeBackgroundCollection

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403498</commentid>
    <comment_count>22</comment_count>
      <attachid>93438</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 06:01:40 -0700</bug_when>
    <thetext>Created attachment 93438
Remove bool isBackgroundCollectionInit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403506</commentid>
    <comment_count>23</comment_count>
      <attachid>93438</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 06:27:18 -0700</bug_when>
    <thetext>Comment on attachment 93438
Remove bool isBackgroundCollectionInit

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

&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:59
&gt; +&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=58652&quot;&gt;Bug 58652&lt;/a&gt;

Both hrefs are the same.

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:58
&gt; +&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=58652&quot;&gt;Bug 58652&lt;/a&gt;

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403509</commentid>
    <comment_count>24</comment_count>
      <attachid>93438</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 06:34:50 -0700</bug_when>
    <thetext>Comment on attachment 93438
Remove bool isBackgroundCollectionInit

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

&gt;&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:59
&gt;&gt; +&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=58652&quot;&gt;Bug 58652&lt;/a&gt;
&gt; 
&gt; Both hrefs are the same.

Sorry. done

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:58
&gt;&gt; +&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=58652&quot;&gt;Bug 58652&lt;/a&gt;
&gt; 
&gt; Same here.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403512</commentid>
    <comment_count>25</comment_count>
      <attachid>93441</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-13 06:38:08 -0700</bug_when>
    <thetext>Created attachment 93441
Fix wrong bug links</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403529</commentid>
    <comment_count>26</comment_count>
      <attachid>93441</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 07:05:06 -0700</bug_when>
    <thetext>Comment on attachment 93441
Fix wrong bug links

Looks good but LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html times out when I run it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403530</commentid>
    <comment_count>27</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 07:05:43 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 93441 [details])
&gt; Looks good but LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html times out when I run it locally.

It times out on Qt in release mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404451</commentid>
    <comment_count>28</comment_count>
      <attachid>93638</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-16 07:17:47 -0700</bug_when>
    <thetext>Created attachment 93638
suppressed 3 new tests on qt platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404476</commentid>
    <comment_count>29</comment_count>
      <attachid>93638</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-05-16 08:07:21 -0700</bug_when>
    <thetext>Comment on attachment 93638
suppressed 3 new tests on qt platform

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

&gt; LayoutTests/http/tests/inspector/network-test.js:5
&gt; +    if (!WebInspector.panels.network._backgroundCollectionEnabled) {

No need { }

&gt; LayoutTests/http/tests/inspector/network-test.js:21
&gt; +    //resources.sort(function(a, b) {return a.url.localeCompare(b.url);});

Please do not land commented code.

&gt; LayoutTests/http/tests/inspector/network-test.js:24
&gt; +    for (i = 0; i &lt; resources.length; i++) {

No need for { }

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:32
&gt; +        InspectorTest.evaluateInPage(&quot;frontendReopeningCount&quot;, function(result) {

Please do not use anonymous functions.

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:33
&gt; +            if (result._description === &quot;0&quot;) {

What is _description ?

&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:24
&gt; +    if (loadedResourceCount === 2) {

No need for {}

&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:23
&gt; +    if (++loadedResourceCount === 2) {

{}

&gt; Source/WebCore/inspector/Inspector.json:455
&gt; +                &quot;description&quot;: &quot;Allow turn on/off background network events collection.&quot;,

Toggles background network event collection.

&gt; Source/WebCore/inspector/Inspector.json:461
&gt; +                &quot;name&quot;: &quot;getBackgroundEventsCollectionState&quot;,

isBackgroundEventsCollectionEnabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404525</commentid>
    <comment_count>30</comment_count>
      <attachid>93638</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-16 09:36:59 -0700</bug_when>
    <thetext>Comment on attachment 93638
suppressed 3 new tests on qt platform

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

&gt;&gt; LayoutTests/http/tests/inspector/network-test.js:5
&gt;&gt; +    if (!WebInspector.panels.network._backgroundCollectionEnabled) {
&gt; 
&gt; No need { }

done

&gt;&gt; LayoutTests/http/tests/inspector/network-test.js:21
&gt;&gt; +    //resources.sort(function(a, b) {return a.url.localeCompare(b.url);});
&gt; 
&gt; Please do not land commented code.

Oh, thanks for this point. In fact commented code is coorect and resources.sort() was just experement

&gt;&gt; LayoutTests/http/tests/inspector/network-test.js:24
&gt;&gt; +    for (i = 0; i &lt; resources.length; i++) {
&gt; 
&gt; No need for { }

done.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:32
&gt;&gt; +        InspectorTest.evaluateInPage(&quot;frontendReopeningCount&quot;, function(result) {
&gt; 
&gt; Please do not use anonymous functions.

ok, done. But I just take this pattern from inspector/debugger/open-close-open.html test.

&gt;&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:33
&gt;&gt; +            if (result._description === &quot;0&quot;) {
&gt; 
&gt; What is _description ?

Again, I take it from inspector/debugger/open-close-open.htm
I tried make same thing another way, but didn&apos;t invent how...
Actually I don&apos;t know, how I can get evaluating value, except _description

&gt;&gt; LayoutTests/http/tests/inspector/network/network-close-load-open.html:24
&gt;&gt; +    if (loadedResourceCount === 2) {
&gt; 
&gt; No need for {}

done. But is code style strict for LayoutTests? I mean same { } in http/tests/inspector/network/network-size.html
And Tools/Scripts/check-webkit-style doesn&apos;t produce warning on this code...

&gt;&gt; LayoutTests/http/tests/inspector/network/network-open-load-reopen.html:23
&gt;&gt; +    if (++loadedResourceCount === 2) {
&gt; 
&gt; {}

done

&gt;&gt; Source/WebCore/inspector/Inspector.json:455
&gt;&gt; +                &quot;description&quot;: &quot;Allow turn on/off background network events collection.&quot;,
&gt; 
&gt; Toggles background network event collection.

done.

&gt;&gt; Source/WebCore/inspector/Inspector.json:461
&gt;&gt; +                &quot;name&quot;: &quot;getBackgroundEventsCollectionState&quot;,
&gt; 
&gt; isBackgroundEventsCollectionEnabled

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404528</commentid>
    <comment_count>31</comment_count>
      <attachid>93653</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-16 09:42:17 -0700</bug_when>
    <thetext>Created attachment 93653
Minor fix after pfeldman review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405676</commentid>
    <comment_count>32</comment_count>
      <attachid>93653</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-18 06:37:15 -0700</bug_when>
    <thetext>Comment on attachment 93653
Minor fix after pfeldman review

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

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:37
&gt; +    function step123(stepNumber) {

name &apos;step123&apos; looks weird

&gt; LayoutTests/http/tests/inspector/network/network-clear-after-disabled.html:42
&gt; +        if (stepNumber._description === &quot;1&quot;) {

&apos;if&apos; should go on the same line as &apos;else&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406266</commentid>
    <comment_count>33</comment_count>
      <attachid>94047</attachid>
    <who name="Sergey Vorobyev">sergeyvorobyev</who>
    <bug_when>2011-05-19 00:03:42 -0700</bug_when>
    <thetext>Created attachment 94047
Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407150</commentid>
    <comment_count>34</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-20 09:15:47 -0700</bug_when>
    <thetext>Committed r86959: &lt;http://trac.webkit.org/changeset/86959&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91492</attachid>
            <date>2011-04-28 08:11:25 -0700</date>
            <delta_ts>2011-04-28 10:37:28 -0700</delta_ts>
            <desc>Gui added. 1 simple test</desc>
            <filename>gui</filename>
            <type>text/plain</type>
            <size>19163</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTEwN2RjLi4zYjM3ZTYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQt
MjggIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4t
bG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIENvbnZlcnQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdXQtZGVhZC1ub2RlLmh0
bWwgZnJvbSBwaXhlbCB0ZXN0IHRvIHRleHQtYmFzZWQgdGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9w
ZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmVlZGYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgZGlz
cGxheXMgcmVzb3VyY2UgY29udGVudCBjb3JyZWN0bHkgYWZ0ZXIgdGhlIG9wZW4gLSBsb2FkIC0g
cmVvcGVuIHNlcXVlbmNlLgorCisKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1h
Z2Umc2l6ZT01MDAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1v
cGVuLWxvYWQtcmVvcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjI0NjBkNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1s
CkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gcmVvcGVuRnJvbnRl
bmQoKSB7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCisgICAgLy8gYmFjayB0byB0aGUgZnJv
bnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgIHdpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCA9IHRydWU7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0s
IDApOworfQorCitmdW5jdGlvbiBsb2FkSW1hZ2VzKCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIs
ICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAiKTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAi
cmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVu
ZFJlb3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2Ny
aXB0aW9uID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgibmV0d29yayIpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRv
Z2dsZS1iYWNrZ3JvdW5kLWV2ZW50cy1jb2xsZWN0aW9uIikuY2xpY2soKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXMoKSIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RlcDIoKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VzIGNvdW50ID0gIiArIHJlc291cmNlc0NvdW50
KTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc291cmNlc0NvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXNvdXJjZXNbaV0udXJsKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgZGlzcGxh
eXMgcmVzb3VyY2UgY29udGVudCBjb3JyZWN0bHkgYWZ0ZXIgdGhlIG9wZW4gLSBsb2FkIC0gcmVv
cGVuIHNlcXVlbmNlLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkYmMw
NDEuLjAyMDkyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMS0wNC0yOCAgU2Vy
Z2V5IFZvcm9ieWV2ICA8c2VyZ2V5dm9yb2J5ZXZAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBCYWNrZ3Jv
dW5kIG5ldHdvcmsgZXZlbnRzIGNvbGxlY3Rpb24gLSBhZGQgR1VJIHRvIEluc3BlY3Rvci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9h
ZC1yZW9wZW4uaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudHNDb2xsZWN0b3I6OmNsZWFyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kUHJveHk6OmdldEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJv
eHkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNv
dXJjZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJh
Y2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Ojpzd2l0Y2hCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291
cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVN0
YXR1c2JhckJ1dHRvbnMuY2FsbGJhY2tFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU3RhdHVzYmFyQnV0
dG9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fdG9n
Z2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5iYWNr
Z3JvdW5kLWV2ZW50cy1jb2xsZWN0aW9uLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGgpOgorICAgICAg
ICAoLmJhY2tncm91bmQtZXZlbnRzLWNvbGxlY3Rpb24tc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQt
b24gLmdseXBoKToKKwogMjAxMS0wNC0yOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAppbmRleCAxYzM2NWNmLi43MzkxYTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcApAQCAtNDgsNiArNDgs
MTEgQEAgdm9pZCBFdmVudHNDb2xsZWN0b3I6OmFkZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKICAgICB9CiB9CiAKK3ZvaWQgRXZlbnRzQ29sbGVjdG9yOjpjbGVhcigpCit7CisgICAgbV9l
dmVudHMuY2xlYXIoKTsKK30KKwogdm9pZCBFdmVudHNDb2xsZWN0b3I6OnNlbmRDb2xsZWN0ZWRF
dmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiByZWNlaXZlcikKIHsKICAgICBmb3IgKFZl
Y3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fZXZlbnRzLmJlZ2luKCk7IGl0ICE9IG1fZXZl
bnRzLmVuZCgpOyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2
ZW50c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rv
ci5oCmluZGV4IGQ1M2UxMDkuLmUyNmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RXZlbnRzQ29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIEV2ZW50c0Nv
bGxlY3RvcigpOwogICAgIH5FdmVudHNDb2xsZWN0b3IoKSB7IH0KICAgICB2b2lkIGFkZEV2ZW50
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgc2Vu
ZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYXBhY2l0eSA9IDEwMjQqMTAyNDsgLy8gMSBNYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGM2MGIyYTYuLjIxNTRm
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTQ0Niw2ICs0
NDYsMTkgQEAKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0aW9u
IjogIk1hcCB3aXRoIGV4dHJhIEhUVFAgaGVhZGVycy4iIH0KICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInN3
aXRjaEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG8iLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJBbGxvdyB0dXJuIG9uL29mZiBiYWNrZ3JvdW5kIG5ldHdvcmsgZXZlbnRzIGNv
bGxlY3Rpb24uIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlw
dGlvbiI6ICJ0cnVlIC0gZW5hYmxlIGNvbGxlY3Rpb24sIGZhbHNlIC0gZGlzYWJsZSIgfQorICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkIiwKKyAgICAg
ICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
bmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAppbmRleCA0ZTIxODhk
Li5hMWYyZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwxMSBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kUHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsKIH0KIAorSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5OjpnZXRJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoKQoreworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQorCiB2b2lkIEluc3BlY3RvckZyb250
ZW5kUHJveHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqIGNvbGxlY3RvcikK
IHsKICAgICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmluZGV4IDI1OWFmNjcuLjVmZWEzMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJv
eHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJv
bnRlbmRQcm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBnZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2b2lkIHNldEV2ZW50c0NvbGxl
Y3RvcihFdmVudHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzY2M4ZTQ0Li45NjYz
MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VBZ2Vu
dEVuYWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBl
eHRyYVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CitzdGF0aWMgY29u
c3QgY2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWRbXSA9ICJiYWNrZ3JvdW5k
RXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKQEAgLTg1LDEzICs4
NiwxNCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKiBmcm9udGVuZCkKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJG
cm9udGVuZCgpCiB7CiAgICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgp
KSB7Ci0gICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKDApOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQuZ2V0KCk7
Ci0gICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9IGVs
c2UgewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAgICBkaXNhYmxlKDApOworICAg
IH0KICAgICBtX3VzZXJBZ2VudE92ZXJyaWRlID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXN0b3JlKCkKQEAgLTE4Myw4ICsxODUsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVk
UmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzbwogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKQogewogICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291
cmNlQWdlbnRTdGF0ZTo6cmVzb3VyY2VBZ2VudEVuYWJsZWQpKSB7Ci0gICAgICAgIEVycm9yU3Ry
aW5nIGVycm9yOwotICAgICAgICBkaXNhYmxlKCZlcnJvcik7CisgICAgICAgIGRpc2FibGUoMCk7
CiAgICAgfQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNv
dXJjZUFnZW50KCkpOwogfQpAQCAtMzMxLDEyICszMzIsMzMgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQogCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJv
b2wqIGVuYWJsZWQpCit7CisgICAgKCplbmFibGVkKSA9IGJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZCgpOworfQorCiBib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpCiB7Ci0gICAgLy8gRklYTUUgKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MikKLSAgICAvLyBBZGQgaGVyZSBjb25k
aXRpb24gdG8gZW5hYmxlIGJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24uCi0gICAgLy8gTm93
IHRoaXMgZnVuY3Rpb24gaXMgZGlzYWJsZS4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpiYWNrZ3JvdW5kRXZlbnRz
Q29sbGVjdGlvbkVuYWJsZWQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnN3
aXRjaEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG8oRXJyb3JTdHJpbmcqLCBib29sJiBlbmFi
bGVkKQoreworICAgIGlmIChlbmFibGVkID09IGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZCgpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGVuYWJsZWQpIHsKKyAg
ICAgICAgLy8gSW5zZXJ0IE1lc3NhZ2UgUHJveHkgaW4gcmVjZWl2ZXIgY2hhaW4uCisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2xpZW50ID0gbV9mcm9udGVuZC0+Z2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKCk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+
c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGNsaWVudCk7CisgICAgICAgIG1fZnJvbnRlbmQt
PnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRha2Ugb3V0IE1lc3NhZ2UgUHJveHkgZnJv
bSByZXZlaXZlciBjaGFpbi4KKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+Z2V0SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKCkpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCgwKTsKKyAgICAgICAgbV9ldmVudHNDb2xsZWN0b3ItPmNsZWFyKCk7
CisgICAgfQorICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0
ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLCBlbmFibGVkKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAtMzcyLDE2
ICszOTQsMTggQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAgICA6IG1faW5zdHJ1bWVudGlu
Z0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50
KQogICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICAsIG1fZXZlbnRzQ29sbGVjdG9yKGFkb3B0UHRy
KG5ldyBFdmVudHNDb2xsZWN0b3IoKSkpCisgICAgLCBtX2luc3BlY3RvckZyb250ZW5kUHJveHko
YWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0
KCkpKSkKKyAgICAvLyBDcmVhdGUgbW9jayBmcm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0
d29yayBldmVudHMuCisgICAgLCBtX21vY2tGcm9udGVuZChhZG9wdFB0cihuZXcgSW5zcGVjdG9y
RnJvbnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKSkpCiB7Cisg
ICAgLy8gQ3JlYXRlIG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZl
bnRzLgogICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKSkgewotICAg
ICAgICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHNDb2xsZWN0b3IpOwot
ICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9y
RnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkpOwotICAgICAgICAvLyBDcmVh
dGUgbW9jayBmcm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCi0gICAg
ICAgIG1fbW9ja0Zyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kOjpOZXR3
b3JrKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS5nZXQoKSkpOwogICAgICAgICBtX2Zyb250ZW5k
ID0gbV9tb2NrRnJvbnRlbmQuZ2V0KCk7CiAgICAgICAgIGVuYWJsZSgpOwotICAgIH0gZWxzZQor
ICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZnJvbnRlbmQgPSAwOworICAgIH0KIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZDYwZDIxZi4uNWVkNzJiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMDUsOSAr
MTA1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CiAjZW5kaWYKIAotICAgIGJvb2wgYmFja2dyb3VuZEV2ZW50c0NvbGxl
Y3Rpb25FbmFibGVkKCk7CisgICAgRnJhbWUqIGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFt
ZUlkKTsKKyAgICB2b2lkIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0
cmluZyosIGJvb2wqIGVuYWJsZWQpOworICAgIHZvaWQgc3dpdGNoQmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb25UbyhFcnJvclN0cmluZyosIGJvb2wmIGVuYWJsZWQpOwogCi0gICAgLy8gQ2FsbGVk
IGZyb20gZnJvbnRlbmQgCisgICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQKICAgICB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCk7CkBAIC0xMTcsMTUgKzExOSwxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElu
c3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VB
Z2VudCosIEluc3BlY3RvclN0YXRlKik7CiAKKyAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xs
ZWN0aW9uRW5hYmxlZCgpOwogICAgIHZvaWQgZW5hYmxlKCk7CiAKICAgICBJbnN0cnVtZW50aW5n
QWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JTdGF0ZSogbV9zdGF0ZTsKLSAgICBPd25QdHI8RXZl
bnRzQ29sbGVjdG9yPiBtX2V2ZW50c0NvbGxlY3RvcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6
TmV0d29yayogbV9mcm9udGVuZDsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdv
cms+IG1fbW9ja0Zyb250ZW5kOworICAgIE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRz
Q29sbGVjdG9yOwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZFByb3h5PiBtX2luc3BlY3Rv
ckZyb250ZW5kUHJveHk7CisgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBt
X21vY2tGcm9udGVuZDsKICAgICBTdHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMK
aW5kZXggOGE2YTFiNS4uZTQzMjllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTk5LDcgKzk5LDcgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgc3RhdHVzQmFySXRlbXMo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9sYXJnZXJSZXNvdXJjZXNCdXR0b24uZWxl
bWVudCwgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuZWxlbWVudCwgdGhpcy5fY2xlYXJCdXR0b24u
ZWxlbWVudCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5f
bGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmVsZW1lbnQsIHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLmVs
ZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2JhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uVG9nZ2xlLmVsZW1lbnQsIHRoaXMuX2ZpbHRlckJhckVsZW1lbnRdOwogICAgIH0s
CiAKICAgICBpc0NhdGVnb3J5VmlzaWJsZTogZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQpAQCAtNjAw
LDYgKzYwMCwxNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIF9jcmVhdGVTdGF0dXNiYXJCdXR0b25zOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICB2
YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrRXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQoZXJyb3IsIGVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNlbGYuX2Jh
Y2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlLnRvZ2dsZWQgPSBlbmFibGVkOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlID0gbmV3
IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xs
ZWN0IG5ldHdvcmsgZXZlbnRzIHdpdGggY2xvc2VkIEZyb250ZW5kIiksICJiYWNrZ3JvdW5kLWV2
ZW50cy1jb2xsZWN0aW9uLXN0YXR1cy1iYXItaXRlbSIpOworICAgICAgICBOZXR3b3JrQWdlbnQu
YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKGNhbGxiYWNrRXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQpOworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvZ2ds
ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZUJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fYmFja2dyb3VuZEV2
ZW50c0NvbGxlY3Rpb25Ub2dnbGUuZWxlbWVudC5pZCA9ICJ0b2dnbGUtYmFja2dyb3VuZC1ldmVu
dHMtY29sbGVjdGlvbiI7CisKICAgICAgICAgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUgPSBuZXcg
V2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXNl
cnZlIExvZyB1cG9uIE5hdmlnYXRpb24iKSwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRl
bSIpOwogICAgICAgICB0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX29uUHJlc2VydmVMb2dDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIApA
QCAtNzEwLDYgKzcyMCwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbFRvTGFzdFJvdygpOwogICAgIH0s
CiAKKyAgICBfdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb246IGZ1bmN0aW9uKGUpCisg
ICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvZ2dsZS50b2dn
bGVkID0gIXRoaXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlLnRvZ2dsZWQ7Cisg
ICAgICAgIE5ldHdvcmtBZ2VudC5zd2l0Y2hCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvKHRo
aXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlLnRvZ2dsZWQpOworICAgIH0sCisK
ICAgICBfb25QcmVzZXJ2ZUxvZ0NsaWNrZWQ6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB0
aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkID0gIXRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xl
LnRvZ2dsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwppbmRleCA2MDc1NDYxLi5jMGY0ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTU1LDE2ICs1NSwxNyBAQCB2YXIgUHJlZmVy
ZW5jZXMgPSB7CiAKIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKIHsKKyAgICB0
aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9u
IiwgZmFsc2UpOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygiY29sb3JGb3Jt
YXQiLCAiaGV4Iik7CiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJjb25zb2xl
SGlzdG9yeSIsIFtdKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImRlYnVn
Z2VyRW5hYmxlZCIsIGZhbHNlKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmco
ImRvbVdvcmRXcmFwIiwgdHJ1ZSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5n
KCJwcm9maWxlckVuYWJsZWQiLCBmYWxzZSk7CiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25T
ZXR0aW5nKCJldmVudExpc3RlbmVyc0ZpbHRlciIsICJhbGwiKTsKICAgICB0aGlzLmluc3RhbGxB
cHBsaWNhdGlvblNldHRpbmcoImxhc3RBY3RpdmVQYW5lbCIsICJlbGVtZW50cyIpOwogICAgIHRo
aXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygibGFzdFZpZXdlZFNjcmlwdEZpbGUiLCAiYXBw
bGljYXRpb24iKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoIm1vbml0b3Jp
bmdYSFJFbmFibGVkIiwgZmFsc2UpOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGlu
ZygicGF1c2VPbkV4Y2VwdGlvblN0YXRlIiwgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5QYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlLkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgdGhpcy5pbnN0
YWxsQXBwbGljYXRpb25TZXR0aW5nKCJwcm9maWxlckVuYWJsZWQiLCBmYWxzZSk7CiAgICAgdGhp
cy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJyZXNvdXJjZXNMYXJnZVJvd3MiLCB0cnVlKTsK
ICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInJlc291cmNlc1NvcnRPcHRpb25z
Iiwge3RpbWVPcHRpb246ICJyZXNwb25zZVRpbWUiLCBzaXplT3B0aW9uOiAidHJhbnNmZXJTaXpl
In0pOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygicmVzb3VyY2VWaWV3VGFi
IiwgImNvbnRlbnQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcwppbmRleCAxNWU2Y2I4Li5iNDlmMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC00MTA0LDYgKzQxMDQs
MTUgQEAgYm9keS5pbmFjdGl2ZSBsaS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsK
IGJ1dHRvbi5lbmFibGUtdG9nZ2xlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogfQogCisuYmFj
a2dyb3VuZC1ldmVudHMtY29sbGVjdGlvbi1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKKyAgICAt
d2Via2l0LW1hc2staW1hZ2U6IHVybChJbWFnZXMvcmVjb3JkQnV0dG9uR2x5cGgucG5nKTsKK30K
KworLmJhY2tncm91bmQtZXZlbnRzLWNvbGxlY3Rpb24tc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQt
b24gLmdseXBoIHsKKyAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChJbWFnZXMvcmVjb3JkVG9n
Z2xlZEJ1dHRvbkdseXBoLnBuZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNiwgMCwg
MCkgIWltcG9ydGFudDsKK30KKwogLnJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5
cGggewogICAgIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKEltYWdlcy9yZWNvcmRCdXR0b25HbHlw
aC5wbmcpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91513</attachid>
            <date>2011-04-28 10:37:28 -0700</date>
            <delta_ts>2011-04-29 01:19:57 -0700</delta_ts>
            <desc>Fix style</desc>
            <filename>gui</filename>
            <type>text/plain</type>
            <size>19079</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTEwN2RjLi4zYjM3ZTYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQt
MjggIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4t
bG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIENvbnZlcnQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdXQtZGVhZC1ub2RlLmh0
bWwgZnJvbSBwaXhlbCB0ZXN0IHRvIHRleHQtYmFzZWQgdGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9w
ZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmVlZGYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgZGlz
cGxheXMgcmVzb3VyY2UgY29udGVudCBjb3JyZWN0bHkgYWZ0ZXIgdGhlIG9wZW4gLSBsb2FkIC0g
cmVvcGVuIHNlcXVlbmNlLgorCisKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1h
Z2Umc2l6ZT01MDAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1v
cGVuLWxvYWQtcmVvcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjI0NjBkNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1s
CkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gcmVvcGVuRnJvbnRl
bmQoKSB7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCisgICAgLy8gYmFjayB0byB0aGUgZnJv
bnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgIHdpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCA9IHRydWU7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0s
IDApOworfQorCitmdW5jdGlvbiBsb2FkSW1hZ2VzKCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIs
ICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAiKTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAi
cmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVu
ZFJlb3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2Ny
aXB0aW9uID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgibmV0d29yayIpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRv
Z2dsZS1iYWNrZ3JvdW5kLWV2ZW50cy1jb2xsZWN0aW9uIikuY2xpY2soKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXMoKSIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RlcDIoKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZXNDb3VudCA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VzIGNvdW50ID0gIiArIHJlc291cmNlc0NvdW50
KTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc291cmNlc0NvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXNvdXJjZXNbaV0udXJsKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgZGlzcGxh
eXMgcmVzb3VyY2UgY29udGVudCBjb3JyZWN0bHkgYWZ0ZXIgdGhlIG9wZW4gLSBsb2FkIC0gcmVv
cGVuIHNlcXVlbmNlLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkYmMw
NDEuLjAyMDkyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMS0wNC0yOCAgU2Vy
Z2V5IFZvcm9ieWV2ICA8c2VyZ2V5dm9yb2J5ZXZAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBCYWNrZ3Jv
dW5kIG5ldHdvcmsgZXZlbnRzIGNvbGxlY3Rpb24gLSBhZGQgR1VJIHRvIEluc3BlY3Rvci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9h
ZC1yZW9wZW4uaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudHNDb2xsZWN0b3I6OmNsZWFyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kUHJveHk6OmdldEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJv
eHkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNv
dXJjZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJh
Y2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Ojpzd2l0Y2hCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291
cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVN0
YXR1c2JhckJ1dHRvbnMuY2FsbGJhY2tFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU3RhdHVzYmFyQnV0
dG9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fdG9n
Z2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5iYWNr
Z3JvdW5kLWV2ZW50cy1jb2xsZWN0aW9uLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGgpOgorICAgICAg
ICAoLmJhY2tncm91bmQtZXZlbnRzLWNvbGxlY3Rpb24tc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQt
b24gLmdseXBoKToKKwogMjAxMS0wNC0yOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAppbmRleCAxYzM2NWNmLi43MzkxYTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcApAQCAtNDgsNiArNDgs
MTEgQEAgdm9pZCBFdmVudHNDb2xsZWN0b3I6OmFkZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKICAgICB9CiB9CiAKK3ZvaWQgRXZlbnRzQ29sbGVjdG9yOjpjbGVhcigpCit7CisgICAgbV9l
dmVudHMuY2xlYXIoKTsKK30KKwogdm9pZCBFdmVudHNDb2xsZWN0b3I6OnNlbmRDb2xsZWN0ZWRF
dmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiByZWNlaXZlcikKIHsKICAgICBmb3IgKFZl
Y3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fZXZlbnRzLmJlZ2luKCk7IGl0ICE9IG1fZXZl
bnRzLmVuZCgpOyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2
ZW50c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rv
ci5oCmluZGV4IGQ1M2UxMDkuLmUyNmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RXZlbnRzQ29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIEV2ZW50c0Nv
bGxlY3RvcigpOwogICAgIH5FdmVudHNDb2xsZWN0b3IoKSB7IH0KICAgICB2b2lkIGFkZEV2ZW50
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgc2Vu
ZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYXBhY2l0eSA9IDEwMjQqMTAyNDsgLy8gMSBNYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGM2MGIyYTYuLjIxNTRm
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTQ0Niw2ICs0
NDYsMTkgQEAKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0aW9u
IjogIk1hcCB3aXRoIGV4dHJhIEhUVFAgaGVhZGVycy4iIH0KICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInN3
aXRjaEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG8iLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJBbGxvdyB0dXJuIG9uL29mZiBiYWNrZ3JvdW5kIG5ldHdvcmsgZXZlbnRzIGNv
bGxlY3Rpb24uIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlw
dGlvbiI6ICJ0cnVlIC0gZW5hYmxlIGNvbGxlY3Rpb24sIGZhbHNlIC0gZGlzYWJsZSIgfQorICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkIiwKKyAgICAg
ICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
bmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAppbmRleCA0ZTIxODhk
Li5hMWYyZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwxMSBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kUHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsKIH0KIAorSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5OjpnZXRJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoKQoreworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQorCiB2b2lkIEluc3BlY3RvckZyb250
ZW5kUHJveHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqIGNvbGxlY3RvcikK
IHsKICAgICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmluZGV4IDI1OWFmNjcuLjVmZWEzMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJv
eHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJv
bnRlbmRQcm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBnZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2b2lkIHNldEV2ZW50c0NvbGxl
Y3RvcihFdmVudHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzY2M4ZTQ0Li4xM2Q0
YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VBZ2Vu
dEVuYWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBl
eHRyYVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CitzdGF0aWMgY29u
c3QgY2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWRbXSA9ICJiYWNrZ3JvdW5k
RXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKQEAgLTg1LDEzICs4
NiwxNCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKiBmcm9udGVuZCkKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJG
cm9udGVuZCgpCiB7CiAgICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgp
KSB7Ci0gICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKDApOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQuZ2V0KCk7
Ci0gICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9IGVs
c2UgewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAgICBkaXNhYmxlKDApOworICAg
IH0KICAgICBtX3VzZXJBZ2VudE92ZXJyaWRlID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXN0b3JlKCkKQEAgLTE4Myw4ICsxODUsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVk
UmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzbwogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKQogewogICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291
cmNlQWdlbnRTdGF0ZTo6cmVzb3VyY2VBZ2VudEVuYWJsZWQpKSB7Ci0gICAgICAgIEVycm9yU3Ry
aW5nIGVycm9yOwotICAgICAgICBkaXNhYmxlKCZlcnJvcik7CisgICAgICAgIGRpc2FibGUoMCk7
CiAgICAgfQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNv
dXJjZUFnZW50KCkpOwogfQpAQCAtMzMxLDEyICszMzIsMzIgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQogCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJv
b2wqIGVuYWJsZWQpCit7CisgICAgKCplbmFibGVkKSA9IGJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZCgpOworfQorCiBib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpCiB7Ci0gICAgLy8gRklYTUUgKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MikKLSAgICAvLyBBZGQgaGVyZSBjb25k
aXRpb24gdG8gZW5hYmxlIGJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24uCi0gICAgLy8gTm93
IHRoaXMgZnVuY3Rpb24gaXMgZGlzYWJsZS4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpiYWNrZ3JvdW5kRXZlbnRz
Q29sbGVjdGlvbkVuYWJsZWQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnN3
aXRjaEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG8oRXJyb3JTdHJpbmcqLCBib29sJiBlbmFi
bGVkKQoreworICAgIGlmIChlbmFibGVkID09IGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgLy8g
SW5zZXJ0IE1lc3NhZ2UgUHJveHkgaW4gcmVjZWl2ZXIgY2hhaW4uCisgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogY2xpZW50ID0gbV9mcm9udGVuZC0+Z2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKCk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKGNsaWVudCk7CisgICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFRha2Ugb3V0IE1lc3NhZ2UgUHJveHkgZnJvbSByZXZlaXZl
ciBjaGFpbi4KKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+Z2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkp
OworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCgwKTsKKyAgICAgICAgbV9ldmVudHNDb2xsZWN0b3ItPmNsZWFyKCk7CisgICAgfQor
ICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6YmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLCBlbmFibGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAtMzcyLDEyICszOTMsMTMg
QEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwg
bV9zdGF0ZShzdGF0ZSkKKyAgICAsIG1fZXZlbnRzQ29sbGVjdG9yKGFkb3B0UHRyKG5ldyBFdmVu
dHNDb2xsZWN0b3IoKSkpCisgICAgLCBtX2luc3BlY3RvckZyb250ZW5kUHJveHkoYWRvcHRQdHIo
bmV3IEluc3BlY3RvckZyb250ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKSkKKyAg
ICAvLyBDcmVhdGUgbW9jayBmcm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVu
dHMuCisgICAgLCBtX21vY2tGcm9udGVuZChhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6
Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKSkpCiB7CisgICAgLy8gQ3Jl
YXRlIG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRzLgogICAg
IGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBtX2V2
ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHNDb2xsZWN0b3IpOwotICAgICAgICBt
X2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRQ
cm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkpOwotICAgICAgICAvLyBDcmVhdGUgbW9jayBm
cm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCi0gICAgICAgIG1fbW9j
a0Zyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrKG1faW5z
cGVjdG9yRnJvbnRlbmRQcm94eS5nZXQoKSkpOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2Nr
RnJvbnRlbmQuZ2V0KCk7CiAgICAgICAgIGVuYWJsZSgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZDYw
ZDIxZi4uNWVkNzJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMDUsOSArMTA1LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAjZW5kaWYKIAot
ICAgIGJvb2wgYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7CisgICAgRnJhbWUq
IGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKKyAgICB2b2lkIGJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wqIGVuYWJsZWQpOworICAg
IHZvaWQgc3dpdGNoQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25UbyhFcnJvclN0cmluZyosIGJv
b2wmIGVuYWJsZWQpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQgCisgICAgLy8gQ2Fs
bGVkIGZyb20gZnJvbnRlbmQKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CkBAIC0xMTcsMTUgKzExOSwx
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKik7CiAK
KyAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpOwogICAgIHZvaWQg
ZW5hYmxlKCk7CiAKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2Vu
dHM7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JT
dGF0ZSogbV9zdGF0ZTsKLSAgICBPd25QdHI8RXZlbnRzQ29sbGVjdG9yPiBtX2V2ZW50c0NvbGxl
Y3RvcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayogbV9mcm9udGVuZDsKLSAgICBP
d25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcms+IG1fbW9ja0Zyb250ZW5kOworICAgIE93
blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRzQ29sbGVjdG9yOwogICAgIE93blB0cjxJbnNw
ZWN0b3JGcm9udGVuZFByb3h5PiBtX2luc3BlY3RvckZyb250ZW5kUHJveHk7CisgICAgT3duUHRy
PEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKICAgICBTdHJpbmcg
bV91c2VyQWdlbnRPdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggOGE2YTFiNS4uZTQzMjllMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMKQEAgLTk5LDcgKzk5LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUg
PSB7CiAKICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0
aGlzLl9sYXJnZXJSZXNvdXJjZXNCdXR0b24uZWxlbWVudCwgdGhpcy5fcHJlc2VydmVMb2dUb2dn
bGUuZWxlbWVudCwgdGhpcy5fY2xlYXJCdXR0b24uZWxlbWVudCwgdGhpcy5fZmlsdGVyQmFyRWxl
bWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5fbGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmVsZW1l
bnQsIHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLmVsZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9uLmVs
ZW1lbnQsIHRoaXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlLmVsZW1lbnQsIHRo
aXMuX2ZpbHRlckJhckVsZW1lbnRdOwogICAgIH0sCiAKICAgICBpc0NhdGVnb3J5VmlzaWJsZTog
ZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQpAQCAtNjAwLDYgKzYwMCwxNiBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9jcmVhdGVTdGF0dXNiYXJCdXR0b25z
OiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGZ1
bmN0aW9uIGNhbGxiYWNrRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoZXJyb3IsIGVuYWJsZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHNlbGYuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9n
Z2xlLnRvZ2dsZWQgPSBlbmFibGVkOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2JhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0
b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0IG5ldHdvcmsgZXZlbnRzIHdpdGggY2xv
c2VkIEZyb250ZW5kIiksICJiYWNrZ3JvdW5kLWV2ZW50cy1jb2xsZWN0aW9uLXN0YXR1cy1iYXIt
aXRlbSIpOworICAgICAgICBOZXR3b3JrQWdlbnQuYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25F
bmFibGVkKGNhbGxiYWNrRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOworICAgICAgICB0aGlzLl9i
YWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICAgICAgdGhpcy5fYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25Ub2dnbGUuZWxlbWVu
dC5pZCA9ICJ0b2dnbGUtYmFja2dyb3VuZC1ldmVudHMtY29sbGVjdGlvbiI7CisKICAgICAgICAg
dGhpcy5fcHJlc2VydmVMb2dUb2dnbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRv
bihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXNlcnZlIExvZyB1cG9uIE5hdmlnYXRpb24iKSwg
InJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSIpOwogICAgICAgICB0aGlzLl9wcmVzZXJ2
ZUxvZ1RvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uUHJlc2VydmVMb2dD
bGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIApAQCAtNzEwLDYgKzcyMCwxMiBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnNjcm9sbFRvTGFzdFJvdygpOwogICAgIH0sCiAKKyAgICBfdG9nZ2xlQmFja2dyb3VuZEV2
ZW50c0NvbGxlY3Rpb246IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICB0aGlzLl9iYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvblRvZ2dsZS50b2dnbGVkID0gIXRoaXMuX2JhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uVG9nZ2xlLnRvZ2dsZWQ7CisgICAgICAgIE5ldHdvcmtBZ2VudC5zd2l0Y2hC
YWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblRvKHRoaXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uVG9nZ2xlLnRvZ2dsZWQpOworICAgIH0sCisKICAgICBfb25QcmVzZXJ2ZUxvZ0NsaWNrZWQ6
IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dn
bGVkID0gIXRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA2MDc1NDYxLi5jMGY0ZTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMK
QEAgLTU1LDE2ICs1NSwxNyBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAKIFdlYkluc3BlY3Rvci5T
ZXR0aW5ncyA9IGZ1bmN0aW9uKCkKIHsKKyAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRp
bmcoImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uIiwgZmFsc2UpOwogICAgIHRoaXMuaW5zdGFs
bEFwcGxpY2F0aW9uU2V0dGluZygiY29sb3JGb3JtYXQiLCAiaGV4Iik7CiAgICAgdGhpcy5pbnN0
YWxsQXBwbGljYXRpb25TZXR0aW5nKCJjb25zb2xlSGlzdG9yeSIsIFtdKTsKICAgICB0aGlzLmlu
c3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImRlYnVnZ2VyRW5hYmxlZCIsIGZhbHNlKTsKICAgICB0
aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImRvbVdvcmRXcmFwIiwgdHJ1ZSk7Ci0gICAg
dGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJwcm9maWxlckVuYWJsZWQiLCBmYWxzZSk7
CiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJldmVudExpc3RlbmVyc0ZpbHRl
ciIsICJhbGwiKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImxhc3RBY3Rp
dmVQYW5lbCIsICJlbGVtZW50cyIpOwogICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGlu
ZygibGFzdFZpZXdlZFNjcmlwdEZpbGUiLCAiYXBwbGljYXRpb24iKTsKICAgICB0aGlzLmluc3Rh
bGxBcHBsaWNhdGlvblNldHRpbmcoIm1vbml0b3JpbmdYSFJFbmFibGVkIiwgZmFsc2UpOwogICAg
IHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygicGF1c2VPbkV4Y2VwdGlvblN0YXRlIiwg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5QYXVzZU9uRXhjZXB0aW9uc1N0YXRlLkRvbnRQYXVz
ZU9uRXhjZXB0aW9ucyk7CisgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJwcm9m
aWxlckVuYWJsZWQiLCBmYWxzZSk7CiAgICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5n
KCJyZXNvdXJjZXNMYXJnZVJvd3MiLCB0cnVlKTsKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlv
blNldHRpbmcoInJlc291cmNlc1NvcnRPcHRpb25zIiwge3RpbWVPcHRpb246ICJyZXNwb25zZVRp
bWUiLCBzaXplT3B0aW9uOiAidHJhbnNmZXJTaXplIn0pOwogICAgIHRoaXMuaW5zdGFsbEFwcGxp
Y2F0aW9uU2V0dGluZygicmVzb3VyY2VWaWV3VGFiIiwgImNvbnRlbnQiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCAxNWU2Y2I4
Li5iNDlmMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzCkBAIC00MTA0LDYgKzQxMDQsMTUgQEAgYm9keS5pbmFjdGl2ZSBsaS5zZWxl
Y3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKIGJ1dHRvbi5lbmFibGUtdG9nZ2xlLXN0YXR1
cy1iYXItaXRlbSAuZ2x5cGggewogfQogCisuYmFja2dyb3VuZC1ldmVudHMtY29sbGVjdGlvbi1z
dGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKKyAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChJbWFn
ZXMvcmVjb3JkQnV0dG9uR2x5cGgucG5nKTsKK30KKworLmJhY2tncm91bmQtZXZlbnRzLWNvbGxl
Y3Rpb24tc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKKyAgICAtd2Via2l0LW1h
c2staW1hZ2U6IHVybChJbWFnZXMvcmVjb3JkVG9nZ2xlZEJ1dHRvbkdseXBoLnBuZyk7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNiwgMCwgMCkgIWltcG9ydGFudDsKK30KKwogLnJlY29y
ZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogICAgIC13ZWJraXQtbWFzay1pbWFn
ZTogdXJsKEltYWdlcy9yZWNvcmRCdXR0b25HbHlwaC5wbmcpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91650</attachid>
            <date>2011-04-29 01:19:57 -0700</date>
            <delta_ts>2011-04-29 06:53:13 -0700</delta_ts>
            <desc>Fix merge conflicts in gtk</desc>
            <filename>gui</filename>
            <type>text/plain</type>
            <size>17498</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkN2E1NDA1Li5jOGQwZDk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQt
MjggIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4t
bG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNC0yOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5z
a2lwIHNvbWUgdGVzdHMgdGhhdCB3ZXJlIGZhaWxpbmcgZHVlIHRvIGxvY2FsIGlzc3VlcyBvbiB0
aGUgYm90cyB0aGF0IGhhdmUgYmVlbiByZXNvbHZlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmVlZGYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgZGlzcGxheXMg
cmVzb3VyY2UgY29udGVudCBjb3JyZWN0bHkgYWZ0ZXIgdGhlIG9wZW4gLSBsb2FkIC0gcmVvcGVu
IHNlcXVlbmNlLgorCisKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6
ZT01MDAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxv
YWQtcmVvcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjEzNTg1OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCkBAIC0w
LDAgKzEsNTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7
CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCisgICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQg
YmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHdpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCA9IHRydWU7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0sIDApOwor
fQorCitmdW5jdGlvbiBsb2FkSW1hZ2VzKCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAiKTsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3Vy
Y2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJlb3Bl
bmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9u
ID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgi
bmV0d29yayIpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvZ2dsZS1i
YWNrZ3JvdW5kLWV2ZW50cy1jb2xsZWN0aW9uIikuY2xpY2soKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXMoKSIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIHJlc291cmNlc0NvdW50ID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGg7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VzIGNvdW50ID0gIiArIHJlc291cmNlc0NvdW50
KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXNvdXJjZXNDb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlc291cmNlc1tpXS51cmwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCis8
L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rl
c3RzIHRoYXQgbmV0d29yayBwYW5lbCBkaXNwbGF5cyByZXNvdXJjZSBjb250ZW50IGNvcnJlY3Rs
eSBhZnRlciB0aGUgb3BlbiAtIGxvYWQgLSByZW9wZW4gc2VxdWVuY2UuCis8L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQzMTA4OC4uMGIwOWFlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDExLTA0LTI4ICBTZXJnZXkgVm9yb2J5ZXYgIDxzZXJnZXl2b3JvYnll
dkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEJhY2tncm91bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlv
biAtIGFkZCBHVUkgdG8gSW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50c0Nv
bGxlY3Rvcjo6Y2xlYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRQcm94eTo6Z2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnN3aXRjaEJh
Y2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwu
cHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU3RhdHVzYmFyQnV0dG9ucy5jYWxsYmFja0V2ZW50
c0NvbGxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwu
cHJvdG90eXBlLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlv
bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAg
ICAoLmJhY2tncm91bmQtZXZlbnRzLWNvbGxlY3Rpb24tc3RhdHVzLWJhci1pdGVtIC5nbHlwaCk6
CisgICAgICAgICguYmFja2dyb3VuZC1ldmVudHMtY29sbGVjdGlvbi1zdGF0dXMtYmFyLWl0ZW0u
dG9nZ2xlZC1vbiAuZ2x5cGgpOgorCiAyMDExLTA0LTI4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwCmluZGV4IDFjMzY1
Y2YuLjczOTFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHND
b2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0
b3IuY3BwCkBAIC00OCw2ICs0OCwxMSBAQCB2b2lkIEV2ZW50c0NvbGxlY3Rvcjo6YWRkRXZlbnQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIH0KIAordm9pZCBFdmVudHNDb2xsZWN0b3I6
OmNsZWFyKCkKK3sKKyAgICBtX2V2ZW50cy5jbGVhcigpOworfQorCiB2b2lkIEV2ZW50c0NvbGxl
Y3Rvcjo6c2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIHJlY2Vp
dmVyKQogewogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gbV9ldmVudHMu
YmVnaW4oKTsgaXQgIT0gbV9ldmVudHMuZW5kKCk7ICsraXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKaW5kZXggZDUzZTEwOS4uZTI2ZTEwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaApAQCAtNDAsNiArNDAsNyBAQCBw
dWJsaWM6CiAgICAgRXZlbnRzQ29sbGVjdG9yKCk7CiAgICAgfkV2ZW50c0NvbGxlY3RvcigpIHsg
fQogICAgIHZvaWQgYWRkRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIGNs
ZWFyKCk7CiAgICAgdm9pZCBzZW5kQ29sbGVjdGVkRXZlbnRzKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCopOwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENhcGFjaXR5ID0g
MTAyNCoxMDI0OyAvLyAxIE1iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
aW5kZXggYzYwYjJhNi4uMjE1NGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtNDQ2LDYgKzQ0NiwxOSBAQAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAidHlwZSI6ICJv
YmplY3QiLCAiZGVzY3JpcHRpb24iOiAiTWFwIHdpdGggZXh0cmEgSFRUUCBoZWFkZXJzLiIgfQog
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgIm5hbWUiOiAic3dpdGNoQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25UbyIsCisg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFsbG93IHR1cm4gb24vb2ZmIGJhY2tncm91
bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6
ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogInRydWUgLSBlbmFibGUgY29sbGVjdGlvbiwgZmFs
c2UgLSBkaXNhYmxlIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJiYWNrZ3JvdW5kRXZlbnRzQ29sbGVj
dGlvbkVuYWJsZWQiLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiB9CisgICAgICAg
ICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJv
eHkuY3BwCmluZGV4IDRlMjE4OGQuLmExZjJmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKQEAgLTU1LDYgKzU1LDExIEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lCiAgICAgbV9yZWNlaXZlciA9IHJlY2VpdmVyOwogfQog
CitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckZyb250ZW5kUHJveHk6OmdldElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpCit7CisgICAgcmV0dXJuIG1fcmVjZWl2ZXI7Cit9CisK
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50c0Nv
bGxlY3RvciogY29sbGVjdG9yKQogewogICAgIG1fY29sbGVjdG9yID0gY29sbGVjdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmgKaW5k
ZXggMjU5YWY2Ny4uNWZlYTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFByb3h5KCkgeyB9CiAKICAgICB2b2lkIHNldEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGdldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpOwogICAg
IHZvaWQgc2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50c0NvbGxlY3RvciopOwogICAgIHZpcnR1YWwg
Ym9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
CmluZGV4IDNjYzhlNDQuLjEzZDRjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFJlc291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29u
c3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291cmNlQWdlbnRFbmFibGVkIjsK
IHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNbXSA9ICJleHRyYVJlcXVlc3RI
ZWFkZXJzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCI7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQpAQCAtODUsMTMgKzg2LDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBpZiAoYmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5
LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CiAgICAgICAgIG1fZnJvbnRlbmQgPSBt
X21vY2tGcm9udGVuZC5nZXQoKTsKLSAgICB9IGVsc2UKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CisgICAgICAgIG1fZnJv
bnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250ZW5kUHJv
eHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZnJvbnRlbmQgPSAwOwotCisgICAg
ICAgIGRpc2FibGUoMCk7CisgICAgfQogICAgIG1fdXNlckFnZW50T3ZlcnJpZGUgPSAiIjsKLSAg
ICBkaXNhYmxlKDApOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc3RvcmUo
KQpAQCAtMTgzLDggKzE4NSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvCiBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpCiB7CiAgICAgaWYgKG1fc3Rh
dGUtPmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5hYmxlZCkp
IHsKLSAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgICAgIGRpc2FibGUoJmVycm9yKTsK
KyAgICAgICAgZGlzYWJsZSgwKTsKICAgICB9CiAgICAgQVNTRVJUKCFtX2luc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSk7CiB9CkBAIC0zMzEsMTIgKzMzMiwzMiBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKK3Zv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCkKK3sKKyAgICAoKmVuYWJsZWQpID0gYmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7Cit9CisKIGJvb2wgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkKIHsKLSAgICAv
LyBGSVhNRSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyKQot
ICAgIC8vIEFkZCBoZXJlIGNvbmRpdGlvbiB0byBlbmFibGUgYmFja2dyb3VuZCBldmVudHMgY29s
bGVjdGlvbi4KLSAgICAvLyBOb3cgdGhpcyBmdW5jdGlvbiBpcyBkaXNhYmxlLgotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3Rh
dGU6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c3dpdGNoQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25UbyhFcnJv
clN0cmluZyosIGJvb2wmIGVuYWJsZWQpCit7CisgICAgaWYgKGVuYWJsZWQgPT0gYmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5h
YmxlZCkgeworICAgICAgICAvLyBJbnNlcnQgTWVzc2FnZSBQcm94eSBpbiByZWNlaXZlciBjaGFp
bi4KKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjbGllbnQgPSBtX2Zyb250ZW5k
LT5nZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoY2xpZW50KTsKKyAgICAgICAg
bV9mcm9udGVuZC0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRl
bmRQcm94eS5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGFrZSBvdXQgTWVzc2Fn
ZSBQcm94eSBmcm9tIHJldmVpdmVyIGNoYWluLgorICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5nZXRJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+
c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2V2ZW50c0NvbGxlY3Rv
ci0+Y2xlYXIoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3Vy
Y2VBZ2VudFN0YXRlOjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQsIGVuYWJsZWQp
OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyop
CkBAIC0zNzIsMTIgKzM5MywxMyBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgIDogbV9p
bnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2Vu
dChwYWdlQWdlbnQpCiAgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgICwgbV9ldmVudHNDb2xsZWN0
b3IoYWRvcHRQdHIobmV3IEV2ZW50c0NvbGxlY3RvcigpKSkKKyAgICAsIG1faW5zcGVjdG9yRnJv
bnRlbmRQcm94eShhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0Nv
bGxlY3Rvci5nZXQoKSkpKQorICAgIC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4g
Y29sbGVjdCBuZXR3b3JrIGV2ZW50cy4KKyAgICAsIG1fbW9ja0Zyb250ZW5kKGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0
KCkpKSkKIHsKKyAgICAvLyBDcmVhdGUgbW9jayBmcm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3Qg
bmV0d29yayBldmVudHMuCiAgICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIG1fZXZlbnRzQ29sbGVjdG9yID0gYWRvcHRQdHIobmV3IEV2ZW50c0Nv
bGxlY3Rvcik7Ci0gICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eSA9IGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JGcm9udGVuZFByb3h5KG1fZXZlbnRzQ29sbGVjdG9yLmdldCgpKSk7Ci0gICAg
ICAgIC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3JrIGV2
ZW50cy4KLSAgICAgICAgbV9tb2NrRnJvbnRlbmQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJv
bnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKSk7CiAgICAgICAg
IG1fZnJvbnRlbmQgPSBtX21vY2tGcm9udGVuZC5nZXQoKTsKICAgICAgICAgZW5hYmxlKCk7CiAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaAppbmRleCBkNjBkMjFmLi41ZWQ3MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTEwNSw5ICsxMDUsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKICNlbmRpZgogCi0gICAgYm9vbCBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVu
YWJsZWQoKTsKKyAgICBGcmFtZSogZnJhbWVGb3JJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwor
ICAgIHZvaWQgYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwg
Ym9vbCogZW5hYmxlZCk7CisgICAgdm9pZCBzd2l0Y2hCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlv
blRvKEVycm9yU3RyaW5nKiwgYm9vbCYgZW5hYmxlZCk7CiAKLSAgICAvLyBDYWxsZWQgZnJvbSBm
cm9udGVuZCAKKyAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAogICAgIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBz
ZXRVc2VyQWdlbnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KTsKQEAgLTExNywxNSArMTE5LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kiwg
SW5zcGVjdG9yU3RhdGUqKTsKIAorICAgIGJvb2wgYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25F
bmFibGVkKCk7CiAgICAgdm9pZCBlbmFibGUoKTsKIAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMq
IG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFn
ZW50OwogICAgIEluc3BlY3RvclN0YXRlKiBtX3N0YXRlOwotICAgIE93blB0cjxFdmVudHNDb2xs
ZWN0b3I+IG1fZXZlbnRzQ29sbGVjdG9yOwogICAgIEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3Jr
KiBtX2Zyb250ZW5kOwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yaz4gbV9t
b2NrRnJvbnRlbmQ7CisgICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rvcj4gbV9ldmVudHNDb2xsZWN0
b3I7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kUHJveHk+IG1faW5zcGVjdG9yRnJvbnRl
bmRQcm94eTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcms+IG1fbW9ja0Zy
b250ZW5kOwogICAgIFN0cmluZyBtX3VzZXJBZ2VudE92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA4
YTZhMWI1Li5lNDMyOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtOTksNyArOTksNyBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAg
ewotICAgICAgICByZXR1cm4gW3RoaXMuX2xhcmdlclJlc291cmNlc0J1dHRvbi5lbGVtZW50LCB0
aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS5lbGVtZW50LCB0aGlzLl9jbGVhckJ1dHRvbi5lbGVtZW50
LCB0aGlzLl9maWx0ZXJCYXJFbGVtZW50XTsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl9sYXJnZXJS
ZXNvdXJjZXNCdXR0b24uZWxlbWVudCwgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuZWxlbWVudCwg
dGhpcy5fY2xlYXJCdXR0b24uZWxlbWVudCwgdGhpcy5fYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rp
b25Ub2dnbGUuZWxlbWVudCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudF07CiAgICAgfSwKIAogICAg
IGlzQ2F0ZWdvcnlWaXNpYmxlOiBmdW5jdGlvbihjYXRlZ29yeU5hbWUpCkBAIC02MDAsNiArNjAw
LDE2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2Ny
ZWF0ZVN0YXR1c2JhckJ1dHRvbnM6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHZhciBzZWxm
ID0gdGhpczsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZChlcnJvciwgZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgc2VsZi5fYmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb25Ub2dnbGUudG9nZ2xlZCA9IGVuYWJsZWQ7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25Ub2dnbGUgPSBuZXcgV2ViSW5z
cGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgbmV0
d29yayBldmVudHMgd2l0aCBjbG9zZWQgRnJvbnRlbmQiKSwgImJhY2tncm91bmQtZXZlbnRzLWNv
bGxlY3Rpb24tc3RhdHVzLWJhci1pdGVtIik7CisgICAgICAgIE5ldHdvcmtBZ2VudC5iYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoY2FsbGJhY2tFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZCk7CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rp
b24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvblRvZ2dsZS5lbGVtZW50LmlkID0gInRvZ2dsZS1iYWNrZ3JvdW5kLWV2ZW50cy1jb2xs
ZWN0aW9uIjsKKwogICAgICAgICB0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJlc2VydmUgTG9n
IHVwb24gTmF2aWdhdGlvbiIpLCAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIik7CiAg
ICAgICAgIHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fb25QcmVzZXJ2ZUxvZ0NsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogCkBAIC03MTAs
NiArNzIwLDEyIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2Nyb2xsVG9MYXN0Um93KCk7CiAgICAgfSwKIAorICAg
IF90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbjogZnVuY3Rpb24oZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG9nZ2xlLnRvZ2dsZWQgPSAh
dGhpcy5fYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25Ub2dnbGUudG9nZ2xlZDsKKyAgICAgICAg
TmV0d29ya0FnZW50LnN3aXRjaEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uVG8odGhpcy5fYmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25Ub2dnbGUudG9nZ2xlZCk7CisgICAgfSwKKwogICAgIF9v
blByZXNlcnZlTG9nQ2xpY2tlZDogZnVuY3Rpb24oZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3By
ZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQgPSAhdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUudG9nZ2xl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cwppbmRleCAyOWRmNThkLi5jZmZhNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC00MTEyLDYgKzQxMTIsMTUgQEAgYm9keS5p
bmFjdGl2ZSBsaS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKIGJ1dHRvbi5lbmFi
bGUtdG9nZ2xlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogfQogCisuYmFja2dyb3VuZC1ldmVu
dHMtY29sbGVjdGlvbi1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKKyAgICAtd2Via2l0LW1hc2st
aW1hZ2U6IHVybChJbWFnZXMvcmVjb3JkQnV0dG9uR2x5cGgucG5nKTsKK30KKworLmJhY2tncm91
bmQtZXZlbnRzLWNvbGxlY3Rpb24tc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsK
KyAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChJbWFnZXMvcmVjb3JkVG9nZ2xlZEJ1dHRvbkds
eXBoLnBuZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNiwgMCwgMCkgIWltcG9ydGFu
dDsKK30KKwogLnJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogICAgIC13
ZWJraXQtbWFzay1pbWFnZTogdXJsKEltYWdlcy9yZWNvcmRCdXR0b25HbHlwaC5wbmcpOwogfQo=
</data>
<flag name="review"
          id="84508"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91674</attachid>
            <date>2011-04-29 06:53:13 -0700</date>
            <delta_ts>2011-05-11 05:25:22 -0700</delta_ts>
            <desc>fix error after review</desc>
            <filename>gui2</filename>
            <type>text/plain</type>
            <size>19236</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkN2E1NDA1Li4zOTRiZmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQt
MjkgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZW9wZW5Gcm9u
dGVuZCgpIHRvIGluc3BlY3Rvci10ZXN0LmpzCisgICAgICAgIEFkZCBmaXJzdCB0ZXN0IGZvciBi
YWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJh
Y2tncm91bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlvbiAtIGFkZCBHVUkgdG8gSW5zcGVjdG9y
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIK
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
b3Blbi1sb2FkLXJlb3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbDoK
KwogMjAxMS0wNC0yOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5za2lwIHNvbWUgdGVzdHMgdGhhdCB3ZXJlIGZhaWxpbmcgZHVlIHRvIGxvY2FsIGlzc3VlcyBv
biB0aGUgYm90cyB0aGF0IGhhdmUgYmVlbiByZXNvbHZlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA5ZDAxNmYzLi5hZjM5
NGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcwpAQCAtMzE1LDYgKzMxNSwxOCBAQCBJbnNwZWN0b3JUZXN0LnRleHRDb250ZW50
V2l0aExpbmVCcmVha3MgPSBmdW5jdGlvbihub2RlKQogCiB2YXIgcnVuVGVzdENhbGxJZCA9IDA7
CiB2YXIgY29tcGxldGVUZXN0Q2FsbElkID0gMTsKK3ZhciByZW9wZW5lZEZyb250ZW5kQ291bnQg
PSAwOworCitmdW5jdGlvbiByZW9wZW5Gcm9udGVuZCgpIHsKKyAgICAvLyBEbyB0aGlzIGFzeW5j
aHJvbm91c2x5IHRvIGFsbG93IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHRvIHNlbmQgcmVz
cG9uc2UKKyAgICAvLyBiYWNrIHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBkZXN0cm95ZWQu
CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgcmVvcGVuZWRGcm9udGVuZENv
dW50Kys7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICAg
ICAgcnVuVGVzdCgpOworICAgIH0sIDApOworfQogCiBmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlz
TG9hZGVkKCkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVu
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzFmYzY2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorVGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIGRpc3BsYXlzIHJlc291cmNlIGNvbnRlbnQgY29y
cmVjdGx5IGFmdGVyIHRoZSBvcGVuIC0gbG9hZCAtIHJlb3BlbiBzZXF1ZW5jZS4KKworCitSZW9w
ZW5lZCBmcm9udGVuZCAxIHRpbWVzCityZXNvdXJjZXMgY291bnQgPSAyCitodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnNpemU9NTAwCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
b3Blbi1sb2FkLXJlb3Blbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNWNjNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRt
bApAQCAtMCwwICsxLDU3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXMo
KQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAg
IGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1p
bWFnZSZzaXplPTUwMCIpOworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJj
ZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291
cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAw
OworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGlmICgrK2xvYWRlZFJlc291cmNl
Q291bnQgPT09IDIpIHsKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInJlb3Bl
bmVkRnJvbnRlbmRDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0
Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJuZXR3b3JrIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
X3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzKCkiKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZW9wZW5lZCBm
cm9udGVuZCAiICsgcmVzdWx0Ll9kZXNjcmlwdGlvbiArICIgdGltZXMiKTsKKyAgICAgICAgICAg
IHZhciByZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXMubGVuZ3RoOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNl
cyBjb3VudCA9ICIgKyByZXNvdXJjZXNDb3VudCk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgcmVzb3VyY2VzQ291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbaV0udXJsKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
CisgICAgICAgIH0KKyAgICB9KTsKKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgbmV0d29yayBwYW5lbCBkaXNw
bGF5cyByZXNvdXJjZSBjb250ZW50IGNvcnJlY3RseSBhZnRlciB0aGUgb3BlbiAtIGxvYWQgLSBy
ZW9wZW4gc2VxdWVuY2UuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQu
dHh0CmluZGV4IDE5YjllZmIuLmUwZWMzOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0x
MCwyMSArMTAsMTAgQEAgUnVubmluZzogdGVzdFNvdXJjZUZyYW1lQ29udGVudAogPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhp
cyBhc3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBz
ZW5kIHJlc3BvbnNlCi0gICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVz
dHJveWVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJv
bnRlbmRSZW9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3Nl
V2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNw
ZWN0b3IoKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0
ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250
ZW5kUmVvcGVuZWQiLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVz
Y3JpcHRpb24gPT09ICJ1bmRlZmluZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoInJlb3BlbmVkRnJvbnRlbmRDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBp
ZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpCiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKaW5kZXgg
NDMxYzczNy4uNDdhNmFjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbApAQCAtNCwyMSArNCwxMCBAQAogPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhpcyBh
c3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5k
IHJlc3BvbnNlCi0gICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJv
eWVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJvbnRl
bmRSZW9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0
b3IoKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQiLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3Jp
cHRpb24gPT09ICJ1bmRlZmluZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
InJlb3BlbmVkRnJvbnRlbmRDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAo
cmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpCiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjQzMTA4OC4uNzY2N2I1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTA0LTI5
ICBTZXJnZXkgVm9yb2J5ZXYgIDxzZXJnZXl2b3JvYnlldkBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJh
Y2tncm91bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlvbiAtIGFkZCBHVUkgdG8gSW5zcGVjdG9y
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIK
KworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Bl
bi1sb2FkLXJlb3Blbi5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50c0NvbGxlY3Rvcjo6Y2xlYXIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6Z2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRQcm94eS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0QmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrUGFuZWwuZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya1BhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9u
KToKKwogMjAxMS0wNC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAppbmRleCAxYzM2NWNmLi43MzkxYTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcApAQCAtNDgsNiAr
NDgsMTEgQEAgdm9pZCBFdmVudHNDb2xsZWN0b3I6OmFkZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICB9CiB9CiAKK3ZvaWQgRXZlbnRzQ29sbGVjdG9yOjpjbGVhcigpCit7CisgICAg
bV9ldmVudHMuY2xlYXIoKTsKK30KKwogdm9pZCBFdmVudHNDb2xsZWN0b3I6OnNlbmRDb2xsZWN0
ZWRFdmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiByZWNlaXZlcikKIHsKICAgICBmb3Ig
KFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fZXZlbnRzLmJlZ2luKCk7IGl0ICE9IG1f
ZXZlbnRzLmVuZCgpOyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0V2ZW50c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxl
Y3Rvci5oCmluZGV4IGQ1M2UxMDkuLmUyNmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRXZlbnRzQ29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIEV2ZW50
c0NvbGxlY3RvcigpOwogICAgIH5FdmVudHNDb2xsZWN0b3IoKSB7IH0KICAgICB2b2lkIGFkZEV2
ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQg
c2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIHByaXZhdGU6
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYXBhY2l0eSA9IDEwMjQqMTAyNDsgLy8gMSBN
YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGM2MGIyYTYuLmY0
ZGNmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTQ0Niw2
ICs0NDYsMTkgQEAKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0
aW9uIjogIk1hcCB3aXRoIGV4dHJhIEhUVFAgaGVhZGVycy4iIH0KICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
InNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCIsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkFsbG93IHR1cm4gb24vb2ZmIGJhY2tncm91bmQgbmV0d29yayBldmVu
dHMgY29sbGVjdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRl
c2NyaXB0aW9uIjogInRydWUgLSBlbmFibGUgY29sbGVjdGlvbiwgZmFsc2UgLSBkaXNhYmxlIiB9
CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlIiwK
KyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0KICAg
ICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAppbmRleCA0
ZTIxODhkLi5hMWYyZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwxMSBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kUHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsKIH0KIAorSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5OjpnZXRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwoKQoreworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQorCiB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kUHJveHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqIGNvbGxl
Y3RvcikKIHsKICAgICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmluZGV4IDI1OWFmNjcuLjVm
ZWEzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVj
dG9yRnJvbnRlbmRQcm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBnZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2b2lkIHNldEV2ZW50
c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzY2M4ZTQ0
Li45MjI5OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCkBAIC02OCwxMiArNjgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIFJlc291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciByZXNv
dXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291cmNlQWdlbnRFbmFibGVkIjsKIHN0YXRpYyBjb25z
dCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNbXSA9ICJleHRyYVJlcXVlc3RIZWFkZXJzIjsKK3N0
YXRpYyBjb25zdCBjaGFyIGdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGVbXSA9ICJn
ZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7
CiAgICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5uZXR3b3JrKCk7Ci0gICAgaWYgKGJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKSB7CisgICAgaWYgKGdldEJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uU3RhdGUoKSkgewogICAgICAgICAvLyBJbnNlcnQgTWVzc2FnZSBQcm94eSBp
biByZWNlaXZlciBjaGFpbi4KICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjbGll
bnQgPSBtX2Zyb250ZW5kLT5nZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoY2xp
ZW50KTsKQEAgLTg0LDE0ICs4NSwxNiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIAogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKLSAgICBpZiAoYmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5
LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CisgICAgaWYgKGdldEJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uU3RhdGUoKSkgewogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJv
bnRlbmQuZ2V0KCk7Ci0gICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94
eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250ZW5kLT5z
ZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgp
KTsKKyAgICB9IGVsc2UgewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAgICBFcnJv
clN0cmluZyBlcnJvcjsKKyAgICAgICAgZGlzYWJsZSgmZXJyb3IpOworICAgIH0KICAgICBtX3Vz
ZXJBZ2VudE92ZXJyaWRlID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpyZXN0b3JlKCkKQEAgLTMzMSwxMiArMzM0LDMzIEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKIAotYm9vbCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKQordm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0
YXRlKEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCkKK3sKKyAgICAoKmVuYWJsZWQpID0gZ2V0
QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZSgpOworfQorCitib29sIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUoKQogewotICAg
IC8vIEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIp
Ci0gICAgLy8gQWRkIGhlcmUgY29uZGl0aW9uIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGV2ZW50cyBj
b2xsZWN0aW9uLgotICAgIC8vIE5vdyB0aGlzIGZ1bmN0aW9uIGlzIGRpc2FibGUuCi0gICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdlbnRT
dGF0ZTo6Z2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZSk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVk
KEVycm9yU3RyaW5nKiwgYm9vbCYgZW5hYmxlZCkKK3sKKyAgICBpZiAoZW5hYmxlZCA9PSBnZXRC
YWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZW5hYmxlZCkgeworICAgICAgICAvLyBJbnNlcnQgTWVzc2FnZSBQcm94eSBpbiByZWNlaXZl
ciBjaGFpbi4KKyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOworICAgICAgICBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGNsaWVudCA9IG1fZnJvbnRlbmQtPmdldEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCgpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbChjbGllbnQpOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBUYWtlIG91dCBNZXNzYWdlIFByb3h5IGZyb20gcmVjZWl2ZXIg
Y2hhaW4uCisgICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCht
X2luc3BlY3RvckZyb250ZW5kUHJveHktPmdldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwoMCk7CisgICAgICAgIG1fZXZlbnRzQ29sbGVjdG9yLT5jbGVhcigpOworICAgIH0KKyAg
ICByZXR1cm4gbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmdldEJhY2tn
cm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUsIGVuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCkBAIC0zNzIsMTIgKzM5NiwxMyBA
QCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X3N0YXRlKHN0YXRlKQorICAgICwgbV9ldmVudHNDb2xsZWN0b3IoYWRvcHRQdHIobmV3IEV2ZW50
c0NvbGxlY3RvcigpKSkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eShhZG9wdFB0cihu
ZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkpKQorICAg
IC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3JrIGV2ZW50
cy4KKyAgICAsIG1fbW9ja0Zyb250ZW5kKGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZDo6
TmV0d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKSkKIHsKLSAgICBpZiAoYmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9ldmVudHNDb2xs
ZWN0b3IgPSBhZG9wdFB0cihuZXcgRXZlbnRzQ29sbGVjdG9yKTsKLSAgICAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kUHJveHkobV9l
dmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKLSAgICAgICAgLy8gQ3JlYXRlIG1vY2sgZnJvbnRlbmQs
IHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRzLgotICAgICAgICBtX21vY2tGcm9udGVu
ZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayhtX2luc3BlY3RvckZy
b250ZW5kUHJveHkuZ2V0KCkpKTsKKyAgICAvLyBDcmVhdGUgbW9jayBmcm9udGVuZCwgc28gd2Ug
Y2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCisgICAgaWYgKGdldEJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uU3RhdGUoKSkgewogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQu
Z2V0KCk7CiAgICAgICAgIGVuYWJsZSgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZDYwZDIxZi4uMTI2
N2FmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCkBAIC0xMDUsOSArMTA1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsb3Nl
V2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAjZW5kaWYKIAotICAgIGJvb2wg
YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7CisgICAgdm9pZCBnZXRCYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCk7Cisg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcq
LCBib29sJiBlbmFibGVkKTsKIAotICAgIC8vIENhbGxlZCBmcm9tIGZyb250ZW5kIAorICAgIC8v
IENhbGxlZCBmcm9tIGZyb250ZW5kCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAg
ICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudE92ZXJy
aWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAtMTE3LDE1ICsx
MTgsMTYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSop
OwogCisgICAgYm9vbCBnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKCk7CiAgICAg
dm9pZCBlbmFibGUoKTsKIAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGlu
Z0FnZW50czsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3Bl
Y3RvclN0YXRlKiBtX3N0YXRlOwotICAgIE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRz
Q29sbGVjdG9yOwogICAgIEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrKiBtX2Zyb250ZW5kOwot
ICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yaz4gbV9tb2NrRnJvbnRlbmQ7Cisg
ICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rvcj4gbV9ldmVudHNDb2xsZWN0b3I7CiAgICAgT3duUHRy
PEluc3BlY3RvckZyb250ZW5kUHJveHk+IG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eTsKKyAgICBP
d25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcms+IG1fbW9ja0Zyb250ZW5kOwogICAgIFN0
cmluZyBtX3VzZXJBZ2VudE92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA4YTZhMWI1Li5jMGFjZjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcwpAQCAtMzAsNiArMzAsMTMgQEAKIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCA9
IGZ1bmN0aW9uKCkKIHsKKyAgICB2YXIgZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQgPSBmdW5jdGlv
bihlcnJvciwgZW5hYmxlZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRDb2xsZWN0
aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgfS5iaW5kKHRoaXMpOworICAgIHRoaXMuX2JhY2tn
cm91bmRDb2xsZWN0aW9uRW5hYmxlZCA9IHRydWU7CisgICAgTmV0d29ya0FnZW50LmdldEJhY2tn
cm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUoZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOworCiAg
ICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgIm5ldHdvcmsiKTsKIAogICAgIHRoaXMu
Y3JlYXRlU2lkZWJhcigpOwpAQCAtMTAxNyw2ICsxMDI0LDkgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2F2ZSBhbGwgYXMgSEFSIiksIHRoaXMuX2V4cG9ydEFs
bC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogCisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNl
cGFyYXRvcigpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJFbmFibGVkIGJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24iKSwg
dGhpcy5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5f
YmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKTsKKwogICAgICAgICBjb250ZXh0TWVudS5zaG93
KGV2ZW50KTsKICAgICB9LAogCkBAIC0xMDYzLDYgKzEwNzMsMTIgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5z
YXZlQXMocmVzb3VyY2UuZGlzcGxheU5hbWUgKyAiLmhhciIsIEpTT04uc3RyaW5naWZ5KGhhcikp
OwogICAgIH0sCiAKKyAgICBfdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb246IGZ1bmN0
aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25F
bmFibGVkID0gIXRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZDsKKyAgICAgICAgTmV0
d29ya0FnZW50LnNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCh0aGlzLl9iYWNr
Z3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQpOworICAgIH0sCisKICAgICBfdXBkYXRlT2Zmc2NyZWVu
Um93czogZnVuY3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBkYXRhVGFibGVCb2R5ID0gdGhp
cy5fZGF0YUdyaWQuZGF0YVRhYmxlQm9keTsK
</data>
<flag name="review"
          id="84538"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93110</attachid>
            <date>2011-05-11 05:25:22 -0700</date>
            <delta_ts>2011-05-12 11:19:37 -0700</delta_ts>
            <desc>Add 3 tests</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>26006</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYjI5MzFjLi5iZTFhYjFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDUt
MTEgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
Y2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9h
ZC1yZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisKIDIwMTEt
MDUtMTEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRoZSB0
ZXN0cyBhZGRlZCBieSByODYyMjQgZG9uJ3Qgd29yayBvbiBXZWJLaXQyL21hYy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXgg
NWMyNjdkOS4uM2U5NjBhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMyNCw2ICszMjQsMjggQEAgSW5zcGVjdG9yVGVz
dC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIAogdmFyIHJ1blRl
c3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7Cit2YXIgZnJvbnRlbmRS
ZW9wZW5pbmdDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgeworICAgIGNs
b3NlRnJvbnRlbmQob3BlbkZyb250ZW5kKTsKK30KKworZnVuY3Rpb24gY2xvc2VGcm9udGVuZChj
YWxsYmFjaykgeworICAgIC8vIERvIHRoaXMgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNwb25zZQorICAgIC8vIGJhY2sgdG8gdGhl
IGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOwor
ICAgICAgICBjYWxsYmFjaygpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiBvcGVuRnJvbnRl
bmQoKSB7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZnJvbnRlbmRSZW9w
ZW5pbmdDb3VudCsrOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9LCAwKTsKK30KIAogZnVuY3Rpb24gcnVu
QWZ0ZXJJZnJhbWVJc0xvYWRlZCgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWNsZWFyLWFmdGVyLWRpc2FibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kOTk0ZGMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1Rlc3QgdGhhdCBuZXR3b3JrIHBhbmVsIGlzIGVt
cHR5IGFmdGVyIHJlb3BlbmluZy4gRXZlbiBpZiBiZWZvcmUgcmVvcGVuaW5nIHJlc291cmNlcyBh
cmUgbG9hZGluZyBpbiBiYWNrZ3JvdW5kIGNvbGxlY3Rpb24gbW9kZS4KKworCitSZW9wZW5lZCBm
cm9udGVuZCAyIHRpbWVzCityZXNvdXJjZXMgY291bnQgPSAwCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1k
aXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDFjZWE3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1s
CkBAIC0wLDAgKzEsNjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZEltYWdlcygp
Cit7CisgICAgdmFyIHNpemUgPSA0MDAgKyAyMDAgKiBsb2FkZWRSZXNvdXJjZUNvdW50OworICAg
IHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNl
dEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXpl
PSIgKyBzaXplKTsKKyAgICBpbWFnZS5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2Fk
ZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5w
aHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplICsgIiZnemlwPXRydWUiKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9CisKK3ZhciBsb2FkZWRSZXNvdXJjZUNvdW50
ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVkKCkKK3sKKyAgICBsb2FkZWRSZXNvdXJjZUNv
dW50Kys7CisgICAgaWYgKGxvYWRlZFJlc291cmNlQ291bnQgJSAyID09PSAwKSB7CisgICAgICAg
IHJlb3BlbkZyb250ZW5kKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIp
IHsKKyAgICAgICAgICAgIC8vIFN3aXRjaCBvbi4KKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXMoKSIpOworICAg
ICAgICB9CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAgICAg
ICAgICAgIC8vIFN3aXRjaCBvZmYuCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzKCkiKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjIiKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVz
Y3JpcHRpb24gKyAiIHRpbWVzIik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2VzQ291bnQgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aDsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZXMgY291bnQgPSAiICsgcmVzb3VyY2Vz
Q291bnQpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc291cmNlc0NvdW50OyBpKysp
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW2ldLnVybCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfSk7CisK
K30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+CitUZXN0IHRoYXQgbmV0d29yayBwYW5lbCBpcyBlbXB0eSBhZnRlciByZW9wZW5pbmcuIEV2
ZW4gaWYgYmVmb3JlIHJlb3BlbmluZyByZXNvdXJjZXMgYXJlIGxvYWRpbmcgaW4gYmFja2dyb3Vu
ZCBjb2xsZWN0aW9uIG1vZGUuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9h
ZC1vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YTdiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVu
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQg
ZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IGNvbGxl
Y3RzIGV2ZW50cyB3aXRoIGNsb3NlZCBmcm9udGVuZC4KKworCityZXNvdXJjZXMgY291bnQgPSAy
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291
cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAwCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAwJmd6
aXA9dHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2NTc3ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1s
b2FkLW9wZW4uaHRtbApAQCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IGxvYWRJbWFnZXMoKQoreworICAgIHNpemUgPSA0MDA7CisgICAgdmFyIGltYWdlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCJzcmMiLCAi
cmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9IiArIHNpemUpOworICAgIGlt
YWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0
QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9
IiArIHNpemUgKyAiJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVz
b3VyY2VMb2FkZWQoKQoreworICAgIGxvYWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9h
ZGVkUmVzb3VyY2VDb3VudCA9PT0gMikgeworICAgICAgICBvcGVuRnJvbnRlbmQoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAg
aWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikgeworICAgICAgICAgICAgLy8gU3dpdGNo
IG9uLgorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl90b2dnbGVCYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZSgiY2xvc2VGcm9udGVuZChsb2FkSW1hZ2VzKSIpOworICAgICAgICB9CisgICAg
ICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAgICAgICAgICAgIHZhciBy
ZXNvdXJjZXNDb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVu
Z3RoOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlcyBjb3Vu
dCA9ICIgKyByZXNvdXJjZXNDb3VudCk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVz
b3VyY2VzQ291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbaV0udXJsKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVzdC4K
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fdG9nZ2xlQmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgICAgIH0KKyAgICB9KTsKKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91
bmQgZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IGNv
bGxlY3RzIGV2ZW50cyB3aXRoIGNsb3NlZCBmcm9udGVuZC4KKzwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU3ZWFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCB0
aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBw
YW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJl
b3BlbmluZy4KKworCitSZW9wZW5lZCBmcm9udGVuZCAxIHRpbWVzCityZXNvdXJjZXMgY291bnQg
PSAyCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jl
c291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAw
Jmd6aXA9dHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDc4ZGViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9w
ZW4tbG9hZC1yZW9wZW4uaHRtbApAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIGxvYWRJbWFnZXMoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9y
ZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCIpOworICAgIGltYWdlLm9ubG9hZCA9IHJl
c291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisg
ICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdl
Mi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMi
LCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKwordmFyIGxvYWRl
ZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGlm
ICgrK2xvYWRlZFJlc291cmNlQ291bnQgPT09IDIpIHsKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQo
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikgeworICAgICAgICAgICAg
Ly8gU3dpdGNoIG9uLgorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl90
b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdlcygpIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVvcGVuZWQgZnJvbnRlbmQgIiAr
IHJlc3VsdC5fZGVzY3JpcHRpb24gKyAiIHRpbWVzIik7CisgICAgICAgICAgICB2YXIgcmVzb3Vy
Y2VzQ291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aDsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZXMgY291bnQgPSAi
ICsgcmVzb3VyY2VzQ291bnQpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc291cmNl
c0NvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW2ldLnVybCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAvLyBTd2l0Y2ggb2ZmIGJlZm9yZSBjb21wbGV0ZVRlc3QuCisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OworICAgICAgICB9CisgICAgfSk7CisKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0IHRoYXQgd2hlbiBiYWNrZ3JvdW5kIGV2
ZW50IGNvbGxlY3Rpb24gaXMgZW5hYmxlZCBuZXR3b3JrIHBhbmVsIGNvcnJlY3RseSByZXN0b3Jl
cyBuZXR3b3JrIGxvZyBhZnRlciB0aGUgZnJvbnRlbmQgcmVvcGVuaW5nLgorPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29w
ZW4tY2xvc2Utb3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dAppbmRleCAxOWI5ZWZiLi42MTIxYTRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVu
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1j
bG9zZS1vcGVuLWV4cGVjdGVkLnR4dApAQCAtMTAsMjEgKzEwLDEwIEBAIFJ1bm5pbmc6IHRlc3RT
b3VyY2VGcmFtZUNvbnRlbnQKIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIHJlb3Bl
bkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNwb25zZQotICAgIC8vIGJhY2sgdG8g
dGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5kUmVvcGVuZWQgPSB0cnVlOwotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgIHJ1blRlc3QoKTsK
LSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJlb3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0
KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAidW5kZWZpbmVkIikKKyAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50Iiwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAi
MCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJyZW9wZW5Gcm9u
dGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRl
YnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9vcGVuLWNsb3NlLW9wZW4uaHRtbAppbmRleCA0MzFjNzM3Li41ZmViZWNhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCkBA
IC00LDIxICs0LDEwIEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiByZW9wZW5G
cm9udGVuZCgpIHsKLSAgICAvLyBEbyB0aGlzIGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyIHRvIHNlbmQgcmVzcG9uc2UKLSAgICAvLyBiYWNrIHRvIHRo
ZSBmcm9udGVuZCBiZWZvcmUgaXQncyBkZXN0cm95ZWQuCi0gICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICAgICAgd2luZG93Ll9mcm9udGVuZFJlb3BlbmVkID0gdHJ1ZTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwotICAgICAgICBydW5UZXN0KCk7Ci0g
ICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoIndpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCIsIGZ1bmN0aW9uKHJlc3VsdCkg
ewotICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gInVuZGVmaW5lZCIpCisgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdDb3VudCIsIGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAi
KQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgicmVvcGVuRnJvbnRl
bmQoKSIpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1
Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE4MDdkZC4uZTMxN2M0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTA1LTExICBTZXJnZXkgVm9yb2J5ZXYgIDxzZXJnZXl2
b3JvYnlldkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJhY2tncm91bmQgbmV0d29yayBldmVudHMgY29s
bGVjdGlvbiAtIGFkZCBHVUkgdG8gSW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIKKworICAgICAgICBOb3cgaW4gV2ViSW5zcGVj
dG9yIE5ldHdvcmsgcGFuZWwgYXZhbGFpYmxlIG5ldyBjaGVja2JveCBpdGVtIGluIGNvbnRleHQg
bWVudToKKyAgICAgICAgIkJhY2tncm91bmUgZXZlbnRzIGNvbGxlY3Rpb24iLiBJdCdzIGFsbG93
cyBzYXZlIGFsbCBuZXR3b3JrIGV2ZW50cyB3aGVuIGluc3BlY3RvcgorICAgICAgICBmcm9udGVu
ZCBjbG9zZWQuIEV2ZW50cyBvY2Nhc2lvbiBiZWZvcmUgY29sbGVjdGlvbiBlbmFibGluZyBhcmUg
bm90IHByZXNlcnZlZCBhZnRlcgorICAgICAgICBmcm9udGVuZCByZW9wZW5pbmcuIFByb3BlcnR5
IHVuaXF1ZSBmb3IgZWFjaCBwYWdlLiBEaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgIFRl
c3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlz
YWJsZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
c0NvbGxlY3Rvcjo6Y2xlYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3Iu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6Z2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpiYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91bmRDb2xsZWN0aW9uSW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1BhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKToK
KwogMjAxMS0wNS0xMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0V2ZW50c0NvbGxlY3Rvci5jcHAKaW5kZXggMWMzNjVjZi4uNzM5MWEyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBA
IHZvaWQgRXZlbnRzQ29sbGVjdG9yOjphZGRFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgfQogfQogCit2b2lkIEV2ZW50c0NvbGxlY3Rvcjo6Y2xlYXIoKQoreworICAgIG1fZXZlbnRz
LmNsZWFyKCk7Cit9CisKIHZvaWQgRXZlbnRzQ29sbGVjdG9yOjpzZW5kQ29sbGVjdGVkRXZlbnRz
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogcmVjZWl2ZXIpCiB7CiAgICAgZm9yIChWZWN0b3I8
U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBtX2V2ZW50cy5iZWdpbigpOyBpdCAhPSBtX2V2ZW50cy5l
bmQoKTsgKytpdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHND
b2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaApp
bmRleCBkNTNlMTA5Li5lMjZlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRXZlbnRzQ29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50
c0NvbGxlY3Rvci5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICBFdmVudHNDb2xsZWN0
b3IoKTsKICAgICB+RXZlbnRzQ29sbGVjdG9yKCkgeyB9CiAgICAgdm9pZCBhZGRFdmVudChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHNlbmRDb2xs
ZWN0ZWRFdmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CiBwcml2YXRlOgogICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgbWF4Q2FwYWNpdHkgPSAxMDI0KjEwMjQ7IC8vIDEgTWIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1YjZhY2Y0Li4wZDBmNGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC00NDksNiArNDQ5LDE5
IEBACiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICJ0eXBlIjogIm9iamVjdCIsICJkZXNjcmlwdGlvbiI6ICJN
YXAgd2l0aCBleHRyYSBIVFRQIGhlYWRlcnMuIiB9CiAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRCYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJBbGxvdyB0dXJuIG9uL29mZiBiYWNrZ3JvdW5kIG5ldHdvcmsgZXZlbnRzIGNvbGxl
Y3Rpb24uIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlv
biI6ICJ0cnVlIC0gZW5hYmxlIGNvbGxlY3Rpb24sIGZhbHNlIC0gZGlzYWJsZSIgfQorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiZ2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZSIsCisgICAgICAg
ICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5h
YmxlZCIsICJ0eXBlIjogImJvb2xlYW4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAgICAgICAg
ICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKaW5kZXggNGUyMTg4ZC4u
YmEwNTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFByb3h5LmNwcApAQCAtNTUsNiArNTUsMTEgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZFByb3h5OjpzZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmUKICAgICBtX3JlY2VpdmVyID0gcmVjZWl2ZXI7CiB9CiAKK0luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkK
K3sKKyAgICByZXR1cm4gbV9yZWNlaXZlcjsKK30KKwogdm9pZCBJbnNwZWN0b3JGcm9udGVuZFBy
b3h5OjpzZXRFdmVudHNDb2xsZWN0b3IoRXZlbnRzQ29sbGVjdG9yKiBjb2xsZWN0b3IpCiB7CiAg
ICAgbV9jb2xsZWN0b3IgPSBjb2xsZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuaAppbmRleCAyNTlhZjY3Li41MWY4NGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmgK
QEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250ZW5k
UHJveHkoKSB7IH0KIAogICAgIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKCk7CiAgICAgdm9pZCBzZXRFdmVudHNDb2xsZWN0b3IoRXZl
bnRzQ29sbGVjdG9yKik7CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggM2NjOGU0NC4uZGM0ZGE5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcApAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgUmVz
b3VyY2VBZ2VudFN0YXRlIHsKIHN0YXRpYyBjb25zdCBjaGFyIHJlc291cmNlQWdlbnRFbmFibGVk
W10gPSAicmVzb3VyY2VBZ2VudEVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgZXh0cmFSZXF1
ZXN0SGVhZGVyc1tdID0gImV4dHJhUmVxdWVzdEhlYWRlcnMiOworc3RhdGljIGNvbnN0IGNoYXIg
YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkW10gPSAiYmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb25FbmFibGVkIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCkBAIC04NSwxMyArODYsMTUgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZCogZnJvbnRlbmQpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQo
KQogewogICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKSkgewotICAg
ICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCgwKTsKICAgICAgICAgbV9mcm9udGVuZCA9IG1fbW9ja0Zyb250ZW5kLmdldCgpOwotICAgIH0g
ZWxzZQorICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCgwKTsKKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS5nZXQoKSk7CisgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9mcm9udGVuZCA9IDA7Ci0KKyAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CisgICAg
ICAgIGRpc2FibGUoJmVycm9yKTsKKyAgICB9CiAgICAgbV91c2VyQWdlbnRPdmVycmlkZSA9ICIi
OwotICAgIGRpc2FibGUoMCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVz
dG9yZSgpCkBAIC0zMzEsMTIgKzMzNCwzNSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIH0KICNlbmRpZiAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0
QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZShFcnJvclN0cmluZyosIGJvb2wqIGVuYWJs
ZWQpCit7CisgICAgKCplbmFibGVkKSA9IGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZCgpOworfQorCiBib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uRW5hYmxlZCgpCiB7Ci0gICAgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MikKLSAgICAvLyBBZGQgaGVyZSBjb25kaXRpb24gdG8g
ZW5hYmxlIGJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24uCi0gICAgLy8gTm93IHRoaXMgZnVu
Y3Rpb24gaXMgZGlzYWJsZS4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fc3RhdGUt
PmdldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBpZiAoZW5hYmxlZCA9PSBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIGlmICghaXNCYWNr
Z3JvdW5kQ29sbGVjdGlvbkluaXQpCisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sbGVjdGlvbklu
aXQoKTsKKyAgICAgICAgLy8gSW5zZXJ0IE1lc3NhZ2UgUHJveHkgaW4gcmVjZWl2ZXIgY2hhaW4u
CisgICAgICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBjbGllbnQgPSBtX2Zyb250ZW5kLT5nZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwo
KTsKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwoY2xpZW50KTsKKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS5nZXQoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVGFrZSBvdXQgTWVzc2FnZSBQcm94eSBmcm9tIHJlY2VpdmVyIGNoYWluLgor
ICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0
b3JGcm9udGVuZFByb3h5LT5pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKSk7CisgICAgICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOwor
ICAgICAgICBtX2V2ZW50c0NvbGxlY3Rvci0+Y2xlYXIoKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
c3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpiYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvbkVuYWJsZWQsIGVuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyopCkBAIC0zNjgsMTYgKzM5NCwyNCBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnNldEV4dHJhSGVhZGVycyhFcnJvclN0cmluZyosIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTwogICAgIG1fc3RhdGUtPnNldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6
OmV4dHJhUmVxdWVzdEhlYWRlcnMsIGhlYWRlcnMpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmJhY2tncm91bmRDb2xsZWN0aW9uSW5pdCgpCit7CisgICAgbV9ldmVudHNDb2xs
ZWN0b3IgPSBhZG9wdFB0cihuZXcgRXZlbnRzQ29sbGVjdG9yKCkpOworICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRQcm94eSA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZFByb3h5KG1fZXZl
bnRzQ29sbGVjdG9yLmdldCgpKSk7CisgICAgLy8gQ3JlYXRlIG1vY2sgZnJvbnRlbmQsIHNvIHdl
IGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRzLgorICAgIG1fbW9ja0Zyb250ZW5kID0gYWRvcHRQ
dHIobmV3IEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94
eS5nZXQoKSkpOworICAgIGlzQmFja2dyb3VuZENvbGxlY3Rpb25Jbml0ID0gdHJ1ZTsKK30KKwog
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRz
KGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAg
LCBtX3N0YXRlKHN0YXRlKQorICAgICwgaXNCYWNrZ3JvdW5kQ29sbGVjdGlvbkluaXQoZmFsc2Up
CiB7CiAgICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIG1fZXZlbnRzQ29sbGVjdG9yID0gYWRvcHRQdHIobmV3IEV2ZW50c0NvbGxlY3Rvcik7Ci0g
ICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eSA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JG
cm9udGVuZFByb3h5KG1fZXZlbnRzQ29sbGVjdG9yLmdldCgpKSk7CisgICAgICAgIGJhY2tncm91
bmRDb2xsZWN0aW9uSW5pdCgpOwogICAgICAgICAvLyBDcmVhdGUgbW9jayBmcm9udGVuZCwgc28g
d2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCi0gICAgICAgIG1fbW9ja0Zyb250ZW5kID0g
YWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrKG1faW5zcGVjdG9yRnJvbnRl
bmRQcm94eS5nZXQoKSkpOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQuZ2V0
KCk7CiAgICAgICAgIGVuYWJsZSgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZDYwZDIxZi4uZmQyZjAz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCkBAIC0xMDUsOSArMTA1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsb3NlV2Vi
U29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAjZW5kaWYKIAotICAgIGJvb2wgYmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7CisgICAgdm9pZCBnZXRCYWNrZ3JvdW5k
RXZlbnRzQ29sbGVjdGlvblN0YXRlKEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCk7CisgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBi
b29sIGVuYWJsZWQpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQgCisgICAgLy8gQ2Fs
bGVkIGZyb20gZnJvbnRlbmQKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CkBAIC0xMTcsMTYgKzExOCwx
OSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKik7CiAK
KyAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpOwogICAgIHZvaWQg
ZW5hYmxlKCk7CisgICAgdm9pZCBiYWNrZ3JvdW5kQ29sbGVjdGlvbkluaXQoKTsKIAogICAgIElu
c3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3RvclN0YXRlKiBtX3N0YXRlOwotICAg
IE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRzQ29sbGVjdG9yOwogICAgIEluc3BlY3Rv
ckZyb250ZW5kOjpOZXR3b3JrKiBtX2Zyb250ZW5kOwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9u
dGVuZDo6TmV0d29yaz4gbV9tb2NrRnJvbnRlbmQ7CisgICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rv
cj4gbV9ldmVudHNDb2xsZWN0b3I7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kUHJveHk+
IG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6
Ok5ldHdvcms+IG1fbW9ja0Zyb250ZW5kOwogICAgIFN0cmluZyBtX3VzZXJBZ2VudE92ZXJyaWRl
OworICAgIGJvb2wgaXNCYWNrZ3JvdW5kQ29sbGVjdGlvbkluaXQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCmluZGV4IDU0MTEzZGMuLjYyYmM5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC0zMCw2ICsz
MCwxMiBAQAogCiBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQogeworICAg
IGZ1bmN0aW9uIGV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKGVycm9yLCBlbmFibGVkKQorICAgIHsK
KyAgICAgICAgdGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKKyAg
ICB9CisgICAgTmV0d29ya0FnZW50LmdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUo
ZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQuYmluZCh0aGlzKSk7CisKICAgICBXZWJJbnNwZWN0b3Iu
UGFuZWwuY2FsbCh0aGlzLCAibmV0d29yayIpOwogCiAgICAgdGhpcy5jcmVhdGVTaWRlYmFyKCk7
CkBAIC0xMDE5LDYgKzEwMjUsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2ZSBhbGwg
YXMgSEFSIiA6ICJTYXZlIEFsbCBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0QWxsLmJpbmQodGhpcykp
OwogICAgICAgICB9CiAKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVuYWJsZWQgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiIpLCB0aGlzLl90b2dnbGVC
YWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCB0aGlzLl9iYWNrZ3JvdW5kQ29s
bGVjdGlvbkVuYWJsZWQpOworCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOwogICAg
IH0sCiAKQEAgLTEwNjUsNiArMTA3NCwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNhdmVBcyhyZXNvdXJj
ZS5kaXNwbGF5TmFtZSArICIuaGFyIiwgSlNPTi5zdHJpbmdpZnkoaGFyKSk7CiAgICAgfSwKIAor
ICAgIF90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbjogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQgPSAhdGhp
cy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0
QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKHRoaXMuX2JhY2tncm91bmRDb2xsZWN0
aW9uRW5hYmxlZCk7CisgICAgfSwKKwogICAgIF91cGRhdGVPZmZzY3JlZW5Sb3dzOiBmdW5jdGlv
bihlKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFUYWJsZUJvZHkgPSB0aGlzLl9kYXRhR3JpZC5k
YXRhVGFibGVCb2R5Owo=
</data>
<flag name="review"
          id="86216"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93311</attachid>
            <date>2011-05-12 11:19:37 -0700</date>
            <delta_ts>2011-05-13 02:49:09 -0700</delta_ts>
            <desc>Another one</desc>
            <filename>contex2</filename>
            <type>text/plain</type>
            <size>26818</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZTQ4MWQ2Li44NDJjNGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDUt
MTIgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5z
cGVjdG9yVGVzdC4pOgorICAgICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXIt
YWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2Fk
LW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVu
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1v
cGVuLmh0bWw6CisKIDIwMTEtMDUtMDggQWJoaXNoZWsgQXJ5YSA8aW5mZXJub0BjaHJvbWl1bS5v
cmc+IGFuZCBDYXJvbCBTemFibyAgPGNhcm9sQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDVjMjY3ZDkuLjAxNjg3ZDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0z
MjAsMTAgKzMyMCw2NyBAQCBJbnNwZWN0b3JUZXN0LnRleHRDb250ZW50V2l0aExpbmVCcmVha3Mg
PSBmdW5jdGlvbihub2RlKQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKK0luc3BlY3RvclRlc3Qu
ZW5hYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAo
IVdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVk
KSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fdG9nZ2xlQmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBSZW9wZW4gZnJv
bnRlbmQgd2l0aCBkaXNhYmxlZCBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uCisgICAgICAg
IC8vIHRvIGNsZWFyIG5ldHdvcmsgcmVzb3VyY2VzLgorICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsb3NlRnJvbnRlbmQob3BlbkZyb250ZW5k
KSIpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uKCk7CisgICAgfQorfQorCitJbnNwZWN0b3JUZXN0LmRpc2FibGVC
YWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0gZnVuY3Rpb24gKCkKK3sKKyAgICBpZiAoV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQpCisgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb24oKTsKK30KKworSW5zcGVjdG9yVGVzdC5hZGRUb1Jlc3VsdE5ldHdvcmtSZXNvdXJj
ZXMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHJlc291cmNlcyA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXMuc2xpY2UoKTsKKyAgICByZXNvdXJjZXMuc29ydChmdW5jdGlv
bihhLCBiKSB7cmV0dXJuIGEudXJsLmxvY2FsZUNvbXBhcmUoYi51cmwpO30pOworICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZXMgY291bnQgPSAiICsgcmVzb3VyY2VzLmxlbmd0
aCk7CisgICAgZm9yIChpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7IGkrKykgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZXNbaV0udXJsKTsKKyAgICB9Cit9CisK
IH07CiAKIHZhciBydW5UZXN0Q2FsbElkID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxsSWQgPSAx
OwordmFyIGZyb250ZW5kUmVvcGVuaW5nQ291bnQgPSAwOworCitmdW5jdGlvbiByZW9wZW5Gcm9u
dGVuZCgpCit7CisgICAgY2xvc2VGcm9udGVuZChvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQpOwor
fQorCitmdW5jdGlvbiBjbG9zZUZyb250ZW5kKGNhbGxiYWNrKQoreworICAgIC8vIERvIHRoaXMg
YXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2Vu
ZCByZXNwb25zZQorICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ry
b3llZC4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0s
IDApOworfQorCitmdW5jdGlvbiBvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQoKQoreworICAgIGZy
b250ZW5kUmVvcGVuaW5nQ291bnQrKzsKKyAgICBvcGVuRnJvbnRlbmQoKTsKK30KKworZnVuY3Rp
b24gb3BlbkZyb250ZW5kKCkKK3sKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5z
cGVjdG9yKCk7CisgICAgcnVuVGVzdCgpOworfQogCiBmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlz
TG9hZGVkKCkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXIt
ZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdlYjhmYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorVGVzdCB0aGF0IHJlb3BlbmluZyBjbGVhcnMgbmV0d29yayBwYW5lbCBp
biBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1vZGUuCisKKworUmVvcGVu
ZWQgZnJvbnRlbmQgMiB0aW1lcworcmVzb3VyY2VzIGNvdW50ID0gMAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0
ZXItZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRiNTQ3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQu
aHRtbApAQCAtMCwwICsxLDcyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFn
ZXMoc2l6ZSkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWci
KTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2Umc2l6ZT0iICsgc2l6ZSk7CisgICAgaW1hZ2Uub25sb2FkID0gcmVzb3VyY2VM
b2FkZWQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7CisKKyAgICB2YXIg
aW1hZ2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1hZ2UyLm9ubG9h
ZCA9IHJlc291cmNlTG9hZGVkOworICAgIGltYWdlMi5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT0iICsgc2l6ZSArICImZ3ppcD10cnVl
Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZTIpOworfQorCitmdW5jdGlv
biBsb2FkSW1hZ2VzNDAwKCkKK3sKKyAgICBsb2FkSW1hZ2VzKDQwMCk7Cit9CisKK2Z1bmN0aW9u
IGxvYWRJbWFnZXM2MDAoKQoreworICAgIGxvYWRJbWFnZXMoNjAwKTsKK30KKwordmFyIGxvYWRl
ZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGxv
YWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9hZGVkUmVzb3VyY2VDb3VudCAlIDIgPT09
IDApIHsKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzNDAwKCkiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIp
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRD
b2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgibG9hZEltYWdlczYwMCgpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVz
dWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjIiKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIlJlb3BlbmVkIGZyb250ZW5kICIgKyByZXN1bHQuX2Rlc2NyaXB0aW9uICsg
IiB0aW1lcyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkVG9SZXN1bHROZXR3
b3JrUmVzb3VyY2VzKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7Cisg
ICAgICAgIHRocm93IGU7CisgICAgfQorCit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0aGF0IHJlb3BlbmluZyBjbGVhcnMg
bmV0d29yayBwYW5lbCBpbiBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1v
ZGUuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
bG9zZS1sb2FkLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjI4YTdiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29sbGVjdGlv
biBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IGNvbGxlY3RzIGV2ZW50cyB3aXRo
IGNsb3NlZCBmcm9udGVuZC4KKworCityZXNvdXJjZXMgY291bnQgPSAyCitodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnNpemU9NDAwCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAwJmd6aXA9dHJ1ZQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
Y2xvc2UtbG9hZC1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNWQxNmUwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbApA
QCAtMCwwICsxLDU5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXMoKQor
eworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGlt
YWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFn
ZSZzaXplPTQwMCIpOworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxv
YWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNl
LnBocD90eXBlPWltYWdlJnNpemU9NDAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOwor
ZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGxvYWRlZFJlc291cmNlQ291bnQrKzsK
KyAgICBpZiAobG9hZGVkUmVzb3VyY2VDb3VudCA9PT0gMikgeworICAgICAgICBvcGVuRnJvbnRl
bmRBbmRJbmNyZW1lbnQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHRy
eSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVu
aW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rl
c2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJs
ZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJjbG9zZUZyb250ZW5kKGxvYWRJbWFnZXMpIik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjEiKSB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRUb1Jlc3VsdE5ldHdvcmtSZXNvdXJjZXMo
KTsKKyAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggb2ZmIGJlZm9yZSBjb21wbGV0ZVRlc3QuCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0
aHJvdyBlOworICAgIH0KKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29s
bGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IGNvbGxlY3RzIGV2ZW50
cyB3aXRoIGNsb3NlZCBmcm9udGVuZC4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVu
LWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU3ZWFkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9h
ZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCB0aGF0IHdoZW4gYmFj
a2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0
bHkgcmVzdG9yZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJlb3BlbmluZy4KKwor
CitSZW9wZW5lZCBmcm9udGVuZCAxIHRpbWVzCityZXNvdXJjZXMgY291bnQgPSAyCitodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90
eXBlPWltYWdlJnNpemU9NTAwCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjNiYTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9w
ZW4uaHRtbApAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJ
bWFnZXMoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/
dHlwZT1pbWFnZSZzaXplPTUwMCIpOworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVk
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdl
MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSBy
ZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2Vz
L3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291
bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGlmICgrK2xvYWRlZFJl
c291cmNlQ291bnQgPT09IDIpIHsKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQp
IHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24o
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1h
Z2VzKCkiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlJlb3BlbmVkIGZyb250ZW5kICIgKyByZXN1bHQuX2Rlc2NyaXB0aW9u
ICsgIiB0aW1lcyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkVG9SZXN1bHRO
ZXR3b3JrUmVzb3VyY2VzKCk7CisgICAgICAgICAgICAgICAgLy8gU3dpdGNoIG9mZiBiZWZvcmUg
Y29tcGxldGVUZXN0LgorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tn
cm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rp
b24oKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKK30KKworPC9zY3JpcHQ+CisKKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0IHRoYXQgd2hlbiBiYWNr
Z3JvdW5kIGV2ZW50IGNvbGxlY3Rpb24gaXMgZW5hYmxlZCBuZXR3b3JrIHBhbmVsIGNvcnJlY3Rs
eSByZXN0b3JlcyBuZXR3b3JrIGxvZyBhZnRlciB0aGUgZnJvbnRlbmQgcmVvcGVuaW5nLgorPC9w
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL29wZW4tY2xvc2Utb3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dAppbmRleCAxOWI5ZWZiLi42
MTIxYTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1j
bG9zZS1vcGVuLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dApAQCAtMTAsMjEgKzEwLDEwIEBAIFJ1bm5p
bmc6IHRlc3RTb3VyY2VGcmFtZUNvbnRlbnQKIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0
aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5bmNocm9ub3VzbHkgdG8g
YWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNwb25zZQotICAgIC8v
IGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4KLSAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5kUmVvcGVuZWQgPSB0cnVl
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgIHJ1
blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJlb3BlbmVkIiwgZnVuY3Rp
b24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAidW5kZWZp
bmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3Blbmlu
Z0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0
aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJy
ZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbAppbmRleCA0MzFjNzM3Li41ZmViZWNhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVu
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Bl
bi5odG1sCkBAIC00LDIxICs0LDEwIEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlv
biByZW9wZW5Gcm9udGVuZCgpIHsKLSAgICAvLyBEbyB0aGlzIGFzeW5jaHJvbm91c2x5IHRvIGFs
bG93IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHRvIHNlbmQgcmVzcG9uc2UKLSAgICAvLyBi
YWNrIHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBkZXN0cm95ZWQuCi0gICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKLSAgICAgICAgd2luZG93Ll9mcm9udGVuZFJlb3BlbmVkID0gdHJ1ZTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwotICAgICAgICBydW5U
ZXN0KCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoIndpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCIsIGZ1bmN0aW9u
KHJlc3VsdCkgewotICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gInVuZGVmaW5l
ZCIpCisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdD
b3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlv
biA9PT0gIjAiKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgicmVv
cGVuRnJvbnRlbmQoKSIpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdkNjY2Yy4uZDVmNTdlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTA1LTEyICBTZXJnZXkgVm9yb2J5ZXYg
IDxzZXJnZXl2b3JvYnlldkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJhY2tncm91bmQgbmV0d29yayBl
dmVudHMgY29sbGVjdGlvbiAtIGFkZCBHVUkgdG8gSW5zcGVjdG9yLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIKKworICAgICAgICBOb3cgaW4g
V2ViSW5zcGVjdG9yIE5ldHdvcmsgcGFuZWwgYXZhbGFpYmxlIG5ldyBjaGVja2JveCBpdGVtIGlu
IGNvbnRleHQgbWVudToKKyAgICAgICAgIkJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24iLiBJ
dCBhbGxvd3MgdG8gc2F2ZSBhbGwgbmV0d29yayBldmVudHMgd2hlbiBpbnNwZWN0b3IKKyAgICAg
ICAgZnJvbnRlbmQgY2xvc2VkLiBFdmVudHMgdGhhdCBvY2N1ciBiZWZvcmUgY29sbGVjdGlvbiBl
bmFibGluZyBhcmUgbm90IHByZXNlcnZlZCBhZnRlcgorICAgICAgICBmcm9udGVuZCByZW9wZW5p
bmcuIFByb3BlcnR5IHVuaXF1ZSBmb3IgZWFjaCBwYWdlLiBEaXNhYmxlZCBieSBkZWZhdWx0Lgor
CisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xl
YXItYWZ0ZXItZGlzYWJsZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1s
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50c0NvbGxlY3Rvcjo6Y2xlYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9FdmVu
dHNDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25T
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpiYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91bmRDb2xsZWN0
aW9uSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uKToKKwogMjAxMS0wNS0xMiAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAppbmRleCAxYzM2NWNmLi43MzkxYTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcApAQCAt
NDgsNiArNDgsMTEgQEAgdm9pZCBFdmVudHNDb2xsZWN0b3I6OmFkZEV2ZW50KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKICAgICB9CiB9CiAKK3ZvaWQgRXZlbnRzQ29sbGVjdG9yOjpjbGVhcigpCit7
CisgICAgbV9ldmVudHMuY2xlYXIoKTsKK30KKwogdm9pZCBFdmVudHNDb2xsZWN0b3I6OnNlbmRD
b2xsZWN0ZWRFdmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiByZWNlaXZlcikKIHsKICAg
ICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fZXZlbnRzLmJlZ2luKCk7IGl0
ICE9IG1fZXZlbnRzLmVuZCgpOyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50
c0NvbGxlY3Rvci5oCmluZGV4IGQ1M2UxMDkuLmUyNmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAg
IEV2ZW50c0NvbGxlY3RvcigpOwogICAgIH5FdmVudHNDb2xsZWN0b3IoKSB7IH0KICAgICB2b2lk
IGFkZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogICAg
IHZvaWQgc2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYXBhY2l0eSA9IDEwMjQqMTAyNDsg
Ly8gMSBNYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDViNmFj
ZjQuLjBkMGY0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTQ0OSw2ICs0NDksMTkgQEAKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRl
c2NyaXB0aW9uIjogIk1hcCB3aXRoIGV4dHJhIEhUVFAgaGVhZGVycy4iIH0KICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogInNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCIsCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkFsbG93IHR1cm4gb24vb2ZmIGJhY2tncm91bmQgbmV0d29y
ayBldmVudHMgY29sbGVjdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFu
IiwgImRlc2NyaXB0aW9uIjogInRydWUgLSBlbmFibGUgY29sbGVjdGlvbiwgZmFsc2UgLSBkaXNh
YmxlIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0
YXRlIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAg
IF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcApp
bmRleCA0ZTIxODhkLi5iYTA1NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwxMSBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kUHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsKIH0KIAorSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwoKQoreworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQorCiB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kUHJveHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqIGNv
bGxlY3RvcikKIHsKICAgICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmluZGV4IDI1OWFmNjcu
LjUxZjg0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yRnJvbnRlbmRQcm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2b2lkIHNldEV2ZW50
c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzY2M4ZTQ0
Li5kYzRkYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgcmVzb3Vy
Y2VBZ2VudEVuYWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBzdGF0aWMgY29uc3Qg
Y2hhciBleHRyYVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CitzdGF0
aWMgY29uc3QgY2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWRbXSA9ICJiYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKQEAgLTg1
LDEzICs4NiwxNSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
Y2xlYXJGcm9udGVuZCgpCiB7CiAgICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZCgpKSB7Ci0gICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKDApOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQu
Z2V0KCk7Ci0gICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAg
ICB9IGVsc2UgewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAgICBFcnJvclN0cmlu
ZyBlcnJvcjsKKyAgICAgICAgZGlzYWJsZSgmZXJyb3IpOworICAgIH0KICAgICBtX3VzZXJBZ2Vu
dE92ZXJyaWRlID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpyZXN0b3JlKCkKQEAgLTMzMSwxMiArMzM0LDM1IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKIAordm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKEVycm9yU3RyaW5n
KiwgYm9vbCogZW5hYmxlZCkKK3sKKyAgICAoKmVuYWJsZWQpID0gYmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb25FbmFibGVkKCk7Cit9CisKIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkKIHsKLSAgICAvLyBGSVhNRSAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyKQotICAgIC8vIEFkZCBoZXJl
IGNvbmRpdGlvbiB0byBlbmFibGUgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4KLSAgICAv
LyBOb3cgdGhpcyBmdW5jdGlvbiBpcyBkaXNhYmxlLgotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9v
bCBlbmFibGVkKQoreworICAgIGlmIChlbmFibGVkID09IGJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAg
ICAgaWYgKCFpc0JhY2tncm91bmRDb2xsZWN0aW9uSW5pdCkKKyAgICAgICAgICAgIGJhY2tncm91
bmRDb2xsZWN0aW9uSW5pdCgpOworICAgICAgICAvLyBJbnNlcnQgTWVzc2FnZSBQcm94eSBpbiBy
ZWNlaXZlciBjaGFpbi4KKyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOworICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGNsaWVudCA9IG1fZnJvbnRlbmQtPmdldEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCgpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbChjbGllbnQpOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBUYWtlIG91dCBNZXNzYWdlIFByb3h5IGZyb20gcmVj
ZWl2ZXIgY2hhaW4uCisgICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbChtX2luc3BlY3RvckZyb250ZW5kUHJveHktPmluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgp
KTsKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwoMCk7CisgICAgICAgIG1fZXZlbnRzQ29sbGVjdG9yLT5jbGVhcigpOworICAgIH0K
KyAgICByZXR1cm4gbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmJhY2tn
cm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCwgZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTM2OCwxNiArMzk0LDI0
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIZWFkZXJzKEVycm9yU3Ry
aW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPCiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KFJlc291
cmNlQWdlbnRTdGF0ZTo6ZXh0cmFSZXF1ZXN0SGVhZGVycywgaGVhZGVycyk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YmFja2dyb3VuZENvbGxlY3Rpb25Jbml0KCkKK3sKKyAg
ICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHNDb2xsZWN0b3IoKSk7Cisg
ICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250
ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAgICAvLyBDcmVhdGUgbW9jayBm
cm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCisgICAgbV9tb2NrRnJv
bnRlbmQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0
b3JGcm9udGVuZFByb3h5LmdldCgpKSk7CisgICAgaXNCYWNrZ3JvdW5kQ29sbGVjdGlvbkluaXQg
PSB0cnVlOworfQorCiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAgICAgOiBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBh
Z2VBZ2VudCkKICAgICAsIG1fc3RhdGUoc3RhdGUpCisgICAgLCBpc0JhY2tncm91bmRDb2xsZWN0
aW9uSW5pdChmYWxzZSkKIHsKICAgICBpZiAoYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFi
bGVkKCkpIHsKLSAgICAgICAgbV9ldmVudHNDb2xsZWN0b3IgPSBhZG9wdFB0cihuZXcgRXZlbnRz
Q29sbGVjdG9yKTsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIo
bmV3IEluc3BlY3RvckZyb250ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAg
ICAgICAgYmFja2dyb3VuZENvbGxlY3Rpb25Jbml0KCk7CiAgICAgICAgIC8vIENyZWF0ZSBtb2Nr
IGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3JrIGV2ZW50cy4KLSAgICAgICAgbV9t
b2NrRnJvbnRlbmQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsobV9p
bnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKSk7CiAgICAgICAgIG1fZnJvbnRlbmQgPSBtX21v
Y2tGcm9udGVuZC5nZXQoKTsKICAgICAgICAgZW5hYmxlKCk7CiAgICAgfSBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBk
NjBkMjFmLi5mZDJmMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTEwNSw5ICsxMDUsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICNlbmRpZgog
Ci0gICAgYm9vbCBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2b2lk
IGdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUoRXJyb3JTdHJpbmcqLCBib29sKiBl
bmFibGVkKTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChF
cnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCk7CiAKLSAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVu
ZCAKKyAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAogICAgIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRVc2Vy
QWdlbnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAg
LTExNywxNiArMTE4LDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVj
dG9yU3RhdGUqKTsKIAorICAgIGJvb2wgYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVk
KCk7CiAgICAgdm9pZCBlbmFibGUoKTsKKyAgICB2b2lkIGJhY2tncm91bmRDb2xsZWN0aW9uSW5p
dCgpOwogCiAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwog
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yU3RhdGUq
IG1fc3RhdGU7Ci0gICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rvcj4gbV9ldmVudHNDb2xsZWN0b3I7
CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsqIG1fZnJvbnRlbmQ7Ci0gICAgT3duUHRy
PEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKKyAgICBPd25QdHI8
RXZlbnRzQ29sbGVjdG9yPiBtX2V2ZW50c0NvbGxlY3RvcjsKICAgICBPd25QdHI8SW5zcGVjdG9y
RnJvbnRlbmRQcm94eT4gbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5OworICAgIE93blB0cjxJbnNw
ZWN0b3JGcm9udGVuZDo6TmV0d29yaz4gbV9tb2NrRnJvbnRlbmQ7CiAgICAgU3RyaW5nIG1fdXNl
ckFnZW50T3ZlcnJpZGU7CisgICAgYm9vbCBpc0JhY2tncm91bmRDb2xsZWN0aW9uSW5pdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNTQxMTNkYy4uNjJiYzk5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMKQEAgLTMwLDYgKzMwLDEyIEBACiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwgPSBmdW5j
dGlvbigpCiB7CisgICAgZnVuY3Rpb24gZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoZXJyb3IsIGVu
YWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQg
PSBlbmFibGVkOworICAgIH0KKyAgICBOZXR3b3JrQWdlbnQuZ2V0QmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb25TdGF0ZShldmVudHNDb2xsZWN0aW9uRW5hYmxlZC5iaW5kKHRoaXMpKTsKKwogICAg
IFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJuZXR3b3JrIik7CiAKICAgICB0aGlzLmNy
ZWF0ZVNpZGViYXIoKTsKQEAgLTEwMTksNiArMTAyNSw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMo
KSA/ICJTYXZlIGFsbCBhcyBIQVIiIDogIlNhdmUgQWxsIGFzIEhBUiIpLCB0aGlzLl9leHBvcnRB
bGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAorICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRT
ZXBhcmF0b3IoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRW5hYmxlZCBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIiks
IHRoaXMuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uLmJpbmQodGhpcyksIHRoaXMu
X2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZCk7CisKICAgICAgICAgY29udGV4dE1lbnUuc2hv
dyhldmVudCk7CiAgICAgfSwKIApAQCAtMTA2NSw2ICsxMDc0LDEyIEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
c2F2ZUFzKHJlc291cmNlLmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXIp
KTsKICAgICB9LAogCisgICAgX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uOiBmdW5j
dGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9u
RW5hYmxlZCA9ICF0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQ7CisgICAgICAgIE5l
dHdvcmtBZ2VudC5zZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQodGhpcy5fYmFj
a2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZU9mZnNjcmVl
blJvd3M6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB2YXIgZGF0YVRhYmxlQm9keSA9IHRo
aXMuX2RhdGFHcmlkLmRhdGFUYWJsZUJvZHk7Cg==
</data>
<flag name="review"
          id="86455"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93419</attachid>
            <date>2011-05-13 02:49:09 -0700</date>
            <delta_ts>2011-05-13 05:10:31 -0700</delta_ts>
            <desc>Split network-specific InspectorTest methods to network-test.js</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>27514</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZTQ4MWQ2Li5mYjY5Y2JlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUt
MTMgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb25JbnN1
cmUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2Fi
bGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToKKyAgICAgICAgKGluaXRpYWxpemVfTmV0d29y
a1Rlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcyk6CisgICAgICAgIChpbml0
aWFsaXplX05ldHdvcmtUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXIt
ZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0
bWw6CisKIDIwMTEtMDUtMDggQWJoaXNoZWsgQXJ5YSA8aW5mZXJub0BjaHJvbWl1bS5vcmc+IGFu
ZCBDYXJvbCBTemFibyAgPGNhcm9sQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzCmluZGV4IDVjMjY3ZDkuLjA3OWIzOWYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0zMjQsNiAr
MzI0LDM0IEBAIEluc3BlY3RvclRlc3QudGV4dENvbnRlbnRXaXRoTGluZUJyZWFrcyA9IGZ1bmN0
aW9uKG5vZGUpCiAKIHZhciBydW5UZXN0Q2FsbElkID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxs
SWQgPSAxOwordmFyIGZyb250ZW5kUmVvcGVuaW5nQ291bnQgPSAwOworCitmdW5jdGlvbiByZW9w
ZW5Gcm9udGVuZCgpCit7CisgICAgY2xvc2VGcm9udGVuZChvcGVuRnJvbnRlbmRBbmRJbmNyZW1l
bnQpOworfQorCitmdW5jdGlvbiBjbG9zZUZyb250ZW5kKGNhbGxiYWNrKQoreworICAgIC8vIERv
IHRoaXMgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIg
dG8gc2VuZCByZXNwb25zZQorICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdz
IGRlc3Ryb3llZC4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0sIDApOworfQorCitmdW5jdGlvbiBvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQoKQorewor
ICAgIGZyb250ZW5kUmVvcGVuaW5nQ291bnQrKzsKKyAgICBvcGVuRnJvbnRlbmQoKTsKK30KKwor
ZnVuY3Rpb24gb3BlbkZyb250ZW5kKCkKK3sKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93
V2ViSW5zcGVjdG9yKCk7CisgICAgcnVuVGVzdCgpOworfQogCiBmdW5jdGlvbiBydW5BZnRlcklm
cmFtZUlzTG9hZGVkKCkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmstdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmstdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjFk
ZDgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay10ZXN0LmpzCkBAIC0wLDAgKzEsMzUgQEAKK3ZhciBpbml0aWFsaXplX05ldHdvcmtU
ZXN0ID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3QuZW5hYmxlQmFja2dyb3VuZEV2ZW50
Q29sbGVjdGlvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKQorICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7Cit9
CisKK0luc3BlY3RvclRlc3QuZW5hYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbkluc3VyZSA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fYmFj
a2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICB0aHJvdyAiQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbiBhbHJlYWR5IGVuYWJs
ZWQuIjsKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENv
bGxlY3Rpb24gPSBmdW5jdGlvbiAoKQoreworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLl90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworfQor
CitJbnNwZWN0b3JUZXN0LmR1bXBOZXR3b3JrUmVzb3VyY2VzID0gZnVuY3Rpb24oKQoreworICAg
IHZhciByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLnNs
aWNlKCk7CisgICAgLy9yZXNvdXJjZXMuc29ydChmdW5jdGlvbihhLCBiKSB7cmV0dXJuIGEudXJs
LmxvY2FsZUNvbXBhcmUoYi51cmwpO30pOworICAgIHJlc291cmNlcy5zb3J0KCk7CisgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlcyBjb3VudCA9ICIgKyByZXNvdXJjZXMubGVu
Z3RoKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlc1tpXS51cmwpOworICAgIH0KK30K
KworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJs
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYjhm
YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNiBAQAorVGVzdCB0aGF0IHJlb3BlbmluZyBjbGVhcnMgbmV0d29yayBwYW5lbCBpbiBiYWNr
Z3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1vZGUuCisKKworUmVvcGVuZWQgZnJv
bnRlbmQgMiB0aW1lcworcmVzb3VyY2VzIGNvdW50ID0gMAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlz
YWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM4MTA4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbApA
QCAtMCwwICsxLDYzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZEltYWdlc0FuZFJlb3BlbkZyb250ZW5k
KHNpemUpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7
CisgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90
eXBlPWltYWdlJnNpemU9IiArIHNpemUpOworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9h
ZGVkOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGlt
YWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQg
PSByZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3Vy
Y2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9IiArIHNpemUgKyAiJmd6aXA9dHJ1ZSIp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30KKwordmFyIGxvYWRl
ZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGxv
YWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9hZGVkUmVzb3VyY2VDb3VudCAlIDIgPT09
IDApIHsKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb25JbnN1cmUoKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzQW5kUmVv
cGVuRnJvbnRlbmQoNDAwKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3Vs
dC5fZGVzY3JpcHRpb24gPT09ICIxIikgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoNjAw
KSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24g
PT09ICIyIikgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZW9w
ZW5lZCBmcm9udGVuZCAiICsgcmVzdWx0Ll9kZXNjcmlwdGlvbiArICIgdGltZXMiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBOZXR3b3JrUmVzb3VyY2VzKCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2Fi
bGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHRocm93IGU7CisgICAgfQor
Cit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPgorVGVzdCB0aGF0IHJlb3BlbmluZyBjbGVhcnMgbmV0d29yayBwYW5lbCBpbiBiYWNrZ3Jv
dW5kIGV2ZW50cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1vZGUuCis8L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YTdiMjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstY2xvc2UtbG9hZC1vcGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhh
dCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFu
ZWwgY29ycmVjdGx5IGNvbGxlY3RzIGV2ZW50cyB3aXRoIGNsb3NlZCBmcm9udGVuZC4KKworCity
ZXNvdXJjZXMgY291bnQgPSAyCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAwCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBl
PWltYWdlJnNpemU9NDAwJmd6aXA9dHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9h
ZC1vcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjYWExNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbApAQCAtMCwwICsxLDYwIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gbG9hZEltYWdlc0FuZE9wZW5Gcm9udGVuZCgpCit7CisgICAgdmFyIGltYWdlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCJzcmMi
LCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAwIik7CisgICAgaW1h
Z2Uub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpbWFnZSk7CisKKyAgICB2YXIgaW1hZ2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1n
Iik7CisgICAgaW1hZ2UyLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGltYWdlMi5zZXRB
dHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT00
MDAmZ3ppcD10cnVlIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZTIpOwor
fQorCit2YXIgbG9hZGVkUmVzb3VyY2VDb3VudCA9IDA7CitmdW5jdGlvbiByZXNvdXJjZUxvYWRl
ZCgpCit7CisgICAgbG9hZGVkUmVzb3VyY2VDb3VudCsrOworICAgIGlmIChsb2FkZWRSZXNvdXJj
ZUNvdW50ID09PSAyKSB7CisgICAgICAgIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpOworICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdDb3VudCIsIGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZW5hYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVj
dGlvbkluc3VyZSgpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoImNsb3NlRnJvbnRlbmQobG9hZEltYWdlc0FuZE9wZW5Gcm9udGVuZCkiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBOZXR3b3JrUmVzb3VyY2VzKCk7CisgICAg
ICAgICAgICAgICAgLy8gU3dpdGNoIG9mZiBiZWZvcmUgY29tcGxldGVUZXN0LgorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgdGhyb3cgZTsK
KyAgICB9CisKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+CitUZXN0IHRoYXQgd2hlbiBiYWNrZ3JvdW5kIGV2ZW50IGNvbGxlY3Rpb24g
aXMgZW5hYmxlZCBuZXR3b3JrIHBhbmVsIGNvcnJlY3RseSBjb2xsZWN0cyBldmVudHMgd2l0aCBj
bG9zZWQgZnJvbnRlbmQuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJl
b3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjA1N2VhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVu
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQg
ZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IHJlc3Rv
cmVzIG5ldHdvcmsgbG9nIGFmdGVyIHRoZSBmcm9udGVuZCByZW9wZW5pbmcuCisKKworUmVvcGVu
ZWQgZnJvbnRlbmQgMSB0aW1lcworcmVzb3VyY2VzIGNvdW50ID0gMgoraHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFn
ZSZzaXplPTUwMAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCZnemlwPXRydWUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9w
ZW4tbG9hZC1yZW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMDg3NGQ3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0bWwK
QEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXNBbmRSZW9wZW5Gcm9udGVu
ZCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Cisg
ICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBl
PWltYWdlJnNpemU9NTAwIik7CisgICAgaW1hZ2Uub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7CisKKyAgICB2YXIgaW1hZ2UyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1hZ2UyLm9ubG9hZCA9IHJlc291
cmNlTG9hZGVkOworICAgIGltYWdlMi5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlIik7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpbWFnZTIpOworfQorCit2YXIgbG9hZGVkUmVzb3VyY2VDb3VudCA9
IDA7CitmdW5jdGlvbiByZXNvdXJjZUxvYWRlZCgpCit7CisgICAgaWYgKCsrbG9hZGVkUmVzb3Vy
Y2VDb3VudCA9PT0gMikgeworICAgICAgICByZW9wZW5Gcm9udGVuZCgpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgewor
ICAgICAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZW5hYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbkluc3Vy
ZSgpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJ
bWFnZXNBbmRSZW9wZW5Gcm9udGVuZCgpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZW9wZW5lZCBmcm9udGVuZCAiICsg
cmVzdWx0Ll9kZXNjcmlwdGlvbiArICIgdGltZXMiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBOZXR3b3JrUmVzb3VyY2VzKCk7CisgICAgICAgICAgICAgICAgLy8gU3dpdGNo
IG9mZiBiZWZvcmUgY29tcGxldGVUZXN0LgorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91bmRF
dmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKK30KKworPC9zY3Jp
cHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0IHRo
YXQgd2hlbiBiYWNrZ3JvdW5kIGV2ZW50IGNvbGxlY3Rpb24gaXMgZW5hYmxlZCBuZXR3b3JrIHBh
bmVsIGNvcnJlY3RseSByZXN0b3JlcyBuZXR3b3JrIGxvZyBhZnRlciB0aGUgZnJvbnRlbmQgcmVv
cGVuaW5nLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dAppbmRl
eCAxOWI5ZWZiLi42MTIxYTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dApAQCAtMTAsMjEgKzEw
LDEwIEBAIFJ1bm5pbmc6IHRlc3RTb3VyY2VGcmFtZUNvbnRlbnQKIDxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAKLWZ1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5bmNo
cm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNw
b25zZQotICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4K
LSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5kUmVv
cGVuZWQgPSB0cnVlOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3Bl
Y3RvcigpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7
Ci0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJlb3Bl
bmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9u
ID09PSAidW5kZWZpbmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9u
dGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1
bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJyZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbAppbmRleCA0MzFjNzM3
Li41ZmViZWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Bl
bi1jbG9zZS1vcGVuLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29w
ZW4tY2xvc2Utb3Blbi5odG1sCkBAIC00LDIxICs0LDEwIEBACiA8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogCi1mdW5jdGlvbiByZW9wZW5Gcm9udGVuZCgpIHsKLSAgICAvLyBEbyB0aGlzIGFzeW5jaHJv
bm91c2x5IHRvIGFsbG93IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHRvIHNlbmQgcmVzcG9u
c2UKLSAgICAvLyBiYWNrIHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBkZXN0cm95ZWQuCi0g
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgd2luZG93Ll9mcm9udGVuZFJlb3Bl
bmVkID0gdHJ1ZTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0
b3IoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwot
ICAgICAgICBydW5UZXN0KCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewot
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndpbmRvdy5fZnJvbnRlbmRSZW9wZW5l
ZCIsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9
PT0gInVuZGVmaW5lZCIpCisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRl
bmRSZW9wZW5pbmdDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0
Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdkNjY2
Yy4uNjYxNmE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTA1LTEzICBTZXJn
ZXkgVm9yb2J5ZXYgIDxzZXJnZXl2b3JvYnlldkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJhY2tncm91
bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlvbiAtIGFkZCBHVUkgdG8gSW5zcGVjdG9yLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIKKworICAg
ICAgICBOb3cgaW4gV2ViSW5zcGVjdG9yIE5ldHdvcmsgcGFuZWwgYXZhbGFpYmxlIG5ldyBjaGVj
a2JveCBpdGVtIGluIGNvbnRleHQgbWVudToKKyAgICAgICAgIkJhY2tncm91bmQgZXZlbnRzIGNv
bGxlY3Rpb24iLiBJdCBhbGxvd3MgdG8gc2F2ZSBhbGwgbmV0d29yayBldmVudHMgd2hlbiBpbnNw
ZWN0b3IKKyAgICAgICAgZnJvbnRlbmQgY2xvc2VkLiBFdmVudHMgdGhhdCBvY2N1ciBiZWZvcmUg
Y29sbGVjdGlvbiBlbmFibGluZyBhcmUgbm90IHByZXNlcnZlZCBhZnRlcgorICAgICAgICBmcm9u
dGVuZCByZW9wZW5pbmcuIFByb3BlcnR5IHVuaXF1ZSBmb3IgZWFjaCBwYWdlLiBEaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2Fk
LXJlb3Blbi5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50c0NvbGxlY3Rvcjo6Y2xlYXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6aW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0QmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tn
cm91bmRDb2xsZWN0aW9uSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUJhY2tn
cm91bmRFdmVudHNDb2xsZWN0aW9uKToKKwogMjAxMS0wNS0xMiAgTGV2aSBXZWludHJhdWIgIDxs
ZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAppbmRleCAxYzM2
NWNmLi43MzkxYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRz
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVj
dG9yLmNwcApAQCAtNDgsNiArNDgsMTEgQEAgdm9pZCBFdmVudHNDb2xsZWN0b3I6OmFkZEV2ZW50
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB9CiB9CiAKK3ZvaWQgRXZlbnRzQ29sbGVjdG9y
OjpjbGVhcigpCit7CisgICAgbV9ldmVudHMuY2xlYXIoKTsKK30KKwogdm9pZCBFdmVudHNDb2xs
ZWN0b3I6OnNlbmRDb2xsZWN0ZWRFdmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiByZWNl
aXZlcikKIHsKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fZXZlbnRz
LmJlZ2luKCk7IGl0ICE9IG1fZXZlbnRzLmVuZCgpOyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oCmluZGV4IGQ1M2UxMDkuLmUyNmUxMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAg
cHVibGljOgogICAgIEV2ZW50c0NvbGxlY3RvcigpOwogICAgIH5FdmVudHNDb2xsZWN0b3IoKSB7
IH0KICAgICB2b2lkIGFkZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBj
bGVhcigpOwogICAgIHZvaWQgc2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqKTsKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYXBhY2l0eSA9
IDEwMjQqMTAyNDsgLy8gMSBNYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CmluZGV4IDViNmFjZjQuLjBkMGY0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KQEAgLTQ0OSw2ICs0NDksMTkgQEAKICAgICAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAi
b2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIk1hcCB3aXRoIGV4dHJhIEhUVFAgaGVhZGVycy4iIH0K
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogInNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFsbG93IHR1cm4gb24vb2ZmIGJhY2tn
cm91bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlw
ZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogInRydWUgLSBlbmFibGUgY29sbGVjdGlvbiwg
ZmFsc2UgLSBkaXNhYmxlIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRCYWNrZ3JvdW5kRXZlbnRz
Q29sbGVjdGlvblN0YXRlIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAg
ICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50
cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFByb3h5LmNwcAppbmRleCA0ZTIxODhkLi5iYTA1NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwx
MSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kUHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5uZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsK
IH0KIAorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5Ojpp
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKQoreworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQor
CiB2b2lkIEluc3BlY3RvckZyb250ZW5kUHJveHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHND
b2xsZWN0b3IqIGNvbGxlY3RvcikKIHsKICAgICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmlu
ZGV4IDI1OWFmNjcuLjUxZjg0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRQcm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2
b2lkIHNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApp
bmRleCAzY2M4ZTQ0Li5kYzRkYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0
IGNoYXIgcmVzb3VyY2VBZ2VudEVuYWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBz
dGF0aWMgY29uc3QgY2hhciBleHRyYVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVh
ZGVycyI7CitzdGF0aWMgY29uc3QgY2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWRbXSA9ICJiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiOwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkKQEAgLTg1LDEzICs4NiwxNSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiB7CiAgICAgaWYgKGJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+
c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9t
b2NrRnJvbnRlbmQuZ2V0KCk7Ci0gICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250
ZW5kLT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5
LmdldCgpKTsKKyAgICB9IGVsc2UgewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAg
ICBFcnJvclN0cmluZyBlcnJvcjsKKyAgICAgICAgZGlzYWJsZSgmZXJyb3IpOworICAgIH0KICAg
ICBtX3VzZXJBZ2VudE92ZXJyaWRlID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXN0b3JlKCkKQEAgLTMzMSwxMiArMzM0LDM1IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKIAordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRl
KEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCkKK3sKKyAgICAoKmVuYWJsZWQpID0gYmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7Cit9CisKIGJvb2wgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkKIHsKLSAgICAvLyBG
SVhNRSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyKQotICAg
IC8vIEFkZCBoZXJlIGNvbmRpdGlvbiB0byBlbmFibGUgYmFja2dyb3VuZCBldmVudHMgY29sbGVj
dGlvbi4KLSAgICAvLyBOb3cgdGhpcyBmdW5jdGlvbiBpcyBkaXNhYmxlLgotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6
OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9y
U3RyaW5nKiwgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChlbmFibGVkID09IGJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJs
ZWQpIHsKKyAgICAgICAgaWYgKCFpc0JhY2tncm91bmRDb2xsZWN0aW9uSW5pdCkKKyAgICAgICAg
ICAgIGJhY2tncm91bmRDb2xsZWN0aW9uSW5pdCgpOworICAgICAgICAvLyBJbnNlcnQgTWVzc2Fn
ZSBQcm94eSBpbiByZWNlaXZlciBjaGFpbi4KKyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOwor
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNsaWVudCA9IG1fZnJvbnRlbmQtPmdl
dEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5k
UHJveHktPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChjbGllbnQpOworICAgICAgICBtX2Zy
b250ZW5kLT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFBy
b3h5LmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUYWtlIG91dCBNZXNzYWdlIFBy
b3h5IGZyb20gcmVjZWl2ZXIgY2hhaW4uCisgICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250ZW5kUHJveHktPmluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CisgICAgICAgIG1fZXZlbnRzQ29sbGVjdG9yLT5jbGVh
cigpOworICAgIH0KKyAgICByZXR1cm4gbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50
U3RhdGU6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCwgZW5hYmxlZCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTM2
OCwxNiArMzk0LDI0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIZWFk
ZXJzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPCiAgICAgbV9zdGF0ZS0+c2V0
T2JqZWN0KFJlc291cmNlQWdlbnRTdGF0ZTo6ZXh0cmFSZXF1ZXN0SGVhZGVycywgaGVhZGVycyk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YmFja2dyb3VuZENvbGxlY3Rpb25J
bml0KCkKK3sKKyAgICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHNDb2xs
ZWN0b3IoKSk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IElu
c3BlY3RvckZyb250ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAgICAvLyBD
cmVhdGUgbW9jayBmcm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCisg
ICAgbV9tb2NrRnJvbnRlbmQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdv
cmsobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKSk7CisgICAgaXNCYWNrZ3JvdW5kQ29s
bGVjdGlvbkluaXQgPSB0cnVlOworfQorCiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAg
ICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1f
cGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fc3RhdGUoc3RhdGUpCisgICAgLCBpc0JhY2tn
cm91bmRDb2xsZWN0aW9uSW5pdChmYWxzZSkKIHsKICAgICBpZiAoYmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9ldmVudHNDb2xsZWN0b3IgPSBhZG9wdFB0
cihuZXcgRXZlbnRzQ29sbGVjdG9yKTsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5
ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3Iu
Z2V0KCkpKTsKKyAgICAgICAgYmFja2dyb3VuZENvbGxlY3Rpb25Jbml0KCk7CiAgICAgICAgIC8v
IENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3JrIGV2ZW50cy4K
LSAgICAgICAgbV9tb2NrRnJvbnRlbmQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6
Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKSk7CiAgICAgICAgIG1fZnJv
bnRlbmQgPSBtX21vY2tGcm9udGVuZC5nZXQoKTsKICAgICAgICAgZW5hYmxlKCk7CiAgICAgfSBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuaAppbmRleCBkNjBkMjFmLi5mZDJmMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTEwNSw5ICsxMDUsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKICNlbmRpZgogCi0gICAgYm9vbCBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQo
KTsKKyAgICB2b2lkIGdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUoRXJyb3JTdHJp
bmcqLCBib29sKiBlbmFibGVkKTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCk7CiAKLSAgICAvLyBDYWxsZWQg
ZnJvbSBmcm9udGVuZCAKKyAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAogICAgIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAg
dm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KTsKQEAgLTExNywxNiArMTE4LDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFn
ZW50KiwgSW5zcGVjdG9yU3RhdGUqKTsKIAorICAgIGJvb2wgYmFja2dyb3VuZEV2ZW50c0NvbGxl
Y3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCBlbmFibGUoKTsKKyAgICB2b2lkIGJhY2tncm91bmRD
b2xsZWN0aW9uSW5pdCgpOwogCiAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50
aW5nQWdlbnRzOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5z
cGVjdG9yU3RhdGUqIG1fc3RhdGU7Ci0gICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rvcj4gbV9ldmVu
dHNDb2xsZWN0b3I7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsqIG1fZnJvbnRlbmQ7
Ci0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsK
KyAgICBPd25QdHI8RXZlbnRzQ29sbGVjdG9yPiBtX2V2ZW50c0NvbGxlY3RvcjsKICAgICBPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmRQcm94eT4gbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5OworICAg
IE93blB0cjxJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yaz4gbV9tb2NrRnJvbnRlbmQ7CiAgICAg
U3RyaW5nIG1fdXNlckFnZW50T3ZlcnJpZGU7CisgICAgYm9vbCBpc0JhY2tncm91bmRDb2xsZWN0
aW9uSW5pdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNTQxMTNkYy4u
NjJiYzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKQEAgLTMwLDYgKzMwLDEyIEBACiAKIFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwgPSBmdW5jdGlvbigpCiB7CisgICAgZnVuY3Rpb24gZXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoZXJyb3IsIGVuYWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVj
dGlvbkVuYWJsZWQgPSBlbmFibGVkOworICAgIH0KKyAgICBOZXR3b3JrQWdlbnQuZ2V0QmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZShldmVudHNDb2xsZWN0aW9uRW5hYmxlZC5iaW5kKHRo
aXMpKTsKKwogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJuZXR3b3JrIik7CiAK
ICAgICB0aGlzLmNyZWF0ZVNpZGViYXIoKTsKQEAgLTEwMTksNiArMTAyNSw5IEBAIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2Fz
ZU1lbnVUaXRsZXMoKSA/ICJTYXZlIGFsbCBhcyBIQVIiIDogIlNhdmUgQWxsIGFzIEhBUiIpLCB0
aGlzLl9leHBvcnRBbGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAorICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2ti
b3hJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlZCBiYWNrZ3JvdW5kIGV2ZW50cyBj
b2xsZWN0aW9uIiksIHRoaXMuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uLmJpbmQo
dGhpcyksIHRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZCk7CisKICAgICAgICAgY29u
dGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfSwKIApAQCAtMTA2NSw2ICsxMDc0LDEyIEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBJbnNwZWN0b3JG
cm9udGVuZEhvc3Quc2F2ZUFzKHJlc291cmNlLmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0
cmluZ2lmeShoYXIpKTsKICAgICB9LAogCisgICAgX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xs
ZWN0aW9uOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2JhY2tncm91
bmRDb2xsZWN0aW9uRW5hYmxlZCA9ICF0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQ7
CisgICAgICAgIE5ldHdvcmtBZ2VudC5zZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQodGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKTsKKyAgICB9LAorCiAgICAgX3Vw
ZGF0ZU9mZnNjcmVlblJvd3M6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB2YXIgZGF0YVRh
YmxlQm9keSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFUYWJsZUJvZHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93436</attachid>
            <date>2011-05-13 05:09:50 -0700</date>
            <delta_ts>2011-05-13 06:01:40 -0700</delta_ts>
            <desc>Minor fix</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>27573</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZGFiY2QzLi45YjU3NGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDUt
MTMgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKGluaXRpYWxpemVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29y
a1Jlc291cmNlcyk6CisgICAgICAgIChpbml0aWFsaXplX05ldHdvcmtUZXN0KToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJs
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisKIDIwMTEtMDUtMTIgIEFudG9uIE11aGlu
ICA8YW50b25ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXgg
NWMyNjdkOS4uYjlkYjU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMyNCw2ICszMjQsMjkgQEAgSW5zcGVjdG9yVGVz
dC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIAogdmFyIHJ1blRl
c3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7Cit2YXIgZnJvbnRlbmRS
ZW9wZW5pbmdDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkKK3sKKyAgICBj
bG9zZUZyb250ZW5kKG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCk7Cit9CisKK2Z1bmN0aW9uIGNs
b3NlRnJvbnRlbmQoY2FsbGJhY2spCit7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0
byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCisgICAg
Ly8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpCit7CisgICAgZnJvbnRlbmRSZW9wZW5pbmdD
b3VudCsrOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAg
ICBydW5UZXN0KCk7Cit9CiAKIGZ1bmN0aW9uIHJ1bkFmdGVySWZyYW1lSXNMb2FkZWQoKQogewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDFhY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanMKQEAg
LTAsMCArMSwyOSBAQAordmFyIGluaXRpYWxpemVfTmV0d29ya1Rlc3QgPSBmdW5jdGlvbigpIHsK
KworSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0gZnVuY3Rp
b24oKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNrZ3JvdW5k
Q29sbGVjdGlvbkVuYWJsZWQpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
Ll90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRocm93ICJCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uIGFscmVhZHkgZW5hYmxlZC4iOwor
ICAgIH0KK30KKworSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlv
biA9IGZ1bmN0aW9uICgpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5f
YmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7Cit9CisKK0luc3Bl
Y3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJjZXMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHJl
c291cmNlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMuc2xpY2UoKTsK
KyAgICAvL3Jlc291cmNlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS51cmwubG9jYWxl
Q29tcGFyZShiLnVybCk7fSk7CisgICAgcmVzb3VyY2VzLnNvcnQoKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VzIGNvdW50ID0gIiArIHJlc291cmNlcy5sZW5ndGgpOwor
ICAgIGZvciAoaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2VzW2ldLnVybCk7CisgICAgfQorfQorCit9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NDMzMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBA
CitUZXN0IHRoYXQgcmVvcGVuaW5nIGNsZWFycyBuZXR3b3JrIHBhbmVsIGluIGJhY2tncm91bmQg
ZXZlbnRzIGNvbGxlY3Rpb24gZGlzYWJsZWQgbW9kZS4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisK
K1Jlb3BlbmVkIGZyb250ZW5kIDIgdGltZXMKK3Jlc291cmNlcyBjb3VudCA9IDAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNs
ZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTU2Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRp
c2FibGVkLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29y
ay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXNBbmRS
ZW9wZW5Gcm9udGVuZChzaXplKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9y
ZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplKTsKKyAgICBpbWFnZS5vbmxvYWQg
PSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsK
KworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBp
bWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0ZSgi
c3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplICsg
IiZnemlwPXRydWUiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9
CisKK3ZhciBsb2FkZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVk
KCkKK3sKKyAgICBsb2FkZWRSZXNvdXJjZUNvdW50Kys7CisgICAgaWYgKGxvYWRlZFJlc291cmNl
Q291bnQgJSAyID09PSAwKSB7CisgICAgICAgIHJlb3BlbkZyb250ZW5kKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdl
c0FuZFJlb3BlbkZyb250ZW5kKDQwMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdlc0FuZFJlb3BlbkZyb250
ZW5kKDYwMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2Ny
aXB0aW9uID09PSAiMiIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVzY3JpcHRpb24gKyAiIHRpbWVzIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0aHJvdyBlOwor
ICAgIH0KKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCByZW9wZW5pbmcgY2xlYXJzIG5ldHdvcmsgcGFuZWwgaW4g
YmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiBkaXNhYmxlZCBtb2RlLgorPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5CdWcgNTgwNjQ8L2E+
Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIi
PkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9w
ZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWZkYzY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVu
dCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMg
ZXZlbnRzIHdpdGggY2xvc2VkIGZyb250ZW5kLiBCdWcgNTgwNjQgQnVnIDU4NjUyCisKKworcmVz
b3VyY2VzIGNvdW50ID0gMgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMAoraHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1p
bWFnZSZzaXplPTQwMCZnemlwPXRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQt
b3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNjRjZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwg
InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCIpOworICAgIGltYWdl
Lm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0
cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAw
Jmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30K
KwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQo
KQoreworICAgIGxvYWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9hZGVkUmVzb3VyY2VD
b3VudCA9PT0gMikgeworICAgICAgICBvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rp
b24oKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbG9z
ZUZyb250ZW5kKGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQpIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjEiKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOworICAgICAgICAgICAg
ICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVzdC4KKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2Fi
bGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHRocm93IGU7CisgICAgfQor
Cit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJs
ZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMgZXZlbnRzIHdpdGggY2xvc2VkIGZy
b250ZW5kLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU4NjUyIj5CdWcgNTgwNjQ8L2E+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2NTIiPkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODEwN2VhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCB0
aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBw
YW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJl
b3BlbmluZy4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisKK1Jlb3BlbmVkIGZyb250ZW5kIDEgdGlt
ZXMKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Bl
bi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdj
YzFjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCkBAIC0wLDAgKzEsNjEgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorCitmdW5jdGlvbiBsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJp
YnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCIp
OworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBp
bWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVz
b3VyY2VMb2FkZWQoKQoreworICAgIGlmICgrK2xvYWRlZFJlc291cmNlQ291bnQgPT09IDIpIHsK
KyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250
ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQo
KSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVzY3JpcHRpb24gKyAi
IHRpbWVzIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291
cmNlcygpOworICAgICAgICAgICAgICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVz
dC4KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRD
b2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAg
ICAgIHRocm93IGU7CisgICAgfQorCit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVu
dCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMg
bmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJlb3BlbmluZy4KKzxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MiI+QnVnIDU4MDY0PC9hPgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5C
dWcgNTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0
CmluZGV4IDE5YjllZmIuLjYxMjFhNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0xMCwy
MSArMTAsMTAgQEAgUnVubmluZzogdGVzdFNvdXJjZUZyYW1lQ29udGVudAogPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhpcyBh
c3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5k
IHJlc3BvbnNlCi0gICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJv
eWVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJvbnRl
bmRSZW9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0
b3IoKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQiLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3Jp
cHRpb24gPT09ICJ1bmRlZmluZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgaWYg
KHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoInJlb3BlbkZyb250ZW5kKCkiKQogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCmluZGV4IDQz
MWM3MzcuLjVmZWJlY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9vcGVuLWNsb3NlLW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKQEAgLTQsMjEgKzQsMTAgQEAKIDxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKLWZ1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5
bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCBy
ZXNwb25zZQotICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3ll
ZC4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQgPSB0cnVlOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYklu
c3BlY3RvcigpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9y
KCk7Ci0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJl
b3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0
aW9uID09PSAidW5kZWZpbmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJm
cm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChy
ZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJyZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTVlYTQzLi41Y2NmM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMTMg
IFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmFj
a2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0b3Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1Mgor
CisgICAgICAgIE5vdyBpbiBXZWJJbnNwZWN0b3IgTmV0d29yayBwYW5lbCBhdmFsYWlibGUgbmV3
IGNoZWNrYm94IGl0ZW0gaW4gY29udGV4dCBtZW51OgorICAgICAgICAiQmFja2dyb3VuZCBldmVu
dHMgY29sbGVjdGlvbiIuIEl0IGFsbG93cyB0byBzYXZlIGFsbCBuZXR3b3JrIGV2ZW50cyB3aGVu
IGluc3BlY3RvcgorICAgICAgICBmcm9udGVuZCBjbG9zZWQuIEV2ZW50cyB0aGF0IG9jY3VyIGJl
Zm9yZSBjb2xsZWN0aW9uIGVuYWJsaW5nIGFyZSBub3QgcHJlc2VydmVkIGFmdGVyCisgICAgICAg
IGZyb250ZW5kIHJlb3BlbmluZy4gUHJvcGVydHkgdW5pcXVlIGZvciBlYWNoIHBhZ2UuIERpc2Fi
bGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVu
LWxvYWQtcmVvcGVuLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRzQ29sbGVjdG9yOjpjbGVhcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5k
RXZlbnRzQ29sbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVj
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
YmFja2dyb3VuZENvbGxlY3Rpb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9jb250ZXh0TWVu
dSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fdG9nZ2xl
QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24pOgorCiAyMDExLTA1LTA1ICBIYW5zIFdlbm5ib3Jn
ICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2su
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwCmluZGV4IDFj
MzY1Y2YuLjczOTFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVu
dHNDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xs
ZWN0b3IuY3BwCkBAIC00OCw2ICs0OCwxMSBAQCB2b2lkIEV2ZW50c0NvbGxlY3Rvcjo6YWRkRXZl
bnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIH0KIAordm9pZCBFdmVudHNDb2xsZWN0
b3I6OmNsZWFyKCkKK3sKKyAgICBtX2V2ZW50cy5jbGVhcigpOworfQorCiB2b2lkIEV2ZW50c0Nv
bGxlY3Rvcjo6c2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIHJl
Y2VpdmVyKQogewogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gbV9ldmVu
dHMuYmVnaW4oKTsgaXQgIT0gbV9ldmVudHMuZW5kKCk7ICsraXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKaW5kZXggZDUzZTEwOS4uZTI2ZTEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaApAQCAtNDAsNiArNDAsNyBA
QCBwdWJsaWM6CiAgICAgRXZlbnRzQ29sbGVjdG9yKCk7CiAgICAgfkV2ZW50c0NvbGxlY3Rvcigp
IHsgfQogICAgIHZvaWQgYWRkRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lk
IGNsZWFyKCk7CiAgICAgdm9pZCBzZW5kQ29sbGVjdGVkRXZlbnRzKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCopOwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENhcGFjaXR5
ID0gMTAyNCoxMDI0OyAvLyAxIE1iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KaW5kZXggNWI2YWNmNC4uMGQwZjRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgpAQCAtNDQ5LDYgKzQ0OSwxOSBAQAogICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAidHlwZSI6
ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAiTWFwIHdpdGggZXh0cmEgSFRUUCBoZWFkZXJzLiIg
fQogICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAic2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVk
IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWxsb3cgdHVybiBvbi9vZmYgYmFj
a2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uLiIsCisgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0
eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAidHJ1ZSAtIGVuYWJsZSBjb2xsZWN0aW9u
LCBmYWxzZSAtIGRpc2FibGUiIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldEJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uU3RhdGUiLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiB9Cisg
ICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZl
bnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUHJveHkuY3BwCmluZGV4IDRlMjE4OGQuLmJhMDU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKQEAgLTU1LDYgKzU1
LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lCiAgICAgbV9yZWNlaXZlciA9IHJlY2VpdmVy
OwogfQogCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckZyb250ZW5kUHJveHk6
Omluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpCit7CisgICAgcmV0dXJuIG1fcmVjZWl2ZXI7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50
c0NvbGxlY3RvciogY29sbGVjdG9yKQogewogICAgIG1fY29sbGVjdG9yID0gY29sbGVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmgK
aW5kZXggMjU5YWY2Ny4uNTFmODRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFByb3h5KCkgeyB9CiAKICAgICB2b2lkIHNldElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpOwogICAg
IHZvaWQgc2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50c0NvbGxlY3RvciopOwogICAgIHZpcnR1YWwg
Ym9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
CmluZGV4IDNjYzhlNDQuLmRjNGRhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFJlc291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29u
c3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291cmNlQWdlbnRFbmFibGVkIjsK
IHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNbXSA9ICJleHRyYVJlcXVlc3RI
ZWFkZXJzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCI7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQpAQCAtODUsMTMgKzg2LDE1IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBpZiAoYmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5
LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CiAgICAgICAgIG1fZnJvbnRlbmQgPSBt
X21vY2tGcm9udGVuZC5nZXQoKTsKLSAgICB9IGVsc2UKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CisgICAgICAgIG1fZnJv
bnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250ZW5kUHJv
eHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZnJvbnRlbmQgPSAwOwotCisgICAg
ICAgIEVycm9yU3RyaW5nIGVycm9yOworICAgICAgICBkaXNhYmxlKCZlcnJvcik7CisgICAgfQog
ICAgIG1fdXNlckFnZW50T3ZlcnJpZGUgPSAiIjsKLSAgICBkaXNhYmxlKDApOwogfQogCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc3RvcmUoKQpAQCAtMzMxLDEyICszMzQsMzUgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQogCit2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3Rh
dGUoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKQoreworICAgICgqZW5hYmxlZCkgPSBiYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKK30KKwogYm9vbCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKQogewotICAgIC8v
IEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIpCi0g
ICAgLy8gQWRkIGhlcmUgY29uZGl0aW9uIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xs
ZWN0aW9uLgotICAgIC8vIE5vdyB0aGlzIGZ1bmN0aW9uIGlzIGRpc2FibGUuCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0
ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKTsKK30KKwordm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoRXJy
b3JTdHJpbmcqLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKGVuYWJsZWQgPT0gYmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5h
YmxlZCkgeworICAgICAgICBpZiAoIWlzQmFja2dyb3VuZENvbGxlY3Rpb25Jbml0KQorICAgICAg
ICAgICAgYmFja2dyb3VuZENvbGxlY3Rpb25Jbml0KCk7CisgICAgICAgIC8vIEluc2VydCBNZXNz
YWdlIFByb3h5IGluIHJlY2VpdmVyIGNoYWluLgorICAgICAgICBBU1NFUlQobV9mcm9udGVuZCk7
CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2xpZW50ID0gbV9mcm9udGVuZC0+
Z2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRl
bmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGNsaWVudCk7CisgICAgICAgIG1f
ZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250ZW5k
UHJveHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRha2Ugb3V0IE1lc3NhZ2Ug
UHJveHkgZnJvbSByZWNlaXZlciBjaGFpbi4KKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+aW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKCkpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCgwKTsKKyAgICAgICAgbV9ldmVudHNDb2xsZWN0b3ItPmNs
ZWFyKCk7CisgICAgfQorICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNlQWdl
bnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLCBlbmFibGVkKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAt
MzY4LDE2ICszOTQsMjQgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhl
YWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck8KICAgICBtX3N0YXRlLT5z
ZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzLCBoZWFkZXJz
KTsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpiYWNrZ3JvdW5kQ29sbGVjdGlv
bkluaXQoKQoreworICAgIG1fZXZlbnRzQ29sbGVjdG9yID0gYWRvcHRQdHIobmV3IEV2ZW50c0Nv
bGxlY3RvcigpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9wdFB0cihuZXcg
SW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkpOworICAgIC8v
IENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3JrIGV2ZW50cy4K
KyAgICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZDo6TmV0
d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKKyAgICBpc0JhY2tncm91bmRD
b2xsZWN0aW9uSW5pdCA9IHRydWU7Cit9CisKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkK
ICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICAsIGlzQmFj
a2dyb3VuZENvbGxlY3Rpb25Jbml0KGZhbHNlKQogewogICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRz
Q29sbGVjdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0
UHRyKG5ldyBFdmVudHNDb2xsZWN0b3IpOwotICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJv
eHkgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rv
ci5nZXQoKSkpOworICAgICAgICBiYWNrZ3JvdW5kQ29sbGVjdGlvbkluaXQoKTsKICAgICAgICAg
Ly8gQ3JlYXRlIG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRz
LgotICAgICAgICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZDo6TmV0d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKICAgICAgICAgbV9m
cm9udGVuZCA9IG1fbW9ja0Zyb250ZW5kLmdldCgpOwogICAgICAgICBlbmFibGUoKTsKICAgICB9
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCmluZGV4IGQ2MGQyMWYuLmZkMmYwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTA1LDkgKzEwNSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpOwogI2VuZGlmCiAKLSAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZCgpOworICAgIHZvaWQgZ2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZShFcnJvclN0
cmluZyosIGJvb2wqIGVuYWJsZWQpOworICAgIHZvaWQgc2V0QmFja2dyb3VuZEV2ZW50c0NvbGxl
Y3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKTsKIAotICAgIC8vIENhbGxl
ZCBmcm9tIGZyb250ZW5kIAorICAgIC8vIENhbGxlZCBmcm9tIGZyb250ZW5kCiAgICAgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAg
ICB2b2lkIHNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpOwpAQCAtMTE3LDE2ICsxMTgsMTkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSopOwogCisgICAgYm9vbCBiYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvbkVuYWJsZWQoKTsKICAgICB2b2lkIGVuYWJsZSgpOworICAgIHZvaWQgYmFja2dyb3Vu
ZENvbGxlY3Rpb25Jbml0KCk7CiAKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1l
bnRpbmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJ
bnNwZWN0b3JTdGF0ZSogbV9zdGF0ZTsKLSAgICBPd25QdHI8RXZlbnRzQ29sbGVjdG9yPiBtX2V2
ZW50c0NvbGxlY3RvcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayogbV9mcm9udGVu
ZDsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcms+IG1fbW9ja0Zyb250ZW5k
OworICAgIE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRzQ29sbGVjdG9yOwogICAgIE93
blB0cjxJbnNwZWN0b3JGcm9udGVuZFByb3h5PiBtX2luc3BlY3RvckZyb250ZW5kUHJveHk7Cisg
ICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKICAg
ICBTdHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKKyAgICBib29sIGlzQmFja2dyb3VuZENvbGxl
Y3Rpb25Jbml0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA1NDExM2Rj
Li42MmJjOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qcwpAQCAtMzAsNiArMzAsMTIgQEAKIAogV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbCA9IGZ1bmN0aW9uKCkKIHsKKyAgICBmdW5jdGlvbiBldmVudHNDb2xsZWN0aW9uRW5h
YmxlZChlcnJvciwgZW5hYmxlZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRDb2xs
ZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgfQorICAgIE5ldHdvcmtBZ2VudC5nZXRCYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKGV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLmJpbmQo
dGhpcykpOworCiAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgIm5ldHdvcmsiKTsK
IAogICAgIHRoaXMuY3JlYXRlU2lkZWJhcigpOwpAQCAtMTAxOSw2ICsxMDI1LDkgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJD
YXNlTWVudVRpdGxlcygpID8gIlNhdmUgYWxsIGFzIEhBUiIgOiAiU2F2ZSBBbGwgYXMgSEFSIiks
IHRoaXMuX2V4cG9ydEFsbC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogCisgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVj
a2JveEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGVkIGJhY2tncm91bmQgZXZlbnRz
IGNvbGxlY3Rpb24iKSwgdGhpcy5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24uYmlu
ZCh0aGlzKSwgdGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKTsKKwogICAgICAgICBj
b250ZXh0TWVudS5zaG93KGV2ZW50KTsKICAgICB9LAogCkBAIC0xMDY1LDYgKzEwNzQsMTIgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5zYXZlQXMocmVzb3VyY2UuZGlzcGxheU5hbWUgKyAiLmhhciIsIEpTT04u
c3RyaW5naWZ5KGhhcikpOwogICAgIH0sCiAKKyAgICBfdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb246IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYmFja2dy
b3VuZENvbGxlY3Rpb25FbmFibGVkID0gIXRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxl
ZDsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5h
YmxlZCh0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQpOworICAgIH0sCisKICAgICBf
dXBkYXRlT2Zmc2NyZWVuUm93czogZnVuY3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBkYXRh
VGFibGVCb2R5ID0gdGhpcy5fZGF0YUdyaWQuZGF0YVRhYmxlQm9keTsK
</data>
<flag name="review"
          id="86587"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93438</attachid>
            <date>2011-05-13 06:01:40 -0700</date>
            <delta_ts>2011-05-13 06:38:08 -0700</delta_ts>
            <desc>Remove bool isBackgroundCollectionInit</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>27451</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZGFiY2QzLi45YjU3NGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDUt
MTMgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKGluaXRpYWxpemVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29y
a1Jlc291cmNlcyk6CisgICAgICAgIChpbml0aWFsaXplX05ldHdvcmtUZXN0KToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJs
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisKIDIwMTEtMDUtMTIgIEFudG9uIE11aGlu
ICA8YW50b25ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXgg
NWMyNjdkOS4uYjlkYjU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMyNCw2ICszMjQsMjkgQEAgSW5zcGVjdG9yVGVz
dC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIAogdmFyIHJ1blRl
c3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7Cit2YXIgZnJvbnRlbmRS
ZW9wZW5pbmdDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkKK3sKKyAgICBj
bG9zZUZyb250ZW5kKG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCk7Cit9CisKK2Z1bmN0aW9uIGNs
b3NlRnJvbnRlbmQoY2FsbGJhY2spCit7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0
byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCisgICAg
Ly8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpCit7CisgICAgZnJvbnRlbmRSZW9wZW5pbmdD
b3VudCsrOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAg
ICBydW5UZXN0KCk7Cit9CiAKIGZ1bmN0aW9uIHJ1bkFmdGVySWZyYW1lSXNMb2FkZWQoKQogewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDFhY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanMKQEAg
LTAsMCArMSwyOSBAQAordmFyIGluaXRpYWxpemVfTmV0d29ya1Rlc3QgPSBmdW5jdGlvbigpIHsK
KworSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0gZnVuY3Rp
b24oKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNrZ3JvdW5k
Q29sbGVjdGlvbkVuYWJsZWQpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
Ll90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRocm93ICJCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uIGFscmVhZHkgZW5hYmxlZC4iOwor
ICAgIH0KK30KKworSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlv
biA9IGZ1bmN0aW9uICgpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5f
YmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7Cit9CisKK0luc3Bl
Y3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJjZXMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHJl
c291cmNlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMuc2xpY2UoKTsK
KyAgICAvL3Jlc291cmNlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS51cmwubG9jYWxl
Q29tcGFyZShiLnVybCk7fSk7CisgICAgcmVzb3VyY2VzLnNvcnQoKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VzIGNvdW50ID0gIiArIHJlc291cmNlcy5sZW5ndGgpOwor
ICAgIGZvciAoaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2VzW2ldLnVybCk7CisgICAgfQorfQorCit9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NDMzMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBA
CitUZXN0IHRoYXQgcmVvcGVuaW5nIGNsZWFycyBuZXR3b3JrIHBhbmVsIGluIGJhY2tncm91bmQg
ZXZlbnRzIGNvbGxlY3Rpb24gZGlzYWJsZWQgbW9kZS4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisK
K1Jlb3BlbmVkIGZyb250ZW5kIDIgdGltZXMKK3Jlc291cmNlcyBjb3VudCA9IDAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNs
ZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTU2Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRp
c2FibGVkLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29y
ay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXNBbmRS
ZW9wZW5Gcm9udGVuZChzaXplKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9y
ZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplKTsKKyAgICBpbWFnZS5vbmxvYWQg
PSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsK
KworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBp
bWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0ZSgi
c3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplICsg
IiZnemlwPXRydWUiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9
CisKK3ZhciBsb2FkZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVk
KCkKK3sKKyAgICBsb2FkZWRSZXNvdXJjZUNvdW50Kys7CisgICAgaWYgKGxvYWRlZFJlc291cmNl
Q291bnQgJSAyID09PSAwKSB7CisgICAgICAgIHJlb3BlbkZyb250ZW5kKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdl
c0FuZFJlb3BlbkZyb250ZW5kKDQwMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdlc0FuZFJlb3BlbkZyb250
ZW5kKDYwMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2Ny
aXB0aW9uID09PSAiMiIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVzY3JpcHRpb24gKyAiIHRpbWVzIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0aHJvdyBlOwor
ICAgIH0KKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCByZW9wZW5pbmcgY2xlYXJzIG5ldHdvcmsgcGFuZWwgaW4g
YmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiBkaXNhYmxlZCBtb2RlLgorPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5CdWcgNTgwNjQ8L2E+
Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIi
PkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9w
ZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWZkYzY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVu
dCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMg
ZXZlbnRzIHdpdGggY2xvc2VkIGZyb250ZW5kLiBCdWcgNTgwNjQgQnVnIDU4NjUyCisKKworcmVz
b3VyY2VzIGNvdW50ID0gMgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMAoraHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1p
bWFnZSZzaXplPTQwMCZnemlwPXRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQt
b3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNjRjZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwg
InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCIpOworICAgIGltYWdl
Lm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0
cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAw
Jmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30K
KwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQo
KQoreworICAgIGxvYWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9hZGVkUmVzb3VyY2VD
b3VudCA9PT0gMikgeworICAgICAgICBvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rp
b24oKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbG9z
ZUZyb250ZW5kKGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQpIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjEiKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOworICAgICAgICAgICAg
ICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVzdC4KKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2Fi
bGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHRocm93IGU7CisgICAgfQor
Cit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJs
ZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMgZXZlbnRzIHdpdGggY2xvc2VkIGZy
b250ZW5kLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU4NjUyIj5CdWcgNTgwNjQ8L2E+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2NTIiPkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODEwN2VhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCB0
aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBw
YW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJl
b3BlbmluZy4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisKK1Jlb3BlbmVkIGZyb250ZW5kIDEgdGlt
ZXMKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Bl
bi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdj
YzFjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCkBAIC0wLDAgKzEsNjEgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorCitmdW5jdGlvbiBsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJp
YnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCIp
OworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBp
bWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVz
b3VyY2VMb2FkZWQoKQoreworICAgIGlmICgrK2xvYWRlZFJlc291cmNlQ291bnQgPT09IDIpIHsK
KyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250
ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQo
KSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVzY3JpcHRpb24gKyAi
IHRpbWVzIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291
cmNlcygpOworICAgICAgICAgICAgICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVz
dC4KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRD
b2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAg
ICAgIHRocm93IGU7CisgICAgfQorCit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVu
dCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMg
bmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJlb3BlbmluZy4KKzxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MiI+QnVnIDU4MDY0PC9hPgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5C
dWcgNTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0
CmluZGV4IDE5YjllZmIuLjYxMjFhNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0xMCwy
MSArMTAsMTAgQEAgUnVubmluZzogdGVzdFNvdXJjZUZyYW1lQ29udGVudAogPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhpcyBh
c3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5k
IHJlc3BvbnNlCi0gICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJv
eWVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJvbnRl
bmRSZW9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0
b3IoKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQiLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3Jp
cHRpb24gPT09ICJ1bmRlZmluZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgaWYg
KHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoInJlb3BlbkZyb250ZW5kKCkiKQogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCmluZGV4IDQz
MWM3MzcuLjVmZWJlY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9vcGVuLWNsb3NlLW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKQEAgLTQsMjEgKzQsMTAgQEAKIDxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKLWZ1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5
bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCBy
ZXNwb25zZQotICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3ll
ZC4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQgPSB0cnVlOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYklu
c3BlY3RvcigpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9y
KCk7Ci0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJl
b3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0
aW9uID09PSAidW5kZWZpbmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJm
cm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChy
ZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJyZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTVlYTQzLi44OTAzMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMTMg
IFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmFj
a2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0b3Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1Mgor
CisgICAgICAgIE5vdyBpbiBXZWJJbnNwZWN0b3IgTmV0d29yayBwYW5lbCBhdmFsYWlibGUgbmV3
IGNoZWNrYm94IGl0ZW0gaW4gY29udGV4dCBtZW51OgorICAgICAgICAiQmFja2dyb3VuZCBldmVu
dHMgY29sbGVjdGlvbiIuIEl0IGFsbG93cyB0byBzYXZlIGFsbCBuZXR3b3JrIGV2ZW50cyB3aGVu
IGluc3BlY3RvcgorICAgICAgICBmcm9udGVuZCBjbG9zZWQuIEV2ZW50cyB0aGF0IG9jY3VyIGJl
Zm9yZSBjb2xsZWN0aW9uIGVuYWJsaW5nIGFyZSBub3QgcHJlc2VydmVkIGFmdGVyCisgICAgICAg
IGZyb250ZW5kIHJlb3BlbmluZy4gUHJvcGVydHkgdW5pcXVlIGZvciBlYWNoIHBhZ2UuIERpc2Fi
bGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVu
LWxvYWQtcmVvcGVuLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRzQ29sbGVjdG9yOjpjbGVhcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5k
RXZlbnRzQ29sbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVj
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9jb250
ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5f
dG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24pOgorCiAyMDExLTA1LTA1ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUg
QmxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwCmlu
ZGV4IDFjMzY1Y2YuLjczOTFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9FdmVudHNDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVu
dHNDb2xsZWN0b3IuY3BwCkBAIC00OCw2ICs0OCwxMSBAQCB2b2lkIEV2ZW50c0NvbGxlY3Rvcjo6
YWRkRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIH0KIAordm9pZCBFdmVudHND
b2xsZWN0b3I6OmNsZWFyKCkKK3sKKyAgICBtX2V2ZW50cy5jbGVhcigpOworfQorCiB2b2lkIEV2
ZW50c0NvbGxlY3Rvcjo6c2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIHJlY2VpdmVyKQogewogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0g
bV9ldmVudHMuYmVnaW4oKTsgaXQgIT0gbV9ldmVudHMuZW5kKCk7ICsraXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKaW5kZXggZDUzZTEwOS4uZTI2ZTEwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRzQ29sbGVjdG9yKCk7CiAgICAgfkV2ZW50c0NvbGxl
Y3RvcigpIHsgfQogICAgIHZvaWQgYWRkRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBzZW5kQ29sbGVjdGVkRXZlbnRzKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCopOwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENh
cGFjaXR5ID0gMTAyNCoxMDI0OyAvLyAxIE1iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KaW5kZXggNWI2YWNmNC4uMGQwZjRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgpAQCAtNDQ5LDYgKzQ0OSwxOSBAQAogICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAi
dHlwZSI6ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAiTWFwIHdpdGggZXh0cmEgSFRUUCBoZWFk
ZXJzLiIgfQogICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25F
bmFibGVkIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWxsb3cgdHVybiBvbi9v
ZmYgYmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uLiIsCisgICAgICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxl
ZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAidHJ1ZSAtIGVuYWJsZSBjb2xs
ZWN0aW9uLCBmYWxzZSAtIGRpc2FibGUiIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldEJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUiLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFu
IiB9CisgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAg
ICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kUHJveHkuY3BwCmluZGV4IDRlMjE4OGQuLmJhMDU2MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKQEAgLTU1
LDYgKzU1LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lCiAgICAgbV9yZWNlaXZlciA9IHJl
Y2VpdmVyOwogfQogCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckZyb250ZW5k
UHJveHk6Omluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpCit7CisgICAgcmV0dXJuIG1fcmVjZWl2
ZXI7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0RXZlbnRzQ29sbGVjdG9y
KEV2ZW50c0NvbGxlY3RvciogY29sbGVjdG9yKQogewogICAgIG1fY29sbGVjdG9yID0gY29sbGVj
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5LmgKaW5kZXggMjU5YWY2Ny4uNTFmODRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFByb3h5KCkgeyB9CiAKICAgICB2b2lk
IHNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsK
KyAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgp
OwogICAgIHZvaWQgc2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50c0NvbGxlY3RvciopOwogICAgIHZp
cnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCmluZGV4IDNjYzhlNDQuLmVmYTI3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFJlc291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0
aWMgY29uc3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291cmNlQWdlbnRFbmFi
bGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNbXSA9ICJleHRyYVJl
cXVlc3RIZWFkZXJzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCI7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQpAQCAtODUsMTMgKzg2LDE1IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBpZiAoYmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVu
ZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CiAgICAgICAgIG1fZnJvbnRl
bmQgPSBtX21vY2tGcm9udGVuZC5nZXQoKTsKLSAgICB9IGVsc2UKKyAgICAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CisgICAgICAg
IG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250
ZW5kUHJveHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZnJvbnRlbmQgPSAwOwot
CisgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOworICAgICAgICBkaXNhYmxlKCZlcnJvcik7Cisg
ICAgfQogICAgIG1fdXNlckFnZW50T3ZlcnJpZGUgPSAiIjsKLSAgICBkaXNhYmxlKDApOwogfQog
CiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc3RvcmUoKQpAQCAtMzMxLDEyICszMzQs
MzUgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQog
Cit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uU3RhdGUoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKQoreworICAgICgqZW5hYmxlZCkg
PSBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKK30KKwogYm9vbCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKQogewot
ICAgIC8vIEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2
NTIpCi0gICAgLy8gQWRkIGhlcmUgY29uZGl0aW9uIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGV2ZW50
cyBjb2xsZWN0aW9uLgotICAgIC8vIE5vdyB0aGlzIGZ1bmN0aW9uIGlzIGRpc2FibGUuCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdl
bnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKGVuYWJsZWQgPT0gYmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZW5hYmxlZCkgeworICAgICAgICBpZiAoIW1fZXZlbnRzQ29sbGVjdG9yKQorICAgICAgICAg
ICAgaW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKCk7CisgICAgICAgIC8vIEluc2VydCBN
ZXNzYWdlIFByb3h5IGluIHJlY2VpdmVyIGNoYWluLgorICAgICAgICBBU1NFUlQobV9mcm9udGVu
ZCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2xpZW50ID0gbV9mcm9udGVu
ZC0+Z2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCk7CisgICAgICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGNsaWVudCk7CisgICAgICAg
IG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250
ZW5kUHJveHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRha2Ugb3V0IE1lc3Nh
Z2UgUHJveHkgZnJvbSByZWNlaXZlciBjaGFpbi4KKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+aW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKCkpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNl
dEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgwKTsKKyAgICAgICAgbV9ldmVudHNDb2xsZWN0b3It
PmNsZWFyKCk7CisgICAgfQorICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNl
QWdlbnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLCBlbmFibGVkKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpA
QCAtMzY4LDE2ICszOTQsMjIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRy
YUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck8KICAgICBtX3N0YXRl
LT5zZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzLCBoZWFk
ZXJzKTsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojppbml0aWFsaXplQmFja2dy
b3VuZENvbGxlY3Rpb24oKQoreworICAgIG1fZXZlbnRzQ29sbGVjdG9yID0gYWRvcHRQdHIobmV3
IEV2ZW50c0NvbGxlY3RvcigpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9w
dFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkp
OworICAgIC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3Jr
IGV2ZW50cy4KKyAgICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZDo6TmV0d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKK30KKwogSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X3N0YXRlKHN0YXRlKQogewogICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoKSkgewotICAgICAgICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHND
b2xsZWN0b3IpOwotICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9wdFB0cihu
ZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkpOworICAg
ICAgICBpbml0aWFsaXplQmFja2dyb3VuZENvbGxlY3Rpb24oKTsKICAgICAgICAgLy8gQ3JlYXRl
IG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRzLgotICAgICAg
ICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29y
ayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKICAgICAgICAgbV9mcm9udGVuZCA9
IG1fbW9ja0Zyb250ZW5kLmdldCgpOwogICAgICAgICBlbmFibGUoKTsKICAgICB9IGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmlu
ZGV4IGQ2MGQyMWYuLmU4YTBmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTA1LDkgKzEwNSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKLSAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpOworICAg
IHZvaWQgZ2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZShFcnJvclN0cmluZyosIGJv
b2wqIGVuYWJsZWQpOworICAgIHZvaWQgc2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKTsKIAotICAgIC8vIENhbGxlZCBmcm9tIGZy
b250ZW5kIAorICAgIC8vIENhbGxlZCBmcm9tIGZyb250ZW5kCiAgICAgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHNl
dFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
OwpAQCAtMTE3LDE1ICsxMTgsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJ
bnNwZWN0b3JTdGF0ZSopOwogCisgICAgYm9vbCBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVu
YWJsZWQoKTsKICAgICB2b2lkIGVuYWJsZSgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tncm91
bmRDb2xsZWN0aW9uKCk7CiAKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNw
ZWN0b3JTdGF0ZSogbV9zdGF0ZTsKLSAgICBPd25QdHI8RXZlbnRzQ29sbGVjdG9yPiBtX2V2ZW50
c0NvbGxlY3RvcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayogbV9mcm9udGVuZDsK
LSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcms+IG1fbW9ja0Zyb250ZW5kOwor
ICAgIE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRzQ29sbGVjdG9yOwogICAgIE93blB0
cjxJbnNwZWN0b3JGcm9udGVuZFByb3h5PiBtX2luc3BlY3RvckZyb250ZW5kUHJveHk7CisgICAg
T3duUHRyPEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKICAgICBT
dHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNTQxMTNkYy4uNjJiYzk5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKQEAgLTMwLDYgKzMwLDEyIEBACiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwg
PSBmdW5jdGlvbigpCiB7CisgICAgZnVuY3Rpb24gZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoZXJy
b3IsIGVuYWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVu
YWJsZWQgPSBlbmFibGVkOworICAgIH0KKyAgICBOZXR3b3JrQWdlbnQuZ2V0QmFja2dyb3VuZEV2
ZW50c0NvbGxlY3Rpb25TdGF0ZShldmVudHNDb2xsZWN0aW9uRW5hYmxlZC5iaW5kKHRoaXMpKTsK
KwogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJuZXR3b3JrIik7CiAKICAgICB0
aGlzLmNyZWF0ZVNpZGViYXIoKTsKQEAgLTEwMTksNiArMTAyNSw5IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVU
aXRsZXMoKSA/ICJTYXZlIGFsbCBhcyBIQVIiIDogIlNhdmUgQWxsIGFzIEhBUiIpLCB0aGlzLl9l
eHBvcnRBbGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAorICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlZCBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0
aW9uIiksIHRoaXMuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uLmJpbmQodGhpcyks
IHRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZCk7CisKICAgICAgICAgY29udGV4dE1l
bnUuc2hvdyhldmVudCk7CiAgICAgfSwKIApAQCAtMTA2NSw2ICsxMDc0LDEyIEBAIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc2F2ZUFzKHJlc291cmNlLmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0cmluZ2lm
eShoYXIpKTsKICAgICB9LAogCisgICAgX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9u
OiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRDb2xs
ZWN0aW9uRW5hYmxlZCA9ICF0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQ7CisgICAg
ICAgIE5ldHdvcmtBZ2VudC5zZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQodGhp
cy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZU9m
ZnNjcmVlblJvd3M6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB2YXIgZGF0YVRhYmxlQm9k
eSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFUYWJsZUJvZHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93441</attachid>
            <date>2011-05-13 06:38:08 -0700</date>
            <delta_ts>2011-05-16 07:17:47 -0700</delta_ts>
            <desc>Fix wrong bug links</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>27451</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZGFiY2QzLi45YjU3NGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDUt
MTMgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKGluaXRpYWxpemVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29y
a1Jlc291cmNlcyk6CisgICAgICAgIChpbml0aWFsaXplX05ldHdvcmtUZXN0KToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJs
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisKIDIwMTEtMDUtMTIgIEFudG9uIE11aGlu
ICA8YW50b25ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXgg
NWMyNjdkOS4uYjlkYjU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMyNCw2ICszMjQsMjkgQEAgSW5zcGVjdG9yVGVz
dC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIAogdmFyIHJ1blRl
c3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7Cit2YXIgZnJvbnRlbmRS
ZW9wZW5pbmdDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkKK3sKKyAgICBj
bG9zZUZyb250ZW5kKG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCk7Cit9CisKK2Z1bmN0aW9uIGNs
b3NlRnJvbnRlbmQoY2FsbGJhY2spCit7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0
byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCisgICAg
Ly8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpCit7CisgICAgZnJvbnRlbmRSZW9wZW5pbmdD
b3VudCsrOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAg
ICBydW5UZXN0KCk7Cit9CiAKIGZ1bmN0aW9uIHJ1bkFmdGVySWZyYW1lSXNMb2FkZWQoKQogewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDFhY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanMKQEAg
LTAsMCArMSwyOSBAQAordmFyIGluaXRpYWxpemVfTmV0d29ya1Rlc3QgPSBmdW5jdGlvbigpIHsK
KworSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0gZnVuY3Rp
b24oKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNrZ3JvdW5k
Q29sbGVjdGlvbkVuYWJsZWQpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
Ll90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRocm93ICJCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uIGFscmVhZHkgZW5hYmxlZC4iOwor
ICAgIH0KK30KKworSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlv
biA9IGZ1bmN0aW9uICgpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5f
YmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKCk7Cit9CisKK0luc3Bl
Y3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJjZXMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHJl
c291cmNlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMuc2xpY2UoKTsK
KyAgICAvL3Jlc291cmNlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS51cmwubG9jYWxl
Q29tcGFyZShiLnVybCk7fSk7CisgICAgcmVzb3VyY2VzLnNvcnQoKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2VzIGNvdW50ID0gIiArIHJlc291cmNlcy5sZW5ndGgpOwor
ICAgIGZvciAoaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2VzW2ldLnVybCk7CisgICAgfQorfQorCit9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NDMzMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBA
CitUZXN0IHRoYXQgcmVvcGVuaW5nIGNsZWFycyBuZXR3b3JrIHBhbmVsIGluIGJhY2tncm91bmQg
ZXZlbnRzIGNvbGxlY3Rpb24gZGlzYWJsZWQgbW9kZS4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisK
K1Jlb3BlbmVkIGZyb250ZW5kIDIgdGltZXMKK3Jlc291cmNlcyBjb3VudCA9IDAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNs
ZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2FiYTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRp
c2FibGVkLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29y
ay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXNBbmRS
ZW9wZW5Gcm9udGVuZChzaXplKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9y
ZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplKTsKKyAgICBpbWFnZS5vbmxvYWQg
PSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsK
KworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBp
bWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0ZSgi
c3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPSIgKyBzaXplICsg
IiZnemlwPXRydWUiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9
CisKK3ZhciBsb2FkZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVk
KCkKK3sKKyAgICBsb2FkZWRSZXNvdXJjZUNvdW50Kys7CisgICAgaWYgKGxvYWRlZFJlc291cmNl
Q291bnQgJSAyID09PSAwKSB7CisgICAgICAgIHJlb3BlbkZyb250ZW5kKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdl
c0FuZFJlb3BlbkZyb250ZW5kKDQwMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdlc0FuZFJlb3BlbkZyb250
ZW5kKDYwMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2Ny
aXB0aW9uID09PSAiMiIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVzY3JpcHRpb24gKyAiIHRpbWVzIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0aHJvdyBlOwor
ICAgIH0KKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCByZW9wZW5pbmcgY2xlYXJzIG5ldHdvcmsgcGFuZWwgaW4g
YmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiBkaXNhYmxlZCBtb2RlLgorPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDY0Ij5CdWcgNTgwNjQ8L2E+
Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIi
PkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9w
ZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWZkYzY0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVu
dCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMg
ZXZlbnRzIHdpdGggY2xvc2VkIGZyb250ZW5kLiBCdWcgNTgwNjQgQnVnIDU4NjUyCisKKworcmVz
b3VyY2VzIGNvdW50ID0gMgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMAoraHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1p
bWFnZSZzaXplPTQwMCZnemlwPXRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQt
b3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZjYxNWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJpYnV0ZSgic3JjIiwg
InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCIpOworICAgIGltYWdl
Lm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBpbWFnZTIuc2V0QXR0
cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NDAw
Jmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UyKTsKK30K
KwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQo
KQoreworICAgIGxvYWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9hZGVkUmVzb3VyY2VD
b3VudCA9PT0gMikgeworICAgICAgICBvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rp
b24oKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbG9z
ZUZyb250ZW5kKGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQpIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjEiKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOworICAgICAgICAgICAg
ICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVzdC4KKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2Fi
bGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHRocm93IGU7CisgICAgfQor
Cit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJs
ZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMgZXZlbnRzIHdpdGggY2xvc2VkIGZy
b250ZW5kLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU4MDY0Ij5CdWcgNTgwNjQ8L2E+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2NTIiPkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODEwN2VhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCB0
aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBw
YW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJl
b3BlbmluZy4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisKK1Jlb3BlbmVkIGZyb250ZW5kIDEgdGlt
ZXMKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Bl
bi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMz
NzgwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCkBAIC0wLDAgKzEsNjEgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorCitmdW5jdGlvbiBsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJp
YnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCIp
OworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBp
bWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVz
b3VyY2VMb2FkZWQoKQoreworICAgIGlmICgrK2xvYWRlZFJlc291cmNlQ291bnQgPT09IDIpIHsK
KyAgICAgICAgcmVvcGVuRnJvbnRlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250
ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQo
KSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHJlc3VsdC5fZGVzY3JpcHRpb24gKyAi
IHRpbWVzIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291
cmNlcygpOworICAgICAgICAgICAgICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVz
dC4KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRD
b2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAg
ICAgIHRocm93IGU7CisgICAgfQorCit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVu
dCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMg
bmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJlb3BlbmluZy4KKzxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2NCI+QnVnIDU4MDY0PC9hPgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5C
dWcgNTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0
CmluZGV4IDE5YjllZmIuLjYxMjFhNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0xMCwy
MSArMTAsMTAgQEAgUnVubmluZzogdGVzdFNvdXJjZUZyYW1lQ29udGVudAogPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhpcyBh
c3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5k
IHJlc3BvbnNlCi0gICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJv
eWVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJvbnRl
bmRSZW9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2Vi
SW5zcGVjdG9yKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0
b3IoKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQiLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3Jp
cHRpb24gPT09ICJ1bmRlZmluZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgaWYg
KHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoInJlb3BlbkZyb250ZW5kKCkiKQogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCmluZGV4IDQz
MWM3MzcuLjVmZWJlY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9vcGVuLWNsb3NlLW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKQEAgLTQsMjEgKzQsMTAgQEAKIDxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKLWZ1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5
bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCBy
ZXNwb25zZQotICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3ll
ZC4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5k
UmVvcGVuZWQgPSB0cnVlOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYklu
c3BlY3RvcigpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9y
KCk7Ci0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJl
b3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0
aW9uID09PSAidW5kZWZpbmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJm
cm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChy
ZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJyZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTVlYTQzLi44OTAzMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMTMg
IFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmFj
a2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0b3Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1Mgor
CisgICAgICAgIE5vdyBpbiBXZWJJbnNwZWN0b3IgTmV0d29yayBwYW5lbCBhdmFsYWlibGUgbmV3
IGNoZWNrYm94IGl0ZW0gaW4gY29udGV4dCBtZW51OgorICAgICAgICAiQmFja2dyb3VuZCBldmVu
dHMgY29sbGVjdGlvbiIuIEl0IGFsbG93cyB0byBzYXZlIGFsbCBuZXR3b3JrIGV2ZW50cyB3aGVu
IGluc3BlY3RvcgorICAgICAgICBmcm9udGVuZCBjbG9zZWQuIEV2ZW50cyB0aGF0IG9jY3VyIGJl
Zm9yZSBjb2xsZWN0aW9uIGVuYWJsaW5nIGFyZSBub3QgcHJlc2VydmVkIGFmdGVyCisgICAgICAg
IGZyb250ZW5kIHJlb3BlbmluZy4gUHJvcGVydHkgdW5pcXVlIGZvciBlYWNoIHBhZ2UuIERpc2Fi
bGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVu
LWxvYWQtcmVvcGVuLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRzQ29sbGVjdG9yOjpjbGVhcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5k
RXZlbnRzQ29sbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVj
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9jb250
ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5f
dG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24pOgorCiAyMDExLTA1LTA1ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUg
QmxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwCmlu
ZGV4IDFjMzY1Y2YuLjczOTFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9FdmVudHNDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVu
dHNDb2xsZWN0b3IuY3BwCkBAIC00OCw2ICs0OCwxMSBAQCB2b2lkIEV2ZW50c0NvbGxlY3Rvcjo6
YWRkRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIH0KIAordm9pZCBFdmVudHND
b2xsZWN0b3I6OmNsZWFyKCkKK3sKKyAgICBtX2V2ZW50cy5jbGVhcigpOworfQorCiB2b2lkIEV2
ZW50c0NvbGxlY3Rvcjo6c2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIHJlY2VpdmVyKQogewogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0g
bV9ldmVudHMuYmVnaW4oKTsgaXQgIT0gbV9ldmVudHMuZW5kKCk7ICsraXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKaW5kZXggZDUzZTEwOS4uZTI2ZTEwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRzQ29sbGVjdG9yKCk7CiAgICAgfkV2ZW50c0NvbGxl
Y3RvcigpIHsgfQogICAgIHZvaWQgYWRkRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBzZW5kQ29sbGVjdGVkRXZlbnRzKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCopOwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENh
cGFjaXR5ID0gMTAyNCoxMDI0OyAvLyAxIE1iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KaW5kZXggNWI2YWNmNC4uMGQwZjRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgpAQCAtNDQ5LDYgKzQ0OSwxOSBAQAogICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAi
dHlwZSI6ICJvYmplY3QiLCAiZGVzY3JpcHRpb24iOiAiTWFwIHdpdGggZXh0cmEgSFRUUCBoZWFk
ZXJzLiIgfQogICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25F
bmFibGVkIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWxsb3cgdHVybiBvbi9v
ZmYgYmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uLiIsCisgICAgICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxl
ZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAidHJ1ZSAtIGVuYWJsZSBjb2xs
ZWN0aW9uLCBmYWxzZSAtIGRpc2FibGUiIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldEJhY2tncm91
bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUiLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFu
IiB9CisgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAg
ICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kUHJveHkuY3BwCmluZGV4IDRlMjE4OGQuLmJhMDU2MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKQEAgLTU1
LDYgKzU1LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lCiAgICAgbV9yZWNlaXZlciA9IHJl
Y2VpdmVyOwogfQogCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckZyb250ZW5k
UHJveHk6Omluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpCit7CisgICAgcmV0dXJuIG1fcmVjZWl2
ZXI7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0RXZlbnRzQ29sbGVjdG9y
KEV2ZW50c0NvbGxlY3RvciogY29sbGVjdG9yKQogewogICAgIG1fY29sbGVjdG9yID0gY29sbGVj
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFBy
b3h5LmgKaW5kZXggMjU5YWY2Ny4uNTFmODRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFByb3h5KCkgeyB9CiAKICAgICB2b2lk
IHNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsK
KyAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgp
OwogICAgIHZvaWQgc2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50c0NvbGxlY3RvciopOwogICAgIHZp
cnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCmluZGV4IDNjYzhlNDQuLmVmYTI3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFJlc291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0
aWMgY29uc3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxlZFtdID0gInJlc291cmNlQWdlbnRFbmFi
bGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVxdWVzdEhlYWRlcnNbXSA9ICJleHRyYVJl
cXVlc3RIZWFkZXJzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZFtdID0gImJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCI7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQpAQCAtODUsMTMgKzg2LDE1IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBpZiAoYmFja2dyb3Vu
ZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVu
ZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CiAgICAgICAgIG1fZnJvbnRl
bmQgPSBtX21vY2tGcm9udGVuZC5nZXQoKTsKLSAgICB9IGVsc2UKKyAgICAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7CisgICAgICAg
IG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250
ZW5kUHJveHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZnJvbnRlbmQgPSAwOwot
CisgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOworICAgICAgICBkaXNhYmxlKCZlcnJvcik7Cisg
ICAgfQogICAgIG1fdXNlckFnZW50T3ZlcnJpZGUgPSAiIjsKLSAgICBkaXNhYmxlKDApOwogfQog
CiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc3RvcmUoKQpAQCAtMzMxLDEyICszMzQs
MzUgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQog
Cit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uU3RhdGUoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKQoreworICAgICgqZW5hYmxlZCkg
PSBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKK30KKwogYm9vbCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKQogewot
ICAgIC8vIEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2
NTIpCi0gICAgLy8gQWRkIGhlcmUgY29uZGl0aW9uIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGV2ZW50
cyBjb2xsZWN0aW9uLgotICAgIC8vIE5vdyB0aGlzIGZ1bmN0aW9uIGlzIGRpc2FibGUuCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdl
bnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKGVuYWJsZWQgPT0gYmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZW5hYmxlZCkgeworICAgICAgICBpZiAoIW1fZXZlbnRzQ29sbGVjdG9yKQorICAgICAgICAg
ICAgaW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKCk7CisgICAgICAgIC8vIEluc2VydCBN
ZXNzYWdlIFByb3h5IGluIHJlY2VpdmVyIGNoYWluLgorICAgICAgICBBU1NFUlQobV9mcm9udGVu
ZCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2xpZW50ID0gbV9mcm9udGVu
ZC0+Z2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCk7CisgICAgICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGNsaWVudCk7CisgICAgICAg
IG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3RvckZyb250
ZW5kUHJveHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRha2Ugb3V0IE1lc3Nh
Z2UgUHJveHkgZnJvbSByZWNlaXZlciBjaGFpbi4KKyAgICAgICAgbV9mcm9udGVuZC0+c2V0SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+aW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKCkpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNl
dEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgwKTsKKyAgICAgICAgbV9ldmVudHNDb2xsZWN0b3It
PmNsZWFyKCk7CisgICAgfQorICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNl
QWdlbnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLCBlbmFibGVkKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpA
QCAtMzY4LDE2ICszOTQsMjIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRy
YUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck8KICAgICBtX3N0YXRl
LT5zZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzLCBoZWFk
ZXJzKTsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojppbml0aWFsaXplQmFja2dy
b3VuZENvbGxlY3Rpb24oKQoreworICAgIG1fZXZlbnRzQ29sbGVjdG9yID0gYWRvcHRQdHIobmV3
IEV2ZW50c0NvbGxlY3RvcigpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9w
dFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkp
OworICAgIC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBjYW4gY29sbGVjdCBuZXR3b3Jr
IGV2ZW50cy4KKyAgICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZDo6TmV0d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKK30KKwogSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X3N0YXRlKHN0YXRlKQogewogICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoKSkgewotICAgICAgICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHND
b2xsZWN0b3IpOwotICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHkgPSBhZG9wdFB0cihu
ZXcgSW5zcGVjdG9yRnJvbnRlbmRQcm94eShtX2V2ZW50c0NvbGxlY3Rvci5nZXQoKSkpOworICAg
ICAgICBpbml0aWFsaXplQmFja2dyb3VuZENvbGxlY3Rpb24oKTsKICAgICAgICAgLy8gQ3JlYXRl
IG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRzLgotICAgICAg
ICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29y
ayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKICAgICAgICAgbV9mcm9udGVuZCA9
IG1fbW9ja0Zyb250ZW5kLmdldCgpOwogICAgICAgICBlbmFibGUoKTsKICAgICB9IGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmlu
ZGV4IGQ2MGQyMWYuLmU4YTBmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTA1LDkgKzEwNSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKLSAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpOworICAg
IHZvaWQgZ2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25TdGF0ZShFcnJvclN0cmluZyosIGJv
b2wqIGVuYWJsZWQpOworICAgIHZvaWQgc2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKTsKIAotICAgIC8vIENhbGxlZCBmcm9tIGZy
b250ZW5kIAorICAgIC8vIENhbGxlZCBmcm9tIGZyb250ZW5kCiAgICAgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHNl
dFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
OwpAQCAtMTE3LDE1ICsxMTgsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJ
bnNwZWN0b3JTdGF0ZSopOwogCisgICAgYm9vbCBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVu
YWJsZWQoKTsKICAgICB2b2lkIGVuYWJsZSgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tncm91
bmRDb2xsZWN0aW9uKCk7CiAKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNw
ZWN0b3JTdGF0ZSogbV9zdGF0ZTsKLSAgICBPd25QdHI8RXZlbnRzQ29sbGVjdG9yPiBtX2V2ZW50
c0NvbGxlY3RvcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayogbV9mcm9udGVuZDsK
LSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcms+IG1fbW9ja0Zyb250ZW5kOwor
ICAgIE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRzQ29sbGVjdG9yOwogICAgIE93blB0
cjxJbnNwZWN0b3JGcm9udGVuZFByb3h5PiBtX2luc3BlY3RvckZyb250ZW5kUHJveHk7CisgICAg
T3duUHRyPEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKICAgICBT
dHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNTQxMTNkYy4uNjJiYzk5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKQEAgLTMwLDYgKzMwLDEyIEBACiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwg
PSBmdW5jdGlvbigpCiB7CisgICAgZnVuY3Rpb24gZXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoZXJy
b3IsIGVuYWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVu
YWJsZWQgPSBlbmFibGVkOworICAgIH0KKyAgICBOZXR3b3JrQWdlbnQuZ2V0QmFja2dyb3VuZEV2
ZW50c0NvbGxlY3Rpb25TdGF0ZShldmVudHNDb2xsZWN0aW9uRW5hYmxlZC5iaW5kKHRoaXMpKTsK
KwogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJuZXR3b3JrIik7CiAKICAgICB0
aGlzLmNyZWF0ZVNpZGViYXIoKTsKQEAgLTEwMTksNiArMTAyNSw5IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVU
aXRsZXMoKSA/ICJTYXZlIGFsbCBhcyBIQVIiIDogIlNhdmUgQWxsIGFzIEhBUiIpLCB0aGlzLl9l
eHBvcnRBbGwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAorICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlZCBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0
aW9uIiksIHRoaXMuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uLmJpbmQodGhpcyks
IHRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZCk7CisKICAgICAgICAgY29udGV4dE1l
bnUuc2hvdyhldmVudCk7CiAgICAgfSwKIApAQCAtMTA2NSw2ICsxMDc0LDEyIEBAIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc2F2ZUFzKHJlc291cmNlLmRpc3BsYXlOYW1lICsgIi5oYXIiLCBKU09OLnN0cmluZ2lm
eShoYXIpKTsKICAgICB9LAogCisgICAgX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9u
OiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2JhY2tncm91bmRDb2xs
ZWN0aW9uRW5hYmxlZCA9ICF0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQ7CisgICAg
ICAgIE5ldHdvcmtBZ2VudC5zZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQodGhp
cy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZU9m
ZnNjcmVlblJvd3M6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB2YXIgZGF0YVRhYmxlQm9k
eSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFUYWJsZUJvZHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93638</attachid>
            <date>2011-05-16 07:17:47 -0700</date>
            <delta_ts>2011-05-16 09:42:17 -0700</delta_ts>
            <desc>suppressed 3 new tests on qt platform</desc>
            <filename>contex2</filename>
            <type>text/plain</type>
            <size>28397</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YzljN2E5Li43NzU1YWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUt
MTYgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKGluaXRpYWxpemVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29y
a1Jlc291cmNlcyk6CisgICAgICAgIChpbml0aWFsaXplX05ldHdvcmtUZXN0KToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJs
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDoKKwogMjAxMS0wNS0xNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDVjMjY3
ZDkuLmI5ZGI1NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzCkBAIC0zMjQsNiArMzI0LDI5IEBAIEluc3BlY3RvclRlc3QudGV4
dENvbnRlbnRXaXRoTGluZUJyZWFrcyA9IGZ1bmN0aW9uKG5vZGUpCiAKIHZhciBydW5UZXN0Q2Fs
bElkID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxsSWQgPSAxOwordmFyIGZyb250ZW5kUmVvcGVu
aW5nQ291bnQgPSAwOworCitmdW5jdGlvbiByZW9wZW5Gcm9udGVuZCgpCit7CisgICAgY2xvc2VG
cm9udGVuZChvcGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQpOworfQorCitmdW5jdGlvbiBjbG9zZUZy
b250ZW5kKGNhbGxiYWNrKQoreworICAgIC8vIERvIHRoaXMgYXN5bmNocm9ub3VzbHkgdG8gYWxs
b3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNwb25zZQorICAgIC8vIGJh
Y2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4KKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3Bl
Y3RvcigpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiBv
cGVuRnJvbnRlbmRBbmRJbmNyZW1lbnQoKQoreworICAgIGZyb250ZW5kUmVvcGVuaW5nQ291bnQr
KzsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgcnVu
VGVzdCgpOworfQogCiBmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlzTG9hZGVkKCkKIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDQxYWNhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0LmpzCkBAIC0wLDAg
KzEsMjkgQEAKK3ZhciBpbml0aWFsaXplX05ldHdvcmtUZXN0ID0gZnVuY3Rpb24oKSB7CisKK0lu
c3BlY3RvclRlc3QuZW5hYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbiA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fYmFja2dyb3VuZENvbGxl
Y3Rpb25FbmFibGVkKSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fdG9n
Z2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
aHJvdyAiQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbiBhbHJlYWR5IGVuYWJsZWQuIjsKKyAgICB9
Cit9CisKK0luc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24gPSBm
dW5jdGlvbiAoKQoreworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX2JhY2tn
cm91bmRDb2xsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLl90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbigpOworfQorCitJbnNwZWN0b3JU
ZXN0LmR1bXBOZXR3b3JrUmVzb3VyY2VzID0gZnVuY3Rpb24oKQoreworICAgIHZhciByZXNvdXJj
ZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLnNsaWNlKCk7CisgICAg
Ly9yZXNvdXJjZXMuc29ydChmdW5jdGlvbihhLCBiKSB7cmV0dXJuIGEudXJsLmxvY2FsZUNvbXBh
cmUoYi51cmwpO30pOworICAgIHJlc291cmNlcy5zb3J0KCk7CisgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoInJlc291cmNlcyBjb3VudCA9ICIgKyByZXNvdXJjZXMubGVuZ3RoKTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KHJlc291cmNlc1tpXS51cmwpOworICAgIH0KK30KKworfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
bGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyOTQzMzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGVz
dCB0aGF0IHJlb3BlbmluZyBjbGVhcnMgbmV0d29yayBwYW5lbCBpbiBiYWNrZ3JvdW5kIGV2ZW50
cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1vZGUuIEJ1ZyA1ODA2NCBCdWcgNTg2NTIKKworCitSZW9w
ZW5lZCBmcm9udGVuZCAyIHRpbWVzCityZXNvdXJjZXMgY291bnQgPSAwCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1h
ZnRlci1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWNhYmEzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxl
ZC5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2FkSW1hZ2VzQW5kUmVvcGVu
RnJvbnRlbmQoc2l6ZSkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT0iICsgc2l6ZSk7CisgICAgaW1hZ2Uub25sb2FkID0gcmVz
b3VyY2VMb2FkZWQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZSk7CisKKyAg
ICB2YXIgaW1hZ2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1hZ2Uy
Lm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGltYWdlMi5zZXRBdHRyaWJ1dGUoInNyYyIs
ICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT0iICsgc2l6ZSArICImZ3pp
cD10cnVlIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZTIpOworfQorCit2
YXIgbG9hZGVkUmVzb3VyY2VDb3VudCA9IDA7CitmdW5jdGlvbiByZXNvdXJjZUxvYWRlZCgpCit7
CisgICAgbG9hZGVkUmVzb3VyY2VDb3VudCsrOworICAgIGlmIChsb2FkZWRSZXNvdXJjZUNvdW50
ICUgMiA9PT0gMCkgeworICAgICAgICByZW9wZW5Gcm9udGVuZCgpOworICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
ICAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZW5hYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXNBbmRS
ZW9wZW5Gcm9udGVuZCg0MDApIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVz
dWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjEiKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXNBbmRSZW9wZW5Gcm9udGVuZCg2
MDApIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlv
biA9PT0gIjIiKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJl
b3BlbmVkIGZyb250ZW5kICIgKyByZXN1bHQuX2Rlc2NyaXB0aW9uICsgIiB0aW1lcyIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJjZXMoKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZGlz
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9
CisKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+CitUZXN0IHRoYXQgcmVvcGVuaW5nIGNsZWFycyBuZXR3b3JrIHBhbmVsIGluIGJhY2tn
cm91bmQgZXZlbnRzIGNvbGxlY3Rpb24gZGlzYWJsZWQgbW9kZS4KKzxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2NCI+QnVnIDU4MDY0PC9hPgorPGEg
aHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5CdWcg
NTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1jbG9zZS1sb2FkLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmFmZGM2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29s
bGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IGNvbGxlY3RzIGV2ZW50
cyB3aXRoIGNsb3NlZCBmcm9udGVuZC4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisKK3Jlc291cmNl
cyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT00MDAKK2h0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Um
c2l6ZT00MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWY2MTVjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBs
b2FkSW1hZ2VzQW5kT3BlbkZyb250ZW5kKCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNv
dXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT00MDAiKTsKKyAgICBpbWFnZS5vbmxv
YWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdl
KTsKKworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAg
ICBpbWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0
ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCZnemlw
PXRydWUiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9CisKK3Zh
ciBsb2FkZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVkKCkKK3sK
KyAgICBsb2FkZWRSZXNvdXJjZUNvdW50Kys7CisgICAgaWYgKGxvYWRlZFJlc291cmNlQ291bnQg
PT09IDIpIHsKKyAgICAgICAgb3BlbkZyb250ZW5kQW5kSW5jcmVtZW50KCk7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xvc2VGcm9u
dGVuZChsb2FkSW1hZ2VzQW5kT3BlbkZyb250ZW5kKSIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIxIikgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgICAgICAv
LyBTd2l0Y2ggb2ZmIGJlZm9yZSBjb21wbGV0ZVRlc3QuCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFj
a2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0aHJvdyBlOworICAgIH0KKworfQor
Cis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4K
K1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5l
dHdvcmsgcGFuZWwgY29ycmVjdGx5IGNvbGxlY3RzIGV2ZW50cyB3aXRoIGNsb3NlZCBmcm9udGVu
ZC4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2
NCI+QnVnIDU4MDY0PC9hPgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4NjUyIj5CdWcgNTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstb3Blbi1sb2FkLXJlb3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxMDdlYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1v
cGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1Rlc3QgdGhhdCB3
aGVuIGJhY2tncm91bmQgZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwg
Y29ycmVjdGx5IHJlc3RvcmVzIG5ldHdvcmsgbG9nIGFmdGVyIHRoZSBmcm9udGVuZCByZW9wZW5p
bmcuIEJ1ZyA1ODA2NCBCdWcgNTg2NTIKKworCitSZW9wZW5lZCBmcm9udGVuZCAxIHRpbWVzCity
ZXNvdXJjZXMgY291bnQgPSAyCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBl
PWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9h
ZC1yZW9wZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzc4MDRj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRtbApAQCAtMCwwICsxLDYxIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
ZnVuY3Rpb24gbG9hZEltYWdlc0FuZFJlb3BlbkZyb250ZW5kKCkKK3sKKyAgICB2YXIgaW1hZ2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUo
InNyYyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAiKTsKKyAg
ICBpbWFnZS5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGltYWdlKTsKKworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKTsKKyAgICBpbWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2Uy
LnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZz
aXplPTUwMCZnemlwPXRydWUiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdl
Mik7Cit9CisKK3ZhciBsb2FkZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNl
TG9hZGVkKCkKK3sKKyAgICBpZiAoKytsb2FkZWRSZXNvdXJjZUNvdW50ID09PSAyKSB7CisgICAg
ICAgIHJlb3BlbkZyb250ZW5kKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICB0cnkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJl
b3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICBpZiAocmVzdWx0
Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
bmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdlc0FuZFJlb3BlbkZyb250ZW5kKCkiKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIlJlb3BlbmVkIGZyb250ZW5kICIgKyByZXN1bHQuX2Rlc2NyaXB0aW9uICsgIiB0aW1l
cyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJjZXMo
KTsKKyAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggb2ZmIGJlZm9yZSBjb21wbGV0ZVRlc3QuCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0
aHJvdyBlOworICAgIH0KKworfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29s
bGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IHJlc3RvcmVzIG5ldHdv
cmsgbG9nIGFmdGVyIHRoZSBmcm9udGVuZCByZW9wZW5pbmcuCis8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwNjQiPkJ1ZyA1ODA2NDwvYT4KKzxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MiI+QnVnIDU4
NjUyPC9hPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dAppbmRl
eCAxOWI5ZWZiLi42MTIxYTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dApAQCAtMTAsMjEgKzEw
LDEwIEBAIFJ1bm5pbmc6IHRlc3RTb3VyY2VGcmFtZUNvbnRlbnQKIDxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAKLWZ1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMgYXN5bmNo
cm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNw
b25zZQotICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4K
LSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250ZW5kUmVv
cGVuZWQgPSB0cnVlOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3Bl
Y3RvcigpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7
Ci0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVuZFJlb3Bl
bmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2NyaXB0aW9u
ID09PSAidW5kZWZpbmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9u
dGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1
bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJyZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbAppbmRleCA0MzFjNzM3
Li41ZmViZWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Bl
bi1jbG9zZS1vcGVuLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29w
ZW4tY2xvc2Utb3Blbi5odG1sCkBAIC00LDIxICs0LDEwIEBACiA8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogCi1mdW5jdGlvbiByZW9wZW5Gcm9udGVuZCgpIHsKLSAgICAvLyBEbyB0aGlzIGFzeW5jaHJv
bm91c2x5IHRvIGFsbG93IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHRvIHNlbmQgcmVzcG9u
c2UKLSAgICAvLyBiYWNrIHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBkZXN0cm95ZWQuCi0g
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgd2luZG93Ll9mcm9udGVuZFJlb3Bl
bmVkID0gdHJ1ZTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0
b3IoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwot
ICAgICAgICBydW5UZXN0KCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewot
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndpbmRvdy5fZnJvbnRlbmRSZW9wZW5l
ZCIsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9
PT0gInVuZGVmaW5lZCIpCisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRl
bmRSZW9wZW5pbmdDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0
Ll9kZXNjcmlwdGlvbiA9PT0gIjAiKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgicmVvcGVuRnJvbnRlbmQoKSIpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAppbmRleCBmMjYwMWJjLi4wMzkyNmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTQ1
Miw2ICs0NTIsMTEgQEAgaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5
Lmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NoYW5nZS1pZnJhbWUtc3JjLmh0bWwKIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbAogCisjIFtRdF0gVGhpcyB0ZXN0cycg
ZmFpbHMgcHJvYmFibHkgaGFzIHNhbWUgcmVhc29uIGFzIHRlc3QgaW5zcGVjdG9yL2RlYnVnZ2Vy
L29wZW4tY2xvc2Utb3Blbi5odG1sLgoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRtbAoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbAorCiAjIFtRdF0gZmFzdC9mcmFtZXMv
ZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVuaW5nLXN1YmZyYW1lc2V0cy5odG1sIGZhaWxzIGlu
dGVybWl0dGVudGx5IG9uIFF0IGJvdAogIyBGYWlscyBjYXVzZWQgYnkgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZGlzcGxheSgpIGluIGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvZnJhbWVzZXQtZmxhdHRl
bmluZy1zdWJmcmFtZS1yZXNpemUuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzczMzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMzI2OTMwLi42OTQzMGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMTYgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdl
eXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBj
b2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1MgorCisgICAgICAgIE5vdyBpbiBXZWJJbnNw
ZWN0b3IgTmV0d29yayBwYW5lbCBhdmFsYWlibGUgbmV3IGNoZWNrYm94IGl0ZW0gaW4gY29udGV4
dCBtZW51OgorICAgICAgICAiQmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiIuIEl0IGFsbG93
cyB0byBzYXZlIGFsbCBuZXR3b3JrIGV2ZW50cyB3aGVuIGluc3BlY3RvcgorICAgICAgICBmcm9u
dGVuZCBjbG9zZWQuIEV2ZW50cyB0aGF0IG9jY3VyIGJlZm9yZSBjb2xsZWN0aW9uIGVuYWJsaW5n
IGFyZSBub3QgcHJlc2VydmVkIGFmdGVyCisgICAgICAgIGZyb250ZW5kIHJlb3BlbmluZy4gUHJv
cGVydHkgdW5pcXVlIGZvciBlYWNoIHBhZ2UuIERpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRl
ci1kaXNhYmxlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0bWwKKworICAg
ICAgICAqIGluc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRzQ29sbGVjdG9yOjpjbGVhcik6CisgICAgICAgICogaW5zcGVjdG9yL0V2ZW50c0NvbGxl
Y3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb24pOgorCiAyMDExLTA1LTE2ICBOYWllbSBTaGFpayAgPG5haWVtLnNoYWlrQGdtYWls
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAppbmRleCAxYzM2NWNmLi43MzkxYTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcApAQCAtNDgs
NiArNDgsMTEgQEAgdm9pZCBFdmVudHNDb2xsZWN0b3I6OmFkZEV2ZW50KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKICAgICB9CiB9CiAKK3ZvaWQgRXZlbnRzQ29sbGVjdG9yOjpjbGVhcigpCit7Cisg
ICAgbV9ldmVudHMuY2xlYXIoKTsKK30KKwogdm9pZCBFdmVudHNDb2xsZWN0b3I6OnNlbmRDb2xs
ZWN0ZWRFdmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiByZWNlaXZlcikKIHsKICAgICBm
b3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fZXZlbnRzLmJlZ2luKCk7IGl0ICE9
IG1fZXZlbnRzLmVuZCgpOyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0V2ZW50c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0Nv
bGxlY3Rvci5oCmluZGV4IGQ1M2UxMDkuLmUyNmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIEV2
ZW50c0NvbGxlY3RvcigpOwogICAgIH5FdmVudHNDb2xsZWN0b3IoKSB7IH0KICAgICB2b2lkIGFk
ZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogICAgIHZv
aWQgc2VuZENvbGxlY3RlZEV2ZW50cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYXBhY2l0eSA9IDEwMjQqMTAyNDsgLy8g
MSBNYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDViNmFjZjQu
LjBkMGY0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTQ0
OSw2ICs0NDksMTkgQEAKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2Ny
aXB0aW9uIjogIk1hcCB3aXRoIGV4dHJhIEhUVFAgaGVhZGVycy4iIH0KICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogInNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCIsCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkFsbG93IHR1cm4gb24vb2ZmIGJhY2tncm91bmQgbmV0d29yayBl
dmVudHMgY29sbGVjdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwg
ImRlc2NyaXB0aW9uIjogInRydWUgLSBlbmFibGUgY29sbGVjdGlvbiwgZmFsc2UgLSBkaXNhYmxl
IiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRl
IiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0K
ICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAppbmRl
eCA0ZTIxODhkLi5iYTA1NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwxMSBAQCB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kUHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsKIH0KIAorSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwoKQoreworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQorCiB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kUHJveHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqIGNvbGxl
Y3RvcikKIHsKICAgICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmluZGV4IDI1OWFmNjcuLjUx
Zjg0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVj
dG9yRnJvbnRlbmRQcm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2b2lkIHNldEV2ZW50c0Nv
bGxlY3RvcihFdmVudHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzY2M4ZTQ0Li5l
ZmEyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBSZXNvdXJjZUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VB
Z2VudEVuYWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hh
ciBleHRyYVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CitzdGF0aWMg
Y29uc3QgY2hhciBiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWRbXSA9ICJiYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKQEAgLTg1LDEz
ICs4NiwxNSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5kKEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xl
YXJGcm9udGVuZCgpCiB7CiAgICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKDApOwogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQuZ2V0
KCk7Ci0gICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9
IGVsc2UgewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAgICBFcnJvclN0cmluZyBl
cnJvcjsKKyAgICAgICAgZGlzYWJsZSgmZXJyb3IpOworICAgIH0KICAgICBtX3VzZXJBZ2VudE92
ZXJyaWRlID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpyZXN0b3JlKCkKQEAgLTMzMSwxMiArMzM0LDM1IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQog
fQogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKIAordm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpnZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvblN0YXRlKEVycm9yU3RyaW5nKiwg
Ym9vbCogZW5hYmxlZCkKK3sKKyAgICAoKmVuYWJsZWQpID0gYmFja2dyb3VuZEV2ZW50c0NvbGxl
Y3Rpb25FbmFibGVkKCk7Cit9CisKIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkKIHsKLSAgICAvLyBGSVhNRSAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyKQotICAgIC8vIEFkZCBoZXJlIGNv
bmRpdGlvbiB0byBlbmFibGUgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4KLSAgICAvLyBO
b3cgdGhpcyBmdW5jdGlvbiBpcyBkaXNhYmxlLgotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uRW5hYmxlZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBl
bmFibGVkKQoreworICAgIGlmIChlbmFibGVkID09IGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9u
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAg
aWYgKCFtX2V2ZW50c0NvbGxlY3RvcikKKyAgICAgICAgICAgIGluaXRpYWxpemVCYWNrZ3JvdW5k
Q29sbGVjdGlvbigpOworICAgICAgICAvLyBJbnNlcnQgTWVzc2FnZSBQcm94eSBpbiByZWNlaXZl
ciBjaGFpbi4KKyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOworICAgICAgICBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGNsaWVudCA9IG1fZnJvbnRlbmQtPmdldEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCgpOworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbChjbGllbnQpOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBUYWtlIG91dCBNZXNzYWdlIFByb3h5IGZyb20gcmVjZWl2ZXIg
Y2hhaW4uCisgICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCht
X2luc3BlY3RvckZyb250ZW5kUHJveHktPmluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoMCk7CisgICAgICAgIG1fZXZlbnRzQ29sbGVjdG9yLT5jbGVhcigpOworICAgIH0KKyAgICBy
ZXR1cm4gbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZCwgZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTM2OCwxNiArMzk0LDIyIEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIZWFkZXJzKEVycm9yU3RyaW5nKiwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPCiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KFJlc291cmNlQWdl
bnRTdGF0ZTo6ZXh0cmFSZXF1ZXN0SGVhZGVycywgaGVhZGVycyk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKCkKK3sKKyAg
ICBtX2V2ZW50c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHNDb2xsZWN0b3IoKSk7Cisg
ICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250
ZW5kUHJveHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAgICAvLyBDcmVhdGUgbW9jayBm
cm9udGVuZCwgc28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCisgICAgbV9tb2NrRnJv
bnRlbmQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0
b3JGcm9udGVuZFByb3h5LmdldCgpKSk7Cit9CisKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0
ZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
ICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9zdGF0ZShzdGF0ZSkKIHsKICAgICBp
ZiAoYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9ldmVu
dHNDb2xsZWN0b3IgPSBhZG9wdFB0cihuZXcgRXZlbnRzQ29sbGVjdG9yKTsKLSAgICAgICAgbV9p
bnNwZWN0b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kUHJv
eHkobV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUJhY2tncm91
bmRDb2xsZWN0aW9uKCk7CiAgICAgICAgIC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3ZSBj
YW4gY29sbGVjdCBuZXR3b3JrIGV2ZW50cy4KLSAgICAgICAgbV9tb2NrRnJvbnRlbmQgPSBhZG9w
dFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVuZFBy
b3h5LmdldCgpKSk7CiAgICAgICAgIG1fZnJvbnRlbmQgPSBtX21vY2tGcm9udGVuZC5nZXQoKTsK
ICAgICAgICAgZW5hYmxlKCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBkNjBkMjFmLi5lOGEwZjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKQEAgLTEwNSw5ICsxMDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICNlbmRpZgogCi0gICAgYm9vbCBiYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIGdldEJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uU3RhdGUoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKTsKKyAgICB2b2lk
IHNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
ZW5hYmxlZCk7CiAKLSAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZCAKKyAgICAvLyBDYWxsZWQg
ZnJvbSBmcm9udGVuZAogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTExNywxNSArMTE4LDE3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqKTsKIAorICAg
IGJvb2wgYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCBlbmFi
bGUoKTsKKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZ3JvdW5kQ29sbGVjdGlvbigpOwogCiAgICAg
SW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yU3RhdGUqIG1fc3RhdGU7Ci0g
ICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rvcj4gbV9ldmVudHNDb2xsZWN0b3I7CiAgICAgSW5zcGVj
dG9yRnJvbnRlbmQ6Ok5ldHdvcmsqIG1fZnJvbnRlbmQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckZy
b250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKKyAgICBPd25QdHI8RXZlbnRzQ29sbGVj
dG9yPiBtX2V2ZW50c0NvbGxlY3RvcjsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRQcm94
eT4gbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5OworICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVu
ZDo6TmV0d29yaz4gbV9tb2NrRnJvbnRlbmQ7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50T3ZlcnJp
ZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzCmluZGV4IDU0MTEzZGMuLjYyYmM5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC0zMCw2ICszMCwx
MiBAQAogCiBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQogeworICAgIGZ1
bmN0aW9uIGV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKGVycm9yLCBlbmFibGVkKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKKyAgICB9
CisgICAgTmV0d29ya0FnZW50LmdldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uU3RhdGUoZXZl
bnRzQ29sbGVjdGlvbkVuYWJsZWQuYmluZCh0aGlzKSk7CisKICAgICBXZWJJbnNwZWN0b3IuUGFu
ZWwuY2FsbCh0aGlzLCAibmV0d29yayIpOwogCiAgICAgdGhpcy5jcmVhdGVTaWRlYmFyKCk7CkBA
IC0xMDE5LDYgKzEwMjUsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2ZSBhbGwgYXMg
SEFSIiA6ICJTYXZlIEFsbCBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0QWxsLmJpbmQodGhpcykpOwog
ICAgICAgICB9CiAKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkVuYWJsZWQgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiIpLCB0aGlzLl90b2dnbGVCYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVj
dGlvbkVuYWJsZWQpOworCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOwogICAgIH0s
CiAKQEAgLTEwNjUsNiArMTA3NCwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNhdmVBcyhyZXNvdXJjZS5k
aXNwbGF5TmFtZSArICIuaGFyIiwgSlNPTi5zdHJpbmdpZnkoaGFyKSk7CiAgICAgfSwKIAorICAg
IF90b2dnbGVCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbjogZnVuY3Rpb24ocmVzb3VyY2UpCisg
ICAgeworICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQgPSAhdGhpcy5f
YmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0QmFj
a2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKHRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9u
RW5hYmxlZCk7CisgICAgfSwKKwogICAgIF91cGRhdGVPZmZzY3JlZW5Sb3dzOiBmdW5jdGlvbihl
KQogICAgIHsKICAgICAgICAgdmFyIGRhdGFUYWJsZUJvZHkgPSB0aGlzLl9kYXRhR3JpZC5kYXRh
VGFibGVCb2R5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93653</attachid>
            <date>2011-05-16 09:42:17 -0700</date>
            <delta_ts>2011-05-19 00:03:42 -0700</delta_ts>
            <desc>Minor fix after pfeldman review</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>28670</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNGQ2ZDAyLi5kNDgxMWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDUt
MTYgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0
ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxv
YWQtb3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisgICAgICAgICogcGxhdGZv
cm0vcXQvU2tpcHBlZDoKKwogMjAxMS0wNS0xNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZmFpbGluZyBtYWMtd2syIGV4cGVjdGVkIHJl
c3VsdHMgZm9yIG9ubGluZS1mYWxsYmFjay1sYXllcmluZy5odG1sLCBzaW5jZSBpdCBub3cKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMK
aW5kZXggNWMyNjdkOS4uYjlkYjU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMyNCw2ICszMjQsMjkgQEAgSW5zcGVj
dG9yVGVzdC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIAogdmFy
IHJ1blRlc3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7Cit2YXIgZnJv
bnRlbmRSZW9wZW5pbmdDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkKK3sK
KyAgICBjbG9zZUZyb250ZW5kKG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCk7Cit9CisKK2Z1bmN0
aW9uIGNsb3NlRnJvbnRlbmQoY2FsbGJhY2spCit7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25v
dXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNl
CisgICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
b3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSwgMCk7Cit9CisK
K2Z1bmN0aW9uIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpCit7CisgICAgZnJvbnRlbmRSZW9w
ZW5pbmdDb3VudCsrOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3Io
KTsKKyAgICBydW5UZXN0KCk7Cit9CiAKIGZ1bmN0aW9uIHJ1bkFmdGVySWZyYW1lSXNMb2FkZWQo
KQogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNTViN2EKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3Qu
anMKQEAgLTAsMCArMSwyNiBAQAordmFyIGluaXRpYWxpemVfTmV0d29ya1Rlc3QgPSBmdW5jdGlv
bigpIHsKKworSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0g
ZnVuY3Rpb24oKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNr
Z3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICBlbHNlCisgICAg
ICAgIHRocm93ICJCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uIGFscmVhZHkgZW5hYmxlZC4iOwor
fQorCitJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0gZnVu
Y3Rpb24gKCkKK3sKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNrZ3Jv
dW5kQ29sbGVjdGlvbkVuYWJsZWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKK30KKworSW5zcGVjdG9yVGVz
dC5kdW1wTmV0d29ya1Jlc291cmNlcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgcmVzb3VyY2Vz
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5zbGljZSgpOworICAgIHJl
c291cmNlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS51cmwubG9jYWxlQ29tcGFyZShi
LnVybCk7fSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlcyBjb3VudCA9
ICIgKyByZXNvdXJjZXMubGVuZ3RoKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxl
bmd0aDsgaSsrKQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZXNbaV0u
dXJsKTsKK30KKworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0
ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgyOTQzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorVGVzdCB0aGF0IHJlb3BlbmluZyBjbGVhcnMgbmV0d29yayBwYW5l
bCBpbiBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1vZGUuIEJ1ZyA1ODA2
NCBCdWcgNTg2NTIKKworCitSZW9wZW5lZCBmcm9udGVuZCAyIHRpbWVzCityZXNvdXJjZXMgY291
bnQgPSAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhYjEwMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCkBAIC0wLDAgKzEsNjQgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoc2l6ZSkKK3sKKyAgICB2YXIgaW1hZ2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNy
YyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT0iICsgc2l6ZSk7Cisg
ICAgaW1hZ2Uub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpbWFnZSk7CisKKyAgICB2YXIgaW1hZ2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIik7CisgICAgaW1hZ2UyLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGltYWdl
Mi5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Um
c2l6ZT0iICsgc2l6ZSArICImZ3ppcD10cnVlIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChpbWFnZTIpOworfQorCit2YXIgbG9hZGVkUmVzb3VyY2VDb3VudCA9IDA7CitmdW5jdGlv
biByZXNvdXJjZUxvYWRlZCgpCit7CisgICAgbG9hZGVkUmVzb3VyY2VDb3VudCsrOworICAgIGlm
IChsb2FkZWRSZXNvdXJjZUNvdW50ICUgMiA9PT0gMCkKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQo
KTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdDb3VudCIsIHN0ZXAxMjMpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3Vu
ZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXAxMjMoc3RlcE51bWJlcikgeworICAgICAgICBpZiAoc3RlcE51bWJlci5kZXNjcmlw
dGlvbiA9PT0gIjAiKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91
bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoImxvYWRJbWFnZXNBbmRSZW9wZW5Gcm9udGVuZCg0MDApIik7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICBpZiAoc3RlcE51bWJlci5fZGVzY3JpcHRpb24gPT09ICIxIikgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEltYWdlc0FuZFJl
b3BlbkZyb250ZW5kKDYwMCkiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJSZW9wZW5lZCBmcm9udGVuZCAiICsgc3RlcE51bWJlci5fZGVz
Y3JpcHRpb24gKyAiIHRpbWVzIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBOZXR3
b3JrUmVzb3VyY2VzKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OworICAgICAgICB9CisgICAgfQorfQorCis8L3NjcmlwdD4KKworPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCByZW9wZW5pbmcgY2xlYXJzIG5ldHdv
cmsgcGFuZWwgaW4gYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiBkaXNhYmxlZCBtb2RlLgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDY0Ij5C
dWcgNTgwNjQ8L2E+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTg2NTIiPkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
bG9zZS1sb2FkLW9wZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkYzY0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1s
b2FkLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IHdoZW4gYmFj
a2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0
bHkgY29sbGVjdHMgZXZlbnRzIHdpdGggY2xvc2VkIGZyb250ZW5kLiBCdWcgNTgwNjQgQnVnIDU4
NjUyCisKKworcmVzb3VyY2VzIGNvdW50ID0gMgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMAor
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJj
ZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCZnemlwPXRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Bl
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWNsb3NlLWxvYWQtb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJkMjk5ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKQEAgLTAsMCArMSw2MSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKK2Z1bmN0aW9uIGxvYWRJbWFnZXNBbmRPcGVuRnJvbnRlbmQoKQoreworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNldEF0dHJp
YnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCIp
OworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsKKyAgICBp
bWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnNpemU9NDAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rpb24gcmVz
b3VyY2VMb2FkZWQoKQoreworICAgIGxvYWRlZFJlc291cmNlQ291bnQrKzsKKyAgICBpZiAobG9h
ZGVkUmVzb3VyY2VDb3VudCA9PT0gMikKKyAgICAgICAgb3BlbkZyb250ZW5kQW5kSW5jcmVtZW50
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBzdGVwMTIpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3Vu
ZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXAxMihzdGVwTnVtYmVyKSB7CisgICAgICAgIGlmIChzdGVwTnVtYmVyLl9kZXNjcmlw
dGlvbiA9PT0gIjAiKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91
bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoImNsb3NlRnJvbnRlbmQobG9hZEltYWdlc0FuZE9wZW5Gcm9udGVuZCkiKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE5ldHdvcmtSZXNvdXJj
ZXMoKTsKKyAgICAgICAgICAgIC8vIFN3aXRjaCBvZmYgYmVmb3JlIGNvbXBsZXRlVGVzdC4KKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24o
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlz
IGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgY29sbGVjdHMgZXZlbnRzIHdpdGggY2xv
c2VkIGZyb250ZW5kLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MDY0Ij5CdWcgNTgwNjQ8L2E+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIiPkJ1ZyA1ODY1MjwvYT4KKzwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODEwN2VhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAor
VGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBldmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0
d29yayBwYW5lbCBjb3JyZWN0bHkgcmVzdG9yZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250
ZW5kIHJlb3BlbmluZy4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisKK1Jlb3BlbmVkIGZyb250ZW5k
IDEgdGltZXMKK3Jlc291cmNlcyBjb3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAK
K2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVv
cGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQzMTM2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCkBAIC0wLDAgKzEs
NjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCitmdW5jdGlvbiBsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoKQoreworICAg
IHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlLnNl
dEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXpl
PTUwMCIpOworICAgIGltYWdlLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworCisgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlMi5vbmxvYWQgPSByZXNvdXJjZUxvYWRlZDsK
KyAgICBpbWFnZTIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90
eXBlPWltYWdlJnNpemU9NTAwJmd6aXA9dHJ1ZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaW1hZ2UyKTsKK30KKwordmFyIGxvYWRlZFJlc291cmNlQ291bnQgPSAwOworZnVuY3Rp
b24gcmVzb3VyY2VMb2FkZWQoKQoreworICAgIGlmICgrK2xvYWRlZFJlc291cmNlQ291bnQgPT09
IDIpCisgICAgICAgIHJlb3BlbkZyb250ZW5kKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHRyeSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5k
UmVvcGVuaW5nQ291bnQiLCBzdGVwMTIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigpOworICAgICAgICB0
aHJvdyBlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAxMihzdGVwTnVtYmVyKSB7CisgICAg
ICAgIGlmIChzdGVwTnVtYmVyLl9kZXNjcmlwdGlvbiA9PT0gIjAiKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmVuYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXNBbmRSZW9wZW5Gcm9u
dGVuZCgpIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiUmVvcGVuZWQgZnJvbnRlbmQgIiArIHN0ZXBOdW1iZXIuX2Rlc2NyaXB0aW9uICsg
IiB0aW1lcyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNl
cygpOworICAgICAgICAgICAgLy8gU3dpdGNoIG9mZiBiZWZvcmUgY29tcGxldGVUZXN0LgorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kaXNhYmxlQmFja2dyb3VuZEV2ZW50Q29sbGVjdGlvbigp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+CitUZXN0IHRoYXQgd2hlbiBiYWNrZ3JvdW5kIGV2ZW50IGNvbGxlY3Rpb24gaXMg
ZW5hYmxlZCBuZXR3b3JrIHBhbmVsIGNvcnJlY3RseSByZXN0b3JlcyBuZXR3b3JrIGxvZyBhZnRl
ciB0aGUgZnJvbnRlbmQgcmVvcGVuaW5nLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4MDY0Ij5CdWcgNTgwNjQ8L2E+Cis8YSBocmVmPSJodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTIiPkJ1ZyA1ODY1MjwvYT4KKzwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi1leHBlY3RlZC50eHQKaW5kZXggMTliOWVmYi4u
NjEyMWE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4t
Y2xvc2Utb3Blbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL29wZW4tY2xvc2Utb3Blbi1leHBlY3RlZC50eHQKQEAgLTEwLDIxICsxMCwxMCBAQCBSdW5u
aW5nOiB0ZXN0U291cmNlRnJhbWVDb250ZW50CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5j
dGlvbiByZW9wZW5Gcm9udGVuZCgpIHsKLSAgICAvLyBEbyB0aGlzIGFzeW5jaHJvbm91c2x5IHRv
IGFsbG93IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHRvIHNlbmQgcmVzcG9uc2UKLSAgICAv
LyBiYWNrIHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBkZXN0cm95ZWQuCi0gICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgd2luZG93Ll9mcm9udGVuZFJlb3BlbmVkID0gdHJ1
ZTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwotICAgICAgICBy
dW5UZXN0KCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCIsIGZ1bmN0
aW9uKHJlc3VsdCkgewotICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlwdGlvbiA9PT0gInVuZGVm
aW5lZCIpCisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5p
bmdDb3VudCIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0Ll9kZXNjcmlw
dGlvbiA9PT0gIjAiKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
cmVvcGVuRnJvbnRlbmQoKSIpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKaW5kZXggNDMxYzczNy4uNWZlYmVjYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Bl
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9w
ZW4uaHRtbApAQCAtNCwyMSArNCwxMCBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rp
b24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhpcyBhc3luY2hyb25vdXNseSB0byBh
bGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNlCi0gICAgLy8g
YmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgotICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJvbnRlbmRSZW9wZW5lZCA9IHRydWU7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgcnVu
VGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250ZW5kUmVvcGVuZWQiLCBmdW5jdGlv
bihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICJ1bmRlZmlu
ZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZyb250ZW5kUmVvcGVuaW5n
Q291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdC5fZGVzY3JpcHRp
b24gPT09ICIwIikKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInJl
b3BlbkZyb250ZW5kKCkiKQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZjI2
MDFiYy4uMDM5MjZiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC00NTIsNiArNDUyLDEx
IEBAIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sCiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9jaGFuZ2UtaWZyYW1lLXNyYy5odG1sCiBpbnNwZWN0b3IvZGVidWdn
ZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKIAorIyBbUXRdIFRoaXMgdGVzdHMnIGZhaWxzIHByb2Jh
Ymx5IGhhcyBzYW1lIHJlYXNvbiBhcyB0ZXN0IGluc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3Nl
LW9wZW4uaHRtbC4KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxv
YWQtcmVvcGVuLmh0bWwKK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9z
ZS1sb2FkLW9wZW4uaHRtbAoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNs
ZWFyLWFmdGVyLWRpc2FibGVkLmh0bWwKKwogIyBbUXRdIGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcv
ZnJhbWVzZXQtZmxhdHRlbmluZy1zdWJmcmFtZXNldHMuaHRtbCBmYWlscyBpbnRlcm1pdHRlbnRs
eSBvbiBRdCBib3QKICMgRmFpbHMgY2F1c2VkIGJ5IGxheW91dFRlc3RDb250cm9sbGVyLmRpc3Bs
YXkoKSBpbiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZsYXR0ZW5pbmctc3ViZnJh
bWUtcmVzaXplLmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM3MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDA3OGI1OS4uNmY0Y2ZiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDExLTA1LTE2ICBTZXJnZXkgVm9yb2J5ZXYgIDxzZXJnZXl2b3JvYnlldkBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEJhY2tncm91bmQgbmV0d29yayBldmVudHMgY29sbGVjdGlvbiAt
IGFkZCBHVUkgdG8gSW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg2NTIKKworICAgICAgICBOb3cgaW4gV2ViSW5zcGVjdG9yIE5ldHdv
cmsgcGFuZWwgYXZhbGFpYmxlIG5ldyBjaGVja2JveCBpdGVtIGluIGNvbnRleHQgbWVudToKKyAg
ICAgICAgIkJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24iLiBJdCBhbGxvd3MgdG8gc2F2ZSBh
bGwgbmV0d29yayBldmVudHMgd2hlbiBpbnNwZWN0b3IKKyAgICAgICAgZnJvbnRlbmQgY2xvc2Vk
LiBFdmVudHMgdGhhdCBvY2N1ciBiZWZvcmUgY29sbGVjdGlvbiBlbmFibGluZyBhcmUgbm90IHBy
ZXNlcnZlZCBhZnRlcgorICAgICAgICBmcm9udGVuZCByZW9wZW5pbmcuIFByb3BlcnR5IHVuaXF1
ZSBmb3IgZWFjaCBwYWdlLiBEaXNhYmxlZCBieSBkZWZhdWx0LgorCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxl
ZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLmh0bWwKKworICAgICAgICAqIGlu
c3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRzQ29s
bGVjdG9yOjpjbGVhcik6CisgICAgICAgICogaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZFByb3h5OjppbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50Ojppc0JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9j
b250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZS5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24pOgorCiAyMDExLTA1LTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0V2ZW50c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29s
bGVjdG9yLmNwcAppbmRleCAxYzM2NWNmLi43MzkxYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcApAQCAtNDgsNiArNDgsMTEgQEAgdm9pZCBFdmVu
dHNDb2xsZWN0b3I6OmFkZEV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB9CiB9CiAK
K3ZvaWQgRXZlbnRzQ29sbGVjdG9yOjpjbGVhcigpCit7CisgICAgbV9ldmVudHMuY2xlYXIoKTsK
K30KKwogdm9pZCBFdmVudHNDb2xsZWN0b3I6OnNlbmRDb2xsZWN0ZWRFdmVudHMoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiByZWNlaXZlcikKIHsKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpp
dGVyYXRvciBpdCA9IG1fZXZlbnRzLmJlZ2luKCk7IGl0ICE9IG1fZXZlbnRzLmVuZCgpOyArK2l0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5oCmluZGV4IGQ1M2Ux
MDkuLmUyNmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHND
b2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9y
LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIEV2ZW50c0NvbGxlY3RvcigpOwogICAg
IH5FdmVudHNDb2xsZWN0b3IoKSB7IH0KICAgICB2b2lkIGFkZEV2ZW50KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgc2VuZENvbGxlY3RlZEV2ZW50
cyhJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhDYXBhY2l0eSA9IDEwMjQqMTAyNDsgLy8gMSBNYgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDhlNTFlOTcuLmNlNTNiODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTQ3MSw2ICs0NzEsMTkgQEAKICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJoZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIk1hcCB3aXRoIGV4
dHJhIEhUVFAgaGVhZGVycy4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNldEJhY2tncm91bmRFdmVu
dHNDb2xsZWN0aW9uRW5hYmxlZCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRv
Z2dsZXMgYmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50IGNvbGxlY3Rpb24uIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFi
bGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJ0cnVlIC0gZW5hYmxlIGNv
bGxlY3Rpb24sIGZhbHNlIC0gZGlzYWJsZSIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaXNCYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29s
ZWFuIiB9CisgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAg
ICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kUHJveHkuY3BwCmluZGV4IDRlMjE4OGQuLmJhMDU2MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5jcHAKQEAg
LTU1LDYgKzU1LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lCiAgICAgbV9yZWNlaXZlciA9
IHJlY2VpdmVyOwogfQogCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckZyb250
ZW5kUHJveHk6Omluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpCit7CisgICAgcmV0dXJuIG1fcmVj
ZWl2ZXI7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6c2V0RXZlbnRzQ29sbGVj
dG9yKEV2ZW50c0NvbGxlY3RvciogY29sbGVjdG9yKQogewogICAgIG1fY29sbGVjdG9yID0gY29s
bGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFByb3h5LmgKaW5kZXggMjU5YWY2Ny4uNTFmODRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFByb3h5KCkgeyB9CiAKICAgICB2
b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
KTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCgpOwogICAgIHZvaWQgc2V0RXZlbnRzQ29sbGVjdG9yKEV2ZW50c0NvbGxlY3RvciopOwogICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDNjYzhlNDQuLmM5MzhlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY4LDEyICs2OCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgUmVzb3VyY2VBZ2VudFN0YXRlIHsK
IHN0YXRpYyBjb25zdCBjaGFyIHJlc291cmNlQWdlbnRFbmFibGVkW10gPSAicmVzb3VyY2VBZ2Vu
dEVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgZXh0cmFSZXF1ZXN0SGVhZGVyc1tdID0gImV4
dHJhUmVxdWVzdEhlYWRlcnMiOworc3RhdGljIGNvbnN0IGNoYXIgYmFja2dyb3VuZEV2ZW50c0Nv
bGxlY3Rpb25FbmFibGVkW10gPSAiYmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkIjsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5uZXR3b3Jr
KCk7Ci0gICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKSB7CisgICAg
aWYgKGlzQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKICAgICAgICAgLy8g
SW5zZXJ0IE1lc3NhZ2UgUHJveHkgaW4gcmVjZWl2ZXIgY2hhaW4uCiAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogY2xpZW50ID0gbV9mcm9udGVuZC0+Z2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKCk7CiAgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKGNsaWVudCk7CkBAIC04NCwxNCArODUsMTYgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpCiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0g
ICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKDApOwor
ICAgIGlmIChpc0JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAg
IG1fZnJvbnRlbmQgPSBtX21vY2tGcm9udGVuZC5nZXQoKTsKLSAgICB9IGVsc2UKKyAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7
CisgICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3Bl
Y3RvckZyb250ZW5kUHJveHkuZ2V0KCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZnJvbnRl
bmQgPSAwOwotCisgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOworICAgICAgICBkaXNhYmxlKCZl
cnJvcik7CisgICAgfQogICAgIG1fdXNlckFnZW50T3ZlcnJpZGUgPSAiIjsKLSAgICBkaXNhYmxl
KDApOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc3RvcmUoKQpAQCAtMzMx
LDEyICszMzQsMzUgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNv
Y2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQogCi1ib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uRW5hYmxlZCgpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlzQmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCkK
K3sKKyAgICAoKmVuYWJsZWQpID0gaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQo
KTsKK30KKworYm9vbCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojppc0JhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fc3RhdGUtPmdldEJvb2xlYW4oUmVz
b3VyY2VBZ2VudFN0YXRlOjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQpOworfQor
Cit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCkKIHsKLSAgICAvLyBGSVhNRSAo
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyKQotICAgIC8vIEFk
ZCBoZXJlIGNvbmRpdGlvbiB0byBlbmFibGUgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
LSAgICAvLyBOb3cgdGhpcyBmdW5jdGlvbiBpcyBkaXNhYmxlLgotICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoZW5hYmxlZCA9PSBpc0JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgaWYgKCFtX2V2
ZW50c0NvbGxlY3RvcikKKyAgICAgICAgICAgIGluaXRpYWxpemVCYWNrZ3JvdW5kQ29sbGVjdGlv
bigpOworICAgICAgICAvLyBJbnNlcnQgTWVzc2FnZSBQcm94eSBpbiByZWNlaXZlciBjaGFpbi4K
KyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGNsaWVudCA9IG1fZnJvbnRlbmQtPmdldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgp
OworICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbChjbGllbnQpOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBUYWtlIG91dCBNZXNzYWdlIFByb3h5IGZyb20gcmVjZWl2ZXIgY2hhaW4uCisg
ICAgICAgIG1fZnJvbnRlbmQtPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChtX2luc3BlY3Rv
ckZyb250ZW5kUHJveHktPmluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpKTsKKyAgICAgICAgbV9p
bnNwZWN0b3JGcm9udGVuZFByb3h5LT5zZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoMCk7Cisg
ICAgICAgIG1fZXZlbnRzQ29sbGVjdG9yLT5jbGVhcigpOworICAgIH0KKyAgICByZXR1cm4gbV9z
dGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmJhY2tncm91bmRFdmVudHNDb2xs
ZWN0aW9uRW5hYmxlZCwgZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTM2OCwxNiArMzk0LDIyIEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIZWFkZXJzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPCiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KFJlc291cmNlQWdlbnRTdGF0ZTo6
ZXh0cmFSZXF1ZXN0SGVhZGVycywgaGVhZGVycyk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKCkKK3sKKyAgICBtX2V2ZW50
c0NvbGxlY3RvciA9IGFkb3B0UHRyKG5ldyBFdmVudHNDb2xsZWN0b3IoKSk7CisgICAgbV9pbnNw
ZWN0b3JGcm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kUHJveHko
bV9ldmVudHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAgICAvLyBDcmVhdGUgbW9jayBmcm9udGVuZCwg
c28gd2UgY2FuIGNvbGxlY3QgbmV0d29yayBldmVudHMuCisgICAgbV9tb2NrRnJvbnRlbmQgPSBh
ZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVu
ZFByb3h5LmdldCgpKSk7Cit9CisKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJl
c291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICA6
IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdl
QWdlbnQocGFnZUFnZW50KQogICAgICwgbV9zdGF0ZShzdGF0ZSkKIHsKLSAgICBpZiAoYmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKLSAgICAgICAgbV9ldmVudHNDb2xsZWN0
b3IgPSBhZG9wdFB0cihuZXcgRXZlbnRzQ29sbGVjdG9yKTsKLSAgICAgICAgbV9pbnNwZWN0b3JG
cm9udGVuZFByb3h5ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kUHJveHkobV9ldmVu
dHNDb2xsZWN0b3IuZ2V0KCkpKTsKKyAgICBpZiAoaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQoKSkgeworICAgICAgICBpbml0aWFsaXplQmFja2dyb3VuZENvbGxlY3Rpb24oKTsK
ICAgICAgICAgLy8gQ3JlYXRlIG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdv
cmsgZXZlbnRzLgotICAgICAgICBtX21vY2tGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0
b3JGcm9udGVuZDo6TmV0d29yayhtX2luc3BlY3RvckZyb250ZW5kUHJveHkuZ2V0KCkpKTsKICAg
ICAgICAgbV9mcm9udGVuZCA9IG1fbW9ja0Zyb250ZW5kLmdldCgpOwogICAgICAgICBlbmFibGUo
KTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCmluZGV4IGQ2MGQyMWYuLjFmMzlhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTA1LDkgKzEw
NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKLSAgICBib29sIGJhY2tncm91bmRFdmVudHNDb2xsZWN0
aW9uRW5hYmxlZCgpOworICAgIHZvaWQgaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCk7CiAKLSAg
ICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZCAKKyAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAog
ICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKik7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTExNywxNSArMTE4LDE3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5z
cGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqKTsKIAorICAgIGJvb2wgaXNCYWNrZ3Jv
dW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKICAgICB2b2lkIGVuYWJsZSgpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUJhY2tncm91bmRDb2xsZWN0aW9uKCk7CiAKICAgICBJbnN0cnVtZW50aW5n
QWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JTdGF0ZSogbV9zdGF0ZTsKLSAgICBPd25QdHI8RXZl
bnRzQ29sbGVjdG9yPiBtX2V2ZW50c0NvbGxlY3RvcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6
TmV0d29yayogbV9mcm9udGVuZDsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdv
cms+IG1fbW9ja0Zyb250ZW5kOworICAgIE93blB0cjxFdmVudHNDb2xsZWN0b3I+IG1fZXZlbnRz
Q29sbGVjdG9yOwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZFByb3h5PiBtX2luc3BlY3Rv
ckZyb250ZW5kUHJveHk7CisgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrPiBt
X21vY2tGcm9udGVuZDsKICAgICBTdHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMK
aW5kZXggNTQxMTNkYy4uYjc4OGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTMwLDYgKzMwLDEyIEBACiAKIFdlYklu
c3BlY3Rvci5OZXR3b3JrUGFuZWwgPSBmdW5jdGlvbigpCiB7CisgICAgZnVuY3Rpb24gZXZlbnRz
Q29sbGVjdGlvbkVuYWJsZWQoZXJyb3IsIGVuYWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9i
YWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOworICAgIH0KKyAgICBOZXR3b3Jr
QWdlbnQuaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoZXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQuYmluZCh0aGlzKSk7CisKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlz
LCAibmV0d29yayIpOwogCiAgICAgdGhpcy5jcmVhdGVTaWRlYmFyKCk7CkBAIC0xMDE5LDYgKzEw
MjUsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3Bl
Y3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2ZSBhbGwgYXMgSEFSIiA6ICJTYXZl
IEFsbCBhcyBIQVIiKSwgdGhpcy5fZXhwb3J0QWxsLmJpbmQodGhpcykpOwogICAgICAgICB9CiAK
KyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZENoZWNrYm94SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZWQgYmFj
a2dyb3VuZCBldmVudHMgY29sbGVjdGlvbiIpLCB0aGlzLl90b2dnbGVCYWNrZ3JvdW5kRXZlbnRz
Q29sbGVjdGlvbi5iaW5kKHRoaXMpLCB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQp
OworCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOwogICAgIH0sCiAKQEAgLTEwNjUs
NiArMTA3NCwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNhdmVBcyhyZXNvdXJjZS5kaXNwbGF5TmFtZSAr
ICIuaGFyIiwgSlNPTi5zdHJpbmdpZnkoaGFyKSk7CiAgICAgfSwKIAorICAgIF90b2dnbGVCYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbjogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAg
ICB0aGlzLl9iYWNrZ3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQgPSAhdGhpcy5fYmFja2dyb3VuZENv
bGxlY3Rpb25FbmFibGVkOworICAgICAgICBOZXR3b3JrQWdlbnQuc2V0QmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25FbmFibGVkKHRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZCk7Cisg
ICAgfSwKKwogICAgIF91cGRhdGVPZmZzY3JlZW5Sb3dzOiBmdW5jdGlvbihlKQogICAgIHsKICAg
ICAgICAgdmFyIGRhdGFUYWJsZUJvZHkgPSB0aGlzLl9kYXRhR3JpZC5kYXRhVGFibGVCb2R5Owo=
</data>
<flag name="review"
          id="86859"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94047</attachid>
            <date>2011-05-19 00:03:42 -0700</date>
            <delta_ts>2011-05-20 09:02:03 -0700</delta_ts>
            <desc>Fix style</desc>
            <filename>contex</filename>
            <type>text/plain</type>
            <size>28803</size>
            <attacher name="Sergey Vorobyev">sergeyvorobyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNGQ2ZDAyLi4wMThkNDE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDUt
MTkgIFNlcmdleSBWb3JvYnlldiAgPHNlcmdleXZvcm9ieWV2QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QmFja2dyb3VuZCBuZXR3b3JrIGV2ZW50cyBjb2xsZWN0aW9uIC0gYWRkIEdVSSB0byBJbnNwZWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY1
MgorCisgICAgICAgIE1vdmUgcmVvcGVuRnJvbnRlbmQoKSB0byBpbnNwZWN0b3ItdGVzdC5qcwor
ICAgICAgICBBZGQgZmlyc3QgdGVzdCBmb3IgYmFja2dyb3VuZCBldmVudHMgY29sbGVjdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmVu
YWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24pOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3
b3JrVGVzdC5JbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0
ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxv
YWQtb3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWw6CisgICAgICAgICogcGxhdGZv
cm0vcXQvU2tpcHBlZDoKKwogMjAxMS0wNS0xNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZmFpbGluZyBtYWMtd2syIGV4cGVjdGVkIHJl
c3VsdHMgZm9yIG9ubGluZS1mYWxsYmFjay1sYXllcmluZy5odG1sLCBzaW5jZSBpdCBub3cKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMK
aW5kZXggNWMyNjdkOS4uYjlkYjU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMyNCw2ICszMjQsMjkgQEAgSW5zcGVj
dG9yVGVzdC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIAogdmFy
IHJ1blRlc3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7Cit2YXIgZnJv
bnRlbmRSZW9wZW5pbmdDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkKK3sK
KyAgICBjbG9zZUZyb250ZW5kKG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCk7Cit9CisKK2Z1bmN0
aW9uIGNsb3NlRnJvbnRlbmQoY2FsbGJhY2spCit7CisgICAgLy8gRG8gdGhpcyBhc3luY2hyb25v
dXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBzZW5kIHJlc3BvbnNl
CisgICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVzdHJveWVkLgorICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
b3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSwgMCk7Cit9CisK
K2Z1bmN0aW9uIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpCit7CisgICAgZnJvbnRlbmRSZW9w
ZW5pbmdDb3VudCsrOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3Io
KTsKKyAgICBydW5UZXN0KCk7Cit9CiAKIGZ1bmN0aW9uIHJ1bkFmdGVySWZyYW1lSXNMb2FkZWQo
KQogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNTViN2EKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXRlc3Qu
anMKQEAgLTAsMCArMSwyNiBAQAordmFyIGluaXRpYWxpemVfTmV0d29ya1Rlc3QgPSBmdW5jdGlv
bigpIHsKKworSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0g
ZnVuY3Rpb24oKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNr
Z3JvdW5kQ29sbGVjdGlvbkVuYWJsZWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKKyAgICBlbHNlCisgICAg
ICAgIHRocm93ICJCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uIGFscmVhZHkgZW5hYmxlZC4iOwor
fQorCitJbnNwZWN0b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uID0gZnVu
Y3Rpb24gKCkKK3sKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9iYWNrZ3Jv
dW5kQ29sbGVjdGlvbkVuYWJsZWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5fdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24oKTsKK30KKworSW5zcGVjdG9yVGVz
dC5kdW1wTmV0d29ya1Jlc291cmNlcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgcmVzb3VyY2Vz
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5zbGljZSgpOworICAgIHJl
c291cmNlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtyZXR1cm4gYS51cmwubG9jYWxlQ29tcGFyZShi
LnVybCk7fSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlcyBjb3VudCA9
ICIgKyByZXNvdXJjZXMubGVuZ3RoKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcmVzb3VyY2VzLmxl
bmd0aDsgaSsrKQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZXNbaV0u
dXJsKTsKK30KKworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0
ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgyOTQzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItYWZ0ZXItZGlzYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorVGVzdCB0aGF0IHJlb3BlbmluZyBjbGVhcnMgbmV0d29yayBwYW5l
bCBpbiBiYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIGRpc2FibGVkIG1vZGUuIEJ1ZyA1ODA2
NCBCdWcgNTg2NTIKKworCitSZW9wZW5lZCBmcm9udGVuZCAyIHRpbWVzCityZXNvdXJjZXMgY291
bnQgPSAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFyLWFmdGVyLWRpc2FibGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFlY2M4ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBsb2FkSW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoc2l6ZSkKK3sKKyAgICB2YXIgaW1hZ2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNy
YyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT0iICsgc2l6ZSk7Cisg
ICAgaW1hZ2Uub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpbWFnZSk7CisKKyAgICB2YXIgaW1hZ2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIik7CisgICAgaW1hZ2UyLm9ubG9hZCA9IHJlc291cmNlTG9hZGVkOworICAgIGltYWdl
Mi5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Um
c2l6ZT0iICsgc2l6ZSArICImZ3ppcD10cnVlIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChpbWFnZTIpOworfQorCit2YXIgbG9hZGVkUmVzb3VyY2VDb3VudCA9IDA7CitmdW5jdGlv
biByZXNvdXJjZUxvYWRlZCgpCit7CisgICAgbG9hZGVkUmVzb3VyY2VDb3VudCsrOworICAgIGlm
IChsb2FkZWRSZXNvdXJjZUNvdW50ICUgMiA9PT0gMCkKKyAgICAgICAgcmVvcGVuRnJvbnRlbmQo
KTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgiZnJvbnRlbmRSZW9wZW5pbmdDb3VudCIsIGZyb250ZW5kUmVv
cGVuaW5nQ291bnRSZWNlaXZlcik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmRpc2FibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHRocm93
IGU7CisgICAgfQorCisgICAgZnVuY3Rpb24gZnJvbnRlbmRSZW9wZW5pbmdDb3VudFJlY2VpdmVy
KHN0ZXBOdW1iZXIpIHsKKyAgICAgICAgaWYgKHN0ZXBOdW1iZXIuZGVzY3JpcHRpb24gPT09ICIw
IikgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xs
ZWN0aW9uKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2Fk
SW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoNDAwKSIpOworICAgICAgICB9IGVsc2UgaWYgKHN0ZXBO
dW1iZXIuX2Rlc2NyaXB0aW9uID09PSAiMSIpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJbWFnZXNBbmRSZW9wZW5Gcm9udGVuZCg2MDApIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
UmVvcGVuZWQgZnJvbnRlbmQgIiArIHN0ZXBOdW1iZXIuX2Rlc2NyaXB0aW9uICsgIiB0aW1lcyIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTmV0d29ya1Jlc291cmNlcygpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+CitUZXN0IHRoYXQgcmVvcGVuaW5nIGNsZWFycyBuZXR3b3JrIHBhbmVsIGluIGJhY2tncm91
bmQgZXZlbnRzIGNvbGxlY3Rpb24gZGlzYWJsZWQgbW9kZS4KKzxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2NCI+QnVnIDU4MDY0PC9hPgorPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5CdWcgNTg2
NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1jbG9zZS1sb2FkLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmFmZGM2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZlbnQgY29sbGVj
dGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IGNvbGxlY3RzIGV2ZW50cyB3
aXRoIGNsb3NlZCBmcm9udGVuZC4gQnVnIDU4MDY0IEJ1ZyA1ODY1MgorCisKK3Jlc291cmNlcyBj
b3VudCA9IDIKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT00MDAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6
ZT00MDAmZ3ppcD10cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbG9zZS1sb2FkLW9wZW4uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDM3ZDc5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWNsb3NlLWxvYWQtb3Blbi5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2Fk
SW1hZ2VzQW5kT3BlbkZyb250ZW5kKCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJj
ZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT00MDAiKTsKKyAgICBpbWFnZS5vbmxvYWQg
PSByZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsK
KworICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBp
bWFnZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0ZSgi
c3JjIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTQwMCZnemlwPXRy
dWUiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9CisKK3ZhciBs
b2FkZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVkKCkKK3sKKyAg
ICBsb2FkZWRSZXNvdXJjZUNvdW50Kys7CisgICAgaWYgKGxvYWRlZFJlc291cmNlQ291bnQgPT09
IDIpCisgICAgICAgIG9wZW5Gcm9udGVuZEFuZEluY3JlbWVudCgpOworfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnJvbnRlbmRSZW9wZW5pbmdDb3VudFJlY2VpdmVy
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tn
cm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBmcm9udGVuZFJlb3BlbmluZ0NvdW50UmVjZWl2ZXIoc3RlcE51bWJlcikgeworICAg
ICAgICBpZiAoc3RlcE51bWJlci5fZGVzY3JpcHRpb24gPT09ICIwIikgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbG9zZUZyb250ZW5kKGxvYWRJbWFn
ZXNBbmRPcGVuRnJvbnRlbmQpIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBOZXR3b3JrUmVzb3VyY2VzKCk7CisgICAgICAgICAgICAvLyBTd2l0Y2gg
b2ZmIGJlZm9yZSBjb21wbGV0ZVRlc3QuCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRpc2Fi
bGVCYWNrZ3JvdW5kRXZlbnRDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQorCis8L3NjcmlwdD4KKworPC9o
ZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCB3aGVuIGJh
Y2tncm91bmQgZXZlbnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVj
dGx5IGNvbGxlY3RzIGV2ZW50cyB3aXRoIGNsb3NlZCBmcm9udGVuZC4KKzxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2NCI+QnVnIDU4MDY0PC9hPgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyIj5C
dWcgNTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Bl
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDgxMDdlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1vcGVuLWxvYWQtcmVvcGVuLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1Rlc3QgdGhhdCB3aGVuIGJhY2tncm91bmQgZXZl
bnQgY29sbGVjdGlvbiBpcyBlbmFibGVkIG5ldHdvcmsgcGFuZWwgY29ycmVjdGx5IHJlc3RvcmVz
IG5ldHdvcmsgbG9nIGFmdGVyIHRoZSBmcm9udGVuZCByZW9wZW5pbmcuIEJ1ZyA1ODA2NCBCdWcg
NTg2NTIKKworCitSZW9wZW5lZCBmcm9udGVuZCAxIHRpbWVzCityZXNvdXJjZXMgY291bnQgPSAy
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291
cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnNpemU9NTAwJmd6
aXA9dHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4tbG9hZC1yZW9wZW4uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGVhZTFjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLW9wZW4t
bG9hZC1yZW9wZW4uaHRtbApAQCAtMCwwICsxLDYxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9u
ZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZEltYWdl
c0FuZFJlb3BlbkZyb250ZW5kKCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbWciKTsKKyAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMv
cmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAiKTsKKyAgICBpbWFnZS5vbmxvYWQgPSBy
ZXNvdXJjZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKwor
ICAgIHZhciBpbWFnZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFn
ZTIub25sb2FkID0gcmVzb3VyY2VMb2FkZWQ7CisgICAgaW1hZ2UyLnNldEF0dHJpYnV0ZSgic3Jj
IiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCZnemlwPXRydWUi
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlMik7Cit9CisKK3ZhciBsb2Fk
ZWRSZXNvdXJjZUNvdW50ID0gMDsKK2Z1bmN0aW9uIHJlc291cmNlTG9hZGVkKCkKK3sKKyAgICBp
ZiAoKytsb2FkZWRSZXNvdXJjZUNvdW50ID09PSAyKQorICAgICAgICByZW9wZW5Gcm9udGVuZCgp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnJvbnRlbmRSZW9w
ZW5pbmdDb3VudFJlY2VpdmVyKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZGlzYWJsZUJhY2tncm91bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgdGhyb3cg
ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmcm9udGVuZFJlb3BlbmluZ0NvdW50UmVjZWl2ZXIo
c3RlcE51bWJlcikgeworICAgICAgICBpZiAoc3RlcE51bWJlci5fZGVzY3JpcHRpb24gPT09ICIw
IikgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVCYWNrZ3JvdW5kRXZlbnRDb2xs
ZWN0aW9uKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2Fk
SW1hZ2VzQW5kUmVvcGVuRnJvbnRlbmQoKSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlb3BlbmVkIGZyb250ZW5kICIgKyBzdGVwTnVt
YmVyLl9kZXNjcmlwdGlvbiArICIgdGltZXMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcE5ldHdvcmtSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIC8vIFN3aXRjaCBvZmYgYmVmb3Jl
IGNvbXBsZXRlVGVzdC4KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZUJhY2tncm91
bmRFdmVudENvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0aGF0IHdoZW4gYmFja2dyb3VuZCBl
dmVudCBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgbmV0d29yayBwYW5lbCBjb3JyZWN0bHkgcmVzdG9y
ZXMgbmV0d29yayBsb2cgYWZ0ZXIgdGhlIGZyb250ZW5kIHJlb3BlbmluZy4KKzxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2NCI+QnVnIDU4MDY0PC9h
PgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUy
Ij5CdWcgNTg2NTI8L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQu
dHh0CmluZGV4IDE5YjllZmIuLjYxMjFhNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9vcGVuLWNsb3NlLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0x
MCwyMSArMTAsMTAgQEAgUnVubmluZzogdGVzdFNvdXJjZUZyYW1lQ29udGVudAogPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gcmVvcGVuRnJvbnRlbmQoKSB7Ci0gICAgLy8gRG8gdGhp
cyBhc3luY2hyb25vdXNseSB0byBhbGxvdyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB0byBz
ZW5kIHJlc3BvbnNlCi0gICAgLy8gYmFjayB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgZGVz
dHJveWVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5fZnJv
bnRlbmRSZW9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3Nl
V2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNw
ZWN0b3IoKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0sIDApOwotfQotCiBmdW5jdGlvbiB0
ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuX2Zyb250
ZW5kUmVvcGVuZWQiLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5fZGVz
Y3JpcHRpb24gPT09ICJ1bmRlZmluZWQiKQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoImZyb250ZW5kUmVvcGVuaW5nQ291bnQiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAg
aWYgKHJlc3VsdC5fZGVzY3JpcHRpb24gPT09ICIwIikKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoInJlb3BlbkZyb250ZW5kKCkiKQogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCmluZGV4
IDQzMWM3MzcuLjVmZWJlY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9vcGVuLWNsb3NlLW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwKQEAgLTQsMjEgKzQsMTAgQEAKIDxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkgewotICAgIC8vIERvIHRoaXMg
YXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2Vu
ZCByZXNwb25zZQotICAgIC8vIGJhY2sgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ry
b3llZC4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuX2Zyb250
ZW5kUmVvcGVuZWQgPSB0cnVlOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdl
Ykluc3BlY3RvcigpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7Ci0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQogZnVuY3Rpb24gdGVz
dCgpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93Ll9mcm9udGVu
ZFJlb3BlbmVkIiwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGlmIChyZXN1bHQuX2Rlc2Ny
aXB0aW9uID09PSAidW5kZWZpbmVkIikKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJmcm9udGVuZFJlb3BlbmluZ0NvdW50IiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlm
IChyZXN1bHQuX2Rlc2NyaXB0aW9uID09PSAiMCIpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJyZW9wZW5Gcm9udGVuZCgpIikKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCmluZGV4IGYyNjAxYmMuLjAzOTI2YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZApAQCAtNDUyLDYgKzQ1MiwxMSBAQCBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtYmxhbmst
cHJvcGVydHkuaHRtbAogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY2hhbmdlLWlmcmFtZS1zcmMuaHRt
bAogaW5zcGVjdG9yL2RlYnVnZ2VyL29wZW4tY2xvc2Utb3Blbi5odG1sCiAKKyMgW1F0XSBUaGlz
IHRlc3RzJyBmYWlscyBwcm9iYWJseSBoYXMgc2FtZSByZWFzb24gYXMgdGVzdCBpbnNwZWN0b3Iv
ZGVidWdnZXIvb3Blbi1jbG9zZS1vcGVuLmh0bWwuCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5odG1sCitodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY2xvc2UtbG9hZC1vcGVuLmh0bWwKK2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1jbGVhci1hZnRlci1kaXNhYmxlZC5odG1sCisKICMgW1F0XSBmYXN0
L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZsYXR0ZW5pbmctc3ViZnJhbWVzZXRzLmh0bWwg
ZmFpbHMgaW50ZXJtaXR0ZW50bHkgb24gUXQgYm90CiAjIEZhaWxzIGNhdXNlZCBieSBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kaXNwbGF5KCkgaW4gZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9mcmFtZXNl
dC1mbGF0dGVuaW5nLXN1YmZyYW1lLXJlc2l6ZS5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzMzNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQwNzhiNTkuLmI1YjYxMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMS0wNS0xOSAgU2VyZ2V5IFZvcm9ieWV2
ICA8c2VyZ2V5dm9yb2J5ZXZAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBCYWNrZ3JvdW5kIG5ldHdvcmsg
ZXZlbnRzIGNvbGxlY3Rpb24gLSBhZGQgR1VJIHRvIEluc3BlY3Rvci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjUyCisKKyAgICAgICAgTm93IGlu
IFdlYkluc3BlY3RvciBOZXR3b3JrIHBhbmVsIGF2YWxhaWJsZSBuZXcgY2hlY2tib3ggaXRlbSBp
biBjb250ZXh0IG1lbnU6CisgICAgICAgICJCYWNrZ3JvdW5kIGV2ZW50cyBjb2xsZWN0aW9uIi4g
SXQgYWxsb3dzIHRvIHNhdmUgYWxsIG5ldHdvcmsgZXZlbnRzIHdoZW4gaW5zcGVjdG9yCisgICAg
ICAgIGZyb250ZW5kIGNsb3NlZC4gRXZlbnRzIHRoYXQgb2NjdXIgYmVmb3JlIGNvbGxlY3Rpb24g
ZW5hYmxpbmcgYXJlIG5vdCBwcmVzZXJ2ZWQgYWZ0ZXIKKyAgICAgICAgZnJvbnRlbmQgcmVvcGVu
aW5nLiBQcm9wZXJ0eSB1bmlxdWUgZm9yIGVhY2ggcGFnZS4gRGlzYWJsZWQgYnkgZGVmYXVsdC4K
KworCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
Y2xlYXItYWZ0ZXItZGlzYWJsZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsb3NlLWxvYWQtb3Blbi5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstb3Blbi1sb2FkLXJlb3Blbi5o
dG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50c0NvbGxlY3Rvcjo6Y2xlYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9F
dmVudHNDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0
QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmluaXRpYWxpemVCYWNrZ3JvdW5kQ29sbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1BhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uKToK
KwogMjAxMS0wNS0xNiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiBXaW5kb3dzIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAKaW5kZXggMWMzNjVjZi4uNzM5MWEyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0V2ZW50c0NvbGxlY3Rvci5jcHAKQEAgLTQ4LDYg
KzQ4LDExIEBAIHZvaWQgRXZlbnRzQ29sbGVjdG9yOjphZGRFdmVudChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiAgICAgfQogfQogCit2b2lkIEV2ZW50c0NvbGxlY3Rvcjo6Y2xlYXIoKQoreworICAg
IG1fZXZlbnRzLmNsZWFyKCk7Cit9CisKIHZvaWQgRXZlbnRzQ29sbGVjdG9yOjpzZW5kQ29sbGVj
dGVkRXZlbnRzKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogcmVjZWl2ZXIpCiB7CiAgICAgZm9y
IChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBtX2V2ZW50cy5iZWdpbigpOyBpdCAhPSBt
X2V2ZW50cy5lbmQoKTsgKytpdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9FdmVudHNDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9FdmVudHNDb2xs
ZWN0b3IuaAppbmRleCBkNTNlMTA5Li5lMjZlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRXZlbnRzQ29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0V2ZW50c0NvbGxlY3Rvci5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICBFdmVu
dHNDb2xsZWN0b3IoKTsKICAgICB+RXZlbnRzQ29sbGVjdG9yKCkgeyB9CiAgICAgdm9pZCBhZGRF
dmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lk
IHNlbmRDb2xsZWN0ZWRFdmVudHMoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2FwYWNpdHkgPSAxMDI0KjEwMjQ7IC8vIDEg
TWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA4ZTUxZTk3Li5j
ZTUzYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC00NzEs
NiArNDcxLDE5IEBACiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICJ0eXBlIjogIm9iamVjdCIsICJkZXNjcmlw
dGlvbiI6ICJNYXAgd2l0aCBleHRyYSBIVFRQIGhlYWRlcnMuIiB9CiAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQiLAorICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJUb2dnbGVzIGJhY2tncm91bmQgbmV0d29yayBldmVudCBjb2xsZWN0
aW9uLiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24i
OiAidHJ1ZSAtIGVuYWJsZSBjb2xsZWN0aW9uLCBmYWxzZSAtIGRpc2FibGUiIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogImlzQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkIiwKKyAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFi
bGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg
IH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmNwcAppbmRleCA0ZTIxODhkLi5i
YTA1NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUHJveHkuY3BwCkBAIC01NSw2ICs1NSwxMSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5k
UHJveHk6OnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZQogICAgIG1fcmVjZWl2ZXIgPSByZWNlaXZlcjsKIH0KIAorSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBJbnNwZWN0b3JGcm9udGVuZFByb3h5OjppbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKQor
eworICAgIHJldHVybiBtX3JlY2VpdmVyOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kUHJv
eHk6OnNldEV2ZW50c0NvbGxlY3RvcihFdmVudHNDb2xsZWN0b3IqIGNvbGxlY3RvcikKIHsKICAg
ICBtX2NvbGxlY3RvciA9IGNvbGxlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRQcm94eS5oCmluZGV4IDI1OWFmNjcuLjUxZjg0ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUHJveHkuaApA
QCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRQ
cm94eSgpIHsgfQogCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwoKTsKICAgICB2b2lkIHNldEV2ZW50c0NvbGxlY3RvcihFdmVu
dHNDb2xsZWN0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzY2M4ZTQ0Li5jOTM4ZTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCkBAIC02OCwxMiArNjgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFJl
c291cmNlQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciByZXNvdXJjZUFnZW50RW5hYmxl
ZFtdID0gInJlc291cmNlQWdlbnRFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGV4dHJhUmVx
dWVzdEhlYWRlcnNbXSA9ICJleHRyYVJlcXVlc3RIZWFkZXJzIjsKK3N0YXRpYyBjb25zdCBjaGFy
IGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZFtdID0gImJhY2tncm91bmRFdmVudHND
b2xsZWN0aW9uRW5hYmxlZCI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIG1fZnJvbnRlbmQg
PSBmcm9udGVuZC0+bmV0d29yaygpOwotICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlv
bkVuYWJsZWQoKSkgeworICAgIGlmIChpc0JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxl
ZCgpKSB7CiAgICAgICAgIC8vIEluc2VydCBNZXNzYWdlIFByb3h5IGluIHJlY2VpdmVyIGNoYWlu
LgogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNsaWVudCA9IG1fZnJvbnRlbmQt
PmdldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpOwogICAgICAgICBtX2luc3BlY3RvckZyb250
ZW5kUHJveHktPnNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChjbGllbnQpOwpAQCAtODQsMTQg
Kzg1LDE2IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQoKQogewotICAgIGlmIChiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoKSkgewotICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kUHJveHktPnNldEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCgwKTsKKyAgICBpZiAoaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVu
YWJsZWQoKSkgewogICAgICAgICBtX2Zyb250ZW5kID0gbV9tb2NrRnJvbnRlbmQuZ2V0KCk7Ci0g
ICAgfSBlbHNlCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LmdldCgpKTsKKyAgICB9IGVsc2Ug
ewogICAgICAgICBtX2Zyb250ZW5kID0gMDsKLQorICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsK
KyAgICAgICAgZGlzYWJsZSgmZXJyb3IpOworICAgIH0KICAgICBtX3VzZXJBZ2VudE92ZXJyaWRl
ID0gIiI7Ci0gICAgZGlzYWJsZSgwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpyZXN0b3JlKCkKQEAgLTMzMSwxMiArMzM0LDM1IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKIAotYm9vbCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpiYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKQordm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50Ojppc0JhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmlu
ZyosIGJvb2wqIGVuYWJsZWQpCit7CisgICAgKCplbmFibGVkKSA9IGlzQmFja2dyb3VuZEV2ZW50
c0NvbGxlY3Rpb25FbmFibGVkKCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
aXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBtX3N0
YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxl
Y3Rpb25FbmFibGVkKTsKK30KKwordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQp
CiB7Ci0gICAgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODY1MikKLSAgICAvLyBBZGQgaGVyZSBjb25kaXRpb24gdG8gZW5hYmxlIGJhY2tncm91bmQg
ZXZlbnRzIGNvbGxlY3Rpb24uCi0gICAgLy8gTm93IHRoaXMgZnVuY3Rpb24gaXMgZGlzYWJsZS4K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGVuYWJsZWQgPT0gaXNCYWNrZ3JvdW5kRXZlbnRz
Q29sbGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbmFibGVkKSB7
CisgICAgICAgIGlmICghbV9ldmVudHNDb2xsZWN0b3IpCisgICAgICAgICAgICBpbml0aWFsaXpl
QmFja2dyb3VuZENvbGxlY3Rpb24oKTsKKyAgICAgICAgLy8gSW5zZXJ0IE1lc3NhZ2UgUHJveHkg
aW4gcmVjZWl2ZXIgY2hhaW4uCisgICAgICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjbGllbnQgPSBtX2Zyb250ZW5kLT5nZXRJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwoKTsKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5z
ZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoY2xpZW50KTsKKyAgICAgICAgbV9mcm9udGVuZC0+
c2V0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS5nZXQo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGFrZSBvdXQgTWVzc2FnZSBQcm94eSBmcm9t
IHJlY2VpdmVyIGNoYWluLgorICAgICAgICBtX2Zyb250ZW5kLT5zZXRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwobV9pbnNwZWN0b3JGcm9udGVuZFByb3h5LT5pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoKSk7CisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS0+c2V0SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKDApOworICAgICAgICBtX2V2ZW50c0NvbGxlY3Rvci0+Y2xlYXIoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpi
YWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQsIGVuYWJsZWQpOwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCkBAIC0zNjgsMTYgKzM5
NCwyMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEV4dHJhSGVhZGVycyhFcnJv
clN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yTwogICAgIG1fc3RhdGUtPnNldE9iamVjdChS
ZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMsIGhlYWRlcnMpOwogfQogCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmluaXRpYWxpemVCYWNrZ3JvdW5kQ29sbGVjdGlv
bigpCit7CisgICAgbV9ldmVudHNDb2xsZWN0b3IgPSBhZG9wdFB0cihuZXcgRXZlbnRzQ29sbGVj
dG9yKCkpOworICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eSA9IGFkb3B0UHRyKG5ldyBJbnNw
ZWN0b3JGcm9udGVuZFByb3h5KG1fZXZlbnRzQ29sbGVjdG9yLmdldCgpKSk7CisgICAgLy8gQ3Jl
YXRlIG1vY2sgZnJvbnRlbmQsIHNvIHdlIGNhbiBjb2xsZWN0IG5ldHdvcmsgZXZlbnRzLgorICAg
IG1fbW9ja0Zyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3Jr
KG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eS5nZXQoKSkpOworfQorCiBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JT
dGF0ZSogc3RhdGUpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0Fn
ZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fc3RhdGUoc3RhdGUp
CiB7Ci0gICAgaWYgKGJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIG1fZXZlbnRzQ29sbGVjdG9yID0gYWRvcHRQdHIobmV3IEV2ZW50c0NvbGxlY3Rvcik7Ci0g
ICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRQcm94eSA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JG
cm9udGVuZFByb3h5KG1fZXZlbnRzQ29sbGVjdG9yLmdldCgpKSk7CisgICAgaWYgKGlzQmFja2dy
b3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZUJhY2tn
cm91bmRDb2xsZWN0aW9uKCk7CiAgICAgICAgIC8vIENyZWF0ZSBtb2NrIGZyb250ZW5kLCBzbyB3
ZSBjYW4gY29sbGVjdCBuZXR3b3JrIGV2ZW50cy4KLSAgICAgICAgbV9tb2NrRnJvbnRlbmQgPSBh
ZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsobV9pbnNwZWN0b3JGcm9udGVu
ZFByb3h5LmdldCgpKSk7CiAgICAgICAgIG1fZnJvbnRlbmQgPSBtX21vY2tGcm9udGVuZC5nZXQo
KTsKICAgICAgICAgZW5hYmxlKCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBkNjBkMjFmLi4xZjM5YThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgKQEAgLTEwNSw5ICsxMDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2xvc2VXZWJT
b2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICNlbmRpZgogCi0gICAgYm9vbCBiYWNr
Z3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIGlzQmFja2dyb3VuZEV2
ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCogZW5hYmxlZCk7CisgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBi
b29sIGVuYWJsZWQpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQgCisgICAgLy8gQ2Fs
bGVkIGZyb20gZnJvbnRlbmQKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CkBAIC0xMTcsMTUgKzExOCwx
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKik7CiAK
KyAgICBib29sIGlzQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9p
ZCBlbmFibGUoKTsKKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZ3JvdW5kQ29sbGVjdGlvbigpOwog
CiAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIElu
c3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yU3RhdGUqIG1fc3Rh
dGU7Ci0gICAgT3duUHRyPEV2ZW50c0NvbGxlY3Rvcj4gbV9ldmVudHNDb2xsZWN0b3I7CiAgICAg
SW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsqIG1fZnJvbnRlbmQ7Ci0gICAgT3duUHRyPEluc3Bl
Y3RvckZyb250ZW5kOjpOZXR3b3JrPiBtX21vY2tGcm9udGVuZDsKKyAgICBPd25QdHI8RXZlbnRz
Q29sbGVjdG9yPiBtX2V2ZW50c0NvbGxlY3RvcjsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRl
bmRQcm94eT4gbV9pbnNwZWN0b3JGcm9udGVuZFByb3h5OworICAgIE93blB0cjxJbnNwZWN0b3JG
cm9udGVuZDo6TmV0d29yaz4gbV9tb2NrRnJvbnRlbmQ7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50
T3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDU0MTEzZGMuLmI3ODhkYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC0zMCw2
ICszMCwxMiBAQAogCiBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQogewor
ICAgIGZ1bmN0aW9uIGV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKGVycm9yLCBlbmFibGVkKQorICAg
IHsKKyAgICAgICAgdGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsK
KyAgICB9CisgICAgTmV0d29ya0FnZW50LmlzQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFi
bGVkKGV2ZW50c0NvbGxlY3Rpb25FbmFibGVkLmJpbmQodGhpcykpOworCiAgICAgV2ViSW5zcGVj
dG9yLlBhbmVsLmNhbGwodGhpcywgIm5ldHdvcmsiKTsKIAogICAgIHRoaXMuY3JlYXRlU2lkZWJh
cigpOwpAQCAtMTAxOSw2ICsxMDI1LDkgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIlNhdmUg
YWxsIGFzIEhBUiIgOiAiU2F2ZSBBbGwgYXMgSEFSIiksIHRoaXMuX2V4cG9ydEFsbC5iaW5kKHRo
aXMpKTsKICAgICAgICAgfQogCisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigp
OworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJFbmFibGVkIGJhY2tncm91bmQgZXZlbnRzIGNvbGxlY3Rpb24iKSwgdGhpcy5fdG9n
Z2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5fYmFja2dyb3Vu
ZENvbGxlY3Rpb25FbmFibGVkKTsKKwogICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
ICAgICB9LAogCkBAIC0xMDY1LDYgKzEwNzQsMTIgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zYXZlQXMocmVz
b3VyY2UuZGlzcGxheU5hbWUgKyAiLmhhciIsIEpTT04uc3RyaW5naWZ5KGhhcikpOwogICAgIH0s
CiAKKyAgICBfdG9nZ2xlQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb246IGZ1bmN0aW9uKHJlc291
cmNlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYmFja2dyb3VuZENvbGxlY3Rpb25FbmFibGVkID0g
IXRoaXMuX2JhY2tncm91bmRDb2xsZWN0aW9uRW5hYmxlZDsKKyAgICAgICAgTmV0d29ya0FnZW50
LnNldEJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCh0aGlzLl9iYWNrZ3JvdW5kQ29s
bGVjdGlvbkVuYWJsZWQpOworICAgIH0sCisKICAgICBfdXBkYXRlT2Zmc2NyZWVuUm93czogZnVu
Y3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBkYXRhVGFibGVCb2R5ID0gdGhpcy5fZGF0YUdy
aWQuZGF0YVRhYmxlQm9keTsK
</data>
<flag name="review"
          id="87295"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="87296"
          type_id="3"
          status="-"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>