<?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>56415</bug_id>
          
          <creation_ts>2011-03-15 14:31:04 -0700</creation_ts>
          <short_desc>ApplicationCacheGroup is not obsolete after being deleted via ApplicationCacheStorage::deleteEntriesForOrigin</short_desc>
          <delta_ts>2011-03-19 15:17:43 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>1</everconfirmed>
          <reporter name="Anton D&apos;Auria">adauria</reporter>
          <assigned_to name="Anton D&apos;Auria">adauria</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367946</commentid>
    <comment_count>0</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-15 14:31:04 -0700</bug_when>
    <thetext>After ApplicationCacheStorage::deleteEntriesForOrigin() is called, this assertion fails in ApplicationCacheGroup::cacheGroupDestroyed(ApplicationCacheGroup* group):
    ASSERT(m_cachesInMemory.get(group-&gt;manifestURL()) == group);

bool ApplicationCacheStorage::deleteCacheGroup(const String&amp; manifestURL) should call group-&gt;makeObsolete() instead of cacheGroupMadeObsolete(group). ApplicationCacheGroup::makeObsolete() actually calls cacheGroupMadeObsolete() and sets the group&apos;s internal state that tracks its obsolescence to true (m_isObsolete).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368030</commentid>
    <comment_count>1</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-15 16:31:55 -0700</bug_when>
    <thetext>this is the backtrace:


Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010101b6f7 WebCore::ApplicationCacheStorage::cacheGroupDestroyed(WebCore::ApplicationCacheGroup*) + 303 (ApplicationCacheStorage.cpp:336)
1   com.apple.WebCore             	0x0000000101009e0d WebCore::ApplicationCacheGroup::~ApplicationCacheGroup() + 791 (ApplicationCacheGroup.cpp:95)
2   com.apple.WebCore             	0x0000000101005361 WebCore::ApplicationCacheGroup::cacheDestroyed(WebCore::ApplicationCache*) + 263 (ApplicationCacheGroup.cpp:385)
3   com.apple.WebCore             	0x00000001010010e9 WebCore::ApplicationCache::~ApplicationCache() + 83 (ApplicationCache.cpp:52)
4   com.apple.WebCore             	0x000000010101005d WTF::RefCounted&lt;WebCore::ApplicationCache&gt;::deref() + 43 (RefCounted.h:141)
5   com.apple.WebCore             	0x000000010101008d void WTF::derefIfNotNull&lt;WebCore::ApplicationCache&gt;(WebCore::ApplicationCache*) + 37 (PassRefPtr.h:59)
6   com.apple.WebCore             	0x00000001010100e6 WTF::PassRefPtr&lt;WebCore::ApplicationCache&gt;::~PassRefPtr() + 24 (PassRefPtr.h:74)
7   com.apple.WebCore             	0x0000000101005247 WebCore::ApplicationCacheGroup::disassociateDocumentLoader(WebCore::DocumentLoader*) + 595 (ApplicationCacheGroup.cpp:370)
8   com.apple.WebCore             	0x00000001010138ee WebCore::ApplicationCacheHost::~ApplicationCacheHost() + 222 (ApplicationCacheHost.cpp:61)
9   com.apple.WebCore             	0x00000001012537b9 void WTF::deleteOwnedPtr&lt;WebCore::ApplicationCacheHost&gt;(WebCore::ApplicationCacheHost*) + 36 (OwnPtrCommon.h:59)
10  com.apple.WebCore             	0x00000001012537dc WTF::OwnPtr&lt;WebCore::ApplicationCacheHost&gt;::~OwnPtr() + 24 (OwnPtr.h:57)
11  com.apple.WebCore             	0x000000010124e4d6 WebCore::DocumentLoader::~DocumentLoader() + 174 (DocumentLoader.cpp:115)
12  com.apple.WebKit              	0x0000000100a175c4 WebDocumentLoaderMac::~WebDocumentLoaderMac() + 184 (WebDocumentLoaderMac.h:40)
13  com.apple.WebCore             	0x000000010100c527 WTF::RefCounted&lt;WebCore::DocumentLoader&gt;::deref() + 63 (RefCounted.h:141)
14  com.apple.WebCore             	0x000000010100f82d void WTF::derefIfNotNull&lt;WebCore::DocumentLoader&gt;(WebCore::DocumentLoader*) + 41 (PassRefPtr.h:59)
15  com.apple.WebCore             	0x00000001013d8196 WTF::RefPtr&lt;WebCore::DocumentLoader&gt;::operator=(WebCore::DocumentLoader*) + 56 (RefPtr.h:136)
16  com.apple.WebCore             	0x00000001013d0760 WebCore::FrameLoader::setDocumentLoader(WebCore::DocumentLoader*) + 360 (FrameLoader.cpp:1787)
17  com.apple.WebCore             	0x00000001013d0798 WebCore::FrameLoader::detachViewsAndDocumentLoader() + 54 (FrameLoader.cpp:2620)
18  com.apple.WebCore             	0x00000001013d04ca WebCore::FrameLoader::detachFromParent() + 122 (FrameLoader.cpp:2606)
19  com.apple.WebCore             	0x00000001013d05e6 WebCore::FrameLoader::detachChildren() + 76 (FrameLoader.cpp:2507)
20  com.apple.WebCore             	0x00000001013d04a7 WebCore::FrameLoader::detachFromParent() + 87 (FrameLoader.cpp:2600)
21  com.apple.WebKit              	0x0000000100aea641 -[WebView(WebPrivate) _close] + 298 (WebView.mm:1144)
22  com.apple.WebKit              	0x0000000100ad8f4f -[WebView close] + 32 (WebView.mm:3209)
23  DumpRenderTree                	0x0000000100012519 dumpRenderTree(int, char const**) + 593 (DumpRenderTree.mm:689)
24  DumpRenderTree                	0x000000010001261f main + 97 (DumpRenderTree.mm:719)
25  DumpRenderTree                	0x0000000100002250 start + 52</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368060</commentid>
    <comment_count>2</comment_count>
      <attachid>85881</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-15 17:11:25 -0700</bug_when>
    <thetext>Created attachment 85881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368065</commentid>
    <comment_count>3</comment_count>
      <attachid>85881</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-15 17:17:17 -0700</bug_when>
    <thetext>Comment on attachment 85881
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        When deleting all cache entries for an origin, call ApplicationCacheGroup::makeObsolete() on each cache group for the origin, instead of ApplicationCacheStorage::cacheGroupMadeObsolete(), which did not update the m_isObsolete state of the group. This caused an assertion failure in ApplicationCacheStorage::cacheGroupDestroyed() when the DocumentLoader was getting destroyed.

Holy long lines, Batman.

&gt; Source/WebCore/ChangeLog:236
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r81198

This conflict marker should probably be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368066</commentid>
    <comment_count>4</comment_count>
      <attachid>85883</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-15 17:17:22 -0700</bug_when>
    <thetext>Created attachment 85883
Patch

Removing stray svn conflict line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368098</commentid>
    <comment_count>5</comment_count>
      <attachid>85883</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-15 17:49:25 -0700</bug_when>
    <thetext>Comment on attachment 85883
Patch

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

I don&apos;t think that the approach here is safe. To forget a used application cache, you should call ApplicationCacheGroup::makeObsolete() - ApplicationCacheStorage::deleteCacheGroup() is just untested and unused code that has been landed by mistake, as far as I can tell.

It&apos;s not good to manipulate ApplicationCacheStorage directly behind the back of an existing ApplicationCacheGroup.

&gt; Source/WebCore/ChangeLog:7
&gt; +        ApplicationCacheGroup is not obsolete after being deleted via ApplicationCacheStorage::deleteEntriesForOrigin
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=56415

We don&apos;t usually put a blank line between bug title and number.

&gt; Source/WebKit/mac/ChangeLog:7
&gt; +        ApplicationCacheGroup is not obsolete after being deleted via ApplicationCacheStorage::deleteEntriesForOrigin
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=56415

Extra blank line, again.

&gt; Tools/DumpRenderTree/LayoutTestController.cpp:393
&gt; +    JSRetainPtr&lt;JSStringRef&gt; originUrl(Adopt, JSValueToStringCopy(context, arguments[0], exception));

&quot;URL&quot; should be capitalized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368110</commentid>
    <comment_count>6</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-15 18:08:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 85883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85883&amp;action=review
&gt; 
&gt; I don&apos;t think that the approach here is safe. To forget a used application cache, you should call ApplicationCacheGroup::makeObsolete() - ApplicationCacheStorage::deleteCacheGroup() is just untested and unused code that has been landed by mistake, as far as I can tell.
&gt; 
&gt; It&apos;s not good to manipulate ApplicationCacheStorage directly behind the back of an existing ApplicationCacheGroup.

What you are proposing will only handle the in-memory appcache. This change does call ApplicationCacheGroup::makeObsolete() if the ApplicationCacheGroup is in memory, via ApplicationCacheGroup::deleteCacheGroup(), which also handles the case when the appcache is just on disk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368114</commentid>
    <comment_count>7</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-15 18:16:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 85883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85883&amp;action=review
&gt; It&apos;s not good to manipulate ApplicationCacheStorage directly behind the back of an existing ApplicationCacheGroup.

We&apos;re only modifying ApplicationCacheStorage if an ApplicationCacheGroup isn&apos;t in m_cachesInMemory, so we won&apos;t be doing it &quot;behind the back of an existing ApplicationCacheGroup.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368142</commentid>
    <comment_count>8</comment_count>
      <attachid>85883</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-15 19:29:32 -0700</bug_when>
    <thetext>Comment on attachment 85883
Patch

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

I think Anton&apos;s fix here is correct. But I won&apos;t change review status, because
I know Alexey is more familiar with the code than I am. To me it looks like
this code gracefully handles caches:

  1. If the CacheGroup is in memory, it gracefully marks it as obsolete.
  2. If the CacheGroup is not in memory, it deletes it from the SQL database.

I do have plenty of comments on the patch though!

&gt; Source/WebKit/mac/ChangeLog:13
&gt; +        (+[WebApplicationCache deleteOrigin:]):

Based on your comment above, would a better name be: deleteCacheGroupsForOrigin:?

&gt; Source/WebKit/mac/WebCoreSupport/WebApplicationCache.mm:32
&gt;  #import &quot;WebApplicationCache.h&quot;
&gt; +#import &quot;WebSecurityOriginInternal.h&quot;
&gt; +
&gt;  #import &lt;WebCore/ApplicationCacheStorage.h&gt;
&gt; +#import &lt;WebCore/SecurityOrigin.h&gt;

Nit: I think this should actually be:

  #import &quot;WebApplicationCache.h&quot;

  #import &quot;WebSecurityOriginInternal.h&quot;
  #import &lt;WebCore/ApplicationCacheStorage.h&gt;
  #import &lt;WebCore/SecurityOrigin.h&gt;

The header file for this implementation file is up front, and along.
Then the rest follow, alphabetically sorted.

&gt; Tools/ChangeLog:5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=56415

Nit: Missing Bug Title.

&gt; Tools/DumpRenderTree/LayoutTestController.cpp:2119
&gt;          { &quot;clearAllApplicationCaches&quot;, clearAllApplicationCachesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
&gt; +        { &quot;clearApplicationCacheForOrigin&quot;, clearApplicationCacheForOriginCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
&gt;          { &quot;clearAllDatabases&quot;, clearAllDatabasesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },

Nit: I think this was alphabetical order.

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:750
&gt; +void LayoutTestController::clearApplicationCacheForOrigin(const CppArgumentList&amp;, CppVariant* result)
&gt; +{
&gt; +    // FIXME: implement to support Application Cache Quotas.
&gt; +    result-&gt;setNull();

This comment, and the &quot;FIXME: implement&quot; comments for the other stubbed ports
are all slightly inaccurate or not very helpful. The function does not deal with application
cache quotas (probably just a copy+paste error), it is meant to delete caches for
a particular origin. With that in mind, a better comment might be:

  FIXME: implement to test deleting Application Caches for an Origin.

I am still not a fan of &quot;clear&quot; meaning &quot;delete&quot; but you&apos;re being consistent.

&gt; LayoutTests/http/tests/appcache/origin-delete-expected.txt:5
&gt; +This test checks that application cache groups correctly become obsolete during deletion for a specific origin by exercising the WebCore::ApplicationCacheStorage::deleteEntriesForOrigin(), WebCore::ApplicationCacheStorage::cacheGroupDestroyed() path.
&gt; +
&gt; +PASS - cached iframe-1
&gt; +PASS - cached iframe-2
&gt; +

This test says it is checking that the application cache groups are becoming obsolete,
but I don&apos;t see that actually be checked, or output that would say so.

&gt; LayoutTests/http/tests/appcache/origin-delete.html:50
&gt; +        layoutTestController.clearApplicationCacheForOrigin(&quot;http://127.0.0.1:8000&quot;);
&gt; +        finishTest();

After this call you should be checking if the application cache in the two iframes
is obsolete or not. The fact that this test didn&apos;t ASSERT so far is good, but to
also test that the behavior is correct (that the application caches are obsolete)
would be even better.

You can check the status of an applicationCache through it&apos;s status propery.
http://dev.w3.org/html5/spec/offline.html#dom-appcache-status

At this point in your test, before calling finishTest(), I would expect
a function verifyObsolete() which:

  1) sends a &quot;are you obsolete?&quot; message to each of the iframes
  2) waits for a response from each.
  3) outputs the responses, so there is something visible in the expected results.

The iframes html files would then need to:

  1) handle the message
  2) Return a response checking its appcache status:

      (applicationCache.status === applicationCache.OBSOLETE)

Does that make sense? Hopefully such a test is already failing and
is fixed after your change.

&gt; LayoutTests/http/tests/appcache/origin-delete.html:58
&gt; +&lt;p&gt;This test checks that application cache groups correctly become obsolete during deletion for a specific origin by
&gt; + exercising the WebCore::ApplicationCacheStorage::deleteEntriesForOrigin(), WebCore::ApplicationCacheStorage::cacheGroupDestroyed() path.

Nit: I think putting function names in the description is not very future proof.
I make the same mistake all the time. The functions could change names,
move around, or be deleted all together. It would be better to describe what
the test is actually testing, using Application Cache terminology, which will
always stay the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368166</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-15 21:07:27 -0700</bug_when>
    <thetext>&gt; We&apos;re only modifying ApplicationCacheStorage if an ApplicationCacheGroup isn&apos;t in m_cachesInMemory, so we won&apos;t be doing it &quot;behind the back of an existing ApplicationCacheGroup.&quot;

This is an inversion of responsibilities. It&apos;s ApplicationCache and ApplicationCacheGroup that are an interface to this system - a storage class is responsible for disk storage, not for having general logic like this.

It is important to maintain this design, because sooner or later we&apos;ll need to rewrite the storage part, as it&apos;s quite inefficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368174</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-15 21:27:05 -0700</bug_when>
    <thetext>&gt; I don&apos;t think that the approach here is safe. To forget a used application
&gt; cache, you should call ApplicationCacheGroup::makeObsolete() -
&gt; ApplicationCacheStorage::deleteCacheGroup() is just untested and
&gt; unused code that has been landed by mistake, as far as I can tell.

&gt; This is an inversion of responsibilities. It&apos;s ApplicationCache and
&gt; ApplicationCacheGroup that are an interface to this system - a storage
&gt; class is responsible for disk storage, not for having general logic like this.

Oh I see what you mean. That sounds smart. Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368408</commentid>
    <comment_count>11</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-16 11:17:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; I don&apos;t think that the approach here is safe. To forget a used application
&gt; &gt; cache, you should call ApplicationCacheGroup::makeObsolete() -
&gt; &gt; ApplicationCacheStorage::deleteCacheGroup() is just untested and
&gt; &gt; unused code that has been landed by mistake, as far as I can tell.
&gt; 
&gt; &gt; This is an inversion of responsibilities. It&apos;s ApplicationCache and
&gt; &gt; ApplicationCacheGroup that are an interface to this system - a storage
&gt; &gt; class is responsible for disk storage, not for having general logic like this.
&gt; 
&gt; Oh I see what you mean. That sounds smart. Good point.

I also agree. ApplicationCacheStorage::deleteEntriesForOrigin() should not be obsoleting the in-memory cache, but should just remove the entries from disk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369239</commentid>
    <comment_count>12</comment_count>
      <attachid>86086</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-17 13:06:53 -0700</bug_when>
    <thetext>Created attachment 86086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369254</commentid>
    <comment_count>13</comment_count>
      <attachid>86086</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-17 13:31:23 -0700</bug_when>
    <thetext>Comment on attachment 86086
Patch

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

I didn&apos;t fully review everything in this patch, but it looks good.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:1131
&gt; +void ApplicationCacheGroup::deleteCacheGroupsForOrigin(SecurityOrigin* origin)

I can&apos;t decide whether this looks better on ApplicationCacheGroup or on ApplicationCache...

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:1140
&gt; +    // Multiple manifest URLs might share the same SecurityOrigin, so we might be creating extra, wasted origins here.
&gt; +    // The current schema doesn&apos;t allow for a more efficient way of deleting by origin.

Is there a reason to create a SecurityOrigin, not just use protocolHostAndPortAreEqual()?

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:77
&gt;      ApplicationCacheGroup* findOrCreateCacheGroup(const KURL&amp; manifestURL);
&gt; +    ApplicationCacheGroup* getInMemoryCacheGroup(const String&amp; manifestURL);

Naming nit: we usually use &quot;get&quot; prefix only with functions that return the result in an out parameter. I would suggest making this look more like findOrCreateCacheGroup() above.

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:85
&gt; +    

Unneeded extra blank line.

&gt; Source/WebKit2/WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:33
&gt; +#include &lt;WEbCore/ApplicationCacheGroup.h&gt;

Typo: WEbCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369262</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-17 13:38:05 -0700</bug_when>
    <thetext>Attachment 86086 did not build on qt:
Build output: http://queues.webkit.org/results/8193749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369339</commentid>
    <comment_count>15</comment_count>
      <attachid>86086</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-17 15:15:00 -0700</bug_when>
    <thetext>Comment on attachment 86086
Patch

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

Much nicer! I have some nits below, but there are some things that I think would prevent
landing. r- for these:

  • This test will fail on ports that have not implemented layoutTestController.clearApplicationCacheForOrigin.
    It would be good to add the test to those ports Skipped list, with bugzilla bug + comment.

  • This appears to update LayoutTests/http/tests/appcache/resources/origin-usage-iframe-1.html but
    the file does not show up in the patch. It also might be worth creating a new resource, so that
    if a test changes it doesn&apos;t accidentally break the other test.

&gt; Source/WebKit/mac/WebCoreSupport/WebApplicationCache.mm:32
&gt;  #import &lt;WebCore/ApplicationCacheStorage.h&gt;
&gt; +#import &lt;WebCore/ApplicationCacheGroup.h&gt;

Nit: alphabetically swap these two. (Might have been my fault).

&gt; Tools/DumpRenderTree/LayoutTestController.h:53
&gt;      void clearAllApplicationCaches();
&gt; +    void clearApplicationCacheForOrigin(JSStringRef name);
&gt;      void clearAllDatabases();

Nit: probably best to be alphabetical here too, but no big deal.

&gt; LayoutTests/ChangeLog:9
&gt; +        These tests create appcache for the DRT origin, delete appcache for the origin,
&gt; +        and verify that the appcache has obsolete status.

Nit: &quot;These test create&quot; =&gt; &quot;This test creates&quot;. I also tend to prefix Application Cache with &quot;the&quot; or &quot;an&quot;, but that may be personal preference.

&gt; LayoutTests/http/tests/appcache/origin-delete.html:37
&gt; +        if (event.data == &quot;PASS - cached iframe-1&quot;) {

Nit: With JavaScript, almost always, ==/!= can be ===/!==. It makes it clearer as well. There are a couple cases here.

&gt; LayoutTests/http/tests/appcache/origin-delete.html:42
&gt; +            var getStatus = &quot;appcache_status&quot;;
&gt; +            frame.contentWindow.postMessage(getStatus, &quot;*&quot;);

Nit: No need for the temp variable. It doesn&apos;t add anything extra here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369403</commentid>
    <comment_count>16</comment_count>
      <attachid>86114</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-17 16:47:26 -0700</bug_when>
    <thetext>Created attachment 86114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369405</commentid>
    <comment_count>17</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-17 16:50:08 -0700</bug_when>
    <thetext>Windows port skips all appcache tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369761</commentid>
    <comment_count>18</comment_count>
      <attachid>86114</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-18 11:43:59 -0700</bug_when>
    <thetext>Comment on attachment 86114
Patch

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

Thanks this looks good! r=me

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:77
&gt; +    ApplicationCacheGroup* inMemoryCacheGroupIfExists(const String&amp; manifestURL);

Nit: method could be marked const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369763</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-18 11:51:10 -0700</bug_when>
    <thetext>&gt; &gt; +    ApplicationCacheGroup* inMemoryCacheGroupIfExists(const String&amp; manifestURL);
&gt; 
&gt; Nit: method could be marked const.

I suggested making it more like findOrCreateCacheGroup. That would involve a different name and argument type:

     ApplicationCacheGroup* findInMemoryCacheGroup(const KURL&amp; manifestURL);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369804</commentid>
    <comment_count>20</comment_count>
      <attachid>86199</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 12:52:02 -0700</bug_when>
    <thetext>Created attachment 86199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369811</commentid>
    <comment_count>21</comment_count>
      <attachid>86201</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 13:11:41 -0700</bug_when>
    <thetext>Created attachment 86201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369821</commentid>
    <comment_count>22</comment_count>
      <attachid>86203</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 13:34:10 -0700</bug_when>
    <thetext>Created attachment 86203
Patch

fixed qt skipped-list conflict</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369823</commentid>
    <comment_count>23</comment_count>
      <attachid>86203</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-18 13:36:34 -0700</bug_when>
    <thetext>Comment on attachment 86203
Patch

Nice. I see you didn&apos;t switch to KURL, but this still looks good.
Alexey, let me know if you&apos;d prefer that switch. Anton might
have a reason why he didn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369829</commentid>
    <comment_count>24</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 13:45:02 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 86203 [details])
&gt; Nice. I see you didn&apos;t switch to KURL, but this still looks good.
&gt; Alexey, let me know if you&apos;d prefer that switch. Anton might
&gt; have a reason why he didn&apos;t.

I tried it by making a KURL with the origin&apos;s port, host, and protocol, but protocolHostAndPortAreEqual() was failing. I wasn&apos;t sure if it was worth 15 minutes of investigation, but it&apos;s nagging me so I&apos;ll take a look at it. Let me know if I shouldn&apos;t bother.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370012</commentid>
    <comment_count>25</comment_count>
      <attachid>86242</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 16:54:26 -0700</bug_when>
    <thetext>Created attachment 86242
Patch

Comparing KURLs instead of SecurityOrigins when searching for in-memory cache groups, which avoids unnecessary creation of SecurityOrigins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370013</commentid>
    <comment_count>26</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 16:56:30 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Created an attachment (id=86242) [details]
&gt; Patch
&gt; 
&gt; Comparing KURLs instead of SecurityOrigins when searching for in-memory cache groups, which avoids unnecessary creation of SecurityOrigins.

This patch also has the new signature - ApplicationCacheStorage::findInMemoryCacheGroup(const KURL&amp; manifestURL) const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370015</commentid>
    <comment_count>27</comment_count>
      <attachid>86242</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 16:58:45 -0700</bug_when>
    <thetext>Comment on attachment 86242
Patch

Obsoleting this patch because it contains unrelated changes. Resubmitting...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370018</commentid>
    <comment_count>28</comment_count>
      <attachid>86244</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 17:01:31 -0700</bug_when>
    <thetext>Created attachment 86244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370023</commentid>
    <comment_count>29</comment_count>
      <attachid>86244</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-18 17:05:44 -0700</bug_when>
    <thetext>Comment on attachment 86244
Patch

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

Looks good to me.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:471
&gt; -		1A8F6BC30DB55CDC001DB794 /* DOMApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB80DB55CDC001DB794 /* DOMApplicationCache.h */; settings = {ATTRIBUTES = (); }; };
&gt; +		1A8F6BC30DB55CDC001DB794 /* DOMApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB80DB55CDC001DB794 /* DOMApplicationCache.h */; settings = {ATTRIBUTES = (Private, ); }; };

I don&apos;t understand this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370024</commentid>
    <comment_count>30</comment_count>
      <attachid>86244</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-18 17:07:29 -0700</bug_when>
    <thetext>Comment on attachment 86244
Patch

Thanks for cleaning that up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370025</commentid>
    <comment_count>31</comment_count>
      <attachid>86245</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-18 17:12:33 -0700</bug_when>
    <thetext>Created attachment 86245
Patch

DOMApplicationCache.h doesn&apos;t need to be private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370088</commentid>
    <comment_count>32</comment_count>
      <attachid>86245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-18 20:19:07 -0700</bug_when>
    <thetext>Comment on attachment 86245
Patch

Rejecting attachment 86245 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;land-a...&quot; exit_code: 2

Last 500 characters of output:
m/chromium-win/tables/mozilla/marvin/x_tr_align_justify-expected.checksum
	M	LayoutTests/platform/chromium-win/tables/mozilla/marvin/x_th_align_justify-expected.png
	M	LayoutTests/ChangeLog
r81544 = 1f55c6380698ee1544ebbb50d9d8b04571ca3e1e (refs/remotes/trunk)
	M	Source/WebKit2/ChangeLog
	M	Source/WebKit2/win/WebKit2.vcproj
r81545 = b66653fc1e431957bd7e70af2635673a92bbcc66 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Full output: http://queues.webkit.org/results/8199590</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370137</commentid>
    <comment_count>33</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-03-19 09:45:59 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 86245 [details])
&gt; Rejecting attachment 86245 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;land-a...&quot; exit_code: 2
&gt; Full output: http://queues.webkit.org/results/8199590

It looks like dcommit failed because the svn server was unreachable:

From the full output: RA layer request failed: OPTIONS of &apos;http://svn.webkit.org/repository/webkit/trunk&apos;: could not connect to server (http://svn.webkit.org) at /usr/local/git/libexec/git-core/git-svn line 574

Could you c+ it again for the commit queue to pick it up and try again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370168</commentid>
    <comment_count>34</comment_count>
      <attachid>86245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-19 14:29:16 -0700</bug_when>
    <thetext>Comment on attachment 86245
Patch

Clearing flags on attachment: 86245

Committed r81557: &lt;http://trac.webkit.org/changeset/81557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370169</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-19 14:29:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370176</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-19 15:17:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81557 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85881</attachid>
            <date>2011-03-15 17:11:25 -0700</date>
            <delta_ts>2011-03-15 17:17:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110315171124.patch</filename>
            <type>text/plain</type>
            <size>17438</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMTk4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMTUgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmln
aW4tZGVsZXRlLmh0bWwKKworICAgICAgICBXaGVuIGRlbGV0aW5nIGFsbCBjYWNoZSBlbnRyaWVz
IGZvciBhbiBvcmlnaW4sIGNhbGwgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtlT2Jzb2xldGUo
KSBvbiBlYWNoIGNhY2hlIGdyb3VwIGZvciB0aGUgb3JpZ2luLCBpbnN0ZWFkIG9mIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwTWFkZU9ic29sZXRlKCksIHdoaWNoIGRpZCBub3Qg
dXBkYXRlIHRoZSBtX2lzT2Jzb2xldGUgc3RhdGUgb2YgdGhlIGdyb3VwLiBUaGlzIGNhdXNlZCBh
biBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91
cERlc3Ryb3llZCgpIHdoZW4gdGhlIERvY3VtZW50TG9hZGVyIHdhcyBnZXR0aW5nIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2Fj
aGVHcm91cCk6CisKIDIwMTEtMDMtMTUgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgR2VudGlsY29yZS4KQEAgLTIxOCw2
ICsyMzMsNyBAQAogICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3dhcm5pbmdP
cmFuZ2VEb3QucG5nOgogICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3dhcm5p
bmdzRXJyb3JzLnBuZzoKIAorPj4+Pj4+PiAucjgxMTk4CiAyMDExLTAzLTE1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDgxMTk4KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzNSw3ICsxMjM1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZGVsZXRlQ2FjaAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZ3JvdXAgaXMgaW4gbWVt
b3J5LgogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBtX2NhY2hlc0luTWVtb3J5
LmdldChtYW5pZmVzdFVSTCk7CiAgICAgaWYgKGdyb3VwKQotICAgICAgICBjYWNoZUdyb3VwTWFk
ZU9ic29sZXRlKGdyb3VwKTsKKyAgICAgICAgZ3JvdXAtPm1ha2VPYnNvbGV0ZSgpOwogICAgIGVs
c2UgewogICAgICAgICAvLyBUaGUgY2FjaGUgZ3JvdXAgaXMgbm90IGluIG1lbW9yeSwgc28gcmVt
b3ZlIGl0IGZyb20gdGhlIGRpc2suCiAgICAgICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTE5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTE1ICBBbnRv
biBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNv
bGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZpYSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVs
ZXRlRW50cmllc0Zvck9yaWdpbgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgIEV4cG9zZSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSBBUEkgdG8gZGVsZXRlIGFsbCBhcHBjYWNoZSBncm91cHMgZm9yIGEgZ2l2ZW4gb3JpZ2lu
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICgr
W1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGVsZXRlT3JpZ2luOl0pOgorCiAyMDExLTAzLTE1ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmdvdCB0byBzYXZl
IGEgbW9kaWZpY2F0aW9uIHRvIHRoaXMgZmlsZSB3aGVuIGNvbW1pdHRpbmcuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZS5oCShyZXZpc2lvbiA4MTE5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBA
QAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIFdlYlNlY3Vy
aXR5T3JpZ2luOworCiBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9uQ2FjaGU6IE5TT2JqZWN0CiAK
ICsgKGxvbmcgbG9uZyltYXhpbXVtU2l6ZTsKQEAgLTM0LDUgKzM2LDYgQEAgQGludGVyZmFjZSBX
ZWJBcHBsaWNhdGlvbkNhY2hlOiBOU09iamVjdAogKyAodm9pZClzZXREZWZhdWx0T3JpZ2luUXVv
dGE6KGxvbmcgbG9uZylzaXplOwogCiArICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVz
OworKyAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOwogCiBA
ZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlv
bkNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0JKHJldmlzaW9uIDgxMTk4KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsMTAgQEAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KQogCiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0
eU9yaWdpbkludGVybmFsLmgiCisKICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU4LDYgKzYxLDExIEBAICsgKHZvaWQpZGVsZXRlQWxsQXBw
bGljYXRpb25DYWNoZXMKICAgICBjYWNoZVN0b3JhZ2UoKS5kZWxldGVBbGxFbnRyaWVzKCk7CiB9
CiAKKysgKHZvaWQpZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgorewor
ICAgIGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oW29yaWdpbiBfY29yZV0p
OworfQorCiBAZW5kCiAKICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODExOTgpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0wMy0xNSAgQW50b24gRCdBdXJp
YSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjQxNQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6IEFkZGluZyBzdHViLgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4pOiAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9u
Q2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwOiBBZGRpbmcgc3R1Yi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOiBBZGRpbmcgc3R1Yi4KKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
OiBBZGRpbmcgc3R1Yi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW4pOgorCiAyMDExLTAzLTE1ICBCcmlhbiBXZWluc3RlaW4gIDxi
d2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBZGFtIFJv
YmVuLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NSw2ICszODUsMjAgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgY2xlYXJBbGxBcHBsaWNhdGlvbkNhYwogICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBcHBsaWNh
dGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG9yaWdp
blVybChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4
Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5jbGVhckFw
cGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4ob3JpZ2luVXJsLmdldCgpKTsKKyAgICAKKyAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVm
IGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0yMTAxLDYgKzIx
MTUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAg
IHsgImFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSIsIGFwaVRlc3RHb1RvQ3VycmVu
dEJhY2tGb3J3YXJkSXRlbUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNhbGxTaG91bGRD
bG9zZU9uV2ViVmlldyIsIGNhbGxTaG91bGRDbG9zZU9uV2ViVmlld0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCBjbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiY2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luIiwgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiY2xlYXJBbGxEYXRhYmFzZXMiLCBjbGVhckFsbERhdGFiYXNlc0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyQmFja0ZvcndhcmRMaXN0IiwgY2xlYXJC
YWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhclBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldCIsIGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZFVSTFRvUmVkaXJlY3Qoc3RkOjpzdHJpbmcgb3JpZ2luLCBzdGQ6OnN0cmluZyBk
ZXN0aW5hdGlvbik7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJlZGlyZWN0aW9uRGVzdGluYXRp
b25Gb3JVUkwoc3RkOjpzdHJpbmcpOwogICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hl
cygpOworICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVm
IG5hbWUpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhYmFzZXMoKTsKICAgICB2b2lkIGNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7CiAgICAgdm9pZCBjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldCgp
OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4NSw2ICsxODUsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
CiAgICAgYmluZE1ldGhvZCgiYWRkRGlzYWxsb3dlZFVSTCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkRGlzYWxsb3dlZFVSTCk7CiAgICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENsb3NlT25X
ZWJWaWV3IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcp
OwogICAgIGJpbmRNZXRob2QoImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOworICAgIGJpbmRNZXRob2Qo
ImNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKTsKICAgICBiaW5kTWV0aG9kKCJjbGVhckJh
Y2tGb3J3YXJkTGlzdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJCYWNrRm9yd2FyZExp
c3QpOwogICAgIGJpbmRNZXRob2QoImR1bXBBc1dlYkFyY2hpdmUiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmR1bXBBc1dlYkFyY2hpdmUpOwogICAgIGJpbmRNZXRob2QoImtlZXBXZWJIaXN0b3J5
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjprZWVwV2ViSGlzdG9yeSk7CkBAIC03NDMsNiArNzQ0
LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICByZXN1
bHQtPnNldE51bGwoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBs
aWNhdGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRp
b24gQ2FjaGUgUXVvdGFzLgorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMuCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDgxMTk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIENsZWFycyBhbGwgQXBwbGljYXRpb24gQ2FjaGVzLgogICAgIHZvaWQgY2xl
YXJBbGxBcHBsaWNhdGlvbkNhY2hlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgLy8gQ2xlYXJzIEFwcGxpY2F0aW9uIENhY2hlIGZvciBhbiBvcmlnaW4uCisgICAg
dm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNldHMgdGhlIEFwcGxpY2F0aW9uIFF1b3RhIGZvciB0
aGUgbG9jYWxob3N0IG9yaWdpbi4KICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0J
KHJldmlzaW9uIDgxMTk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDE1IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om9ic2VydmVTdG9yYWcKICAgICBbc3RvcmFnZURlbGVnYXRl
IGxvZ05vdGlmaWNhdGlvbnM6bnVtYmVyIGNvbnRyb2xsZXI6dGhpc107CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmlu
Z1JlZiB1cmwpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRihBZG9wdENGLCBK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKKworICAgIFdl
YlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwor
ICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZU9yaWdpbjpvcmlnaW5dOworICAgIFtvcmln
aW4gcmVsZWFzZV07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsRGF0
YWJhc2VzKCkKIHsKICAgICBbW1dlYkRhdGFiYXNlTWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1h
bmFnZXJdIGRlbGV0ZUFsbERhdGFiYXNlc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODExOTgpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUyLDYgKzU1MiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpjbGVhckFsbEFwcGxpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyQWxsQXBw
bGljYXRpb25DYWNoZXMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJB
cHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAg
aWYgKCFtX3RvcExvYWRpbmdGcmFtZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDgxMTk4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODksNiArMTg5LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgZGlzYWJsZUltYWdl
TG9hZGluZygpOwogCiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAg
dm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oY29uc3QgUVN0cmluZyYgdXJsKTsK
ICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpOwogCiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3RhKGludCBzaXplKTsKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAkocmV2aXNpb24gODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzYsNiArOTM2LDEx
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4o
SlNTdHJpbmdSZWYgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1
bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBz
dXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA4MTE5
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQg
QXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAg
IAorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MTE5OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDExLTAzLTE1ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZp
YSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAg
ICAgIFRoZXNlIHRlc3RzIGNyZWF0ZSBhcHBjYWNoZSBmb3IgdGhlIERSVCBvcmlnaW4sIGFuZCB0
aGVuIGRlbGV0ZSBpdC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRl
bGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLWRlbGV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0xNSAgSmFtZXMgU2ltb25zZW4g
IDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBHZW50
aWxjb3JlLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVs
ZXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYXBwbGljYXRp
b24gY2FjaGUgZ3JvdXBzIGNvcnJlY3RseSBiZWNvbWUgb2Jzb2xldGUgZHVyaW5nIGRlbGV0aW9u
IGZvciBhIHNwZWNpZmljIG9yaWdpbiBieSBleGVyY2lzaW5nIHRoZSBXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbigpLCBXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpIHBhdGguCisKK1BBU1Mg
LSBjYWNoZWQgaWZyYW1lLTEKK1BBU1MgLSBjYWNoZWQgaWZyYW1lLTIKKwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxl
dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGFkZEZpcnN0SUZy
YW1lKCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCisvLyBTdGFnZXMuCisKK2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhDb250aW51YXRp
b24oc3JjLCBjb250aW51YXRpb24pIHsKKyAgICB3aW5kb3cub25tZXNzYWdlID0gY29udGludWF0
aW9uOworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
KyAgICBpZnJhbWUuc3JjID0gc3JjOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZy
YW1lKTsKK30KKworZnVuY3Rpb24gYWRkRmlyc3RJRnJhbWUoKSB7CisgICAgLy8gRXhwZWN0ZWQg
dG8gc3VjY2VlZC4KKyAgICBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNvdXJjZXMvb3Jp
Z2luLXVzYWdlLWlmcmFtZS0xLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2co
ZXZlbnQuZGF0YSk7CisgICAgICAgIGFkZFNlY29uZElGcmFtZSgpOworICAgIH0pOworfQorCitm
dW5jdGlvbiBhZGRTZWNvbmRJRnJhbWUoKSB7CisgICAgYWRkSUZyYW1lV2l0aENvbnRpbnVhdGlv
bigicmVzb3VyY2VzL29yaWdpbi11c2FnZS1pZnJhbWUtMi5odG1sIiwgZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIp
OworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQg
YXBwbGljYXRpb24gY2FjaGUgZ3JvdXBzIGNvcnJlY3RseSBiZWNvbWUgb2Jzb2xldGUgZHVyaW5n
IGRlbGV0aW9uIGZvciBhIHNwZWNpZmljIG9yaWdpbiBieQorIGV4ZXJjaXNpbmcgdGhlIFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKCksIFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRGVzdHJveWVkKCkgcGF0
aC4KKzwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85883</attachid>
            <date>2011-03-15 17:17:22 -0700</date>
            <delta_ts>2011-03-17 13:06:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110315171721.patch</filename>
            <type>text/plain</type>
            <size>17200</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMTk4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMTUgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmln
aW4tZGVsZXRlLmh0bWwKKworICAgICAgICBXaGVuIGRlbGV0aW5nIGFsbCBjYWNoZSBlbnRyaWVz
IGZvciBhbiBvcmlnaW4sIGNhbGwgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtlT2Jzb2xldGUo
KSBvbiBlYWNoIGNhY2hlIGdyb3VwIGZvciB0aGUgb3JpZ2luLCBpbnN0ZWFkIG9mIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwTWFkZU9ic29sZXRlKCksIHdoaWNoIGRpZCBub3Qg
dXBkYXRlIHRoZSBtX2lzT2Jzb2xldGUgc3RhdGUgb2YgdGhlIGdyb3VwLiBUaGlzIGNhdXNlZCBh
biBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91
cERlc3Ryb3llZCgpIHdoZW4gdGhlIERvY3VtZW50TG9hZGVyIHdhcyBnZXR0aW5nIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2Fj
aGVHcm91cCk6CisKIDIwMTEtMDMtMTUgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgR2VudGlsY29yZS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gODExOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjM1LDcgKzEyMzUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVD
YWNoCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBncm91cCBpcyBpbiBtZW1vcnkuCiAgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlm
ZXN0VVJMKTsKICAgICBpZiAoZ3JvdXApCi0gICAgICAgIGNhY2hlR3JvdXBNYWRlT2Jzb2xldGUo
Z3JvdXApOworICAgICAgICBncm91cC0+bWFrZU9ic29sZXRlKCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIC8vIFRoZSBjYWNoZSBncm91cCBpcyBub3QgaW4gbWVtb3J5LCBzbyByZW1vdmUgaXQgZnJv
bSB0aGUgZGlzay4KICAgICAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDgxMTk4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMTUgIEFudG9uIEQnQXVyaWEg
IDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVy
IGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2NDE1CisKKyAgICAgICAgRXhwb3NlIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIEFQSSB0
byBkZWxldGUgYWxsIGFwcGNhY2hlIGdyb3VwcyBmb3IgYSBnaXZlbiBvcmlnaW4uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQXBwbGlj
YXRpb25DYWNoZSBkZWxldGVPcmlnaW46XSk6CisKIDIwMTEtMDMtMTUgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRm9yZ290IHRvIHNhdmUgYSBtb2RpZmlj
YXRpb24gdG8gdGhpcyBmaWxlIHdoZW4gY29tbWl0dGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgJKHJl
dmlzaW9uIDgxMTk4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCitAY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47
CisKIEBpbnRlcmZhY2UgV2ViQXBwbGljYXRpb25DYWNoZTogTlNPYmplY3QKIAogKyAobG9uZyBs
b25nKW1heGltdW1TaXplOwpAQCAtMzQsNSArMzYsNiBAQCBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0
aW9uQ2FjaGU6IE5TT2JqZWN0CiArICh2b2lkKXNldERlZmF1bHRPcmlnaW5RdW90YToobG9uZyBs
b25nKXNpemU7CiAKICsgKHZvaWQpZGVsZXRlQWxsQXBwbGljYXRpb25DYWNoZXM7CisrICh2b2lk
KWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CiAKIEBlbmQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGlj
YXRpb25DYWNoZS5tbQkocmV2aXNpb24gODExOTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiwxMCBAQAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKICNpbXBv
cnQgIldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaCIKKwogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtNTgsNiArNjEsMTEgQEAgKyAodm9pZClkZWxldGVBbGxBcHBsaWNhdGlvbkNh
Y2hlcwogICAgIGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUFsbEVudHJpZXMoKTsKIH0KIAorKyAodm9p
ZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7CisgICAgY2FjaGVT
dG9yYWdlKCkuZGVsZXRlRW50cmllc0Zvck9yaWdpbihbb3JpZ2luIF9jb3JlXSk7Cit9CisKIEBl
bmQKIAogI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4MTE5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDExLTAzLTE1ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJp
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDogQWRkaW5nIHN0dWIuCisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6IAorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9y
aWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6IEFkZGluZyBz
dHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNo
ZUZvck9yaWdpbik6CisKIDIwMTEtMDMtMTUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFkYW0gUm9iZW4uCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA4MTE5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDYgKzM4NSwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFwcGxpY2F0aW9uQ2FjaGVG
b3JPcmlnaW5DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gb3JpZ2luVXJsKEFkb3B0
LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7
CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmNsZWFyQXBwbGljYXRpb25D
YWNoZUZvck9yaWdpbihvcmlnaW5VcmwuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxE
YXRhYmFzZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8g
SGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTIxMDEsNiArMjExNSw3IEBAIEpT
U3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiYXBpVGVz
dEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtIiwgYXBpVGVzdEdvVG9DdXJyZW50QmFja0Zvcndh
cmRJdGVtQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2FsbFNob3VsZENsb3NlT25XZWJW
aWV3IiwgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyIsIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4iLCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJk
TGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA4MTE5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
VVJMVG9SZWRpcmVjdChzdGQ6OnN0cmluZyBvcmlnaW4sIHN0ZDo6c3RyaW5nIGRlc3RpbmF0aW9u
KTsKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmVkaXJlY3Rpb25EZXN0aW5hdGlvbkZvclVSTChz
dGQ6OnN0cmluZyk7CiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAg
dm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgbmFtZSk7CiAg
ICAgdm9pZCBjbGVhckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExp
c3QoKTsKICAgICB2b2lkIGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCk7CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA4MTE5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4
NSw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5k
TWV0aG9kKCJhZGREaXNhbGxvd2VkVVJMIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGREaXNh
bGxvd2VkVVJMKTsKICAgICBiaW5kTWV0aG9kKCJjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXciLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyk7CiAgICAgYmlu
ZE1ldGhvZCgiY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyk7CisgICAgYmluZE1ldGhvZCgiY2xlYXJBcHBs
aWNhdGlvbkNhY2hlRm9yT3JpZ2luIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW4pOwogICAgIGJpbmRNZXRob2QoImNsZWFyQmFja0ZvcndhcmRM
aXN0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckJhY2tGb3J3YXJkTGlzdCk7CiAgICAg
YmluZE1ldGhvZCgiZHVtcEFzV2ViQXJjaGl2ZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVt
cEFzV2ViQXJjaGl2ZSk7CiAgICAgYmluZE1ldGhvZCgia2VlcFdlYkhpc3RvcnkiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmtlZXBXZWJIaXN0b3J5KTsKQEAgLTc0Myw2ICs3NDQsMTIgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2Fj
aGVGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBR
dW90YXMuCisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBz
dXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIFF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
ODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNiArMjg0LDggQEAgcHVibGljOgogCiAgICAg
Ly8gQ2xlYXJzIGFsbCBBcHBsaWNhdGlvbiBDYWNoZXMuCiAgICAgdm9pZCBjbGVhckFsbEFwcGxp
Y2F0aW9uQ2FjaGVzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICAv
LyBDbGVhcnMgQXBwbGljYXRpb24gQ2FjaGUgZm9yIGFuIG9yaWdpbi4KKyAgICB2b2lkIGNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAgICAgLy8gU2V0cyB0aGUgQXBwbGljYXRpb24gUXVvdGEgZm9yIHRoZSBsb2NhbGhv
c3Qgb3JpZ2luLgogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24g
ODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsMTUgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6b2JzZXJ2ZVN0b3JhZwogICAgIFtzdG9yYWdlRGVsZWdhdGUgbG9nTm90aWZp
Y2F0aW9uczpudW1iZXIgY29udHJvbGxlcjp0aGlzXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkK
K3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworCisgICAgV2ViU2VjdXJpdHlP
cmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVybENGLmdldCgpXV07CisgICAgW1dlYkFw
cGxpY2F0aW9uQ2FjaGUgZGVsZXRlT3JpZ2luOm9yaWdpbl07CisgICAgW29yaWdpbiByZWxlYXNl
XTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxEYXRhYmFzZXMoKQog
ewogICAgIFtbV2ViRGF0YWJhc2VNYW5hZ2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gZGVs
ZXRlQWxsRGF0YWJhc2VzXTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA4MTE5OCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NTIsNiArNTUyLDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxs
QXBwbGkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNh
Y2hlcygpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9u
Q2FjaGVGb3JPcmlnaW4oY29uc3QgUVN0cmluZyYgdXJsKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICBpZiAoIW1fdG9w
TG9hZGluZ0ZyYW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gODExOTgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2
ICsxODksNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBkaXNhYmxlSW1hZ2VMb2FkaW5nKCk7
CiAKICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKKyAgICB2b2lkIGNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBRU3RyaW5nJiB1cmwpOwogICAgIHZvaWQg
c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7
CiAKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEoaW50IHNpemUpOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShy
ZXZpc2lvbiA4MTE5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzNiw2ICs5MzYsMTEgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCiB9CiAKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1Jl
ZiBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudC4KK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBw
bGljYXRpb24gQ2FjaGUgcXVvdGFzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDgxMTk4KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0OCw2ICsyNDgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBbGxBcHBsaQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlv
biBDYWNoZSBxdW90YXMuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBw
bGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCit7CisgICAgCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1
bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBz
dXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMTk4
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDMtMTUgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgVGhlc2Ug
dGVzdHMgY3JlYXRlIGFwcGNhY2hlIGZvciB0aGUgRFJUIG9yaWdpbiwgYW5kIHRoZW4gZGVsZXRl
IGl0LgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVs
ZXRlLmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTE1ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IEdlbnRpbGNvcmUuCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3Jp
Z2luLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBn
cm91cHMgY29ycmVjdGx5IGJlY29tZSBvYnNvbGV0ZSBkdXJpbmcgZGVsZXRpb24gZm9yIGEgc3Bl
Y2lmaWMgb3JpZ2luIGJ5IGV4ZXJjaXNpbmcgdGhlIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKCksIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWNoZUdyb3VwRGVzdHJveWVkKCkgcGF0aC4KKworUEFTUyAtIGNhY2hlZCBp
ZnJhbWUtMQorUEFTUyAtIGNhY2hlZCBpZnJhbWUtMgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKwor
Ly8gSGVscGVycy4KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQor
CisvLyBTdGFydCBhbmQgZW5kLgorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgYWRkRmlyc3RJRnJhbWUoKTsKK30K
KworZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
Ky8vIFN0YWdlcy4KKworZnVuY3Rpb24gYWRkSUZyYW1lV2l0aENvbnRpbnVhdGlvbihzcmMsIGNv
bnRpbnVhdGlvbikgeworICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBjb250aW51YXRpb247CisgICAg
dmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFt
ZS5zcmMgPSBzcmM7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworfQor
CitmdW5jdGlvbiBhZGRGaXJzdElGcmFtZSgpIHsKKyAgICAvLyBFeHBlY3RlZCB0byBzdWNjZWVk
LgorICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9vcmlnaW4tdXNhZ2Ut
aWZyYW1lLTEuaHRtbCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZyhldmVudC5kYXRh
KTsKKyAgICAgICAgYWRkU2Vjb25kSUZyYW1lKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGFk
ZFNlY29uZElGcmFtZSgpIHsKKyAgICBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNvdXJj
ZXMvb3JpZ2luLXVzYWdlLWlmcmFtZS0yLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBsb2coZXZlbnQuZGF0YSk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQXBw
bGljYXRpb25DYWNoZUZvck9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CisgICAgICAg
IGZpbmlzaFRlc3QoKTsKKyAgICB9KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBhcHBsaWNhdGlv
biBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJlY29tZSBvYnNvbGV0ZSBkdXJpbmcgZGVsZXRpb24g
Zm9yIGEgc3BlY2lmaWMgb3JpZ2luIGJ5CisgZXhlcmNpc2luZyB0aGUgV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oKSwgV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBEZXN0cm95ZWQoKSBwYXRoLgorPC9wPgor
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86086</attachid>
            <date>2011-03-17 13:06:53 -0700</date>
            <delta_ts>2011-03-17 16:47:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110317130652.patch</filename>
            <type>text/plain</type>
            <size>28791</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMzc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMTcgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lu
LWRlbGV0ZS5odG1sCisKKyAgICAgICAgV2hlbiBkZWxldGluZyBhbGwgY2FjaGUgZW50cmllcyBm
b3IgYW4gb3JpZ2luLCBjYWxsIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFrZU9ic29sZXRlKCkK
KyAgICAgICAgb24gZWFjaCBjYWNoZSBncm91cCBmb3IgdGhlIG9yaWdpbiwgaW5zdGVhZCBvZiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cE1hZGVPYnNvbGV0ZSgpLAorICAgICAg
ICB3aGljaCBkaWQgbm90IHVwZGF0ZSB0aGUgbV9pc09ic29sZXRlIHN0YXRlIG9mIHRoZSBncm91
cC4gVGhpcyBjYXVzZWQgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4KKyAgICAgICAgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBEZXN0cm95ZWQoKSB3aGVuIHRoZSBEb2N1bWVudExv
YWRlciB3YXMgZ2V0dGluZyBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUNhY2hlR3JvdXApOgorCiAyMDExLTAzLTE3ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByODEzNjkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
ODEzNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTc5NSw2ICsxNzk1LDcgQEAgX19aTks3V2ViQ29yZTROb2RlMTZ0cmF2ZXJzZU5leHROb2Rl
RVBLUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorX19a
TjdXZWJDb3JlMjFBcHBsaWNhdGlvbkNhY2hlR3JvdXAyNmRlbGV0ZUNhY2hlR3JvdXBzRm9yT3Jp
Z2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTE0cXVvdGFGb3JPcmlnaW5FUEtOU18xNFNlY3VyaXR5T3JpZ2luRVJ4CiBfX1pON1dl
YkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CiBfX1pON1dl
YkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTR1c2FnZUZvck9yaWdpbkVQS05TXzE0U2Vj
dXJpdHlPcmlnaW5FUngKQEAgLTE4MDQsNyArMTgwNSw2IEBAIF9fWk43V2ViQ29yZTIzQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UxN3MKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UxOHZhY3V1bURhdGFiYXNlRmlsZUV2CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTlnZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5T
XzE0U2VjdXJpdHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJh
aXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMXNldERl
ZmF1bHRPcmlnaW5RdW90YUV4Ci1fX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
MjJkZWxldGVFbnRyaWVzRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJD
b3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTI2c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW5F
UEtOU18xNFNlY3VyaXR5T3JpZ2luRXgKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UzNnJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZUVQS05TXzE0U2VjdXJp
dHlPcmlnaW5FUE5TXzE2QXBwbGljYXRpb25DYWNoZUVSeAogX19aTjdXZWJDb3JlMjNBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTVlbXB0eUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4MTM3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDExICs0NjQsMTEgQEAKIAkJMUE4RjZCQkMwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE4RjZCQjEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3Bw
ICovOyB9OwogCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjIw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgfTsKIAkJMUE4RjZCQkUw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMzBEQjU1Q0RDMDAxREI3
OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCAqLzsgfTsKLQkJMUE4RjZCQkYwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyB9OworCQkxQThGNkJCRjBEQjU1Q0RDMDAxREI3OTQg
LyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25D
YWNoZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThG
NkJCNTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCAqLzsg
fTsKIAkJMUE4RjZCQzEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZC
QjYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oICovOyB9Owog
CQkxQThGNkJDMjBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNzBEQjU1
Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07Ci0JCTFBOEY2QkMz
MERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCODBEQjU1Q0RDMDAxREI3OTQg
LyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CisJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJC
ODBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOEY2QkM1MERCNTVDREMwMDFE
Qjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCQTBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJz
ZXIuY3BwICovOyB9OwogCQkxQThGNkJDNjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2
QkJCMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oICovOyB9OwogCQkxQTk4OTU2
QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJM
Q0ZOZXQuY3BwICovOyB9OwpAQCAtNjQ3LDcgKzY0Nyw3IEBACiAJCTIyOEMyODQ1MTBEODI1MDAw
MDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFw
cGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyNDVEODBBMzEzMjgwRTQwMDAzNDkyQTYgLyogU1FMQ2FsbGJhY2tXcmFwcGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNDVEODBBMjEzMjgwRTQw
MDAzNDkyQTYgLyogU1FMQ2FsbGJhY2tXcmFwcGVyLmggKi87IH07CiAJCTI0RjU0RUFDMTAxRkU5
MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEY1NEVBQTEwMUZFOTE0MDAwQUU3NDEgLyog
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwICovOyB9OwotCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3
NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlv
bkNhY2hlSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTI0
RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUIxMDFGRTkxNDAw
MEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjU0MkY0REExMTY2QzI1QTAwRTg5QTg2IC8qIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI1NDJGNEQ4MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGlj
YXRvci5jcHAgKi87IH07CiAJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVy
ZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjU0MkY0RDkxMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjZFOThBMTAx
MzBBOUZDQTAwOEVCN0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk4QTBGMTMwQTlGQ0EwMDhFQjdC
MiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAkocmV2aXNpb24gODEzNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyOCw2ICsxMTI4LDI4
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjbGVhclN0b3JhZ2UKICAgICAgICAgKCpp
dCktPmNsZWFyU3RvcmFnZUlEKCk7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpk
ZWxldGVDYWNoZUdyb3Vwc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAg
IFZlY3RvcjxLVVJMPiB1cmxzOworICAgIGlmICghY2FjaGVTdG9yYWdlKCkubWFuaWZlc3RVUkxz
KCZ1cmxzKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNh
dGlvbkNhY2hlIG1hbmlmZXN0IFVSTHMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICAvLyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIFNlY3Vy
aXR5T3JpZ2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMg
aGVyZS4KKyAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3IgYSBtb3Jl
IGVmZmljaWVudCB3YXkgb2YgZGVsZXRpbmcgYnkgb3JpZ2luLgorICAgIHNpemVfdCBjb3VudCA9
IHVybHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewor
ICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1hbmlmZXN0T3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmxzW2ldKTsKKyAgICAgICAgaWYgKG1hbmlmZXN0T3JpZ2luLT5pc1Nh
bWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKSB7CisgICAgICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwID0gY2FjaGVTdG9yYWdlKCkuZ2V0SW5NZW1vcnlDYWNoZUdyb3VwKHVybHNb
aV0pOworICAgICAgICAgICAgaWYgKGdyb3VwKQorICAgICAgICAgICAgICAgIGdyb3VwLT5tYWtl
T2Jzb2xldGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWNoZVN0b3Jh
Z2UoKS5kZWxldGVDYWNoZUdyb3VwKHVybHNbaV0pOworICAgICAgICB9CisgICAgfQorfQogCiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDgxMzc4KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNoZShGcmFt
ZSosIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNo
ZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSopOwogICAgIAorICAgIHN0YXRpYyB2b2lkIGRlbGV0
ZUNhY2hlR3JvdXBzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgCiAgICAgY29uc3Qg
S1VSTCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21hbmlmZXN0VVJMOyB9CiAgICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdl
dCgpOyB9CiAgICAgVXBkYXRlU3RhdHVzIHVwZGF0ZVN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1f
dXBkYXRlU3RhdHVzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDgxMzc4
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyOCw2ICsxMjI4LDExIEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXAKICAgICAqc2l6ZSA9IHN0YXRlbWVudC5nZXRD
b2x1bW5JbnQ2NCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyAgICAKK0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmdldEluTWVtb3J5Q2FjaGVHcm91cChj
b25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKQoreworICAgIHJldHVybiBtX2NhY2hlc0luTWVtb3J5
LmdldChtYW5pZmVzdFVSTCk7Cit9CiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRl
bGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCkKIHsKQEAgLTEzMDksMjQg
KzEzMTQsNiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zCiAgICAg
fQogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgVmVjdG9yPEtVUkw+IHVybHM7Ci0g
ICAgaWYgKCFtYW5pZmVzdFVSTHMoJnVybHMpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgLy8gTXVsdGlwbGUgbWFuaWZlc3QgVVJMcyBtaWdodCBzaGFy
ZSB0aGUgc2FtZSBTZWN1cml0eU9yaWdpbiwgc28gd2UgbWlnaHQgYmUgY3JlYXRpbmcgZXh0cmEs
IHdhc3RlZCBvcmlnaW5zIGhlcmUuCi0gICAgLy8gVGhlIGN1cnJlbnQgc2NoZW1hIGRvZXNuJ3Qg
YWxsb3cgZm9yIGEgbW9yZSBlZmZpY2llbnQgd2F5IG9mIGRlbGV0aW5nIGJ5IG9yaWdpbi4KLSAg
ICBzaXplX3QgY291bnQgPSB1cmxzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtYW5pZmVzdE9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsc1tpXSk7Ci0gICAgICAgIGlmIChtYW5p
ZmVzdE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQob3JpZ2luKSkKLSAgICAgICAgICAgIGRl
bGV0ZUNhY2hlR3JvdXAodXJsc1tpXSk7Ci0gICAgfQotfQotCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpkZWxldGVBbGxFbnRyaWVzKCkKIHsKICAgICBlbXB0eSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgJKHJldmlzaW9uIDgxMzc4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYg
Kzc0LDcgQEAgcHVibGljOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmFsbGJhY2tDYWNo
ZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBl
bnRyeSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxz
LgogCiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNv
bnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdldElu
TWVtb3J5Q2FjaGVHcm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKTsKICAgICB2b2lkIGNh
Y2hlR3JvdXBEZXN0cm95ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgdm9pZCBjYWNo
ZUdyb3VwTWFkZU9ic29sZXRlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgICAgICAKQEAg
LTgxLDYgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RvcmVOZXdlc3RDYWNoZShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqKTsgLy8gVXBkYXRlcyB0aGUgY2FjaGUgZ3JvdXAsIGJ1dCBkb2Vzbid0
IHJlbW92ZSBvbGQgY2FjaGUuCiAgICAgYm9vbCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqLCBBcHBsaWNhdGlvbkNhY2hlKik7CiAgICAgYm9vbCBzdG9yZVVwZGF0ZWRUeXBlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSosIEFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAKIAogICAgIC8v
IFJlbW92ZXMgdGhlIGdyb3VwIGlmIHRoZSBjYWNoZSB0byBiZSByZW1vdmVkIGlzIHRoZSBuZXdl
c3Qgb25lIChzbywgc3RvcmVOZXdlc3RDYWNoZSgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmVo
YW5kIHdoZW4gdXBkYXRpbmcpLgogICAgIHZvaWQgcmVtb3ZlKEFwcGxpY2F0aW9uQ2FjaGUqKTsK
QEAgLTk1LDcgKzk3LDYgQEAgcHVibGljOgogICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7
CiAKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+Jik7Ci0gICAgdm9pZCBkZWxldGVFbnRyaWVzRm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAK
ICAgICBzdGF0aWMgaW50NjRfdCB1bmtub3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gODEzNzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wMy0xNyAgQW50b24gRCdBdXJpYSAg
PGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIg
YmVpbmcgZGVsZXRlZCB2aWEgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2NDE1CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuY3BwOiBjYWxsaW5nIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVs
ZXRlQ2FjaGVHcm91cHNGb3JPcmlnaW4KKyAgICAgICAgaW5zdGVhZCBvZiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbi4KKyAgICAgICAgKFdlYktpdDo6V2Vi
QXBwbGljYXRpb25DYWNoZU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorCiAyMDEx
LTAzLTE3ICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Fw
cGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDgxMzc4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luRGF0YS5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXRWJDb3JlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBXZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlcjo6ZGVsZXRlRQogICAgIGlmICghb3JpZ2luKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlRW50cmllc0Zvck9yaWdp
bihvcmlnaW4uZ2V0KCkpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsZXRlQ2FjaGVH
cm91cHNGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4MTM3OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTE3ICBBbnRvbiBEJ0F1cmlh
ICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRl
ciBiZWluZyBkZWxldGVkIHZpYSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmll
c0Zvck9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTY0MTUKKworICAgICAgICBFeHBvc2UgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgQVBJIHRv
IGRlbGV0ZSBhbGwgYXBwY2FjaGUgZ3JvdXBzIGZvciBhIGdpdmVuIG9yaWdpbi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJBcHBsaWNh
dGlvbkNhY2hlIGRlbGV0ZU9yaWdpbjpdKToKKwogMjAxMS0wMy0xNiAgSmVmZiBKb2huc29uICA8
Z2l0aHViQGxhcGNhdHNvZnR3YXJlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
QXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gODEzNzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKK0BjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKKwogQGludGVyZmFjZSBXZWJBcHBs
aWNhdGlvbkNhY2hlOiBOU09iamVjdAogCiArIChsb25nIGxvbmcpbWF4aW11bVNpemU7CkBAIC0z
NCw1ICszNiw2IEBAIEBpbnRlcmZhY2UgV2ViQXBwbGljYXRpb25DYWNoZTogTlNPYmplY3QKICsg
KHZvaWQpc2V0RGVmYXVsdE9yaWdpblF1b3RhOihsb25nIGxvbmcpc2l6ZTsKIAogKyAodm9pZClk
ZWxldGVBbGxBcHBsaWNhdGlvbkNhY2hlczsKKysgKHZvaWQpZGVsZXRlQ2FjaGVHcm91cHNGb3JP
cmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOwogCiBAZW5kCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW0JKHJldmlzaW9uIDgxMzc4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsMTEg
QEAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogCiAjaW1wb3J0ICJXZWJB
cHBsaWNhdGlvbkNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OCw2ICs2Miwx
MSBAQCArICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCiAgICAgY2FjaGVTdG9yYWdl
KCkuZGVsZXRlQWxsRW50cmllcygpOwogfQogCisrICh2b2lkKWRlbGV0ZUNhY2hlR3JvdXBzRm9y
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgoreworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGVsZXRlQ2FjaGVHcm91cHNGb3JPcmlnaW4oW29yaWdpbiBfY29yZV0pOworfQor
CiBAZW5kCiAKICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODEzNzgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wMy0xNyAgQW50b24gRCdBdXJpYSAgPGFk
YXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVp
bmcgZGVsZXRlZCB2aWEgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JP
cmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
NDE1CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDogQWRkaW5nIHN0dWJzLgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JP
cmlnaW4pOiAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbTogQWRkaW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDogQWRkaW5nIHN0dWIuCisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDogQWRk
aW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcDogQWRkaW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKwogMjAxMS0wMy0xNyAgTWlr
aGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MTM3OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDYg
KzM4NSwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjCiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1
ZVJlZiBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gb3JpZ2luVVJMKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwor
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNv
bnRyb2xsZXItPmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihvcmlnaW5VUkwuZ2V0KCkp
OworICAgIAorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwog
c3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRp
b24KQEAgLTIxMDIsNiArMjExNiw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjoKICAgICAgICAgeyAiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgY2FsbFNob3Vs
ZENsb3NlT25XZWJWaWV3Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJBbGxBcHBs
aWNhdGlvbkNhY2hlcyIsIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXNDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAiY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luIiwg
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0IiwgY2xlYXJQ
ZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbG9z
ZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
ODEzNzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVSTFRv
UmVkaXJlY3Qoc3RkOjpzdHJpbmcgb3JpZ2luLCBzdGQ6OnN0cmluZyBkZXN0aW5hdGlvbik7CiAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJlZGlyZWN0aW9uRGVzdGluYXRpb25Gb3JVUkwoc3RkOjpz
dHJpbmcpOwogICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgIHZvaWQg
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG5hbWUpOwogICAgIHZv
aWQgY2xlYXJBbGxEYXRhYmFzZXMoKTsKICAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7
CiAgICAgdm9pZCBjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldCgpOwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gODEzNzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBA
QCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhv
ZCgiYWRkRGlzYWxsb3dlZFVSTCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkRGlzYWxsb3dl
ZFVSTCk7CiAgICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcpOwogICAgIGJpbmRNZXRo
b2QoImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNs
ZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOworICAgIGJpbmRNZXRob2QoImNsZWFyQXBwbGljYXRp
b25DYWNoZUZvck9yaWdpbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKTsKICAgICBiaW5kTWV0aG9kKCJjbGVhckJhY2tGb3J3YXJkTGlzdCIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QpOwogICAgIGJpbmRN
ZXRob2QoImR1bXBBc1dlYkFyY2hpdmUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBBc1dl
YkFyY2hpdmUpOwogICAgIGJpbmRNZXRob2QoImtlZXBXZWJIaXN0b3J5IiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjprZWVwV2ViSGlzdG9yeSk7CkBAIC03MzksNyArNzQwLDExIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2EKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0
IEFwcGxpY2F0aW9uIENhY2hlIFF1b3Rhcy4KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2lu
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKICAgICByZXN1
bHQtPnNldE51bGwoKTsKIH0KIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MTM3OCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4NCw2ICsyODQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBDbGVhcnMgYWxs
IEFwcGxpY2F0aW9uIENhY2hlcy4KICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIC8vIENsZWFycyBBcHBs
aWNhdGlvbiBDYWNoZSBmb3IgYW4gb3JpZ2luLgorICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICAv
LyBTZXRzIHRoZSBBcHBsaWNhdGlvbiBRdW90YSBmb3IgdGhlIGxvY2FsaG9zdCBvcmlnaW4uCiAg
ICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA4MTM3OCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpv
YnNlcnZlU3RvcmFnCiAgICAgW3N0b3JhZ2VEZWxlZ2F0ZSBsb2dOb3RpZmljYXRpb25zOm51bWJl
ciBjb250cm9sbGVyOnRoaXNdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVh
ckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2lu
ID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKKyAgICBbV2ViQXBwbGljYXRpb25DYWNo
ZSBkZWxldGVDYWNoZUdyb3Vwc0Zvck9yaWdpbjpvcmlnaW5dOworICAgIFtvcmlnaW4gcmVsZWFz
ZV07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkK
IHsKICAgICBbW1dlYkRhdGFiYXNlTWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRl
bGV0ZUFsbERhdGFiYXNlc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODEzNzgpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUyLDYgKzU1MiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFs
bEFwcGxpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyQWxsQXBwbGljYXRpb25D
YWNoZXMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgaWYgKCFtX3Rv
cExvYWRpbmdGcmFtZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDgxMzc4KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODks
NiArMTg5LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgZGlzYWJsZUltYWdlTG9hZGluZygp
OwogCiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgdm9pZCBjbGVh
ckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oY29uc3QgUVN0cmluZyYgdXJsKTsKICAgICB2b2lk
IHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEp
OwogCiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3RhKGludCBzaXplKTsKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAko
cmV2aXNpb24gODEzNzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzYsNiArOTM2LDExIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdS
ZWYgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBs
b25nIGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFw
cGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xh
eW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA4MTM3OCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDgsNiArMjQ4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNs
ZWFyQWxsQXBwbGkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRp
b24gQ2FjaGUgcXVvdGFzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFw
cGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIAorfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8g
c3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTM3
OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDExLTAzLTE3ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGljYXRpb25D
YWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZpYSBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKworICAgICAgICBUaGVzZSB0
ZXN0cyBjcmVhdGUgYXBwY2FjaGUgZm9yIHRoZSBEUlQgb3JpZ2luLCBkZWxldGUgYXBwY2FjaGUg
Zm9yIHRoZSBvcmlnaW4sCisgICAgICAgIGFuZCB2ZXJpZnkgdGhhdCB0aGUgYXBwY2FjaGUgaGFz
IG9ic29sZXRlIHN0YXR1cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lu
LWRlbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2luLWRlbGV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0xNyAgSmFtZXMgU2ltb25z
ZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRl
IGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVs
ZXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitUaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXBzIGNvcnJlY3RseSBiZWNvbWUgb2Jz
b2xldGUgYWZ0ZXIgYXBwbGljYXRpb24gY2FjaGUgaXMgZGVsZXRpb24gZm9yIGEgc3BlY2lmaWMg
b3JpZ2luLgorCitQQVNTIC0gY2FjaGVkIGlmcmFtZS0xCitjbGVhcmluZyBjYWNoZSBmb3Igb3Jp
Z2luCithcHBjYWNoZV9zdGF0dXM9NQorU1VDQ0VTUyAtIGNhY2hlIHdhcyBtYWRlIG9ic29sZXRl
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lu
LWRlbGV0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisvLyBIZWxwZXJzLgorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1M
ICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKKy8vIFN0YXJ0IGFuZCBlbmQuCisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0
ZUNhbGxiYWNrcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICBhZGRJRnJhbWVXaXRoQXBwQ2FjaGUoKTsKK30KKworZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhB
cHBDYWNoZSgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy
YW1lIik7CisgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvb3JpZ2luLXVzYWdlLWlmcmFtZS0x
Lmh0bWwiOworICAgIGlmcmFtZS5pZCA9ICJjYWNoZWRGcmFtZSI7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIAorICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgICAgIGlmIChldmVu
dC5kYXRhID09ICJQQVNTIC0gY2FjaGVkIGlmcmFtZS0xIikgeworICAgICAgICAgICAgbG9nKCJj
bGVhcmluZyBjYWNoZSBmb3Igb3JpZ2luIik7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5jbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIpOworICAgICAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nh
Y2hlZEZyYW1lJyk7CisgICAgICAgICAgICB2YXIgZ2V0U3RhdHVzID0gImFwcGNhY2hlX3N0YXR1
cyI7CisgICAgICAgICAgICBmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKGdldFN0YXR1
cywgIioiKTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJhcHBjYWNoZV9zdGF0
dXM9NSIpeworICAgICAgICAgICAgbG9nKCJTVUNDRVNTIC0gY2FjaGUgd2FzIG1hZGUgb2Jzb2xl
dGUiKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvZygiRkFJTCAtIHJlY2VpdmVkIHVuZXhwZWN0ZWQgbWVzc2FnZSAiICsgZXZlbnQu
ZGF0YSk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0KKyAgICB9OworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxwPlRoaXMg
dGVzdCBjaGVja3MgdGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJlY29t
ZSBvYnNvbGV0ZSBhZnRlciBhcHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBmb3IgYSBzcGVj
aWZpYyBvcmlnaW4uCis8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86114</attachid>
            <date>2011-03-17 16:47:26 -0700</date>
            <delta_ts>2011-03-18 12:51:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110317164725.patch</filename>
            <type>text/plain</type>
            <size>31735</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDMtMTcgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lu
LWRlbGV0ZS5odG1sCisKKyAgICAgICAgVG8gZGVsZXRlIGFsbCBBcHBsaWNhdGlvbiBDYWNoZSBm
b3IgYW4gb3JpZ2luLCB3ZSBtdXN0IG9ic29sZXRlIGFsbAorICAgICAgICBpbi1tZW1vcnkgY2Fj
aGUgZ3JvdXBzIGZvciB0aGF0IG9yaWdpbi4gSWYgYSBjYWNoZSBncm91cCBpc24ndCBpbiBtZW1v
cnksCisgICAgICAgIHRoZW4gaXQgbXVzdCBiZSBkZWxldGVkIGZyb20gZGlzay4gVGhlIHByZXZp
b3VzIGltcGxlbWVudGF0aW9uIGNvcnJlY3RseQorICAgICAgICByZW1vdmVkIG9uLWRpc2sgY2Fj
aGUgZ3JvdXBzLCBidXQgZGlkIG5vdCBtYXJrIGluLW1lbW9yeSBjYWNoZSBncm91cHMgYXMgb2Jz
b2xldGUuCisgICAgICAgIFRoaXMgY2F1c2VkIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRGVzdHJveWVkKCkKKyAgICAgICAgd2hlbiB0
aGUgRG9jdW1lbnRMb2FkZXIgd2FzIGRlc3Ryb3llZC4KKworICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVHcm91cCk6CisKIDIwMTEtMDMtMTcgIEpl
ZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhIGNvbnNpc3RlbnQg
c2V0IG9mIGZpbGUgcGF0dGVybnMgaW4gdGhlIHN2bjppZ25vcmUgcHJvcGVydHkgZm9yIGFsbCAu
eGNvZGVwcm9qIGRpcmVjdG9yaWVzLCBzcGVjaWZpY2FsbHk6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkocmV2aXNpb24gODEzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTc5Niw2ICsxNzk2LDcgQEAgX19aTks3V2ViQ29yZTROb2RlMTZ0
cmF2ZXJzZU5leHROb2RlRVBLUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQorX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZv
ck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UxNHF1b3RhRm9yT3JpZ2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVSeAogX19a
TjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0c2V0TWF4aW11bVNpemVFeAogX19a
TjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0dXNhZ2VGb3JPcmlnaW5FUEtOU18x
NFNlY3VyaXR5T3JpZ2luRVJ4CkBAIC0xODA1LDcgKzE4MDYsNiBAQCBfX1pON1dlYkNvcmUyM0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTdzCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTh2YWN1dW1EYXRhYmFzZUZpbGVFdgogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNXVEY3SGFzaFNldElOUzFfNlJlZlB0
cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0eU9yaWdpbkhhc2hFTlMxXzEwSGFz
aFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjFz
ZXREZWZhdWx0T3JpZ2luUXVvdGFFeAotX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTIyZGVsZXRlRW50cmllc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43
V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyNnN0b3JlVXBkYXRlZFF1b3RhRm9yT3Jp
Z2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkV4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlMzZyZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGVFUEtOU18xNFNl
Y3VyaXR5T3JpZ2luRVBOU18xNkFwcGxpY2F0aW9uQ2FjaGVFUngKIF9fWk43V2ViQ29yZTIzQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U1ZW1wdHlFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODEzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2MiwxMyArNDYyLDEzIEBACiAJCTFBODVCMkI3MEExQjJBQzcwMEQ4Qzg3QyAv
KiBKU0hUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTg1QjJCNTBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5o
ICovOyB9OwogCQkxQThGNkIwMjBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkIw
MTBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4RjZCQkMwREI1NUNEQzAwMURC
Nzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9u
Q2FjaGUuY3BwICovOyB9OwotCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRp
b25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4RjZCQjIwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgfTsKKwkJ
MUE4RjZCQkQwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIyMERCNTVDREMwMDFE
Qjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQThGNkJCMzBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcCAqLzsgfTsKLQkJMUE4RjZCQkYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4RjZCQjQwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyB9
OworCQkxQThGNkJCRjBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBE
QjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJMUE4RjZCQzEwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE4RjZCQjYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oICovOyB9OwogCQkxQThGNkJDMjBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBw
bGljYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQThGNkJCNzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAgKi87IH07Ci0JCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThG
NkJCODBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAv
KiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQThGNkJCODBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25D
YWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFBOEY2QkM1MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCQTBEQjU1Q0RDMDAx
REI3OTQgLyogTWFuaWZlc3RQYXJzZXIuY3BwICovOyB9OwogCQkxQThGNkJDNjBEQjU1Q0RDMDAx
REI3OTQgLyogTWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOEY2QkJCMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNl
ci5oICovOyB9OwogCQkxQTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovOyB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNp
b24gODEzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAKQEAgLTE4Miw3ICsxODMsMzAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3Jh
Z2VJRCgpCiAgICAgUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVzb3VyY2Vz
LmVuZCgpOwogICAgIGZvciAoUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBpdC0+c2Vjb25kLT5jbGVh
clN0b3JhZ2VJRCgpOwotfSAgICAKK30KKyAgICAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZGVs
ZXRlQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBWZWN0b3I8
S1VSTD4gdXJsczsKKyAgICBpZiAoIWNhY2hlU3RvcmFnZSgpLm1hbmlmZXN0VVJMcygmdXJscykp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgQXBwbGljYXRpb25DYWNo
ZSBtYW5pZmVzdCBVUkxzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8g
TXVsdGlwbGUgbWFuaWZlc3QgVVJMcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTZWN1cml0eU9yaWdp
biwgc28gd2UgbWlnaHQgYmUgY3JlYXRpbmcgZXh0cmEsIHdhc3RlZCBvcmlnaW5zIGhlcmUuCisg
ICAgLy8gVGhlIGN1cnJlbnQgc2NoZW1hIGRvZXNuJ3QgYWxsb3cgZm9yIGEgbW9yZSBlZmZpY2ll
bnQgd2F5IG9mIGRlbGV0aW5nIGJ5IG9yaWdpbi4KKyAgICBzaXplX3QgY291bnQgPSB1cmxzLnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtYW5pZmVzdE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXJsc1tpXSk7CisgICAgICAgIGlmIChtYW5pZmVzdE9yaWdpbi0+aXNTYW1lU2NoZW1l
SG9zdFBvcnQob3JpZ2luKSkgeworICAgICAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBn
cm91cCA9IGNhY2hlU3RvcmFnZSgpLmluTWVtb3J5Q2FjaGVHcm91cElmRXhpc3RzKHVybHNbaV0p
OworICAgICAgICAgICAgaWYgKGdyb3VwKQorICAgICAgICAgICAgICAgIGdyb3VwLT5tYWtlT2Jz
b2xldGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2Uo
KS5kZWxldGVDYWNoZUdyb3VwKHVybHNbaV0pOworICAgICAgICB9CisgICAgfQorfQogICAgIAog
I2lmbmRlZiBOREVCVUcKIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZHVtcCgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHJl
dmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDE2IEBAIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgS1VSTDsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVm
IFZlY3RvcjxzdGQ6OnBhaXI8S1VSTCwgS1VSTD4gPiBGYWxsYmFja1VSTFZlY3RvcjsKIAogY2xh
c3MgQXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2FjaGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQXBwbGljYXRpb25DYWNoZSk7IH0KKyAgICAKKyAg
ICBzdGF0aWMgdm9pZCBkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAg
IAogICAgIH5BcHBsaWNhdGlvbkNhY2hlKCk7CiAKICAgICB2b2lkIGFkZFJlc291cmNlKFBhc3NS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAJKHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIy
OCw2ICsxMjI4LDExIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXAK
ICAgICAqc2l6ZSA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KKyAgICAKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmluTWVtb3J5Q2FjaGVHcm91cElmRXhpc3RzKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwp
Cit7CisgICAgcmV0dXJuIG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKK30KIAog
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVHcm91cChjb25zdCBTdHJp
bmcmIG1hbmlmZXN0VVJMKQogewpAQCAtMTMwOSwyNCArMTMxNCw2IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmdldE9yaWdpbnMKICAgICB9CiB9CiAKLXZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKLXsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKLSAgICBpZiAoIW1hbmlmZXN0VVJMcygmdXJs
cykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgQXBwbGljYXRpb25D
YWNoZSBtYW5pZmVzdCBVUkxzIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBN
dWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3JpZ2lu
LCBzbyB3ZSBtaWdodCBiZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4KLSAg
ICAvLyBUaGUgY3VycmVudCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVu
dCB3YXkgb2YgZGVsZXRpbmcgYnkgb3JpZ2luLgotICAgIHNpemVfdCBjb3VudCA9IHVybHMuc2l6
ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1hbmlmZXN0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh1cmxzW2ldKTsKLSAgICAgICAgaWYgKG1hbmlmZXN0T3JpZ2luLT5pc1NhbWVTY2hlbWVI
b3N0UG9ydChvcmlnaW4pKQotICAgICAgICAgICAgZGVsZXRlQ2FjaGVHcm91cCh1cmxzW2ldKTsK
LSAgICB9Ci19Ci0KIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFsbEVudHJp
ZXMoKQogewogICAgIGVtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gODEz
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYp
OyAvLyBDYWNoZSB0aGF0IGhhcyBhIGZhbGxiYWNrIGVudHJ5IHRvIGxvYWQgYSBtYWluIHJlc291
cmNlIGZyb20gaWYgbm9ybWFsIGxvYWRpbmcgZmFpbHMuCiAKICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOwor
ICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogaW5NZW1vcnlDYWNoZUdyb3VwSWZFeGlzdHMoY29u
c3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAgICAgdm9pZCBjYWNoZUdyb3VwRGVzdHJveWVkKEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgIHZvaWQgY2FjaGVHcm91cE1hZGVPYnNvbGV0ZShB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICAgICAgCkBAIC05NSw3ICs5Niw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmlsZSgpOwogCiAgICAgdm9pZCBnZXRPcmlnaW5z
V2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2VjdXJpdHlPcmlnaW5I
YXNoPiYpOwotICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiop
OwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOwogCiAgICAgc3RhdGljIGludDY0X3QgdW5r
bm93blF1b3RhKCkgeyByZXR1cm4gLTE7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMzk4
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTEtMDMtMTcgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDog
Y2FsbGluZyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRlbGV0ZUNhY2hlR3JvdXBzRm9yT3JpZ2lu
CisgICAgICAgIGluc3RlYWQgb2YgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4uCisgICAgICAgIChXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKwogMjAxMS0wMy0xNyAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsaWNhdGlv
bkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUg
IldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNo
Lmg+CkBAIC04Nyw3ICs4OCw3IEBAIHZvaWQgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXI6OmRl
bGV0ZUUKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGNhY2hl
U3RvcmFnZSgpLmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBBcHBs
aWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwogI2VuZGlm
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDMtMTcgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAg
aXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorICAgICAgICAKKyAgICAgICAgVXNlIG5ldyBB
cHBsaWNhdGlvbkNhY2hlIEFQSSB0byBkZWxldGUgYWxsIGNhY2hlIGZvciBhbiBvcmlnaW4uCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbToKKyAgICAgICAgKCtbV2Vi
QXBwbGljYXRpb25DYWNoZSBkZWxldGVPcmlnaW46XSk6CisKIDIwMTEtMDMtMTYgIEplZmYgSm9o
bnNvbiAgPGdpdGh1YkBsYXBjYXRzb2Z0d2FyZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDgxMzk4KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogCitAY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisKIEBpbnRlcmZhY2Ug
V2ViQXBwbGljYXRpb25DYWNoZTogTlNPYmplY3QKIAogKyAobG9uZyBsb25nKW1heGltdW1TaXpl
OwpAQCAtMzQsNSArMzYsNiBAQCBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9uQ2FjaGU6IE5TT2Jq
ZWN0CiArICh2b2lkKXNldERlZmF1bHRPcmlnaW5RdW90YToobG9uZyBsb25nKXNpemU7CiAKICsg
KHZvaWQpZGVsZXRlQWxsQXBwbGljYXRpb25DYWNoZXM7CisrICh2b2lkKWRlbGV0ZUNhY2hlRm9y
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbjsKIAogQGVuZApJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tCShyZXZpc2lvbiA4MTM5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDEx
IEBACiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIAogI2ltcG9ydCAiV2Vi
QXBwbGljYXRpb25DYWNoZS5oIgorCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFs
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU4LDYgKzYyLDExIEBA
ICsgKHZvaWQpZGVsZXRlQWxsQXBwbGljYXRpb25DYWNoZXMKICAgICBjYWNoZVN0b3JhZ2UoKS5k
ZWxldGVBbGxFbnRyaWVzKCk7CiB9CiAKKysgKHZvaWQpZGVsZXRlQ2FjaGVGb3JPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7CisgICAgQXBwbGljYXRpb25DYWNoZTo6ZGVsZXRl
Q2FjaGVGb3JPcmlnaW4oW29yaWdpbiBfY29yZV0pOworfQorCiBAZW5kCiAKICNlbmRpZgpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gODEzOTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
OSBAQAorMjAxMS0wMy0xNyAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDogQWRkaW5nIHN0dWJzLgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOiAKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbTogQWRkaW5nIHN0
dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hl
Rm9yT3JpZ2luKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcDogQWRkaW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDogQWRkaW5nIHN0dWIuCisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDogQWRk
aW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKToKKwogMjAxMS0wMy0xNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciBm
b3IgdGhlIE1hYyBidWlsZGVycwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NSw2ICsz
ODUsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxBcHBsaWNhdGlvbkNhYwogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVS
ZWYgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IG9yaWdpblVSTChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBh
cmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRl
c3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250
cm9sbGVyLT5jbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4ob3JpZ2luVVJMLmdldCgpKTsK
KyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0
YXRpYyBKU1ZhbHVlUmVmIGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9u
CkBAIC0yMTAyLDYgKzIxMTYsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6CiAgICAgICAgIHsgImNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyIsIGNhbGxTaG91bGRD
bG9zZU9uV2ViVmlld0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyQWxsQXBwbGlj
YXRpb25DYWNoZXMiLCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiY2xlYXJBbGxEYXRhYmFzZXMiLCBjbGVhckFsbERhdGFiYXNlc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgImNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiIsIGNs
ZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImNsZWFyQmFja0ZvcndhcmRMaXN0IiwgY2xlYXJCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldCIsIGNsZWFyUGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xvc2VX
ZWJJbnNwZWN0b3IiLCBjbG9zZVdlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDgx
Mzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHJlZGlyZWN0aW9uRGVzdGluYXRpb25Gb3JVUkwoc3RkOjpzdHJpbmcpOwogICAgIHZvaWQg
Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwogICAgIHZvaWQgY2xlYXJBbGxEYXRhYmFzZXMo
KTsKKyAgICB2b2lkIGNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiBu
YW1lKTsKICAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgdm9pZCBjbGVhclBl
cnNpc3RlbnRVc2VyU3R5bGVTaGVldCgpOwogICAgIGJvb2wgY2FsbFNob3VsZENsb3NlT25XZWJW
aWV3KCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MTM5OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg1LDYgKzE4NSw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGwKICAgICBiaW5kTWV0aG9kKCJhZGREaXNhbGxvd2VkVVJMIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjphZGREaXNhbGxvd2VkVVJMKTsKICAgICBiaW5kTWV0aG9kKCJjYWxsU2hvdWxkQ2xv
c2VPbldlYlZpZXciLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9zZU9uV2Vi
Vmlldyk7CiAgICAgYmluZE1ldGhvZCgiY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyk7CisgICAgYmluZE1l
dGhvZCgiY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOwogICAgIGJpbmRNZXRob2QoImNs
ZWFyQmFja0ZvcndhcmRMaXN0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckJhY2tGb3J3
YXJkTGlzdCk7CiAgICAgYmluZE1ldGhvZCgiZHVtcEFzV2ViQXJjaGl2ZSIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcEFzV2ViQXJjaGl2ZSk7CiAgICAgYmluZE1ldGhvZCgia2VlcFdlYkhp
c3RvcnkiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmtlZXBXZWJIaXN0b3J5KTsKQEAgLTc0Myw2
ICs3NDQsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVh
ckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9ydCBkZWxl
dGluZyBhbGwgQXBwbGljYXRpb25DYWNoZSBmb3IgYW4gb3JpZ2luCisgICAgcmVzdWx0LT5zZXRO
dWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQp
CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENhY2hl
IFF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yODQsNiArMjg0LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2xlYXJzIGFsbCBBcHBsaWNhdGlv
biBDYWNoZXMuCiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICAvLyBDbGVhcnMgQXBwbGljYXRpb24gQ2Fj
aGUgZm9yIGFuIG9yaWdpbi4KKyAgICB2b2lkIGNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdp
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgLy8gU2V0cyB0aGUg
QXBwbGljYXRpb24gUXVvdGEgZm9yIHRoZSBsb2NhbGhvc3Qgb3JpZ2luLgogICAgIHZvaWQgc2V0
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE0NSw2ICsxNDUsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2JzZXJ2ZVN0b3Jh
ZwogICAgIFtzdG9yYWdlRGVsZWdhdGUgbG9nTm90aWZpY2F0aW9uczpudW1iZXIgY29udHJvbGxl
cjp0aGlzXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHVybENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHVybCkpOworCisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2Vj
dXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0
cmluZyAqKXVybENGLmdldCgpXV07CisgICAgW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGVsZXRlQ2Fj
aGVGb3JPcmlnaW46b3JpZ2luXTsKKyAgICBbb3JpZ2luIHJlbGVhc2VdOworfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbERhdGFiYXNlcygpCiB7CiAgICAgW1tXZWJEYXRh
YmFzZU1hbmFnZXIgc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyXSBkZWxldGVBbGxEYXRhYmFzZXNd
OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAJKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Miw2ICs1NTIs
MTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihj
b25zdCBRU3RyaW5nJiB1cmwpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0
IGRlbGV0aW5nIGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4uCit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgaWYgKCFtX3RvcExvYWRpbmdGcmFtZSkKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmgJKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDcgQEAgcHVibGlj
IHNsb3RzOgogICAgIHZvaWQgZGlzYWJsZUltYWdlTG9hZGluZygpOwogCiAgICAgdm9pZCBjbGVh
ckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgdm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVG
b3JPcmlnaW4oY29uc3QgUVN0cmluZyYgdXJsKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogCiAgICAgdm9pZCBzZXRE
YXRhYmFzZVF1b3RhKGludCBzaXplKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODEzOTgpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MzYsNiArOTM2LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsZWFyQWxsQXBwbGkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBw
bGljYXRpb24gQ2FjaGUgcXVvdGFzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpj
bGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgb3JpZ2luKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBkZWxldGluZyBhbGwgQXBwbGljYXRpb25D
YWNoZSBmb3IgYW4gb3JpZ2luLgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90
YXMuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcAkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDYgKzI0
OCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpCiAgICAgLy8g
RklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3Jp
Z2luKEpTU3RyaW5nUmVmIHVybCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBv
cnQgZGVsZXRpbmcgYWxsIEFwcGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9yaWdpbi4KK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1
cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODEzOTgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMS0wMy0xNyAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgVGhpcyB0ZXN0
IGNyZWF0ZXMgYW4gQXBwbGljYXRpb24gQ2FjaGUgZm9yIHRoZSBEUlQgb3JpZ2luLCBkZWxldGVz
IGl0IGZvciB0aGUgb3JpZ2luLAorICAgICAgICBhbmQgdmVyaWZpZXMgdGhhdCB0aGUgQXBwbGlj
YXRpb24gQ2FjaGUgaGFzIG9ic29sZXRlIHN0YXR1cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
YXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0x
NyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTa2lwIGFuIGVk
aXRpbmcgdGVzdCB0aGF0IGhpdHMgYXNzZXJ0aW9uIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdp
bi1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYXBwbGljYXRpb24gY2FjaGUgZ3Jv
dXBzIGNvcnJlY3RseSBiZWNvbWUgb2Jzb2xldGUgYWZ0ZXIgYXBwbGljYXRpb24gY2FjaGUgaXMg
ZGVsZXRpb24gZm9yIGEgc3BlY2lmaWMgb3JpZ2luLgorCitQQVNTIC0gY2FjaGVkIGlmcmFtZS0x
CitjbGVhcmluZyBjYWNoZSBmb3Igb3JpZ2luCithcHBjYWNoZV9zdGF0dXM9NQorU1VDQ0VTUyAt
IGNhY2hlIHdhcyBtYWRlIG9ic29sZXRlCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisvLyBIZWxw
ZXJzLgorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKKy8vIFN0
YXJ0IGFuZCBlbmQuCisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFy
QWxsQXBwbGljYXRpb25DYWNoZXMoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBhZGRJRnJhbWVXaXRoQXBwQ2FjaGUoKTsKK30K
KworZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhBcHBDYWNoZSgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJj
ZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbCI7CisgICAgaWZyYW1lLmlkID0gImNhY2hlZEZy
YW1lIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgCisgICAg
d2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZyhldmVudC5k
YXRhKTsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJQQVNTIC0gY2FjaGVkIGlmcmFtZS0x
IikgeworICAgICAgICAgICAgbG9nKCJjbGVhcmluZyBjYWNoZSBmb3Igb3JpZ2luIik7CisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworICAgICAgICAgICAgdmFyIGZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhY2hlZEZyYW1lJyk7CisgICAgICAgICAgICBmcmFtZS5j
b250ZW50V2luZG93LnBvc3RNZXNzYWdlKCJhcHBjYWNoZV9zdGF0dXMiLCAiKiIpOworICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09ICJhcHBjYWNoZV9zdGF0dXM9NSIpeworICAgICAg
ICAgICAgbG9nKCJTVUNDRVNTIC0gY2FjaGUgd2FzIG1hZGUgb2Jzb2xldGUiKTsKKyAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZygiRkFJ
TCAtIHJlY2VpdmVkIHVuZXhwZWN0ZWQgbWVzc2FnZSAiICsgZXZlbnQuZGF0YSk7CisgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0KKyAgICB9OworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhh
dCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJlY29tZSBvYnNvbGV0ZSBhZnRl
ciBhcHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBmb3IgYSBzcGVjaWZpYyBvcmlnaW4uCis8
L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sIG1hbmlmZXN0PSJvcmln
aW4tZGVsZXRlLWlmcmFtZS5tYW5pZmVzdCI+Cis8c2NyaXB0PgorLy8gaWZyYW1lLTEgaXMgZXhw
ZWN0ZWQgdG8gc3VjY2VlZC4KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigp
IHsgcGFyZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0gY2FjaGVkIGlmcmFtZS0xIiwgIioiKTsgfTsK
K2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3Nh
Z2UoIkZBSUwgLSBlcnJvciBjYWNoaW5nIGlmcmFtZS0xLCBleHBlY3RlZCB0aGlzIHRvIHN1Y2Nl
ZWQiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7
IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVwZGF0ZSBpZnJhbWUtMSwgYWxsIGNhY2hl
cyBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYmVmb3JlIHRoaXMgdGVzdCIsICIqIik7IH07CisK
KworZnVuY3Rpb24gZnJhbWVNZXNzYWdlUmVjZWl2ZWQoZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQu
ZGF0YSA9PT0gImFwcGNhY2hlX3N0YXR1cyIpIHsKKyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdl
KCJhcHBjYWNoZV9zdGF0dXM9IiArIGFwcGxpY2F0aW9uQ2FjaGUuc3RhdHVzLCAiKiIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIHVucmVjb2duaXpl
ZCBtZXNzYWdlIiwgIioiKTsKKyAgICB9Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgZnJhbWVNZXNzYWdlUmVjZWl2ZWQsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmln
aW4tZGVsZXRlLWlmcmFtZS5tYW5pZmVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5tYW5pZmVzdAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYg
QEAKK0NBQ0hFIE1BTklGRVNUCisKKyMgVGhpcyBhZGRzIH4xM0sgdG8gdGhlIGFwcCBjYWNoZQor
CitDQUNIRToKK2FiZS5wbmcKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDgxMzk4KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNzI1LDYgKzE3MjUsOSBAQCBCVUdDUjI4NDQgU0tJUCA6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvNDA0CiBCVUdDUjI4NDQgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1p
ZnJhbWUtbWFpbi5odG1sID0gVElNRU9VVCBQQVNTCiBCVUdDUjI4NDQgU0tJUCA6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvbm9uLWh0bWwueGh0bWwgPSBUSU1FT1VUIFBBU1MKIAorLy8gTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiBpc24ndCBpbXBsZW1l
bnRlZAorQlVHV0sgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1s
ID0gRkFJTAorCiAvLyBOZXcgZmFpbHVyZXMgZnJvbSBXZWJLaXQgcjUxNTc3CiBCVUdDUjI5MTY0
IFdJTiBMSU5VWCBNQUMgOiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRt
bCA9IFRFWFQKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDgxMzk4
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTQ5Myw2ICs0OTMsNyBAQCBmYXN0L2pzL2kxOG4tYmluZGluZ3MtbG9jYWxlLmh0bWwKIGh0dHAv
dGVzdHMvYXBwY2FjaGUvY3Jhc2gtd2hlbi1uYXZpZ2F0aW5nLWF3YXktdGhlbi1iYWNrLmh0bWwK
IGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9v
cmlnaW4tcXVvdGEuaHRtbAoraHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwK
IGh0dHAvdGVzdHMvY29va2llcy9kb3VibGUtcXVvdGVkLXZhbHVlLXdpdGgtc2VtaS1jb2xvbi5o
dG1sCiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFkLXNjaGVtZS1zdWJmcmFtZS5odG1sCiBodHRwL3Rl
c3RzL2xvYWRpbmcvYmFkLXNlcnZlci1zdWJmcmFtZS5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQJKHJldmlzaW9uIDgxMzk4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzIzNCw2ICszMjM0LDkgQEAgZmFzdC9kb20vR2VvbG9j
YXRpb24vcGFnZS1yZWxvYWQtY2FuY2VsLQogaHR0cC90ZXN0cy9hcHBjYWNoZS9hdXRoLmh0bWwK
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC5odG1sCiAKKyMgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiBpcyBub3QgaW1wbGVt
ZW50ZWQKK2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCisKICMgW1F0XVdl
YiBJbnNwZWN0b3I6IGluc3BlY3Rvci9lbGVtZW50cy9tdXRhdGUtdW5rbm93bi1ub2RlLmh0bWwg
ZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDU3CiBp
bnNwZWN0b3IvZWxlbWVudHMvbXV0YXRlLXVua25vd24tbm9kZS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86199</attachid>
            <date>2011-03-18 12:52:02 -0700</date>
            <delta_ts>2011-03-18 13:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110318125201.patch</filename>
            <type>text/plain</type>
            <size>33170</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNDk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRvIGRlbGV0ZSBhbGwgQXBwbGljYXRpb24gQ2FjaGUg
Zm9yIGFuIG9yaWdpbiwgd2UgbXVzdCBvYnNvbGV0ZSBhbGwKKyAgICAgICAgaW4tbWVtb3J5IGNh
Y2hlIGdyb3VwcyBmb3IgdGhhdCBvcmlnaW4uIElmIGEgY2FjaGUgZ3JvdXAgaXNuJ3QgaW4gbWVt
b3J5LAorICAgICAgICB0aGVuIGl0IG11c3QgYmUgZGVsZXRlZCBmcm9tIGRpc2suIFRoZSBwcmV2
aW91cyBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgcmVtb3ZlZCBvbi1kaXNrIGNh
Y2hlIGdyb3VwcywgYnV0IGRpZCBub3QgbWFyayBpbi1tZW1vcnkgY2FjaGUgZ3JvdXBzIGFzIG9i
c29sZXRlLgorICAgICAgICBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpCisgICAgICAgIHdoZW4g
dGhlIERvY3VtZW50TG9hZGVyIHdhcyBkZXN0cm95ZWQuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorCisyMDExLTAzLTExICBB
bnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgbG9jay10YWtpbmcgb3JkZXIgdG8gcHJl
dmVudCBkZWFkbG9jaywgYWRkZWQgbG9jayBmb3IgbV9jbGllbnQsCisgICAgICAgIGFsbG93IGZv
ciBjcmVhdGlvbiBvZiBlbXB0eSBTdG9yYWdlVHJhY2tlciBkYiBvbiBpbml0aWFsaXphdGlvbi4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4NzgK
KworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycyk6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnNldE9yaWdpbkRldGFpbHMp
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnNjaGVkdWxlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3luY1NldE9yaWdpbkRldGFpbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpjYW5jZWxEZWxldGluZ09yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmg6CisKIDIwMTEtMDMtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI4MTQ4Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MTM5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk2LDYgKzE3
OTYsNyBAQCBfX1pOSzdXZWJDb3JlNE5vZGUxNnRyYXZlcnNlTmV4dE5vZGVFUEtTCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCitfX1pON1dlYkNvcmUxNkFw
cGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2lu
RQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0cXVvdGFGb3JPcmlnaW5F
UEtOU18xNFNlY3VyaXR5T3JpZ2luRVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTR1c2FnZUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKQEAgLTE4MDUs
NyArMTgwNiw2IEBAIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxN3MKIF9f
Wk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOHZhY3V1bURhdGFiYXNlRmlsZUV2
CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTlnZXRPcmlnaW5zV2l0aENh
Y2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18x
OFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29y
ZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMXNldERlZmF1bHRPcmlnaW5RdW90YUV4Ci1fX1pO
N1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjJkZWxldGVFbnRyaWVzRm9yT3JpZ2lu
RVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTI2c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW5FUEtOU18xNFNlY3VyaXR5T3JpZ2luRXgK
IF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UzNnJlbWFpbmluZ1NpemVGb3JP
cmlnaW5FeGNsdWRpbmdDYWNoZUVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUE5TXzE2QXBwbGljYXRp
b25DYWNoZUVSeAogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbXB0eUV2
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA4MTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDYyLDEzICs0NjIsMTMgQEAK
IAkJMUE4NUIyQjcwQTFCMkFDNzAwRDhDODdDIC8qIEpTSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODVCMkI1MEExQjJBQzcw
MEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggKi87IH07CiAJCTFBOEY2QjAyMERCNTMwMDYw
MDFEQjc5NCAvKiBTdWJzdGl0dXRlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QjAxMERCNTMwMDYwMDFEQjc5NCAvKiBTdWJzdGl0
dXRlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQThGNkJCQzBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMTBE
QjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07Ci0JCTFBOEY2QkJE
MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMjBEQjU1Q0RDMDAxREI3OTQgLyog
QXBwbGljYXRpb25DYWNoZS5oICovOyB9OworCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyog
QXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE4RjZCQjIwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQThGNkJC
RTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIzMERCNTVDREMwMDFE
Qjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwICovOyB9OwotCQkxQThGNkJCRjBEQjU1
Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAxREI3OTQgLyog
QXBwbGljYXRpb25DYWNoZUdyb3VwLmggKi87IH07CisJCTFBOEY2QkJGMERCNTVDREMwMDFEQjc5
NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI0MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkx
QThGNkJDMDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI1MERC
NTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwICovOyB9OwogCQkx
QThGNkJDMTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNjBEQjU1
Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggKi87IH07CiAJCTFBOEY2
QkMyMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI3MERCNTVDREMwMDFE
Qjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmNwcCAqLzsgfTsKLQkJMUE4RjZCQzMwREI1NUNE
QzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI4MERCNTVDREMwMDFEQjc5NCAvKiBET01B
cHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsK
KwkJMUE4RjZCQzMwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI4MERCNTVD
REMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4RjZCQzUwREI1NUNEQzAwMURCNzk0IC8q
IE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBOEY2QkJBMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAg
Ki87IH07CiAJCTFBOEY2QkM2MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQkIwREI1
NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmggKi87IH07CiAJCTFBOTg5NTZCMEFBNzhG
ODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5ldC5j
cHAgKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiA4MTM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIApAQCAtMTgyLDcgKzE4MywzMCBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGU6OmNsZWFyU3RvcmFnZUlEKCkKICAgICBSZXNvdXJjZU1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChSZXNvdXJjZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCiAgICAgICAgIGl0LT5zZWNvbmQtPmNsZWFyU3RvcmFnZUlEKCk7Ci19ICAgIAorfQorICAg
IAordm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAgIGlmICghY2FjaGVT
dG9yYWdlKCkubWFuaWZlc3RVUkxzKCZ1cmxzKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hlIG1hbmlmZXN0IFVSTHMiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1pZ2h0
IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3JpZ2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGluZyBl
eHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4KKyAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEgZG9l
c24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCB3YXkgb2YgZGVsZXRpbmcgYnkgb3JpZ2lu
LgorICAgIHNpemVfdCBjb3VudCA9IHVybHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1hbmlm
ZXN0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmxzW2ldKTsKKyAgICAgICAgaWYg
KG1hbmlmZXN0T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKSB7CisgICAgICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gY2FjaGVTdG9yYWdlKCkuZmluZElu
TWVtb3J5Q2FjaGVHcm91cCh1cmxzW2ldKTsKKyAgICAgICAgICAgIGlmIChncm91cCkKKyAgICAg
ICAgICAgICAgICBncm91cC0+bWFrZU9ic29sZXRlKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlQ2FjaGVHcm91cCh1cmxzW2ldKTsKKyAg
ICAgICAgfQorICAgIH0KK30KICAgICAKICNpZm5kZWYgTkRFQlVHCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGU6OmR1bXAoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA4MTM5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDEyICs0MiwxNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBEb2N1
bWVudExvYWRlcjsKIGNsYXNzIEtVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIAogdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEtVUkwsIEtVUkw+ID4g
RmFsbGJhY2tVUkxWZWN0b3I7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxBcHBsaWNhdGlvbkNhY2hlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGxp
Y2F0aW9uQ2FjaGUpOyB9CisgICAgCisgICAgc3RhdGljIHZvaWQgZGVsZXRlQ2FjaGVGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICAKICAgICB+QXBwbGljYXRpb25DYWNoZSgpOwogCiAg
ICAgdm9pZCBhZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
cmVzb3VyY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiA4MTM5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTEgQEAgQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIHJldHVybiBncm91cDsKIH0KIAorQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2FjaGVH
cm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKSBjb25zdAoreworICAgIHJldHVybiBtX2Nh
Y2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7Cit9CisKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKQogewogICAgIHN0YXRpYyBib29sIGhh
c0xvYWRlZEhhc2hlcyA9IGZhbHNlOwpAQCAtMTMwOSwyNCArMTMxNCw2IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmdldE9yaWdpbnMKICAgICB9CiB9CiAKLXZvaWQgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKLXsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKLSAgICBpZiAoIW1hbmlmZXN0VVJMcygm
dXJscykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgQXBwbGljYXRp
b25DYWNoZSBtYW5pZmVzdCBVUkxzIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3Jp
Z2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4K
LSAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmlj
aWVudCB3YXkgb2YgZGVsZXRpbmcgYnkgb3JpZ2luLgotICAgIHNpemVfdCBjb3VudCA9IHVybHMu
c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1hbmlmZXN0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1cmxzW2ldKTsKLSAgICAgICAgaWYgKG1hbmlmZXN0T3JpZ2luLT5pc1NhbWVTY2hl
bWVIb3N0UG9ydChvcmlnaW4pKQotICAgICAgICAgICAgZGVsZXRlQ2FjaGVHcm91cCh1cmxzW2ld
KTsKLSAgICB9Ci19Ci0KIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFsbEVu
dHJpZXMoKQogewogICAgIGVtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24g
ODEzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VS
TCYpOyAvLyBDYWNoZSB0aGF0IGhhcyBhIGZhbGxiYWNrIGVudHJ5IHRvIGxvYWQgYSBtYWluIHJl
c291cmNlIGZyb20gaWYgbm9ybWFsIGxvYWRpbmcgZmFpbHMuCiAKICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwp
OworICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25z
dCBTdHJpbmcmIG1hbmlmZXN0VVJMKSBjb25zdDsKICAgICB2b2lkIGNhY2hlR3JvdXBEZXN0cm95
ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgdm9pZCBjYWNoZUdyb3VwTWFkZU9ic29s
ZXRlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgICAgICAKQEAgLTk1LDcgKzk2LDYgQEAg
cHVibGljOgogICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CiAKICAgICB2b2lkIGdldE9y
aWdpbnNXaXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9y
aWdpbkhhc2g+Jik7Ci0gICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKik7CiAgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICBzdGF0aWMgaW50NjRf
dCB1bmtub3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
ODE0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxMS0wMy0xOCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
Y3BwOiBjYWxsaW5nIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsZXRlQ2FjaGVHcm91cHNGb3JP
cmlnaW4KKyAgICAgICAgaW5zdGVhZCBvZiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRl
RW50cmllc0Zvck9yaWdpbi4KKyAgICAgICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZU1h
bmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorCiAyMDExLTAzLTE4ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNz
b24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2Vi
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsaWNh
dGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1
ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5I
YXNoLmg+CkBAIC04Nyw3ICs4OCw3IEBAIHZvaWQgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXI6
OmRlbGV0ZUUKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGNh
Y2hlU3RvcmFnZSgpLmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBB
cHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNDk3KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTEtMDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorICAgICAgICAKKyAgICAgICAgVXNlIG5l
dyBBcHBsaWNhdGlvbkNhY2hlIEFQSSB0byBkZWxldGUgYWxsIGNhY2hlIGZvciBhbiBvcmlnaW4u
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbToKKyAgICAgICAgKCtb
V2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVPcmlnaW46XSk6CisKIDIwMTEtMDMtMTcgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNh
dGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA4MTM5OCkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
IAorQGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworCiBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9u
Q2FjaGU6IE5TT2JqZWN0CiAKICsgKGxvbmcgbG9uZyltYXhpbXVtU2l6ZTsKQEAgLTM0LDUgKzM2
LDYgQEAgQGludGVyZmFjZSBXZWJBcHBsaWNhdGlvbkNhY2hlOiBOU09iamVjdAogKyAodm9pZClz
ZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxvbmcgbG9uZylzaXplOwogCiArICh2b2lkKWRlbGV0ZUFs
bEFwcGxpY2F0aW9uQ2FjaGVzOworKyAodm9pZClkZWxldGVDYWNoZUZvck9yaWdpbjooV2ViU2Vj
dXJpdHlPcmlnaW4gKilvcmlnaW47CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQkocmV2aXNp
b24gODEzOTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNh
dGlvbkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwxMSBAQAogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2Fj
aGUuaCIKKworI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCA8
V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OCw2ICs2MiwxMSBAQCArICh2b2lkKWRlbGV0
ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCiAgICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlQWxsRW50cmll
cygpOwogfQogCisrICh2b2lkKWRlbGV0ZUNhY2hlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdp
biAqKW9yaWdpbgoreworICAgIEFwcGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2lu
KFtvcmlnaW4gX2NvcmVdKTsKK30KKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNDk3KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMt
MTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMg
bm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9y
T3JpZ2luQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1
bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6IEFkZGluZyBzdHVicy4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlv
dXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJB
bGxBcHBsaWNhdGlvbkNhY2hlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKTogCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06IEFkZGluZyBzdHViLgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6IEFk
ZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRp
b25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6IEFkZGluZyBzdHViLgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdp
bik6CisKIDIwMTEtMDMtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaXggd2luZG93cyBidWlsZC4gVGhpcyB3YXMgcmVhbGx5IEFkYW0gUm9iZW4ncyBmYXVsdC4g
SSBzd2VhciEKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsNiArMzg1LDIwIEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGNsZWFyQWxsQXBwbGljYXRpb25DYWMKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGNsZWFyQXBw
bGljYXRpb25DYWNoZUZvck9yaWdpbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBv
cmlnaW5VUkwoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBd
LCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxl
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKG9yaWdpblVSTC5nZXQoKSk7CisgICAgCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1
ZVJlZiBjbGVhckFsbERhdGFiYXNlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMjEwMiw2
ICsyMTE2LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAg
ICAgICB7ICJjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXciLCBjYWxsU2hvdWxkQ2xvc2VPbldlYlZp
ZXdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVz
IiwgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImNsZWFyQWxsRGF0YWJhc2VzIiwgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4iLCBjbGVhckFwcGxpY2F0
aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhckJhY2tG
b3J3YXJkTGlzdCIsIGNsZWFyQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXQiLCBjbGVhclBlcnNpc3RlbnRVc2Vy
U3R5bGVTaGVldENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsb3NlV2ViSW5zcGVjdG9y
IiwgY2xvc2VXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MTM5OCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWRpcmVj
dGlvbkRlc3RpbmF0aW9uRm9yVVJMKHN0ZDo6c3RyaW5nKTsKICAgICB2b2lkIGNsZWFyQWxsQXBw
bGljYXRpb25DYWNoZXMoKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2VzKCk7CisgICAgdm9p
ZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgbmFtZSk7CiAgICAg
dm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIHZvaWQgY2xlYXJQZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXQoKTsKICAgICBib29sIGNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpOwpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2
ICsxODUsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAg
YmluZE1ldGhvZCgiYWRkRGlzYWxsb3dlZFVSTCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRk
RGlzYWxsb3dlZFVSTCk7CiAgICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcpOwogICAg
IGJpbmRNZXRob2QoImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOworICAgIGJpbmRNZXRob2QoImNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJB
cHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKTsKICAgICBiaW5kTWV0aG9kKCJjbGVhckJhY2tGb3J3
YXJkTGlzdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QpOwog
ICAgIGJpbmRNZXRob2QoImR1bXBBc1dlYkFyY2hpdmUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBBc1dlYkFyY2hpdmUpOwogICAgIGJpbmRNZXRob2QoImtlZXBXZWJIaXN0b3J5IiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjprZWVwV2ViSGlzdG9yeSk7CkBAIC03NDMsNiArNzQ0LDEyIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICByZXN1bHQtPnNl
dE51bGwoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIEFw
cGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9yaWdpbgorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMuCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgJKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4
NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIENsZWFycyBhbGwgQXBwbGljYXRpb24gQ2FjaGVzLgog
ICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CisgICAgLy8gQ2xlYXJzIEFwcGxpY2F0aW9uIENhY2hlIGZvciBhbiBv
cmlnaW4uCisgICAgdm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNldHMgdGhlIEFwcGxpY2F0aW9u
IFF1b3RhIGZvciB0aGUgbG9jYWxob3N0IG9yaWdpbi4KICAgICB2b2lkIHNldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0JKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1
LDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om9ic2VydmVTdG9yYWcKICAgICBbc3Rv
cmFnZURlbGVnYXRlIGxvZ05vdGlmaWNhdGlvbnM6bnVtYmVyIGNvbnRyb2xsZXI6dGhpc107CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9y
aWdpbihKU1N0cmluZ1JlZiB1cmwpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxD
RihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwp
KTsKKworICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2lu
IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxD
Ri5nZXQoKV1dOworICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZUNhY2hlRm9yT3JpZ2lu
Om9yaWdpbl07CisgICAgW29yaWdpbiByZWxlYXNlXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJBbGxEYXRhYmFzZXMoKQogewogICAgIFtbV2ViRGF0YWJhc2VNYW5hZ2Vy
IHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gZGVsZXRlQWxsRGF0YWJhc2VzXTsKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CShyZXZpc2lvbiA4MTM5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsNiArNTUyLDExIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oY29uc3QgUVN0cmlu
ZyYgdXJsKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9ydCBkZWxldGluZyBh
bGwgQXBwbGljYXRpb25DYWNoZSBmb3IgYW4gb3JpZ2luLgorfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKQogewogICAgIGlmICghbV90b3BMb2FkaW5nRnJhbWUpCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lv
biA4MTM5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSw3IEBAIHB1YmxpYyBzbG90czoKICAg
ICB2b2lkIGRpc2FibGVJbWFnZUxvYWRpbmcoKTsKIAogICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNh
dGlvbkNhY2hlcygpOworICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGNv
bnN0IFFTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKIAogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90
YShpbnQgc2l6ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTM2LDYgKzkzNiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFs
bEFwcGxpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENh
Y2hlIHF1b3Rhcy4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNh
dGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIEFwcGxpY2F0aW9uQ2FjaGUgZm9yIGFu
IG9yaWdpbi4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAJKHJldmlzaW9uIDgxMzk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmlu
Z1JlZiB1cmwpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5n
IGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4uCit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxp
Y2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNDk3KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMt
MTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMg
bm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgIFRoaXMgdGVzdCBjcmVhdGVzIGFu
IEFwcGxpY2F0aW9uIENhY2hlIGZvciB0aGUgRFJUIG9yaWdpbiwgZGVsZXRlcyBpdCBmb3IgdGhl
IG9yaWdpbiwKKyAgICAgICAgYW5kIHZlcmlmaWVzIHRoYXQgdGhlIEFwcGxpY2F0aW9uIENhY2hl
IGhhcyBvYnNvbGV0ZSBzdGF0dXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Fw
cGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUu
bWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDExLTAzLTE4ICBTdGVwaGVuIFdoaXRlICA8c2Vub3Ji
bGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IG5ldyB0ZXN0IGJhc2Vs
aW5lcy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFwcGxpY2F0aW9u
IGNhY2hlIGdyb3VwcyBjb3JyZWN0bHkgYmVjb21lIG9ic29sZXRlIGFmdGVyIGFwcGxpY2F0aW9u
IGNhY2hlIGlzIGRlbGV0aW9uIGZvciBhIHNwZWNpZmljIG9yaWdpbi4KKworUEFTUyAtIGNhY2hl
ZCBpZnJhbWUtMQorY2xlYXJpbmcgY2FjaGUgZm9yIG9yaWdpbgorYXBwY2FjaGVfc3RhdHVzPTUK
K1NVQ0NFU1MgLSBjYWNoZSB3YXMgbWFkZSBvYnNvbGV0ZQorCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
KworLy8gSGVscGVycy4KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
fQorCisvLyBTdGFydCBhbmQgZW5kLgorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgYWRkSUZyYW1lV2l0aEFwcENh
Y2hlKCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBhZGRJRnJhbWVXaXRoQXBwQ2FjaGUoKSB7CisgICAgdmFyIGlm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zcmMg
PSAicmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLmh0bWwiOworICAgIGlmcmFtZS5pZCA9
ICJjYWNoZWRGcmFtZSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwor
ICAgIAorICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBs
b2coZXZlbnQuZGF0YSk7CisgICAgICAgIGlmIChldmVudC5kYXRhID09PSAiUEFTUyAtIGNhY2hl
ZCBpZnJhbWUtMSIpIHsKKyAgICAgICAgICAgIGxvZygiY2xlYXJpbmcgY2FjaGUgZm9yIG9yaWdp
biIpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAgICAgIHZhciBm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYWNoZWRGcmFtZScpOworICAgICAgICAg
ICAgZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgiYXBwY2FjaGVfc3RhdHVzIiwgIioi
KTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09PSAiYXBwY2FjaGVfc3RhdHVzPTUi
KXsKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUyAtIGNhY2hlIHdhcyBtYWRlIG9ic29sZXRlIik7
CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBsb2coIkZBSUwgLSByZWNlaXZlZCB1bmV4cGVjdGVkIG1lc3NhZ2UgIiArIGV2ZW50LmRhdGEp
OworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9CisgICAgfTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+Cis8cD5UaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXBzIGNvcnJlY3RseSBiZWNvbWUgb2Jz
b2xldGUgYWZ0ZXIgYXBwbGljYXRpb24gY2FjaGUgaXMgZGVsZXRpb24gZm9yIGEgc3BlY2lmaWMg
b3JpZ2luLgorPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4t
ZGVsZXRlLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4tZGVs
ZXRlLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbCBtYW5p
ZmVzdD0ib3JpZ2luLWRlbGV0ZS1pZnJhbWUubWFuaWZlc3QiPgorPHNjcmlwdD4KKy8vIGlmcmFt
ZS0xIGlzIGV4cGVjdGVkIHRvIHN1Y2NlZWQuCithcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0g
ZnVuY3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiUEFTUyAtIGNhY2hlZCBpZnJhbWUtMSIs
ICIqIik7IH07CithcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcGFyZW50
LnBvc3RNZXNzYWdlKCJGQUlMIC0gZXJyb3IgY2FjaGluZyBpZnJhbWUtMSwgZXhwZWN0ZWQgdGhp
cyB0byBzdWNjZWVkIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1
bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBubyB1cGRhdGUgaWZyYW1lLTEs
IGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRlc3QiLCAi
KiIpOyB9OworCisKK2Z1bmN0aW9uIGZyYW1lTWVzc2FnZVJlY2VpdmVkKGV2ZW50KSB7CisgICAg
aWYgKGV2ZW50LmRhdGEgPT09ICJhcHBjYWNoZV9zdGF0dXMiKSB7CisgICAgICAgIHBhcmVudC5w
b3N0TWVzc2FnZSgiYXBwY2FjaGVfc3RhdHVzPSIgKyBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cywg
IioiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSB1
bnJlY29nbml6ZWQgbWVzc2FnZSIsICIqIik7CisgICAgfQorfQorCit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIGZyYW1lTWVzc2FnZVJlY2VpdmVkLCBmYWxzZSk7CisKKzwvc2Ny
aXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUu
bWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2IEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgYWRkcyB+MTNLIHRvIHRoZSBh
cHAgY2FjaGUKKworQ0FDSEU6CithYmUucG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA4MTM5OCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTcyNSw2ICsxNzI1LDkgQEAgQlVHQ1IyODQ0IFNLSVAgOiBodHRw
L3Rlc3RzL2FwcGNhY2hlLzQwNAogQlVHQ1IyODQ0IFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hl
L2ZvcmVpZ24taWZyYW1lLW1haW4uaHRtbCA9IFRJTUVPVVQgUEFTUwogQlVHQ1IyODQ0IFNLSVAg
OiBodHRwL3Rlc3RzL2FwcGNhY2hlL25vbi1odG1sLnhodG1sID0gVElNRU9VVCBQQVNTCiAKKy8v
IExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4gaXNu
J3QgaW1wbGVtZW50ZWQKK0JVR1dLIFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1k
ZWxldGUuaHRtbCA9IEZBSUwKKwogLy8gTmV3IGZhaWx1cmVzIGZyb20gV2ViS2l0IHI1MTU3Nwog
QlVHQ1IyOTE2NCBXSU4gTElOVVggTUFDIDogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1w
bHVnaW5zLmh0bWwgPSBURVhUCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZp
c2lvbiA4MTM5OCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC00OTMsNiArNDkzLDcgQEAgZmFzdC9qcy9pMThuLWJpbmRpbmdzLWxvY2FsZS5o
dG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5LXRoZW4t
YmFjay5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwKIGh0dHAvdGVzdHMv
YXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKK2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRl
bGV0ZS5odG1sCiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG91YmxlLXF1b3RlZC12YWx1ZS13aXRoLXNl
bWktY29sb24uaHRtbAogaHR0cC90ZXN0cy9sb2FkaW5nL2JhZC1zY2hlbWUtc3ViZnJhbWUuaHRt
bAogaHR0cC90ZXN0cy9sb2FkaW5nL2JhZC1zZXJ2ZXItc3ViZnJhbWUuaHRtbApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA4MTM5OCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTMyMzQsNiArMzIzNCw5IEBAIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3BhZ2UtcmVsb2FkLWNhbmNlbC0KIGh0dHAvdGVzdHMvYXBwY2FjaGUv
YXV0aC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGguaHRtbAogCisj
IExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4gaXMg
bm90IGltcGxlbWVudGVkCitodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAor
CiAjIFtRdF1XZWIgSW5zcGVjdG9yOiBpbnNwZWN0b3IvZWxlbWVudHMvbXV0YXRlLXVua25vd24t
bm9kZS5odG1sIGZhaWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjQ1NwogaW5zcGVjdG9yL2VsZW1lbnRzL211dGF0ZS11bmtub3duLW5vZGUuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86201</attachid>
            <date>2011-03-18 13:11:41 -0700</date>
            <delta_ts>2011-03-18 13:34:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110318131139.patch</filename>
            <type>text/plain</type>
            <size>32220</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNDk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRvIGRlbGV0ZSBhbGwgQXBwbGljYXRpb24gQ2FjaGUg
Zm9yIGFuIG9yaWdpbiwgd2UgbXVzdCBvYnNvbGV0ZSBhbGwKKyAgICAgICAgaW4tbWVtb3J5IGNh
Y2hlIGdyb3VwcyBmb3IgdGhhdCBvcmlnaW4uIElmIGEgY2FjaGUgZ3JvdXAgaXNuJ3QgaW4gbWVt
b3J5LAorICAgICAgICB0aGVuIGl0IG11c3QgYmUgZGVsZXRlZCBmcm9tIGRpc2suIFRoZSBwcmV2
aW91cyBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgcmVtb3ZlZCBvbi1kaXNrIGNh
Y2hlIGdyb3VwcywgYnV0IGRpZCBub3QgbWFyayBpbi1tZW1vcnkgY2FjaGUgZ3JvdXBzIGFzIG9i
c29sZXRlLgorICAgICAgICBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpCisgICAgICAgIHdoZW4g
dGhlIERvY3VtZW50TG9hZGVyIHdhcyBkZXN0cm95ZWQuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorCiAyMDExLTAzLTE4ICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByODE0ODcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gODEzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtMTc5Niw2ICsxNzk2LDcgQEAgX19aTks3V2ViQ29yZTROb2RlMTZ0cmF2ZXJzZU5l
eHROb2RlRVBLUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KQorX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UxNHF1b3RhRm9yT3JpZ2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVSeAogX19aTjdXZWJDb3Jl
MjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0c2V0TWF4aW11bVNpemVFeAogX19aTjdXZWJDb3Jl
MjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0dXNhZ2VGb3JPcmlnaW5FUEtOU18xNFNlY3VyaXR5
T3JpZ2luRVJ4CkBAIC0xODA1LDcgKzE4MDYsNiBAQCBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlMTdzCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTh2
YWN1dW1EYXRhYmFzZUZpbGVFdgogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNXVEY3SGFzaFNldElOUzFfNlJlZlB0cklOU18xNFNl
Y3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0eU9yaWdpbkhhc2hFTlMxXzEwSGFzaFRyYWl0c0lT
NV9FRUVFCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjFzZXREZWZhdWx0
T3JpZ2luUXVvdGFFeAotX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTIyZGVs
ZXRlRW50cmllc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTIz
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyNnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luRVBLTlNf
MTRTZWN1cml0eU9yaWdpbkV4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
MzZyZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGVFUEtOU18xNFNlY3VyaXR5T3Jp
Z2luRVBOU18xNkFwcGxpY2F0aW9uQ2FjaGVFUngKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U1ZW1wdHlFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODEzOTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ2MiwxMyArNDYyLDEzIEBACiAJCTFBODVCMkI3MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxE
aXZFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTg1QjJCNTBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5oICovOyB9Owog
CQkxQThGNkIwMjBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkIwMTBEQjUzMDA2
MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4RjZCQkMwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE4RjZCQjEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3Bw
ICovOyB9OwotCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjIw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgfTsKKwkJMUE4RjZCQkQw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIyMERCNTVDREMwMDFEQjc5NCAvKiBB
cHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUE4RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QThGNkJCMzBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCAqLzsg
fTsKLQkJMUE4RjZCQkYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyB9OworCQkxQThG
NkJCRjBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAx
REI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoKTsgfTsgfTsKIAkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQThGNkJCNTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcCAqLzsgfTsKIAkJMUE4RjZCQzEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE4RjZCQjYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5oICovOyB9OwogCQkxQThGNkJDMjBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25D
YWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QThGNkJCNzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07
Ci0JCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCODBEQjU1
Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CisJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBs
aWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQThGNkJCODBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOEY2QkM1
MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCQTBEQjU1Q0RDMDAxREI3OTQgLyog
TWFuaWZlc3RQYXJzZXIuY3BwICovOyB9OwogCQkxQThGNkJDNjBEQjU1Q0RDMDAxREI3OTQgLyog
TWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBOEY2QkJCMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oICovOyB9
OwogCQkxQTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVF
RjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gODEzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTE4
Miw3ICsxODMsMzAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCgpCiAg
ICAgUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwog
ICAgIGZvciAoUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBpdC0+c2Vjb25kLT5jbGVhclN0b3JhZ2VJ
RCgpOwotfSAgICAKK30KKyAgICAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZGVsZXRlQ2FjaGVG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBWZWN0b3I8S1VSTD4gdXJs
czsKKyAgICBpZiAoIWNhY2hlU3RvcmFnZSgpLm1hbmlmZXN0VVJMcygmdXJscykpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgQXBwbGljYXRpb25DYWNoZSBtYW5pZmVz
dCBVUkxzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gTXVsdGlwbGUg
bWFuaWZlc3QgVVJMcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTZWN1cml0eU9yaWdpbiwgc28gd2Ug
bWlnaHQgYmUgY3JlYXRpbmcgZXh0cmEsIHdhc3RlZCBvcmlnaW5zIGhlcmUuCisgICAgLy8gVGhl
IGN1cnJlbnQgc2NoZW1hIGRvZXNuJ3QgYWxsb3cgZm9yIGEgbW9yZSBlZmZpY2llbnQgd2F5IG9m
IGRlbGV0aW5nIGJ5IG9yaWdpbi4KKyAgICBzaXplX3QgY291bnQgPSB1cmxzLnNpemUoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBtYW5pZmVzdE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
c1tpXSk7CisgICAgICAgIGlmIChtYW5pZmVzdE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQo
b3JpZ2luKSkgeworICAgICAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNh
Y2hlU3RvcmFnZSgpLmZpbmRJbk1lbW9yeUNhY2hlR3JvdXAodXJsc1tpXSk7CisgICAgICAgICAg
ICBpZiAoZ3JvdXApCisgICAgICAgICAgICAgICAgZ3JvdXAtPm1ha2VPYnNvbGV0ZSgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUNhY2hl
R3JvdXAodXJsc1tpXSk7CisgICAgICAgIH0KKyAgICB9Cit9CiAgICAgCiAjaWZuZGVmIE5ERUJV
Rwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkdW1wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gODEzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTYgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBLVVJMOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgVmVjdG9yPHN0ZDo6
cGFpcjxLVVJMLCBLVVJMPiA+IEZhbGxiYWNrVVJMVmVjdG9yOwogCiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBcHBsaWNhdGlvbkNhY2hlKTsgfQorICAgIAorICAgIHN0YXRpYyB2b2lk
IGRlbGV0ZUNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgCiAgICAgfkFwcGxp
Y2F0aW9uQ2FjaGUoKTsKIAogICAgIHZvaWQgYWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IHJlc291cmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAko
cmV2aXNpb24gODEzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBA
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICByZXR1cm4gZ3Jv
dXA7CiB9CiAKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jYWNoZXNJbk1lbW9yeS5nZXQobWFuaWZlc3RVUkwpOworfQorCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBoYXNMb2FkZWRIYXNoZXMgPSBmYWxzZTsKQEAgLTEzMDksMjQgKzEz
MTQsNiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zCiAgICAgfQog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgVmVjdG9yPEtVUkw+IHVybHM7Ci0gICAg
aWYgKCFtYW5pZmVzdFVSTHMoJnVybHMpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gTXVsdGlwbGUgbWFuaWZlc3QgVVJMcyBtaWdodCBzaGFyZSB0
aGUgc2FtZSBTZWN1cml0eU9yaWdpbiwgc28gd2UgbWlnaHQgYmUgY3JlYXRpbmcgZXh0cmEsIHdh
c3RlZCBvcmlnaW5zIGhlcmUuCi0gICAgLy8gVGhlIGN1cnJlbnQgc2NoZW1hIGRvZXNuJ3QgYWxs
b3cgZm9yIGEgbW9yZSBlZmZpY2llbnQgd2F5IG9mIGRlbGV0aW5nIGJ5IG9yaWdpbi4KLSAgICBz
aXplX3QgY291bnQgPSB1cmxzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtYW5pZmVzdE9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsc1tpXSk7Ci0gICAgICAgIGlmIChtYW5pZmVz
dE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQob3JpZ2luKSkKLSAgICAgICAgICAgIGRlbGV0
ZUNhY2hlR3JvdXAodXJsc1tpXSk7Ci0gICAgfQotfQotCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVBbGxFbnRyaWVzKCkKIHsKICAgICBlbXB0eSgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmgJKHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0
LDcgQEAgcHVibGljOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmFsbGJhY2tDYWNoZUdy
b3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRy
eSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgog
CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0
IEtVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1l
bW9yeUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCkgY29uc3Q7CiAgICAgdm9p
ZCBjYWNoZUdyb3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgIHZvaWQg
Y2FjaGVHcm91cE1hZGVPYnNvbGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICAgICAg
CkBAIC05NSw3ICs5Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmlsZSgp
OwogCiAgICAgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgU2VjdXJpdHlPcmlnaW5IYXNoPiYpOwotICAgIHZvaWQgZGVsZXRlRW50cmllc0Zv
ck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOwog
CiAgICAgc3RhdGljIGludDY0X3QgdW5rbm93blF1b3RhKCkgeyByZXR1cm4gLTE7IH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDgxNDk3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEg
IDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVy
IGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjQxNQorCisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDogY2FsbGluZyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRl
bGV0ZUNhY2hlR3JvdXBzRm9yT3JpZ2luCisgICAgICAgIGluc3RlYWQgb2YgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4uCisgICAgICAgIChXZWJLaXQ6Oldl
YkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKwogMjAx
MS0wMy0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
cHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA4MTM5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbkRhdGEuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBs
aWNhdGlvbkNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgpAQCAtODcsNyArODgsNyBAQCB2b2lkIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyOjpkZWxldGVFCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBjYWNoZVN0b3JhZ2UoKS5kZWxldGVFbnRyaWVzRm9yT3JpZ2luKG9y
aWdpbi5nZXQoKSk7CisgICAgQXBwbGljYXRpb25DYWNoZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4o
b3JpZ2luLmdldCgpKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4MTQ5NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDExLTAzLTE4ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVk
IHZpYSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKyAgICAg
ICAgCisgICAgICAgIFVzZSBuZXcgQXBwbGljYXRpb25DYWNoZSBBUEkgdG8gZGVsZXRlIGFsbCBj
YWNoZSBmb3IgYW4gb3JpZ2luLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGlj
YXRpb25DYWNoZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW06CisgICAgICAgICgrW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGVsZXRlT3JpZ2luOl0pOgor
CiAyMDExLTAzLTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gODEz
OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CiAKK0BjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKKwogQGludGVy
ZmFjZSBXZWJBcHBsaWNhdGlvbkNhY2hlOiBOU09iamVjdAogCiArIChsb25nIGxvbmcpbWF4aW11
bVNpemU7CkBAIC0zNCw1ICszNiw2IEBAIEBpbnRlcmZhY2UgV2ViQXBwbGljYXRpb25DYWNoZTog
TlNPYmplY3QKICsgKHZvaWQpc2V0RGVmYXVsdE9yaWdpblF1b3RhOihsb25nIGxvbmcpc2l6ZTsK
IAogKyAodm9pZClkZWxldGVBbGxBcHBsaWNhdGlvbkNhY2hlczsKKysgKHZvaWQpZGVsZXRlQ2Fj
aGVGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOwogCiBAZW5kCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0
aW9uQ2FjaGUubW0JKHJldmlzaW9uIDgxMzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsMTEgQEAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogCiAjaW1wb3J0
ICJXZWJBcHBsaWNhdGlvbkNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTgsNiArNjIs
MTEgQEAgKyAodm9pZClkZWxldGVBbGxBcHBsaWNhdGlvbkNhY2hlcwogICAgIGNhY2hlU3RvcmFn
ZSgpLmRlbGV0ZUFsbEVudHJpZXMoKTsKIH0KIAorKyAodm9pZClkZWxldGVDYWNoZUZvck9yaWdp
bjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KK3sKKyAgICBBcHBsaWNhdGlvbkNhY2hlOjpk
ZWxldGVDYWNoZUZvck9yaWdpbihbb3JpZ2luIF9jb3JlXSk7Cit9CisKIEBlbmQKIAogI2VuZGlm
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4MTQ5NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDExLTAzLTE4ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZpYSBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKGNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbkNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOiBBZGRpbmcgc3R1YnMuCisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6IAorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOiBBZGRp
bmcgc3R1Yi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9u
Q2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwOiBBZGRpbmcgc3R1Yi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOiBBZGRpbmcgc3R1Yi4KKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
OiBBZGRpbmcgc3R1Yi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW4pOgorCiAyMDExLTAzLTE4ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuIFRoaXMgd2FzIHJlYWxseSBB
ZGFtIFJvYmVuJ3MgZmF1bHQuIEkgc3dlYXIhCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MTM5OCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzg1LDYgKzM4NSwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMg
SlNWYWx1ZVJlZiBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gb3JpZ2luVVJMKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9u
KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwor
ICAgIGNvbnRyb2xsZXItPmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihvcmlnaW5VUkwu
Z2V0KCkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVt
ZW50YXRpb24KQEAgLTIxMDIsNiArMjExNiw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgY2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJB
bGxBcHBsaWNhdGlvbkNhY2hlcyIsIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXNDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2Vz
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3Jp
Z2luIiwgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlzdENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0Iiwg
Y2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJjbG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcmVkaXJlY3Rpb25EZXN0aW5hdGlvbkZvclVSTChzdGQ6OnN0cmluZyk7CiAg
ICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgdm9pZCBjbGVhckFsbERh
dGFiYXNlcygpOworICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3Ry
aW5nUmVmIG5hbWUpOwogICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICB2b2lk
IGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCk7CiAgICAgYm9vbCBjYWxsU2hvdWxkQ2xv
c2VPbldlYlZpZXcoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxMzk4KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoImFkZERpc2FsbG93ZWRVUkwiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZERpc2FsbG93ZWRVUkwpOwogICAgIGJpbmRNZXRob2QoImNhbGxT
aG91bGRDbG9zZU9uV2ViVmlldyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbFNob3VsZENs
b3NlT25XZWJWaWV3KTsKICAgICBiaW5kTWV0aG9kKCJjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVz
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKTsKKyAg
ICBiaW5kTWV0aG9kKCJjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4iLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik7CiAgICAgYmluZE1l
dGhvZCgiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFy
QmFja0ZvcndhcmRMaXN0KTsKICAgICBiaW5kTWV0aG9kKCJkdW1wQXNXZWJBcmNoaXZlIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpkdW1wQXNXZWJBcmNoaXZlKTsKICAgICBiaW5kTWV0aG9kKCJr
ZWVwV2ViSGlzdG9yeSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6a2VlcFdlYkhpc3RvcnkpOwpA
QCAtNzQzLDYgKzc0NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFw
cGxpCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBw
b3J0IGRlbGV0aW5nIGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4KKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRp
b24gQ2FjaGUgUXVvdGFzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MTM5OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4NCw2ICsyODQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBDbGVhcnMgYWxsIEFw
cGxpY2F0aW9uIENhY2hlcy4KICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIC8vIENsZWFycyBBcHBsaWNh
dGlvbiBDYWNoZSBmb3IgYW4gb3JpZ2luLgorICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hl
Rm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICAvLyBT
ZXRzIHRoZSBBcHBsaWNhdGlvbiBRdW90YSBmb3IgdGhlIGxvY2FsaG9zdCBvcmlnaW4uCiAgICAg
dm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA4MTM5OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDYgKzE0NSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpvYnNl
cnZlU3RvcmFnCiAgICAgW3N0b3JhZ2VEZWxlZ2F0ZSBsb2dOb3RpZmljYXRpb25zOm51bWJlciBj
b250cm9sbGVyOnRoaXNdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFw
cGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsKSk7CisKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0g
W1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKKyAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBk
ZWxldGVDYWNoZUZvck9yaWdpbjpvcmlnaW5dOworICAgIFtvcmlnaW4gcmVsZWFzZV07Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkKIHsKICAgICBb
W1dlYkRhdGFiYXNlTWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRlbGV0ZUFsbERh
dGFiYXNlc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUy
LDYgKzU1MiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpCiAg
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsK
IH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9y
T3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRv
IHN1cHBvcnQgZGVsZXRpbmcgYWxsIEFwcGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9yaWdpbi4KK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICBpZiAoIW1fdG9wTG9hZGluZ0Zy
YW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaAkocmV2aXNpb24gODEzOTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksNyBA
QCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBkaXNhYmxlSW1hZ2VMb2FkaW5nKCk7CiAKICAgICB2
b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKKyAgICB2b2lkIGNsZWFyQXBwbGljYXRp
b25DYWNoZUZvck9yaWdpbihjb25zdCBRU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgc2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAKICAgICB2
b2lkIHNldERhdGFiYXNlUXVvdGEoaW50IHNpemUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA4
MTM5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzNiw2ICs5MzYsMTEgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3Vw
cG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW4p
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBBcHBs
aWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4uCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVv
dGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENh
Y2hlIHF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91
dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA4MTM5OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDgsNiArMjQ4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVv
dGFzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2Fj
aGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dG8gc3VwcG9ydCBkZWxldGluZyBhbGwgQXBwbGljYXRpb25DYWNoZSBmb3IgYW4gb3JpZ2luLgor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4MTQ5NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDExLTAzLTE4ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZpYSBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKworICAgICAgICBU
aGlzIHRlc3QgY3JlYXRlcyBhbiBBcHBsaWNhdGlvbiBDYWNoZSBmb3IgdGhlIERSVCBvcmlnaW4s
IGRlbGV0ZXMgaXQgZm9yIHRoZSBvcmlnaW4sCisgICAgICAgIGFuZCB2ZXJpZmllcyB0aGF0IHRo
ZSBBcHBsaWNhdGlvbiBDYWNoZSBoYXMgb2Jzb2xldGUgc3RhdHVzLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29y
aWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMS0wMy0xOCAgU3Rl
cGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkOyBuZXcgdGVzdCBiYXNlbGluZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1RoaXMgdGVzdCBjaGVj
a3MgdGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJlY29tZSBvYnNvbGV0
ZSBhZnRlciBhcHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBmb3IgYSBzcGVjaWZpYyBvcmln
aW4uCisKK1BBU1MgLSBjYWNoZWQgaWZyYW1lLTEKK2NsZWFyaW5nIGNhY2hlIGZvciBvcmlnaW4K
K2FwcGNhY2hlX3N0YXR1cz01CitTVUNDRVNTIC0gY2FjaGUgd2FzIG1hZGUgb2Jzb2xldGUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVs
ZXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbi1kZWxldGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3Rh
cnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2Fs
bGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAg
IGFkZElGcmFtZVdpdGhBcHBDYWNoZSgpOworfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gYWRkSUZyYW1lV2l0aEFwcENh
Y2hlKCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5odG1s
IjsKKyAgICBpZnJhbWUuaWQgPSAiY2FjaGVkRnJhbWUiOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICAKKyAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgICAgICBpZiAoZXZlbnQuZGF0
YSA9PT0gIlBBU1MgLSBjYWNoZWQgaWZyYW1lLTEiKSB7CisgICAgICAgICAgICBsb2coImNsZWFy
aW5nIGNhY2hlIGZvciBvcmlnaW4iKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7
CisgICAgICAgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FjaGVk
RnJhbWUnKTsKKyAgICAgICAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoImFw
cGNhY2hlX3N0YXR1cyIsICIqIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0g
ImFwcGNhY2hlX3N0YXR1cz01Iil7CisgICAgICAgICAgICBsb2coIlNVQ0NFU1MgLSBjYWNoZSB3
YXMgbWFkZSBvYnNvbGV0ZSIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbG9nKCJGQUlMIC0gcmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNz
YWdlICIgKyBldmVudC5kYXRhKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
fQorICAgIH07Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnRUZXN0
KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwcyBj
b3JyZWN0bHkgYmVjb21lIG9ic29sZXRlIGFmdGVyIGFwcGxpY2F0aW9uIGNhY2hlIGlzIGRlbGV0
aW9uIGZvciBhIHNwZWNpZmljIG9yaWdpbi4KKzwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFt
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMCBAQAorPGh0bWwgbWFuaWZlc3Q9Im9yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0Ij4K
KzxzY3JpcHQ+CisvLyBpZnJhbWUtMSBpcyBleHBlY3RlZCB0byBzdWNjZWVkLgorYXBwbGljYXRp
b25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1Mg
LSBjYWNoZWQgaWZyYW1lLTEiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0g
ZnVuY3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIGVycm9yIGNhY2hpbmcgaWZy
YW1lLTEsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCIsICIqIik7IH07CithcHBsaWNhdGlvbkNh
Y2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlMIC0g
bm8gdXBkYXRlIGlmcmFtZS0xLCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBi
ZWZvcmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKKworCitmdW5jdGlvbiBmcmFtZU1lc3NhZ2VSZWNl
aXZlZChldmVudCkgeworICAgIGlmIChldmVudC5kYXRhID09PSAiYXBwY2FjaGVfc3RhdHVzIikg
eworICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImFwcGNhY2hlX3N0YXR1cz0iICsgYXBwbGlj
YXRpb25DYWNoZS5zdGF0dXMsICIqIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyZW50LnBv
c3RNZXNzYWdlKCJGQUlMIC0gdW5yZWNvZ25pemVkIG1lc3NhZ2UiLCAiKiIpOworICAgIH0KK30K
Kword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmcmFtZU1lc3NhZ2VSZWNlaXZl
ZCwgZmFsc2UpOworCis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29y
aWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUubWFuaWZl
c3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorQ0FDSEUgTUFOSUZFU1QKKworIyBUaGlz
IGFkZHMgfjEzSyB0byB0aGUgYXBwIGNhY2hlCisKK0NBQ0hFOgorYWJlLnBuZwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkocmV2aXNpb24gODEzOTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MjUsNiArMTcyNSw5IEBAIEJV
R0NSMjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQKIEJVR0NSMjg0NCBTS0lQIDog
aHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLmh0bWwgPSBUSU1FT1VUIFBB
U1MKIEJVR0NSMjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24taHRtbC54aHRtbCA9
IFRJTUVPVVQgUEFTUwogCisvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luIGlzbid0IGltcGxlbWVudGVkCitCVUdXSyBTS0lQIDogaHR0cC90ZXN0
cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwgPSBGQUlMCisKIC8vIE5ldyBmYWlsdXJlcyBm
cm9tIFdlYktpdCByNTE1NzcKIEJVR0NSMjkxNjQgV0lOIExJTlVYIE1BQyA6IGZhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sID0gVEVYVAogCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAkocmV2aXNpb24gODEzOTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDYgKzQ5Myw3IEBAIGZhc3QvanMvaTE4
bi1iaW5kaW5ncy1sb2NhbGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9jcmFzaC13aGVuLW5h
dmlnYXRpbmctYXdheS10aGVuLWJhY2suaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWxsYmFj
ay5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCitodHRwL3Rlc3Rz
L2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAogaHR0cC90ZXN0cy9jb29raWVzL2RvdWJsZS1x
dW90ZWQtdmFsdWUtd2l0aC1zZW1pLWNvbG9uLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQt
c2NoZW1lLXN1YmZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQtc2VydmVyLXN1YmZy
YW1lLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gODEzOTgpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM0
LDYgKzMyMzQsOSBAQCBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wYWdlLXJlbG9hZC1jYW5jZWwtCiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL2F1dGguaHRtbAogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9i
YXNpYy1hdXRoLmh0bWwKIAorIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luIGlzIG5vdCBpbXBsZW1lbnRlZAoraHR0cC90ZXN0cy9hcHBjYWNoZS9v
cmlnaW4tZGVsZXRlLmh0bWwKKwogIyBbUXRdV2ViIEluc3BlY3RvcjogaW5zcGVjdG9yL2VsZW1l
bnRzL211dGF0ZS11bmtub3duLW5vZGUuaHRtbCBmYWlscwogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NTcKIGluc3BlY3Rvci9lbGVtZW50cy9tdXRhdGUtdW5r
bm93bi1ub2RlLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86203</attachid>
            <date>2011-03-18 13:34:10 -0700</date>
            <delta_ts>2011-03-18 16:54:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110318133409.patch</filename>
            <type>text/plain</type>
            <size>32173</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRvIGRlbGV0ZSBhbGwgQXBwbGljYXRpb24gQ2FjaGUg
Zm9yIGFuIG9yaWdpbiwgd2UgbXVzdCBvYnNvbGV0ZSBhbGwKKyAgICAgICAgaW4tbWVtb3J5IGNh
Y2hlIGdyb3VwcyBmb3IgdGhhdCBvcmlnaW4uIElmIGEgY2FjaGUgZ3JvdXAgaXNuJ3QgaW4gbWVt
b3J5LAorICAgICAgICB0aGVuIGl0IG11c3QgYmUgZGVsZXRlZCBmcm9tIGRpc2suIFRoZSBwcmV2
aW91cyBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgcmVtb3ZlZCBvbi1kaXNrIGNh
Y2hlIGdyb3VwcywgYnV0IGRpZCBub3QgbWFyayBpbi1tZW1vcnkgY2FjaGUgZ3JvdXBzIGFzIG9i
c29sZXRlLgorICAgICAgICBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpCisgICAgICAgIHdoZW4g
dGhlIERvY3VtZW50TG9hZGVyIHdhcyBkZXN0cm95ZWQuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorCiAyMDExLTAzLTE4ICBB
bmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MTUwNikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk1LDYg
KzE3OTUsNyBAQCBfX1pOSzdXZWJDb3JlNE5vZGUxNnRyYXZlcnNlTmV4dE5vZGVFUEtTCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCitfX1pON1dlYkNvcmUx
NkFwcGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3Jp
Z2luRQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0cXVvdGFGb3JPcmln
aW5FUEtOU18xNFNlY3VyaXR5T3JpZ2luRVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlMTR1c2FnZUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKQEAgLTE4
MDQsNyArMTgwNSw2IEBAIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxN3MK
IF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOHZhY3V1bURhdGFiYXNlRmls
ZUV2CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTlnZXRPcmlnaW5zV2l0
aENhY2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVO
U18xOFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMXNldERlZmF1bHRPcmlnaW5RdW90YUV4Ci1f
X1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjJkZWxldGVFbnRyaWVzRm9yT3Jp
Z2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTI2c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW5FUEtOU18xNFNlY3VyaXR5T3JpZ2lu
RXgKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UzNnJlbWFpbmluZ1NpemVG
b3JPcmlnaW5FeGNsdWRpbmdDYWNoZUVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUE5TXzE2QXBwbGlj
YXRpb25DYWNoZUVSeAogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbXB0
eUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA4MTUwNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDYyLDEzICs0NjIsMTMg
QEAKIAkJMUE4NUIyQjcwQTFCMkFDNzAwRDhDODdDIC8qIEpTSFRNTERpdkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODVCMkI1MEExQjJB
QzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggKi87IH07CiAJCTFBOEY2QjAyMERCNTMw
MDYwMDFEQjc5NCAvKiBTdWJzdGl0dXRlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QjAxMERCNTMwMDYwMDFEQjc5NCAvKiBTdWJz
dGl0dXRlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQThGNkJCQzBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJC
MTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07Ci0JCTFBOEY2
QkJEMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMjBEQjU1Q0RDMDAxREI3OTQg
LyogQXBwbGljYXRpb25DYWNoZS5oICovOyB9OworCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQg
LyogQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE4RjZCQjIwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQThG
NkJCRTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIzMERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwICovOyB9OwotCQkxQThGNkJCRjBE
QjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAxREI3OTQg
LyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggKi87IH07CisJCTFBOEY2QkJGMERCNTVDREMwMDFE
Qjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI0MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNh
dGlvbkNhY2hlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9Owog
CQkxQThGNkJDMDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI1
MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwICovOyB9Owog
CQkxQThGNkJDMTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNjBE
QjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggKi87IH07CiAJCTFB
OEY2QkMyMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI3MERCNTVDREMw
MDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmNwcCAqLzsgfTsKLQkJMUE4RjZCQzMwREI1
NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI4MERCNTVDREMwMDFEQjc5NCAvKiBE
T01BcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKKwkJMUE4RjZCQzMwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI4MERC
NTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4RjZCQzUwREI1NUNEQzAwMURCNzk0
IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBOEY2QkJBMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5j
cHAgKi87IH07CiAJCTFBOEY2QkM2MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQkIw
REI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmggKi87IH07CiAJCTFBOTg5NTZCMEFB
NzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5l
dC5jcHAgKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiA4MTUwNikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIApAQCAtMTgyLDcgKzE4MywzMCBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmNsZWFyU3RvcmFnZUlEKCkKICAgICBSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChSZXNvdXJj
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCiAgICAgICAgIGl0LT5zZWNvbmQtPmNsZWFyU3RvcmFnZUlEKCk7Ci19ICAgIAorfQor
ICAgIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQoreworICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAgIGlmICghY2Fj
aGVTdG9yYWdlKCkubWFuaWZlc3RVUkxzKCZ1cmxzKSkgeworICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hlIG1hbmlmZXN0IFVSTHMiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1p
Z2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3JpZ2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGlu
ZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4KKyAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEg
ZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCB3YXkgb2YgZGVsZXRpbmcgYnkgb3Jp
Z2luLgorICAgIHNpemVfdCBjb3VudCA9IHVybHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1h
bmlmZXN0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmxzW2ldKTsKKyAgICAgICAg
aWYgKG1hbmlmZXN0T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKSB7CisgICAg
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gY2FjaGVTdG9yYWdlKCkuZmlu
ZEluTWVtb3J5Q2FjaGVHcm91cCh1cmxzW2ldKTsKKyAgICAgICAgICAgIGlmIChncm91cCkKKyAg
ICAgICAgICAgICAgICBncm91cC0+bWFrZU9ic29sZXRlKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlQ2FjaGVHcm91cCh1cmxzW2ldKTsK
KyAgICAgICAgfQorICAgIH0KK30KICAgICAKICNpZm5kZWYgTkRFQlVHCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGU6OmR1bXAoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA4MTUwNikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDEyICs0MiwxNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEtVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEtVUkwsIEtVUkw+
ID4gRmFsbGJhY2tVUkxWZWN0b3I7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEFw
cGxpY2F0aW9uQ2FjaGUpOyB9CisgICAgCisgICAgc3RhdGljIHZvaWQgZGVsZXRlQ2FjaGVGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICAKICAgICB+QXBwbGljYXRpb25DYWNoZSgpOwog
CiAgICAgdm9pZCBhZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gcmVzb3VyY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiA4MTUwNikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTEgQEAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIHJldHVybiBncm91cDsKIH0KIAorQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2Fj
aGVHcm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKSBjb25zdAoreworICAgIHJldHVybiBt
X2NhY2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7Cit9CisKIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKQogewogICAgIHN0YXRpYyBib29s
IGhhc0xvYWRlZEhhc2hlcyA9IGZhbHNlOwpAQCAtMTMwOSwyNCArMTMxNCw2IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmdldE9yaWdpbnMKICAgICB9CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKLXsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKLSAgICBpZiAoIW1hbmlmZXN0VVJM
cygmdXJscykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgQXBwbGlj
YXRpb25DYWNoZSBtYW5pZmVzdCBVUkxzIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5
T3JpZ2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVy
ZS4KLSAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVm
ZmljaWVudCB3YXkgb2YgZGVsZXRpbmcgYnkgb3JpZ2luLgotICAgIHNpemVfdCBjb3VudCA9IHVy
bHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAg
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1hbmlmZXN0T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmxzW2ldKTsKLSAgICAgICAgaWYgKG1hbmlmZXN0T3JpZ2luLT5pc1NhbWVT
Y2hlbWVIb3N0UG9ydChvcmlnaW4pKQotICAgICAgICAgICAgZGVsZXRlQ2FjaGVHcm91cCh1cmxz
W2ldKTsKLSAgICB9Ci19Ci0KIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFs
bEVudHJpZXMoKQogewogICAgIGVtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAkocmV2aXNp
b24gODE1MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3Qg
S1VSTCYpOyAvLyBDYWNoZSB0aGF0IGhhcyBhIGZhbGxiYWNrIGVudHJ5IHRvIGxvYWQgYSBtYWlu
IHJlc291cmNlIGZyb20gaWYgbm9ybWFsIGxvYWRpbmcgZmFpbHMuCiAKICAgICBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RV
UkwpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZEluTWVtb3J5Q2FjaGVHcm91cChj
b25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKSBjb25zdDsKICAgICB2b2lkIGNhY2hlR3JvdXBEZXN0
cm95ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgdm9pZCBjYWNoZUdyb3VwTWFkZU9i
c29sZXRlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgICAgICAKQEAgLTk1LDcgKzk2LDYg
QEAgcHVibGljOgogICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CiAKICAgICB2b2lkIGdl
dE9yaWdpbnNXaXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0
eU9yaWdpbkhhc2g+Jik7Ci0gICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICBzdGF0aWMgaW50
NjRfdCB1bmtub3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gODE1MDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMS0wMy0xOCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2
aWEgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuY3BwOiBjYWxsaW5nIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsZXRlQ2FjaGVHcm91cHNG
b3JPcmlnaW4KKyAgICAgICAgaW5zdGVhZCBvZiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVs
ZXRlRW50cmllc0Zvck9yaWdpbi4KKyAgICAgICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorCiAyMDExLTAzLTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUv
V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHAJKHJldmlzaW9uIDgxNTA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBs
aWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5IYXNoLmg+CkBAIC04Nyw3ICs4OCw3IEBAIHZvaWQgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXI6OmRlbGV0ZUUKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAg
ICBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTA2KQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorICAgICAgICAKKyAgICAgICAgVXNl
IG5ldyBBcHBsaWNhdGlvbkNhY2hlIEFQSSB0byBkZWxldGUgYWxsIGNhY2hlIGZvciBhbiBvcmln
aW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbToKKyAgICAgICAg
KCtbV2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVPcmlnaW46XSk6CisKIDIwMTEtMDMtMTcgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBs
aWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA4MTUwNikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KIAorQGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworCiBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0
aW9uQ2FjaGU6IE5TT2JqZWN0CiAKICsgKGxvbmcgbG9uZyltYXhpbXVtU2l6ZTsKQEAgLTM0LDUg
KzM2LDYgQEAgQGludGVyZmFjZSBXZWJBcHBsaWNhdGlvbkNhY2hlOiBOU09iamVjdAogKyAodm9p
ZClzZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxvbmcgbG9uZylzaXplOwogCiArICh2b2lkKWRlbGV0
ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzOworKyAodm9pZClkZWxldGVDYWNoZUZvck9yaWdpbjooV2Vi
U2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQkocmV2
aXNpb24gODE1MDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBs
aWNhdGlvbkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwxMSBAQAogI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9u
Q2FjaGUuaCIKKworI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OCw2ICs2MiwxMSBAQCArICh2b2lkKWRl
bGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCiAgICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlQWxsRW50
cmllcygpOwogfQogCisrICh2b2lkKWRlbGV0ZUNhY2hlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbgoreworICAgIEFwcGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3Jp
Z2luKFtvcmlnaW4gX2NvcmVdKTsKK30KKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTA2KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEt
MDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAg
aXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoY2xlYXJBcHBsaWNhdGlvbkNhY2hl
Rm9yT3JpZ2luQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRp
Y0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6IEFkZGluZyBzdHVicy4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBbGxBcHBsaWNhdGlvbkNhY2hlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKTogCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06IEFkZGluZyBzdHViLgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6
IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGlj
YXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6IEFkZGluZyBzdHViLgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9y
aWdpbik6CisKIDIwMTEtMDMtMTggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgYnVpbGQgZml4CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MTUwNikKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2
LDYgKzM4NiwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNW
YWx1ZVJlZiBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gb3JpZ2luVVJMKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsK
KworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5
b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihvcmlnaW5VUkwuZ2V0
KCkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50
YXRpb24KQEAgLTIxMDMsNiArMjExNyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RD
b250cm9sbGVyOjoKICAgICAgICAgeyAiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgY2FsbFNo
b3VsZENsb3NlT25XZWJWaWV3Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJBbGxB
cHBsaWNhdGlvbkNhY2hlcyIsIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXNDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2VzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2lu
IiwgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlzdENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0IiwgY2xl
YXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJj
bG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gODE1MDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgcmVkaXJlY3Rpb25EZXN0aW5hdGlvbkZvclVSTChzdGQ6OnN0cmluZyk7CiAgICAg
dm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgdm9pZCBjbGVhckFsbERhdGFi
YXNlcygpOworICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5n
UmVmIG5hbWUpOwogICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICB2b2lkIGNs
ZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCk7CiAgICAgYm9vbCBjYWxsU2hvdWxkQ2xvc2VP
bldlYlZpZXcoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxNTA2KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRl
c3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoImFkZERpc2FsbG93ZWRVUkwiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFkZERpc2FsbG93ZWRVUkwpOwogICAgIGJpbmRNZXRob2QoImNhbGxTaG91
bGRDbG9zZU9uV2ViVmlldyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbFNob3VsZENsb3Nl
T25XZWJWaWV3KTsKICAgICBiaW5kTWV0aG9kKCJjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKTsKKyAgICBi
aW5kTWV0aG9kKCJjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4iLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik7CiAgICAgYmluZE1ldGhv
ZCgiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQmFj
a0ZvcndhcmRMaXN0KTsKICAgICBiaW5kTWV0aG9kKCJkdW1wQXNXZWJBcmNoaXZlIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpkdW1wQXNXZWJBcmNoaXZlKTsKICAgICBiaW5kTWV0aG9kKCJrZWVw
V2ViSGlzdG9yeSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6a2VlcFdlYkhpc3RvcnkpOwpAQCAt
NzQzLDYgKzc0NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxp
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0
IGRlbGV0aW5nIGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4KKyAgICByZXN1bHQt
PnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24g
Q2FjaGUgUXVvdGFzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MTUwNikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4NCw2ICsyODQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBDbGVhcnMgYWxsIEFwcGxp
Y2F0aW9uIENhY2hlcy4KICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIC8vIENsZWFycyBBcHBsaWNhdGlv
biBDYWNoZSBmb3IgYW4gb3JpZ2luLgorICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9y
T3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICAvLyBTZXRz
IHRoZSBBcHBsaWNhdGlvbiBRdW90YSBmb3IgdGhlIGxvY2FsaG9zdCBvcmlnaW4uCiAgICAgdm9p
ZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA4MTUwNikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDYgKzE0NSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpvYnNlcnZl
U3RvcmFnCiAgICAgW3N0b3JhZ2VEZWxlZ2F0ZSBsb2dOb3RpZmljYXRpb25zOm51bWJlciBjb250
cm9sbGVyOnRoaXNdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgdXJsKSk7CisKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tX
ZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKKyAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBkZWxl
dGVDYWNoZUZvck9yaWdpbjpvcmlnaW5dOworICAgIFtvcmlnaW4gcmVsZWFzZV07Cit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkKIHsKICAgICBbW1dl
YkRhdGFiYXNlTWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRlbGV0ZUFsbERhdGFi
YXNlc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODE1MDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUyLDYg
KzU1MiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpCiAgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3Jp
Z2luKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1
cHBvcnQgZGVsZXRpbmcgYWxsIEFwcGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9yaWdpbi4KK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICBpZiAoIW1fdG9wTG9hZGluZ0ZyYW1l
KQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaAkocmV2aXNpb24gODE1MDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksNyBAQCBw
dWJsaWMgc2xvdHM6CiAgICAgdm9pZCBkaXNhYmxlSW1hZ2VMb2FkaW5nKCk7CiAKICAgICB2b2lk
IGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKKyAgICB2b2lkIGNsZWFyQXBwbGljYXRpb25D
YWNoZUZvck9yaWdpbihjb25zdCBRU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgc2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAKICAgICB2b2lk
IHNldERhdGFiYXNlUXVvdGEoaW50IHNpemUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA4MTUw
NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkzNiw2ICs5MzYsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9y
dCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW4pCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBBcHBsaWNh
dGlvbkNhY2hlIGZvciBhbiBvcmlnaW4uCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEp
CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENhY2hl
IHF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA4MTUwNikKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgs
NiArMjQ4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVvdGFz
LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVG
b3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8g
c3VwcG9ydCBkZWxldGluZyBhbGwgQXBwbGljYXRpb25DYWNoZSBmb3IgYW4gb3JpZ2luLgorfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4
MTUwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIxIEBACisyMDExLTAzLTE4ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGljYXRp
b25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZpYSBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKworICAgICAgICBUaGlz
IHRlc3QgY3JlYXRlcyBhbiBBcHBsaWNhdGlvbiBDYWNoZSBmb3IgdGhlIERSVCBvcmlnaW4sIGRl
bGV0ZXMgaXQgZm9yIHRoZSBvcmlnaW4sCisgICAgICAgIGFuZCB2ZXJpZmllcyB0aGF0IHRoZSBB
cHBsaWNhdGlvbiBDYWNoZSBoYXMgb2Jzb2xldGUgc3RhdHVzLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdp
bi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMS0wMy0xOCAgU3RlcGhl
biBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
OyBuZXcgdGVzdCBiYXNlbGluZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1RoaXMgdGVzdCBjaGVja3Mg
dGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJlY29tZSBvYnNvbGV0ZSBh
ZnRlciBhcHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBmb3IgYSBzcGVjaWZpYyBvcmlnaW4u
CisKK1BBU1MgLSBjYWNoZWQgaWZyYW1lLTEKK2NsZWFyaW5nIGNhY2hlIGZvciBvcmlnaW4KK2Fw
cGNhY2hlX3N0YXR1cz01CitTVUNDRVNTIC0gY2FjaGUgd2FzIG1hZGUgb2Jzb2xldGUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1kZWxldGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3RhcnRU
ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJh
Y2tzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGFk
ZElGcmFtZVdpdGhBcHBDYWNoZSgpOworfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gYWRkSUZyYW1lV2l0aEFwcENhY2hl
KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
KyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5odG1sIjsK
KyAgICBpZnJhbWUuaWQgPSAiY2FjaGVkRnJhbWUiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaWZyYW1lKTsKKyAgICAKKyAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgICAgICBpZiAoZXZlbnQuZGF0YSA9
PT0gIlBBU1MgLSBjYWNoZWQgaWZyYW1lLTEiKSB7CisgICAgICAgICAgICBsb2coImNsZWFyaW5n
IGNhY2hlIGZvciBvcmlnaW4iKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
ZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7Cisg
ICAgICAgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FjaGVkRnJh
bWUnKTsKKyAgICAgICAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoImFwcGNh
Y2hlX3N0YXR1cyIsICIqIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gImFw
cGNhY2hlX3N0YXR1cz01Iil7CisgICAgICAgICAgICBsb2coIlNVQ0NFU1MgLSBjYWNoZSB3YXMg
bWFkZSBvYnNvbGV0ZSIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbG9nKCJGQUlMIC0gcmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdl
ICIgKyBldmVudC5kYXRhKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH07Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCki
PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwcyBjb3Jy
ZWN0bHkgYmVjb21lIG9ic29sZXRlIGFmdGVyIGFwcGxpY2F0aW9uIGNhY2hlIGlzIGRlbGV0aW9u
IGZvciBhIHNwZWNpZmljIG9yaWdpbi4KKzwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MCBAQAorPGh0bWwgbWFuaWZlc3Q9Im9yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0Ij4KKzxz
Y3JpcHQ+CisvLyBpZnJhbWUtMSBpcyBleHBlY3RlZCB0byBzdWNjZWVkLgorYXBwbGljYXRpb25D
YWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1MgLSBj
YWNoZWQgaWZyYW1lLTEiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0gZnVu
Y3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIGVycm9yIGNhY2hpbmcgaWZyYW1l
LTEsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCIsICIqIik7IH07CithcHBsaWNhdGlvbkNhY2hl
Lm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlMIC0gbm8g
dXBkYXRlIGlmcmFtZS0xLCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZv
cmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKKworCitmdW5jdGlvbiBmcmFtZU1lc3NhZ2VSZWNlaXZl
ZChldmVudCkgeworICAgIGlmIChldmVudC5kYXRhID09PSAiYXBwY2FjaGVfc3RhdHVzIikgewor
ICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImFwcGNhY2hlX3N0YXR1cz0iICsgYXBwbGljYXRp
b25DYWNoZS5zdGF0dXMsICIqIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyZW50LnBvc3RN
ZXNzYWdlKCJGQUlMIC0gdW5yZWNvZ25pemVkIG1lc3NhZ2UiLCAiKiIpOworICAgIH0KK30KKwor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmcmFtZU1lc3NhZ2VSZWNlaXZlZCwg
ZmFsc2UpOworCis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdp
bi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUubWFuaWZlc3QJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorQ0FDSEUgTUFOSUZFU1QKKworIyBUaGlzIGFk
ZHMgfjEzSyB0byB0aGUgYXBwIGNhY2hlCisKK0NBQ0hFOgorYWJlLnBuZwpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAko
cmV2aXNpb24gODE1MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MjUsNiArMTcyNSw5IEBAIEJVR0NS
Mjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQKIEJVR0NSMjg0NCBTS0lQIDogaHR0
cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLmh0bWwgPSBUSU1FT1VUIFBBU1MK
IEJVR0NSMjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24taHRtbC54aHRtbCA9IFRJ
TUVPVVQgUEFTUwogCisvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luIGlzbid0IGltcGxlbWVudGVkCitCVUdXSyBTS0lQIDogaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwgPSBGQUlMCisKIC8vIE5ldyBmYWlsdXJlcyBmcm9t
IFdlYktpdCByNTE1NzcKIEJVR0NSMjkxNjQgV0lOIExJTlVYIE1BQyA6IGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sID0gVEVYVAogCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZAkocmV2aXNpb24gODE1MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDYgKzQ5Myw3IEBAIGZhc3QvanMvaTE4bi1i
aW5kaW5ncy1sb2NhbGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9jcmFzaC13aGVuLW5hdmln
YXRpbmctYXdheS10aGVuLWJhY2suaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5o
dG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCitodHRwL3Rlc3RzL2Fw
cGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAogaHR0cC90ZXN0cy9jb29raWVzL2RvdWJsZS1xdW90
ZWQtdmFsdWUtd2l0aC1zZW1pLWNvbG9uLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQtc2No
ZW1lLXN1YmZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQtc2VydmVyLXN1YmZyYW1l
Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gODE1MDYpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM1LDYg
KzMyMzUsOSBAQCBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wYWdlLXJlbG9hZC1jYW5jZWwtCiBodHRw
L3Rlc3RzL2FwcGNhY2hlL2F1dGguaHRtbAogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9iYXNp
Yy1hdXRoLmh0bWwKIAorIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luIGlzIG5vdCBpbXBsZW1lbnRlZAoraHR0cC90ZXN0cy9hcHBjYWNoZS9vcmln
aW4tZGVsZXRlLmh0bWwKKwogIyBSRUdSRVNTSU9OKDgxMzc0LCA4MTM4NCk6IGVkaXRpbmcvZGVs
ZXRpbmcvNTIwNjMxMS0xLmh0bWwgaGl0cyBhc3NlcnRpb24gb24gbm9uLU1hYyBwbGF0Zm9ybXMK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NTk5CiBlZGl0aW5n
L2RlbGV0aW5nLzUyMDYzMTEtMS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86242</attachid>
            <date>2011-03-18 16:54:26 -0700</date>
            <delta_ts>2011-03-18 16:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110318165425.patch</filename>
            <type>text/plain</type>
            <size>32552</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRvIGRlbGV0ZSBhbGwgQXBwbGljYXRpb24gQ2FjaGUg
Zm9yIGFuIG9yaWdpbiwgd2UgbXVzdCBvYnNvbGV0ZSBhbGwKKyAgICAgICAgaW4tbWVtb3J5IGNh
Y2hlIGdyb3VwcyBmb3IgdGhhdCBvcmlnaW4uIElmIGEgY2FjaGUgZ3JvdXAgaXNuJ3QgaW4gbWVt
b3J5LAorICAgICAgICB0aGVuIGl0IG11c3QgYmUgZGVsZXRlZCBmcm9tIGRpc2suIFRoZSBwcmV2
aW91cyBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgcmVtb3ZlZCBvbi1kaXNrIGNh
Y2hlIGdyb3VwcywgYnV0IGRpZCBub3QgbWFyayBpbi1tZW1vcnkgY2FjaGUgZ3JvdXBzIGFzIG9i
c29sZXRlLgorICAgICAgICBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpCisgICAgICAgIHdoZW4g
dGhlIERvY3VtZW50TG9hZGVyIHdhcyBkZXN0cm95ZWQuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorCiAyMDExLTAzLTE4ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDgx
NTM1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTE3OTUsNiArMTc5NSw3IEBAIF9fWk5LN1dlYkNvcmU0Tm9kZTE2dHJhdmVyc2VOZXh0Tm9kZUVQ
S1MKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKK19fWk43
V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTIwZGVsZXRlQ2FjaGVGb3JPcmlnaW5FUE5TXzE0U2Vj
dXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRxdW90
YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKIF9fWk43V2ViQ29yZTIzQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKIF9fWk43V2ViQ29yZTIzQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UxNHVzYWdlRm9yT3JpZ2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVS
eApAQCAtMTgwNCw3ICsxODA1LDYgQEAgX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTE3cwogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE4dmFjdXVtRGF0
YWJhc2VGaWxlRXYKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOWdldE9y
aWdpbnNXaXRoQ2FjaGVFUk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9y
aWdpbkVFRU5TXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVFRQog
X19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTIxc2V0RGVmYXVsdE9yaWdpblF1
b3RhRXgKLV9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMmRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlMjZzdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJp
dHlPcmlnaW5FeAogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTM2cmVtYWlu
aW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVQTlNf
MTZBcHBsaWNhdGlvbkNhY2hlRVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlNWVtcHR5RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgxNTM1KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsMTMg
KzQ2MiwxMyBAQAogCQkxQTg1QjJCNzBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4NUIy
QjUwQTFCMkFDNzAwRDhDODdDIC8qIEpTSFRNTERpdkVsZW1lbnQuaCAqLzsgfTsKIAkJMUE4RjZC
MDIwREI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCMDEwREI1MzAwNjAwMURCNzk0
IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTFBOEY2QkJDMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlv
bkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBOEY2QkIxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCAqLzsgfTsK
LQkJMUE4RjZCQkQwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIyMERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggKi87IH07CisJCTFBOEY2QkJEMERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMjBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRp
b25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFBOEY2QkJFMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjMw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgKi87IH07Ci0JCTFB
OEY2QkJGMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI0MERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCAqLzsgfTsKKwkJMUE4RjZCQkYwREI1
NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQwREI1NUNEQzAwMURCNzk0IC8q
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CiAJCTFBOEY2QkMwMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4RjZCQjUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Ki87IH07CiAJCTFBOEY2QkMxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OEY2QkI2MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCAqLzsg
fTsKIAkJMUE4RjZCQzIwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjcw
REI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwICovOyB9OwotCQkxQThG
NkJDMzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjgwREI1NUNEQzAwMURC
Nzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
ICgpOyB9OyB9OworCQkxQThGNkJDMzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4
RjZCQjgwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQThGNkJDNTBEQjU1Q0RD
MDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQkEwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmNwcCAqLzsgfTsKIAkJMUE4RjZCQzYwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QThGNkJCQjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuaCAqLzsgfTsKIAkJMUE5
ODk1NkIwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyog
S1VSTENGTmV0LmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDgxNTM1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC0xODIsNyArMTgz
LDI5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6Y2xlYXJTdG9yYWdlSUQoKQogICAgIFJlc291
cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3Ig
KFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+Y2xlYXJTdG9yYWdlSUQoKTsKLX0g
ICAgCit9CisgICAgCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgVmVjdG9yPEtVUkw+IHVybHM7CisgICAg
aWYgKCFjYWNoZVN0b3JhZ2UoKS5tYW5pZmVzdFVSTHMoJnVybHMpKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgS1VSTCBvcmlnaW5VUkwoS1VSTCgpLCBv
cmlnaW4tPnRvU3RyaW5nKCkpOworCisgICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlmIChwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsc1tpXSwgb3JpZ2luVVJMKSkgeworICAgICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNhY2hlU3RvcmFnZSgpLmZpbmRJbk1l
bW9yeUNhY2hlR3JvdXAodXJsc1tpXSk7CisgICAgICAgICAgICBpZiAoZ3JvdXApCisgICAgICAg
ICAgICAgICAgZ3JvdXAtPm1ha2VPYnNvbGV0ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUNhY2hlR3JvdXAodXJsc1tpXSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CiAgICAgCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlOjpkdW1wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miwx
MiArNDIsMTYgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBLVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxLVVJMLCBLVVJMPiA+IEZh
bGxiYWNrVVJMVmVjdG9yOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlIDogcHVibGljIFJlZkNv
dW50ZWQ8QXBwbGljYXRpb25DYWNoZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBsaWNh
dGlvbkNhY2hlKTsgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUNhY2hlRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKik7CisgICAgCiAgICAgfkFwcGxpY2F0aW9uQ2FjaGUoKTsKIAogICAg
IHZvaWQgYWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHJl
c291cmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gODE1MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogQXBwbGljYXRpb25DYWNoZVMKICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKK0FwcGxpY2F0aW9u
Q2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3Jv
dXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FjaGVz
SW5NZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpCiB7CiAgICAgc3RhdGljIGJvb2wgaGFzTG9h
ZGVkSGFzaGVzID0gZmFsc2U7CkBAIC0xMzA5LDI0ICsxMzE0LDYgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2lucwogICAgIH0KIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQotewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOwotICAgIGlmICghbWFuaWZlc3RVUkxzKCZ1cmxz
KSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNh
Y2hlIG1hbmlmZXN0IFVSTHMiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE11
bHRpcGxlIG1hbmlmZXN0IFVSTHMgbWlnaHQgc2hhcmUgdGhlIHNhbWUgU2VjdXJpdHlPcmlnaW4s
IHNvIHdlIG1pZ2h0IGJlIGNyZWF0aW5nIGV4dHJhLCB3YXN0ZWQgb3JpZ2lucyBoZXJlLgotICAg
IC8vIFRoZSBjdXJyZW50IHNjaGVtYSBkb2Vzbid0IGFsbG93IGZvciBhIG1vcmUgZWZmaWNpZW50
IHdheSBvZiBkZWxldGluZyBieSBvcmlnaW4uCi0gICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXpl
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbWFuaWZlc3RPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybHNbaV0pOwotICAgICAgICBpZiAobWFuaWZlc3RPcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KG9yaWdpbikpCi0gICAgICAgICAgICBkZWxldGVDYWNoZUdyb3VwKHVybHNbaV0pOwot
ICAgIH0KLX0KLQogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQWxsRW50cmll
cygpCiB7CiAgICAgZW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiA4MTUz
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJik7
IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3Vy
Y2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Cisg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMKSBjb25zdDsKICAgICB2b2lkIGNhY2hlR3JvdXBEZXN0cm95ZWQoQXBw
bGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgdm9pZCBjYWNoZUdyb3VwTWFkZU9ic29sZXRlKEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgICAgICAKQEAgLTk1LDcgKzk2LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CiAKICAgICB2b2lkIGdldE9yaWdpbnNX
aXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhh
c2g+Jik7Ci0gICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CiAgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICBzdGF0aWMgaW50NjRfdCB1bmtu
b3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODE1MzUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxMS0wMy0xOCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOiBj
YWxsaW5nIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsZXRlQ2FjaGVHcm91cHNGb3JPcmlnaW4K
KyAgICAgICAgaW5zdGVhZCBvZiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmll
c0Zvck9yaWdpbi4KKyAgICAgICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXI6
OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorCiAyMDExLTAzLTE4ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNw
cAkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0
aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhh
c2guaD4KQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcjo6
ZGVsZXRlRQogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgY2Fj
aGVTdG9yYWdlKCkuZGVsZXRlRW50cmllc0Zvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIEFw
cGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wMy0xOCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisgICAgICAgIAorICAgICAgICBVc2UgbmV3
IEFwcGxpY2F0aW9uQ2FjaGUgQVBJIHRvIGRlbGV0ZSBhbGwgY2FjaGUgZm9yIGFuIG9yaWdpbi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAoK1tX
ZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZU9yaWdpbjpdKToKKwogMjAxMS0wMy0xNyAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0
aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDgxNTM1KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgog
CitAY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisKIEBpbnRlcmZhY2UgV2ViQXBwbGljYXRpb25D
YWNoZTogTlNPYmplY3QKIAogKyAobG9uZyBsb25nKW1heGltdW1TaXplOwpAQCAtMzQsNSArMzYs
OCBAQCBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9uQ2FjaGU6IE5TT2JqZWN0CiArICh2b2lkKXNl
dERlZmF1bHRPcmlnaW5RdW90YToobG9uZyBsb25nKXNpemU7CiAKICsgKHZvaWQpZGVsZXRlQWxs
QXBwbGljYXRpb25DYWNoZXM7CisrICh2b2lkKWRlbGV0ZUNhY2hlRm9yT3JpZ2luOihXZWJTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbjsKKworKyAoTlNBcnJheSAqKWdldE9yaWdpbnNXaXRoQ2FjaGU7
CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiwxMSBAQAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCiAKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKKworI2ltcG9ydCAiV2Vi
U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNh
Y2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC01OCw2ICs2MiwzMCBAQCArICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVz
CiAgICAgY2FjaGVTdG9yYWdlKCkuZGVsZXRlQWxsRW50cmllcygpOwogfQogCisrICh2b2lkKWRl
bGV0ZUNhY2hlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgoreworICAgIEFw
cGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKK30K
KworKyAoTlNBcnJheSAqKWdldE9yaWdpbnNXaXRoQ2FjaGUKK3sKKyAgICB0eXBlZGVmIEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2VjdXJpdHlPcmlnaW5IYXNoPiBPcmlnaW5TZXQ7
CisgICAgT3JpZ2luU2V0IGNvcmVPcmlnaW5zOworICAgIAorICAgIGNhY2hlU3RvcmFnZSgpLmdl
dE9yaWdpbnNXaXRoQ2FjaGUoY29yZU9yaWdpbnMpOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5
ICp3ZWJPcmlnaW5zID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpj
b3JlT3JpZ2lucy5zaXplKCldOworICAgIAorICAgIE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gY29yZU9yaWdpbnMuZW5kKCk7CisgICAgZm9yIChPcmlnaW5TZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gY29yZU9yaWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9j
XSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46KCppdCkuZ2V0KCldOworICAgICAgICBb
d2ViT3JpZ2lucyBhZGRPYmplY3Q6d2ViT3JpZ2luXTsKKyAgICAgICAgW3dlYk9yaWdpbiByZWxl
YXNlXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFt3ZWJPcmlnaW5zIGF1dG9yZWxlYXNlXTsK
K30KKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEg
IDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVy
IGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjQxNQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2spOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6IEFkZGluZyBzdHVi
cy4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hl
cyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hl
Rm9yT3JpZ2luKTogCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW06IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6IEFkZGluZyBzdHViLgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6
IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGlj
YXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisKIDIwMTEtMDMtMTgg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQg
Zml4CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4NiwyMCBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFwcGxpY2F0
aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gb3JpZ2lu
VVJMKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmNsZWFyQXBw
bGljYXRpb25DYWNoZUZvck9yaWdpbihvcmlnaW5VUkwuZ2V0KCkpOworICAgIAorICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYg
Y2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTIxMDMsNiArMjEx
Nyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAg
eyAiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyIsIGNs
ZWFyQWxsQXBwbGljYXRpb25DYWNoZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVh
ckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAg
ICAgeyAiY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luIiwgY2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJCYWNrRm9yd2Fy
ZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbG9zZVdlYkluc3BlY3RvciIsIGNs
b3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODE1MzUpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmVkaXJlY3Rpb25E
ZXN0aW5hdGlvbkZvclVSTChzdGQ6OnN0cmluZyk7CiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzKCk7CiAgICAgdm9pZCBjbGVhckFsbERhdGFiYXNlcygpOworICAgIHZvaWQgY2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG5hbWUpOwogICAgIHZvaWQg
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICB2b2lkIGNsZWFyUGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0KCk7CiAgICAgYm9vbCBjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKTsKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDgxNTM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1
LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRN
ZXRob2QoImFkZERpc2FsbG93ZWRVUkwiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZERpc2Fs
bG93ZWRVUkwpOwogICAgIGJpbmRNZXRob2QoImNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KTsKICAgICBiaW5k
TWV0aG9kKCJjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKTsKKyAgICBiaW5kTWV0aG9kKCJjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW4iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGlj
YXRpb25DYWNoZUZvck9yaWdpbik7CiAgICAgYmluZE1ldGhvZCgiY2xlYXJCYWNrRm9yd2FyZExp
c3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KTsKICAgICBi
aW5kTWV0aG9kKCJkdW1wQXNXZWJBcmNoaXZlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1w
QXNXZWJBcmNoaXZlKTsKICAgICBiaW5kTWV0aG9kKCJrZWVwV2ViSGlzdG9yeSIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6a2VlcFdlYkhpc3RvcnkpOwpAQCAtNzQzLDYgKzc0NCwxMiBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNo
ZUZvck9yaWdpbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBBcHBsaWNh
dGlvbkNhY2hlIGZvciBhbiBvcmlnaW4KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzLgpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCShyZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw2ICsyODQsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBDbGVhcnMgYWxsIEFwcGxpY2F0aW9uIENhY2hlcy4KICAgICB2
b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOworICAgIC8vIENsZWFycyBBcHBsaWNhdGlvbiBDYWNoZSBmb3IgYW4gb3JpZ2lu
LgorICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICAvLyBTZXRzIHRoZSBBcHBsaWNhdGlvbiBRdW90
YSBmb3IgdGhlIGxvY2FsaG9zdCBvcmlnaW4uCiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCShyZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSwxNSBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpvYnNlcnZlU3RvcmFnCiAgICAgW3N0b3JhZ2VE
ZWxlZ2F0ZSBsb2dOb3RpZmljYXRpb25zOm51bWJlciBjb250cm9sbGVyOnRoaXNdOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4o
SlNTdHJpbmdSZWYgdXJsKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRv
cHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisK
KyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxv
Y10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0
KCldXTsKKyAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpvcmln
aW5dOworICAgIFtvcmlnaW4gcmVsZWFzZV07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkKIHsKICAgICBbW1dlYkRhdGFiYXNlTWFuYWdlciBzaGFy
ZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRlbGV0ZUFsbERhdGFiYXNlc107CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2
aXNpb24gODE1MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUyLDYgKzU1MiwxMSBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVy
bCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIEFw
cGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9yaWdpbi4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSkKIHsKICAgICBpZiAoIW1fdG9wTG9hZGluZ0ZyYW1lKQpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gODE1
MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgdm9p
ZCBkaXNhYmxlSW1hZ2VMb2FkaW5nKCk7CiAKICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25D
YWNoZXMoKTsKKyAgICB2b2lkIGNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBR
U3RyaW5nJiB1cmwpOwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEoaW50
IHNpemUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkzNiw2ICs5MzYsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBs
aQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBx
dW90YXMuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25D
YWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmln
aW4uCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGlt
cGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShy
ZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDExIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYg
dXJsKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBkZWxldGluZyBhbGwg
QXBwbGljYXRpb25DYWNoZSBmb3IgYW4gb3JpZ2luLgorfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlv
biBDYWNoZSBxdW90YXMuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTUzNSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTAzLTE4ICBB
bnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwIGlzIG5vdCBv
YnNvbGV0ZSBhZnRlciBiZWluZyBkZWxldGVkIHZpYSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZGVsZXRlRW50cmllc0Zvck9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKworICAgICAgICBUaGlzIHRlc3QgY3JlYXRlcyBhbiBBcHBs
aWNhdGlvbiBDYWNoZSBmb3IgdGhlIERSVCBvcmlnaW4sIGRlbGV0ZXMgaXQgZm9yIHRoZSBvcmln
aW4sCisgICAgICAgIGFuZCB2ZXJpZmllcyB0aGF0IHRoZSBBcHBsaWNhdGlvbiBDYWNoZSBoYXMg
b2Jzb2xldGUgc3RhdHVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4t
ZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNo
ZS9vcmlnaW4tZGVsZXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlm
ZXN0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vcXQvU2tpcHBlZDoKKwogMjAxMS0wMy0xOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSlNDIGNyYXNoZXMgaW4gMzJiaXQgUmVsZWFz
ZSBib3RzIGFmdGVyIHI4MDc0MwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXBzIGNvcnJlY3RseSBiZWNvbWUgb2Jzb2xldGUgYWZ0
ZXIgYXBwbGljYXRpb24gY2FjaGUgaXMgZGVsZXRpb24gZm9yIGEgc3BlY2lmaWMgb3JpZ2luLgor
CitQQVNTIC0gY2FjaGVkIGlmcmFtZS0xCitjbGVhcmluZyBjYWNoZSBmb3Igb3JpZ2luCithcHBj
YWNoZV9zdGF0dXM9NQorU1VDQ0VTUyAtIGNhY2hlIHdhcyBtYWRlIG9ic29sZXRlCisKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmln
aW4tZGVsZXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorCisvLyBIZWxwZXJzLgorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3Nh
Z2UgKyAiPGJyPiI7Cit9CisKKy8vIFN0YXJ0IGFuZCBlbmQuCisKK2Z1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNr
cygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBhZGRJ
RnJhbWVXaXRoQXBwQ2FjaGUoKTsKK30KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhBcHBDYWNoZSgp
IHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Cisg
ICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbCI7Cisg
ICAgaWZyYW1lLmlkID0gImNhY2hlZEZyYW1lIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGlmcmFtZSk7CisgICAgCisgICAgd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGxvZyhldmVudC5kYXRhKTsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09
ICJQQVNTIC0gY2FjaGVkIGlmcmFtZS0xIikgeworICAgICAgICAgICAgbG9nKCJjbGVhcmluZyBj
YWNoZSBmb3Igb3JpZ2luIik7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVh
ckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworICAg
ICAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhY2hlZEZyYW1l
Jyk7CisgICAgICAgICAgICBmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCJhcHBjYWNo
ZV9zdGF0dXMiLCAiKiIpOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09ICJhcHBj
YWNoZV9zdGF0dXM9NSIpeworICAgICAgICAgICAgbG9nKCJTVUNDRVNTIC0gY2FjaGUgd2FzIG1h
ZGUgb2Jzb2xldGUiKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGxvZygiRkFJTCAtIHJlY2VpdmVkIHVuZXhwZWN0ZWQgbWVzc2FnZSAi
ICsgZXZlbnQuZGF0YSk7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH0KKyAg
ICB9OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4K
KzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVj
dGx5IGJlY29tZSBvYnNvbGV0ZSBhZnRlciBhcHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBm
b3IgYSBzcGVjaWZpYyBvcmlnaW4uCis8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAg
QEAKKzxodG1sIG1hbmlmZXN0PSJvcmlnaW4tZGVsZXRlLWlmcmFtZS5tYW5pZmVzdCI+Cis8c2Ny
aXB0PgorLy8gaWZyYW1lLTEgaXMgZXhwZWN0ZWQgdG8gc3VjY2VlZC4KK2FwcGxpY2F0aW9uQ2Fj
aGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0gY2Fj
aGVkIGlmcmFtZS0xIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0
aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBlcnJvciBjYWNoaW5nIGlmcmFtZS0x
LCBleHBlY3RlZCB0aGlzIHRvIHN1Y2NlZWQiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5v
bm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVw
ZGF0ZSBpZnJhbWUtMSwgYWxsIGNhY2hlcyBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYmVmb3Jl
IHRoaXMgdGVzdCIsICIqIik7IH07CisKKworZnVuY3Rpb24gZnJhbWVNZXNzYWdlUmVjZWl2ZWQo
ZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImFwcGNhY2hlX3N0YXR1cyIpIHsKKyAg
ICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKCJhcHBjYWNoZV9zdGF0dXM9IiArIGFwcGxpY2F0aW9u
Q2FjaGUuc3RhdHVzLCAiKiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhcmVudC5wb3N0TWVz
c2FnZSgiRkFJTCAtIHVucmVjb2duaXplZCBtZXNzYWdlIiwgIioiKTsKKyAgICB9Cit9CisKK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnJhbWVNZXNzYWdlUmVjZWl2ZWQsIGZh
bHNlKTsKKworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5tYW5pZmVzdAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4t
ZGVsZXRlLWlmcmFtZS5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK0NBQ0hFIE1BTklGRVNUCisKKyMgVGhpcyBhZGRz
IH4xM0sgdG8gdGhlIGFwcCBjYWNoZQorCitDQUNIRToKK2FiZS5wbmcKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJl
dmlzaW9uIDgxNTM1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzI2LDYgKzE3MjYsOSBAQCBCVUdDUjI4
NDQgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvNDA0CiBCVUdDUjI4NDQgU0tJUCA6IGh0dHAv
dGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJhbWUtbWFpbi5odG1sID0gVElNRU9VVCBQQVNTCiBC
VUdDUjI4NDQgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvbm9uLWh0bWwueGh0bWwgPSBUSU1F
T1VUIFBBU1MKIAorLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNo
ZUZvck9yaWdpbiBpc24ndCBpbXBsZW1lbnRlZAorQlVHV0sgU0tJUCA6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sID0gRkFJTAorCiAvLyBOZXcgZmFpbHVyZXMgZnJvbSBX
ZWJLaXQgcjUxNTc3CiBCVUdDUjI5MTY0IFdJTiBMSU5VWCBNQUMgOiBmYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbCA9IFRFWFQKIApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQJKHJldmlzaW9uIDgxNTM1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTQ4NSw2ICs0ODUsNyBAQCBmYXN0L2pzL2kxOG4tYmlu
ZGluZ3MtbG9jYWxlLmh0bWwKIGh0dHAvdGVzdHMvYXBwY2FjaGUvY3Jhc2gtd2hlbi1uYXZpZ2F0
aW5nLWF3YXktdGhlbi1iYWNrLmh0bWwKIGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRt
bAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbAoraHR0cC90ZXN0cy9hcHBj
YWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKIGh0dHAvdGVzdHMvY29va2llcy9kb3VibGUtcXVvdGVk
LXZhbHVlLXdpdGgtc2VtaS1jb2xvbi5odG1sCiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFkLXNjaGVt
ZS1zdWJmcmFtZS5odG1sCiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFkLXNlcnZlci1zdWJmcmFtZS5o
dG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDgxNTM1KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzIzNCwzICsz
MjM0LDYgQEAgZmFzdC9kb20vR2VvbG9jYXRpb24vcGFnZS1yZWxvYWQtY2FuY2VsLQogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3NjcKIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvYXV0aC5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGguaHRt
bAorCisjIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4gaXMgbm90IGltcGxlbWVudGVkCitodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUu
aHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86244</attachid>
            <date>2011-03-18 17:01:31 -0700</date>
            <delta_ts>2011-03-18 17:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110318170130.patch</filename>
            <type>text/plain</type>
            <size>31828</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRvIGRlbGV0ZSBhbGwgQXBwbGljYXRpb24gQ2FjaGUg
Zm9yIGFuIG9yaWdpbiwgd2UgbXVzdCBvYnNvbGV0ZSBhbGwKKyAgICAgICAgaW4tbWVtb3J5IGNh
Y2hlIGdyb3VwcyBmb3IgdGhhdCBvcmlnaW4uIElmIGEgY2FjaGUgZ3JvdXAgaXNuJ3QgaW4gbWVt
b3J5LAorICAgICAgICB0aGVuIGl0IG11c3QgYmUgZGVsZXRlZCBmcm9tIGRpc2suIFRoZSBwcmV2
aW91cyBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgcmVtb3ZlZCBvbi1kaXNrIGNh
Y2hlIGdyb3VwcywgYnV0IGRpZCBub3QgbWFyayBpbi1tZW1vcnkgY2FjaGUgZ3JvdXBzIGFzIG9i
c29sZXRlLgorICAgICAgICBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpCisgICAgICAgIHdoZW4g
dGhlIERvY3VtZW50TG9hZGVyIHdhcyBkZXN0cm95ZWQuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorCiAyMDExLTAzLTE4ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDgx
NTM1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTE3OTUsNiArMTc5NSw3IEBAIF9fWk5LN1dlYkNvcmU0Tm9kZTE2dHJhdmVyc2VOZXh0Tm9kZUVQ
S1MKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKK19fWk43
V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTIwZGVsZXRlQ2FjaGVGb3JPcmlnaW5FUE5TXzE0U2Vj
dXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRxdW90
YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKIF9fWk43V2ViQ29yZTIzQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKIF9fWk43V2ViQ29yZTIzQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UxNHVzYWdlRm9yT3JpZ2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVS
eApAQCAtMTgwNCw3ICsxODA1LDYgQEAgX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTE3cwogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE4dmFjdXVtRGF0
YWJhc2VGaWxlRXYKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOWdldE9y
aWdpbnNXaXRoQ2FjaGVFUk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9y
aWdpbkVFRU5TXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVFRQog
X19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTIxc2V0RGVmYXVsdE9yaWdpblF1
b3RhRXgKLV9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMmRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlMjZzdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJp
dHlPcmlnaW5FeAogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTM2cmVtYWlu
aW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVQTlNf
MTZBcHBsaWNhdGlvbkNhY2hlRVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlNWVtcHR5RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgxNTM1KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsMTMg
KzQ2MiwxMyBAQAogCQkxQTg1QjJCNzBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4NUIy
QjUwQTFCMkFDNzAwRDhDODdDIC8qIEpTSFRNTERpdkVsZW1lbnQuaCAqLzsgfTsKIAkJMUE4RjZC
MDIwREI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCMDEwREI1MzAwNjAwMURCNzk0
IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTFBOEY2QkJDMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlv
bkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBOEY2QkIxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCAqLzsgfTsK
LQkJMUE4RjZCQkQwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIyMERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggKi87IH07CisJCTFBOEY2QkJEMERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMjBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRp
b25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFBOEY2QkJFMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjMw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgKi87IH07Ci0JCTFB
OEY2QkJGMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI0MERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCAqLzsgfTsKKwkJMUE4RjZCQkYwREI1
NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQwREI1NUNEQzAwMURCNzk0IC8q
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CiAJCTFBOEY2QkMwMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4RjZCQjUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Ki87IH07CiAJCTFBOEY2QkMxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OEY2QkI2MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCAqLzsg
fTsKIAkJMUE4RjZCQzIwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjcw
REI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwICovOyB9OwotCQkxQThG
NkJDMzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjgwREI1NUNEQzAwMURC
Nzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
ICgpOyB9OyB9OworCQkxQThGNkJDMzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4
RjZCQjgwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQThGNkJDNTBEQjU1Q0RD
MDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQkEwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmNwcCAqLzsgfTsKIAkJMUE4RjZCQzYwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QThGNkJCQjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuaCAqLzsgfTsKIAkJMUE5
ODk1NkIwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyog
S1VSTENGTmV0LmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDgxNTM1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC0xODIsNyArMTgz
LDI5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6Y2xlYXJTdG9yYWdlSUQoKQogICAgIFJlc291
cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3Ig
KFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+Y2xlYXJTdG9yYWdlSUQoKTsKLX0g
ICAgCit9CisgICAgCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgVmVjdG9yPEtVUkw+IHVybHM7CisgICAg
aWYgKCFjYWNoZVN0b3JhZ2UoKS5tYW5pZmVzdFVSTHMoJnVybHMpKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgS1VSTCBvcmlnaW5VUkwoS1VSTCgpLCBv
cmlnaW4tPnRvU3RyaW5nKCkpOworCisgICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlmIChwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsc1tpXSwgb3JpZ2luVVJMKSkgeworICAgICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNhY2hlU3RvcmFnZSgpLmZpbmRJbk1l
bW9yeUNhY2hlR3JvdXAodXJsc1tpXSk7CisgICAgICAgICAgICBpZiAoZ3JvdXApCisgICAgICAg
ICAgICAgICAgZ3JvdXAtPm1ha2VPYnNvbGV0ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUNhY2hlR3JvdXAodXJsc1tpXSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CiAgICAgCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlOjpkdW1wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miwx
MiArNDIsMTYgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBLVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxLVVJMLCBLVVJMPiA+IEZh
bGxiYWNrVVJMVmVjdG9yOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlIDogcHVibGljIFJlZkNv
dW50ZWQ8QXBwbGljYXRpb25DYWNoZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBsaWNh
dGlvbkNhY2hlKTsgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUNhY2hlRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKik7CisgICAgCiAgICAgfkFwcGxpY2F0aW9uQ2FjaGUoKTsKIAogICAg
IHZvaWQgYWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHJl
c291cmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gODE1MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogQXBwbGljYXRpb25DYWNoZVMKICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKK0FwcGxpY2F0aW9u
Q2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3Jv
dXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FjaGVz
SW5NZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpCiB7CiAgICAgc3RhdGljIGJvb2wgaGFzTG9h
ZGVkSGFzaGVzID0gZmFsc2U7CkBAIC0xMzA5LDI0ICsxMzE0LDYgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2lucwogICAgIH0KIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQotewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOwotICAgIGlmICghbWFuaWZlc3RVUkxzKCZ1cmxz
KSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNh
Y2hlIG1hbmlmZXN0IFVSTHMiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE11
bHRpcGxlIG1hbmlmZXN0IFVSTHMgbWlnaHQgc2hhcmUgdGhlIHNhbWUgU2VjdXJpdHlPcmlnaW4s
IHNvIHdlIG1pZ2h0IGJlIGNyZWF0aW5nIGV4dHJhLCB3YXN0ZWQgb3JpZ2lucyBoZXJlLgotICAg
IC8vIFRoZSBjdXJyZW50IHNjaGVtYSBkb2Vzbid0IGFsbG93IGZvciBhIG1vcmUgZWZmaWNpZW50
IHdheSBvZiBkZWxldGluZyBieSBvcmlnaW4uCi0gICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXpl
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbWFuaWZlc3RPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybHNbaV0pOwotICAgICAgICBpZiAobWFuaWZlc3RPcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KG9yaWdpbikpCi0gICAgICAgICAgICBkZWxldGVDYWNoZUdyb3VwKHVybHNbaV0pOwot
ICAgIH0KLX0KLQogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQWxsRW50cmll
cygpCiB7CiAgICAgZW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiA4MTUz
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJik7
IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3Vy
Y2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Cisg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMKSBjb25zdDsKICAgICB2b2lkIGNhY2hlR3JvdXBEZXN0cm95ZWQoQXBw
bGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgdm9pZCBjYWNoZUdyb3VwTWFkZU9ic29sZXRlKEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgICAgICAKQEAgLTk1LDcgKzk2LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CiAKICAgICB2b2lkIGdldE9yaWdpbnNX
aXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhh
c2g+Jik7Ci0gICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CiAgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICBzdGF0aWMgaW50NjRfdCB1bmtu
b3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODE1MzUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxMS0wMy0xOCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOiBj
YWxsaW5nIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsZXRlQ2FjaGVHcm91cHNGb3JPcmlnaW4K
KyAgICAgICAgaW5zdGVhZCBvZiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmll
c0Zvck9yaWdpbi4KKyAgICAgICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXI6
OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorCiAyMDExLTAzLTE4ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNw
cAkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0
aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhh
c2guaD4KQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcjo6
ZGVsZXRlRQogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgY2Fj
aGVTdG9yYWdlKCkuZGVsZXRlRW50cmllc0Zvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIEFw
cGxpY2F0aW9uQ2FjaGU6OmRlbGV0ZUNhY2hlRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODE1MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wMy0xOCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCBpcyBub3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisgICAgICAgIAorICAgICAgICBVc2UgbmV3
IEFwcGxpY2F0aW9uQ2FjaGUgQVBJIHRvIGRlbGV0ZSBhbGwgY2FjaGUgZm9yIGFuIG9yaWdpbi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAoK1tX
ZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZU9yaWdpbjpdKToKKwogMjAxMS0wMy0xNyAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0
aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDgxNTM1KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgog
CitAY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisKIEBpbnRlcmZhY2UgV2ViQXBwbGljYXRpb25D
YWNoZTogTlNPYmplY3QKIAogKyAobG9uZyBsb25nKW1heGltdW1TaXplOwpAQCAtMzQsNSArMzYs
NiBAQCBAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9uQ2FjaGU6IE5TT2JqZWN0CiArICh2b2lkKXNl
dERlZmF1bHRPcmlnaW5RdW90YToobG9uZyBsb25nKXNpemU7CiAKICsgKHZvaWQpZGVsZXRlQWxs
QXBwbGljYXRpb25DYWNoZXM7CisrICh2b2lkKWRlbGV0ZUNhY2hlRm9yT3JpZ2luOihXZWJTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbjsKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCShyZXZpc2lv
biA4MTUzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0
aW9uQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDExIEBACiAjaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIAogI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNo
ZS5oIgorCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU4LDYgKzYyLDExIEBAICsgKHZvaWQpZGVsZXRl
QWxsQXBwbGljYXRpb25DYWNoZXMKICAgICBjYWNoZVN0b3JhZ2UoKS5kZWxldGVBbGxFbnRyaWVz
KCk7CiB9CiAKKysgKHZvaWQpZGVsZXRlQ2FjaGVGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCit7CisgICAgQXBwbGljYXRpb25DYWNoZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4o
W29yaWdpbiBfY29yZV0pOworfQorCiBAZW5kCiAKICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODE1MzUpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wMy0x
OCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCBpcyBu
b3Qgb2Jzb2xldGUgYWZ0ZXIgYmVpbmcgZGVsZXRlZCB2aWEgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2NDE1CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JP
cmlnaW5DYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcDogQWRkaW5nIHN0dWJzLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFs
bEFwcGxpY2F0aW9uQ2FjaGVzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVh
ckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOiAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbTogQWRkaW5nIHN0dWIuCisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDogQWRk
aW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcDogQWRkaW5nIHN0dWIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDogQWRkaW5nIHN0dWIuCisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2lu
KToKKwogMjAxMS0wMy0xOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2luZG93cyBidWlsZCBmaXgKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxNTM1KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsNiAr
Mzg2LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNsZWFyQWxsQXBwbGljYXRpb25DYWMKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIGNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBvcmlnaW5VUkwoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29u
dHJvbGxlci0+Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKG9yaWdpblVSTC5nZXQoKSk7
CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBz
dGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFsbERhdGFiYXNlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlv
bgpAQCAtMjEwMyw2ICsyMTE3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OgogICAgICAgICB7ICJjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXciLCBjYWxsU2hvdWxk
Q2xvc2VPbldlYlZpZXdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhckFsbEFwcGxp
Y2F0aW9uQ2FjaGVzIiwgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlc0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImNsZWFyQWxsRGF0YWJhc2VzIiwgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4iLCBj
bGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJjbGVhckJhY2tGb3J3YXJkTGlzdCIsIGNsZWFyQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXQiLCBjbGVhclBl
cnNpc3RlbnRVc2VyU3R5bGVTaGVldENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsb3Nl
V2ViSW5zcGVjdG9yIiwgY2xvc2VXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4
MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiByZWRpcmVjdGlvbkRlc3RpbmF0aW9uRm9yVVJMKHN0ZDo6c3RyaW5nKTsKICAgICB2b2lk
IGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2Vz
KCk7CisgICAgdm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYg
bmFtZSk7CiAgICAgdm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIHZvaWQgY2xlYXJQ
ZXJzaXN0ZW50VXNlclN0eWxlU2hlZXQoKTsKICAgICBib29sIGNhbGxTaG91bGRDbG9zZU9uV2Vi
VmlldygpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODE1MzUpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NSw2ICsxODUsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENv
bnRyb2xsCiAgICAgYmluZE1ldGhvZCgiYWRkRGlzYWxsb3dlZFVSTCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YWRkRGlzYWxsb3dlZFVSTCk7CiAgICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENs
b3NlT25XZWJWaWV3IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldl
YlZpZXcpOwogICAgIGJpbmRNZXRob2QoImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOworICAgIGJpbmRN
ZXRob2QoImNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKTsKICAgICBiaW5kTWV0aG9kKCJj
bGVhckJhY2tGb3J3YXJkTGlzdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJCYWNrRm9y
d2FyZExpc3QpOwogICAgIGJpbmRNZXRob2QoImR1bXBBc1dlYkFyY2hpdmUiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBBc1dlYkFyY2hpdmUpOwogICAgIGJpbmRNZXRob2QoImtlZXBXZWJI
aXN0b3J5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjprZWVwV2ViSGlzdG9yeSk7CkBAIC03NDMs
NiArNzQ0LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAg
ICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZGVs
ZXRpbmcgYWxsIEFwcGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9yaWdpbgorICAgIHJlc3VsdC0+c2V0
TnVsbCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNo
ZSBRdW90YXMuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDgxNTM1KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjg0LDYgKzI4NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIENsZWFycyBhbGwgQXBwbGljYXRp
b24gQ2FjaGVzLgogICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyhjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgLy8gQ2xlYXJzIEFwcGxpY2F0aW9uIENh
Y2hlIGZvciBhbiBvcmlnaW4uCisgICAgdm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmln
aW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNldHMgdGhl
IEFwcGxpY2F0aW9uIFF1b3RhIGZvciB0aGUgbG9jYWxob3N0IG9yaWdpbi4KICAgICB2b2lkIHNl
dEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDgxNTM1KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDUsNiArMTQ1LDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om9ic2VydmVTdG9y
YWcKICAgICBbc3RvcmFnZURlbGVnYXRlIGxvZ05vdGlmaWNhdGlvbnM6bnVtYmVyIGNvbnRyb2xs
ZXI6dGhpc107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRp
b25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1cmxDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB1cmwpKTsKKworICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNT
dHJpbmcgKil1cmxDRi5nZXQoKV1dOworICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZUNh
Y2hlRm9yT3JpZ2luOm9yaWdpbl07CisgICAgW29yaWdpbiByZWxlYXNlXTsKK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxEYXRhYmFzZXMoKQogewogICAgIFtbV2ViRGF0
YWJhc2VNYW5hZ2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gZGVsZXRlQWxsRGF0YWJhc2Vz
XTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsNiArNTUy
LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGkKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4o
Y29uc3QgUVN0cmluZyYgdXJsKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9y
dCBkZWxldGluZyBhbGwgQXBwbGljYXRpb25DYWNoZSBmb3IgYW4gb3JpZ2luLgorfQorCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIGlmICghbV90b3BMb2FkaW5nRnJhbWUpCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCShyZXZpc2lvbiA4MTUzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSw3IEBAIHB1Ymxp
YyBzbG90czoKICAgICB2b2lkIGRpc2FibGVJbWFnZUxvYWRpbmcoKTsKIAogICAgIHZvaWQgY2xl
YXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hl
Rm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKIAogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YShpbnQgc2l6ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDgxNTM1KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTM2LDYgKzkzNiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpjbGVhckFsbEFwcGxpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFw
cGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbikKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIEFwcGxpY2F0aW9u
Q2FjaGUgZm9yIGFuIG9yaWdpbi4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24gQ2FjaGUgcXVv
dGFzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENv
bnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDgxNTM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsy
NDgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9y
aWdpbihKU1N0cmluZ1JlZiB1cmwpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBw
b3J0IGRlbGV0aW5nIGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4uCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1
bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBz
dXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTM1
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgIFRoaXMgdGVz
dCBjcmVhdGVzIGFuIEFwcGxpY2F0aW9uIENhY2hlIGZvciB0aGUgRFJUIG9yaWdpbiwgZGVsZXRl
cyBpdCBmb3IgdGhlIG9yaWdpbiwKKyAgICAgICAgYW5kIHZlcmlmaWVzIHRoYXQgdGhlIEFwcGxp
Y2F0aW9uIENhY2hlIGhhcyBvYnNvbGV0ZSBzdGF0dXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRl
bGV0ZS1pZnJhbWUubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDExLTAzLTE4ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBKU0MgY3Jhc2hl
cyBpbiAzMmJpdCBSZWxlYXNlIGJvdHMgYWZ0ZXIgcjgwNzQzCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1Ro
aXMgdGVzdCBjaGVja3MgdGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJl
Y29tZSBvYnNvbGV0ZSBhZnRlciBhcHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBmb3IgYSBz
cGVjaWZpYyBvcmlnaW4uCisKK1BBU1MgLSBjYWNoZWQgaWZyYW1lLTEKK2NsZWFyaW5nIGNhY2hl
IGZvciBvcmlnaW4KK2FwcGNhY2hlX3N0YXR1cz01CitTVUNDRVNTIC0gY2FjaGUgd2FzIG1hZGUg
b2Jzb2xldGUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4t
ZGVsZXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9vcmlnaW4tZGVsZXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5p
bm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNh
Y2hlcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNo
ZURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIH0KKworICAgIGFkZElGcmFtZVdpdGhBcHBDYWNoZSgpOworfQorCitmdW5jdGlvbiBmaW5p
c2hUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gYWRkSUZy
YW1lV2l0aEFwcENhY2hlKCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9vcmlnaW4tZGVsZXRl
LWlmcmFtZS5odG1sIjsKKyAgICBpZnJhbWUuaWQgPSAiY2FjaGVkRnJhbWUiOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICAKKyAgICB3aW5kb3cub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgICAgICBp
ZiAoZXZlbnQuZGF0YSA9PT0gIlBBU1MgLSBjYWNoZWQgaWZyYW1lLTEiKSB7CisgICAgICAgICAg
ICBsb2coImNsZWFyaW5nIGNhY2hlIGZvciBvcmlnaW4iKTsKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbigiaHR0cDovLzEyNy4w
LjAuMTo4MDAwIik7CisgICAgICAgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY2FjaGVkRnJhbWUnKTsKKyAgICAgICAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cucG9z
dE1lc3NhZ2UoImFwcGNhY2hlX3N0YXR1cyIsICIqIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQuZGF0YSA9PT0gImFwcGNhY2hlX3N0YXR1cz01Iil7CisgICAgICAgICAgICBsb2coIlNVQ0NF
U1MgLSBjYWNoZSB3YXMgbWFkZSBvYnNvbGV0ZSIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJGQUlMIC0gcmVjZWl2ZWQgdW5l
eHBlY3RlZCBtZXNzYWdlICIgKyBldmVudC5kYXRhKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgfQorICAgIH07Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ic3RhcnRUZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFwcGxpY2F0aW9uIGNh
Y2hlIGdyb3VwcyBjb3JyZWN0bHkgYmVjb21lIG9ic29sZXRlIGFmdGVyIGFwcGxpY2F0aW9uIGNh
Y2hlIGlzIGRlbGV0aW9uIGZvciBhIHNwZWNpZmljIG9yaWdpbi4KKzwvcD4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4t
ZGVsZXRlLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWwgbWFuaWZlc3Q9Im9yaWdpbi1kZWxldGUtaWZyYW1l
Lm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CisvLyBpZnJhbWUtMSBpcyBleHBlY3RlZCB0byBzdWNjZWVk
LgorYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1l
c3NhZ2UoIlBBU1MgLSBjYWNoZWQgaWZyYW1lLTEiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNo
ZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIGVycm9y
IGNhY2hpbmcgaWZyYW1lLTEsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCIsICIqIik7IH07Cith
cHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNz
YWdlKCJGQUlMIC0gbm8gdXBkYXRlIGlmcmFtZS0xLCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJl
ZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKKworCitmdW5jdGlvbiBmcmFt
ZU1lc3NhZ2VSZWNlaXZlZChldmVudCkgeworICAgIGlmIChldmVudC5kYXRhID09PSAiYXBwY2Fj
aGVfc3RhdHVzIikgeworICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImFwcGNhY2hlX3N0YXR1
cz0iICsgYXBwbGljYXRpb25DYWNoZS5zdGF0dXMsICIqIik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlMIC0gdW5yZWNvZ25pemVkIG1lc3NhZ2UiLCAiKiIp
OworICAgIH0KK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmcmFtZU1l
c3NhZ2VSZWNlaXZlZCwgZmFsc2UpOworCis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1l
Lm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1p
ZnJhbWUubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorQ0FDSEUgTUFOSUZF
U1QKKworIyBUaGlzIGFkZHMgfjEzSyB0byB0aGUgYXBwIGNhY2hlCisKK0NBQ0hFOgorYWJlLnBu
ZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAkocmV2aXNpb24gODE1MzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MjYsNiAr
MTcyNiw5IEBAIEJVR0NSMjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQKIEJVR0NS
Mjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLmh0bWwg
PSBUSU1FT1VUIFBBU1MKIEJVR0NSMjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24t
aHRtbC54aHRtbCA9IFRJTUVPVVQgUEFTUwogCisvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luIGlzbid0IGltcGxlbWVudGVkCitCVUdXSyBTS0lQ
IDogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwgPSBGQUlMCisKIC8vIE5l
dyBmYWlsdXJlcyBmcm9tIFdlYktpdCByNTE1NzcKIEJVR0NSMjkxNjQgV0lOIExJTlVYIE1BQyA6
IGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sID0gVEVYVAogCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gODE1MzUpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDYgKzQ4NSw3IEBA
IGZhc3QvanMvaTE4bi1iaW5kaW5ncy1sb2NhbGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9j
cmFzaC13aGVuLW5hdmlnYXRpbmctYXdheS10aGVuLWJhY2suaHRtbAogaHR0cC90ZXN0cy9hcHBj
YWNoZS9mYWxsYmFjay5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1s
CitodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUuaHRtbAogaHR0cC90ZXN0cy9jb29r
aWVzL2RvdWJsZS1xdW90ZWQtdmFsdWUtd2l0aC1zZW1pLWNvbG9uLmh0bWwKIGh0dHAvdGVzdHMv
bG9hZGluZy9iYWQtc2NoZW1lLXN1YmZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQt
c2VydmVyLXN1YmZyYW1lLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNp
b24gODE1MzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjM0LDMgKzMyMzQsNiBAQCBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wYWdlLXJlbG9h
ZC1jYW5jZWwtCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTc2
NwogaHR0cC90ZXN0cy9hcHBjYWNoZS9hdXRoLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYmFzaWMtYXV0aC5odG1sCisKKyMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGlj
YXRpb25DYWNoZUZvck9yaWdpbiBpcyBub3QgaW1wbGVtZW50ZWQKK2h0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2luLWRlbGV0ZS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86245</attachid>
            <date>2011-03-18 17:12:33 -0700</date>
            <delta_ts>2011-03-19 14:29:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56415-20110318171232.patch</filename>
            <type>text/plain</type>
            <size>30952</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRl
IGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQxNQorCisgICAgICAgIFRvIGRlbGV0ZSBhbGwgQXBwbGljYXRpb24gQ2FjaGUg
Zm9yIGFuIG9yaWdpbiwgd2UgbXVzdCBvYnNvbGV0ZSBhbGwKKyAgICAgICAgaW4tbWVtb3J5IGNh
Y2hlIGdyb3VwcyBmb3IgdGhhdCBvcmlnaW4uIElmIGEgY2FjaGUgZ3JvdXAgaXNuJ3QgaW4gbWVt
b3J5LAorICAgICAgICB0aGVuIGl0IG11c3QgYmUgZGVsZXRlZCBmcm9tIGRpc2suIFRoZSBwcmV2
aW91cyBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgcmVtb3ZlZCBvbi1kaXNrIGNh
Y2hlIGdyb3VwcywgYnV0IGRpZCBub3QgbWFyayBpbi1tZW1vcnkgY2FjaGUgZ3JvdXBzIGFzIG9i
c29sZXRlLgorICAgICAgICBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCgpCisgICAgICAgIHdoZW4g
dGhlIERvY3VtZW50TG9hZGVyIHdhcyBkZXN0cm95ZWQuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorCiAyMDExLTAzLTE4ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MTUzNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk1LDYgKzE3
OTUsNyBAQCBfX1pOSzdXZWJDb3JlNE5vZGUxNnRyYXZlcnNlTmV4dE5vZGVFUEtTCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCitfX1pON1dlYkNvcmUxNkFw
cGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2lu
RQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0cXVvdGFGb3JPcmlnaW5F
UEtOU18xNFNlY3VyaXR5T3JpZ2luRVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTR1c2FnZUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKQEAgLTE4MDQs
NyArMTgwNSw2IEBAIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxN3MKIF9f
Wk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOHZhY3V1bURhdGFiYXNlRmlsZUV2
CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTlnZXRPcmlnaW5zV2l0aENh
Y2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18x
OFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29y
ZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMXNldERlZmF1bHRPcmlnaW5RdW90YUV4Ci1fX1pO
N1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjJkZWxldGVFbnRyaWVzRm9yT3JpZ2lu
RVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTI2c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW5FUEtOU18xNFNlY3VyaXR5T3JpZ2luRXgK
IF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UzNnJlbWFpbmluZ1NpemVGb3JP
cmlnaW5FeGNsdWRpbmdDYWNoZUVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUE5TXzE2QXBwbGljYXRp
b25DYWNoZUVSeAogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbXB0eUV2
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA4MTUzNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDYyLDkgKzQ2Miw5IEBACiAJ
CTFBODVCMkI3MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTg1QjJCNTBBMUIyQUM3MDBE
OEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5oICovOyB9OwogCQkxQThGNkIwMjBEQjUzMDA2MDAx
REI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkIwMTBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0
ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUE4RjZCQkMwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjEwREI1
NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwICovOyB9OwotCQkxQThGNkJCRDBE
QjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjIwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGUuaCAqLzsgfTsKKwkJMUE4RjZCQkQwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBOEY2QkIyMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4RjZCQkUw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMzBEQjU1Q0RDMDAxREI3
OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCAqLzsgfTsKLQkJMUE4RjZCQkYwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQwREI1NUNEQzAwMURCNzk0IC8qIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyB9OworCQkxQThGNkJCRjBEQjU1Q0RDMDAxREI3OTQg
LyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25D
YWNoZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMUE4
RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNTBEQjU1
Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJMUE4
RjZCQzEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjYwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oICovOyB9OwogCQkxQThGNkJD
MjBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNzBEQjU1Q0RDMDAxREI3
OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lv
biA4MTUzNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
IApAQCAtMTgyLDcgKzE4MywyOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmNsZWFyU3RvcmFn
ZUlEKCkKICAgICBSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yZXNvdXJjZXMu
ZW5kKCk7CiAgICAgZm9yIChSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGl0LT5zZWNvbmQtPmNsZWFy
U3RvcmFnZUlEKCk7Ci19ICAgIAorfQorICAgIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxl
dGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIFZlY3RvcjxL
VVJMPiB1cmxzOworICAgIGlmICghY2FjaGVTdG9yYWdlKCkubWFuaWZlc3RVUkxzKCZ1cmxzKSkg
eworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hl
IG1hbmlmZXN0IFVSTHMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEtVUkwgb3Jp
Z2luVVJMKEtVUkwoKSwgb3JpZ2luLT50b1N0cmluZygpKTsKKworICAgIHNpemVfdCBjb3VudCA9
IHVybHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewor
ICAgICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybHNbaV0sIG9yaWdpblVS
TCkpIHsKKyAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0
b3JhZ2UoKS5maW5kSW5NZW1vcnlDYWNoZUdyb3VwKHVybHNbaV0pOworICAgICAgICAgICAgaWYg
KGdyb3VwKQorICAgICAgICAgICAgICAgIGdyb3VwLT5tYWtlT2Jzb2xldGUoKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5kZWxldGVDYWNoZUdyb3Vw
KHVybHNbaV0pOworICAgICAgICB9CisgICAgfQorfQogICAgIAogI2lmbmRlZiBOREVCVUcKIHZv
aWQgQXBwbGljYXRpb25DYWNoZTo6ZHVtcCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDgxNTM2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDE2IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgS1VSTDsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8
S1VSTCwgS1VSTD4gPiBGYWxsYmFja1VSTFZlY3RvcjsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2FjaGU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgQXBwbGljYXRpb25DYWNoZSk7IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBkZWxl
dGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIAogICAgIH5BcHBsaWNhdGlv
bkNhY2hlKCk7CiAKICAgICB2b2lkIGFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiByZXNvdXJjZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlz
aW9uIDgxNTM2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1MywxMSBAQCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgcmV0dXJuIGdyb3VwOwog
fQogCitBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5k
SW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKSBjb25zdAoreworICAg
IHJldHVybiBtX2NhY2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7Cit9CisKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKQogewogICAgIHN0
YXRpYyBib29sIGhhc0xvYWRlZEhhc2hlcyA9IGZhbHNlOwpAQCAtMTMwOSwyNCArMTMxNCw2IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmdldE9yaWdpbnMKICAgICB9CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKLXsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKLSAgICBpZiAoIW1h
bmlmZXN0VVJMcygmdXJscykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmll
dmUgQXBwbGljYXRpb25DYWNoZSBtYW5pZmVzdCBVUkxzIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBNdWx0aXBsZSBtYW5pZmVzdCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1l
IFNlY3VyaXR5T3JpZ2luLCBzbyB3ZSBtaWdodCBiZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9y
aWdpbnMgaGVyZS4KLSAgICAvLyBUaGUgY3VycmVudCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3Ig
YSBtb3JlIGVmZmljaWVudCB3YXkgb2YgZGVsZXRpbmcgYnkgb3JpZ2luLgotICAgIHNpemVfdCBj
b3VudCA9IHVybHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1hbmlmZXN0T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmxzW2ldKTsKLSAgICAgICAgaWYgKG1hbmlmZXN0T3JpZ2lu
LT5pc1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKQotICAgICAgICAgICAgZGVsZXRlQ2FjaGVH
cm91cCh1cmxzW2ldKTsKLSAgICB9Ci19Ci0KIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmRlbGV0ZUFsbEVudHJpZXMoKQogewogICAgIGVtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aAkocmV2aXNpb24gODE1MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBw
dWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JV
UkwoY29uc3QgS1VSTCYpOyAvLyBDYWNoZSB0aGF0IGhhcyBhIGZhbGxiYWNrIGVudHJ5IHRvIGxv
YWQgYSBtYWluIHJlc291cmNlIGZyb20gaWYgbm9ybWFsIGxvYWRpbmcgZmFpbHMuCiAKICAgICBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSTCYg
bWFuaWZlc3RVUkwpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZEluTWVtb3J5Q2Fj
aGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkgY29uc3Q7CiAgICAgdm9pZCBjYWNoZUdy
b3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgIHZvaWQgY2FjaGVHcm91
cE1hZGVPYnNvbGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICAgICAgCkBAIC05NSw3
ICs5Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmlsZSgpOwogCiAgICAg
dm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U2VjdXJpdHlPcmlnaW5IYXNoPiYpOwotICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihT
ZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOwogCiAgICAgc3Rh
dGljIGludDY0X3QgdW5rbm93blF1b3RhKCkgeyByZXR1cm4gLTE7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDgxNTM2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRl
bGV0ZWQgdmlhIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2lu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQor
CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmNwcDogY2FsbGluZyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRlbGV0ZUNhY2hl
R3JvdXBzRm9yT3JpZ2luCisgICAgICAgIGluc3RlYWQgb2YgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4uCisgICAgICAgIChXZWJLaXQ6OldlYkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKwogMjAxMS0wMy0xOCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxp
Y2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDgxNTM2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
RGF0YS5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5IYXNoLmg+CkBAIC04Nyw3ICs4OCw3IEBAIHZvaWQgV2ViQXBwbGljYXRp
b25DYWNoZU1hbmFnZXI6OmRlbGV0ZUUKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGNhY2hlU3RvcmFnZSgpLmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2lu
LmdldCgpKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihvcmln
aW4uZ2V0KCkpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgx
NTM2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlh
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorICAgICAgICAK
KyAgICAgICAgVXNlIG5ldyBBcHBsaWNhdGlvbkNhY2hlIEFQSSB0byBkZWxldGUgYWxsIGNhY2hl
IGZvciBhbiBvcmlnaW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlv
bkNhY2hlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5t
bToKKyAgICAgICAgKCtbV2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVPcmlnaW46XSk6CisKIDIw
MTEtMDMtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA4MTUzNikK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworCiBAaW50ZXJmYWNl
IFdlYkFwcGxpY2F0aW9uQ2FjaGU6IE5TT2JqZWN0CiAKICsgKGxvbmcgbG9uZyltYXhpbXVtU2l6
ZTsKQEAgLTM0LDUgKzM2LDYgQEAgQGludGVyZmFjZSBXZWJBcHBsaWNhdGlvbkNhY2hlOiBOU09i
amVjdAogKyAodm9pZClzZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxvbmcgbG9uZylzaXplOwogCiAr
ICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzOworKyAodm9pZClkZWxldGVDYWNoZUZv
ck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CiAKIEBlbmQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZS5tbQkocmV2aXNpb24gODE1MzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwx
MSBAQAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKICNpbXBvcnQgIldl
YkFwcGxpY2F0aW9uQ2FjaGUuaCIKKworI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5h
bC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OCw2ICs2MiwxMSBA
QCArICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCiAgICAgY2FjaGVTdG9yYWdlKCku
ZGVsZXRlQWxsRW50cmllcygpOwogfQogCisrICh2b2lkKWRlbGV0ZUNhY2hlRm9yT3JpZ2luOihX
ZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgoreworICAgIEFwcGxpY2F0aW9uQ2FjaGU6OmRlbGV0
ZUNhY2hlRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKK30KKwogQGVuZAogCiAjZW5kaWYKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgxNTM2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTEtMDMtMTggIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAgaXMgbm90IG9ic29sZXRlIGFmdGVyIGJlaW5nIGRlbGV0ZWQgdmlhIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQxNQorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoY2xlYXJBcHBs
aWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6IEFkZGluZyBzdHVicy4KKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKTogCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06IEFkZGluZyBz
dHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNo
ZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6IEFkZGluZyBzdHViLgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6IEFk
ZGluZyBzdHViLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRp
b25DYWNoZUZvck9yaWdpbik6CisKIDIwMTEtMDMtMTggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MTUzNikKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzg2LDYgKzM4NiwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFsbEFwcGxp
Y2F0aW9uQ2FjCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQog
CitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW5DYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gb3JpZ2luVVJMKEFkb3B0LCBKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEq
ZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgIGNvbnRyb2xsZXItPmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihv
cmlnaW5VUkwuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRv
d3MgaW1wbGVtZW50YXRpb24KQEAgLTIxMDMsNiArMjExNyw3IEBAIEpTU3RhdGljRnVuY3Rpb24q
IExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiY2FsbFNob3VsZENsb3NlT25XZWJW
aWV3IiwgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyIsIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxs
RGF0YWJhc2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiY2xlYXJBcHBsaWNhdGlvbkNh
Y2hlRm9yT3JpZ2luIiwgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJk
TGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJjbG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gODE1MzYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgcmVkaXJlY3Rpb25EZXN0aW5hdGlvbkZvclVSTChzdGQ6OnN0
cmluZyk7CiAgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgdm9pZCBj
bGVhckFsbERhdGFiYXNlcygpOworICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3Jp
Z2luKEpTU3RyaW5nUmVmIG5hbWUpOwogICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsK
ICAgICB2b2lkIGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCk7CiAgICAgYm9vbCBjYWxs
U2hvdWxkQ2xvc2VPbldlYlZpZXcoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxNTM2
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoImFkZERpc2FsbG93ZWRVUkwi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZERpc2FsbG93ZWRVUkwpOwogICAgIGJpbmRNZXRo
b2QoImNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3KTsKICAgICBiaW5kTWV0aG9kKCJjbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
aGVzKTsKKyAgICBiaW5kTWV0aG9kKCJjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4iLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbik7CiAg
ICAgYmluZE1ldGhvZCgiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KTsKICAgICBiaW5kTWV0aG9kKCJkdW1wQXNXZWJBcmNo
aXZlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1wQXNXZWJBcmNoaXZlKTsKICAgICBiaW5k
TWV0aG9kKCJrZWVwV2ViSGlzdG9yeSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6a2VlcFdlYkhp
c3RvcnkpOwpAQCAtNzQzLDYgKzc0NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpj
bGVhckFsbEFwcGxpCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4K
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQg
QXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4MTUzNikK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4NCw2ICsyODQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBDbGVh
cnMgYWxsIEFwcGxpY2F0aW9uIENhY2hlcy4KICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25D
YWNoZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIC8vIENsZWFy
cyBBcHBsaWNhdGlvbiBDYWNoZSBmb3IgYW4gb3JpZ2luLgorICAgIHZvaWQgY2xlYXJBcHBsaWNh
dGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
ICAgICAvLyBTZXRzIHRoZSBBcHBsaWNhdGlvbiBRdW90YSBmb3IgdGhlIGxvY2FsaG9zdCBvcmln
aW4uCiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA4MTUzNikK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpvYnNlcnZlU3RvcmFnCiAgICAgW3N0b3JhZ2VEZWxlZ2F0ZSBsb2dOb3RpZmljYXRpb25z
Om51bWJlciBjb250cm9sbGVyOnRoaXNdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAq
b3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKKyAgICBbV2ViQXBwbGljYXRp
b25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpvcmlnaW5dOworICAgIFtvcmlnaW4gcmVsZWFz
ZV07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkK
IHsKICAgICBbW1dlYkRhdGFiYXNlTWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRl
bGV0ZUFsbERhdGFiYXNlc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODE1MzYpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUyLDYgKzU1MiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFs
bEFwcGxpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyQWxsQXBwbGljYXRpb25D
YWNoZXMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIEFwcGxpY2F0aW9uQ2FjaGUgZm9yIGFuIG9y
aWdpbi4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICBpZiAoIW1fdG9w
TG9hZGluZ0ZyYW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gODE1MzYpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2
ICsxODksNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBkaXNhYmxlSW1hZ2VMb2FkaW5nKCk7
CiAKICAgICB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKKyAgICB2b2lkIGNsZWFy
QXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihjb25zdCBRU3RyaW5nJiB1cmwpOwogICAgIHZvaWQg
c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7
CiAKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEoaW50IHNpemUpOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShy
ZXZpc2lvbiA4MTUzNikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzNiw2ICs5MzYsMTEgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaQogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCiB9CiAKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1Jl
ZiBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5n
IGFsbCBBcHBsaWNhdGlvbkNhY2hlIGZvciBhbiBvcmlnaW4uCit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxp
Y2F0aW9uIENhY2hlIHF1b3Rhcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91
dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA4MTUzNikKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDgsNiArMjQ4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFy
QWxsQXBwbGkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRpb24g
Q2FjaGUgcXVvdGFzLgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxp
Y2F0aW9uQ2FjaGVGb3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdG8gc3VwcG9ydCBkZWxldGluZyBhbGwgQXBwbGljYXRpb25DYWNoZSBmb3IgYW4g
b3JpZ2luLgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MTUzNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTAzLTE4ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwIGlzIG5vdCBvYnNvbGV0ZSBhZnRlciBiZWluZyBkZWxl
dGVkIHZpYSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MTUKKwor
ICAgICAgICBUaGlzIHRlc3QgY3JlYXRlcyBhbiBBcHBsaWNhdGlvbiBDYWNoZSBmb3IgdGhlIERS
VCBvcmlnaW4sIGRlbGV0ZXMgaXQgZm9yIHRoZSBvcmlnaW4sCisgICAgICAgIGFuZCB2ZXJpZmll
cyB0aGF0IHRoZSBBcHBsaWNhdGlvbiBDYWNoZSBoYXMgb2Jzb2xldGUgc3RhdHVzLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxl
dGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMS0w
My0xOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1kZWxldGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxldGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBh
cHBsaWNhdGlvbiBjYWNoZSBncm91cHMgY29ycmVjdGx5IGJlY29tZSBvYnNvbGV0ZSBhZnRlciBh
cHBsaWNhdGlvbiBjYWNoZSBpcyBkZWxldGlvbiBmb3IgYSBzcGVjaWZpYyBvcmlnaW4uCisKK1BB
U1MgLSBjYWNoZWQgaWZyYW1lLTEKK2NsZWFyaW5nIGNhY2hlIGZvciBvcmlnaW4KK2FwcGNhY2hl
X3N0YXR1cz01CitTVUNDRVNTIC0gY2FjaGUgd2FzIG1hZGUgb2Jzb2xldGUKKwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1k
ZWxldGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSAr
ICI8YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkg
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGFkZElGcmFt
ZVdpdGhBcHBDYWNoZSgpOworfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gYWRkSUZyYW1lV2l0aEFwcENhY2hlKCkgewor
ICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBp
ZnJhbWUuc3JjID0gInJlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5odG1sIjsKKyAgICBp
ZnJhbWUuaWQgPSAiY2FjaGVkRnJhbWUiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aWZyYW1lKTsKKyAgICAKKyAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gIlBB
U1MgLSBjYWNoZWQgaWZyYW1lLTEiKSB7CisgICAgICAgICAgICBsb2coImNsZWFyaW5nIGNhY2hl
IGZvciBvcmlnaW4iKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQXBw
bGljYXRpb25DYWNoZUZvck9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CisgICAgICAg
ICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FjaGVkRnJhbWUnKTsK
KyAgICAgICAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoImFwcGNhY2hlX3N0
YXR1cyIsICIqIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gImFwcGNhY2hl
X3N0YXR1cz01Iil7CisgICAgICAgICAgICBsb2coIlNVQ0NFU1MgLSBjYWNoZSB3YXMgbWFkZSBv
YnNvbGV0ZSIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbG9nKCJGQUlMIC0gcmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlICIgKyBl
dmVudC5kYXRhKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfQorICAgIH07
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgorPHA+
VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwcyBjb3JyZWN0bHkg
YmVjb21lIG9ic29sZXRlIGFmdGVyIGFwcGxpY2F0aW9uIGNhY2hlIGlzIGRlbGV0aW9uIGZvciBh
IHNwZWNpZmljIG9yaWdpbi4KKzwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9vcmlnaW4tZGVsZXRlLWlmcmFtZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
b3JpZ2luLWRlbGV0ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAor
PGh0bWwgbWFuaWZlc3Q9Im9yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+
CisvLyBpZnJhbWUtMSBpcyBleHBlY3RlZCB0byBzdWNjZWVkLgorYXBwbGljYXRpb25DYWNoZS5v
bmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1MgLSBjYWNoZWQg
aWZyYW1lLTEiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24o
KSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIGVycm9yIGNhY2hpbmcgaWZyYW1lLTEsIGV4
cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCIsICIqIik7IH07CithcHBsaWNhdGlvbkNhY2hlLm9ubm91
cGRhdGUgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlMIC0gbm8gdXBkYXRl
IGlmcmFtZS0xLCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhp
cyB0ZXN0IiwgIioiKTsgfTsKKworCitmdW5jdGlvbiBmcmFtZU1lc3NhZ2VSZWNlaXZlZChldmVu
dCkgeworICAgIGlmIChldmVudC5kYXRhID09PSAiYXBwY2FjaGVfc3RhdHVzIikgeworICAgICAg
ICBwYXJlbnQucG9zdE1lc3NhZ2UoImFwcGNhY2hlX3N0YXR1cz0iICsgYXBwbGljYXRpb25DYWNo
ZS5zdGF0dXMsICIqIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdl
KCJGQUlMIC0gdW5yZWNvZ25pemVkIG1lc3NhZ2UiLCAiKiIpOworICAgIH0KK30KKword2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmcmFtZU1lc3NhZ2VSZWNlaXZlZCwgZmFsc2Up
OworCis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxldGUtaWZyYW1lLm1hbmlmZXN0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29yaWdpbi1kZWxl
dGUtaWZyYW1lLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvb3JpZ2luLWRlbGV0ZS1pZnJhbWUubWFuaWZlc3QJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorQ0FDSEUgTUFOSUZFU1QKKworIyBUaGlzIGFkZHMgfjEz
SyB0byB0aGUgYXBwIGNhY2hlCisKK0NBQ0hFOgorYWJlLnBuZwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNp
b24gODE1MzYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MjYsNiArMTcyNiw5IEBAIEJVR0NSMjg0NCBT
S0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQKIEJVR0NSMjg0NCBTS0lQIDogaHR0cC90ZXN0
cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLmh0bWwgPSBUSU1FT1VUIFBBU1MKIEJVR0NS
Mjg0NCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24taHRtbC54aHRtbCA9IFRJTUVPVVQg
UEFTUwogCisvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9y
T3JpZ2luIGlzbid0IGltcGxlbWVudGVkCitCVUdXSyBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNo
ZS9vcmlnaW4tZGVsZXRlLmh0bWwgPSBGQUlMCisKIC8vIE5ldyBmYWlsdXJlcyBmcm9tIFdlYktp
dCByNTE1NzcKIEJVR0NSMjkxNjQgV0lOIExJTlVYIE1BQyA6IGZhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtcGx1Z2lucy5odG1sID0gVEVYVAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAkocmV2aXNpb24gODE1MzYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDYgKzQ4NSw3IEBAIGZhc3QvanMvaTE4bi1iaW5kaW5n
cy1sb2NhbGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9jcmFzaC13aGVuLW5hdmlnYXRpbmct
YXdheS10aGVuLWJhY2suaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCitodHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbi1kZWxldGUuaHRtbAogaHR0cC90ZXN0cy9jb29raWVzL2RvdWJsZS1xdW90ZWQtdmFs
dWUtd2l0aC1zZW1pLWNvbG9uLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQtc2NoZW1lLXN1
YmZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYWQtc2VydmVyLXN1YmZyYW1lLmh0bWwK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gODE1MzYpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM0LDMgKzMyMzQs
NiBAQCBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wYWdlLXJlbG9hZC1jYW5jZWwtCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTc2NwogaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hdXRoLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC5odG1sCisK
KyMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbiBp
cyBub3QgaW1wbGVtZW50ZWQKK2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1s
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>