<?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>148388</bug_id>
          
          <creation_ts>2015-08-24 12:34:40 -0700</creation_ts>
          <short_desc>We should also store the time information for recent searches</short_desc>
          <delta_ts>2015-10-14 22:19:46 -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>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Zach Li">a.tion.surf</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1120348</commentid>
    <comment_count>0</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-08-24 12:34:40 -0700</bug_when>
    <thetext>Currently we only save the search strings on a domain for &lt;input type=&quot;search&quot;&gt;. To fix rdar://problem/16876762, we should also save the time information for recent searches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120369</commentid>
    <comment_count>1</comment_count>
      <attachid>259769</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-08-24 14:14:35 -0700</bug_when>
    <thetext>Created attachment 259769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120370</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-24 14:17:37 -0700</bug_when>
    <thetext>Attachment 259769 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:75:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120373</commentid>
    <comment_count>3</comment_count>
      <attachid>259769</attachid>
    <who name="">mitz</who>
    <bug_when>2015-08-24 14:25:25 -0700</bug_when>
    <thetext>Comment on attachment 259769
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        Replace Vector&lt;String&gt; with Vector&lt;HashMap&lt;String, double&gt;&gt; for recent searches
&gt; +        in order to store additional time information.

From a cursory look, it looks like theses maps only ever contain one key each. Is this going to change? If not, why not use a Vector of String, double pairs instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120391</commentid>
    <comment_count>4</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-08-24 14:39:26 -0700</bug_when>
    <thetext>Yes it only contains one item each. I should&apos;ve used a Vector of (String, double) pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120434</commentid>
    <comment_count>5</comment_count>
      <attachid>259787</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-08-24 15:49:16 -0700</bug_when>
    <thetext>Created attachment 259787
Patch

It uses Vector&lt;std::pair&lt;String, double&gt;&gt; instead of Vector&lt;HashMap&lt;String, double&gt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120437</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-24 15:50:46 -0700</bug_when>
    <thetext>Attachment 259787 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:75:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120653</commentid>
    <comment_count>7</comment_count>
      <attachid>259787</attachid>
    <who name="">mitz</who>
    <bug_when>2015-08-25 11:12:07 -0700</bug_when>
    <thetext>Comment on attachment 259787
Patch

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

This seems to be breaking the Windows build.

&gt; Source/WebCore/ChangeLog:4
&gt; +        Replace Vector&lt;String&gt; with Vector&lt;std::pair&lt;String, double&gt;&gt; for recent searches
&gt; +        in order to store additional time information.

Typically the summary begins with a high-level description of the change and what motivates it. Something along the lines of “Augment &lt;input type=search&gt;’s recent search history with the time each entry was added, in order to allow time-based clearing of search history”.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:64
&gt; +        [items addObject:@{ searchItem.first: [[NSNumber alloc] initWithDouble:searchItem.second] }];

Just like the single-object HashMap before, what is the point of a single-object dictionary? Why not just an array?

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:76
&gt; +        if ([item isKindOfClass:[NSDictionary class]] &amp;&amp; item.allKeys &gt; 0) {

Checking if a pointer type (item.allKeys) is greater than an integer (0) doesn’t make much sense.

This also seems like it will fail to load information saved by the current version of the code, causing it to be lost.

&gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:54
&gt;          items = adoptCF(CFArrayCreateMutable(0, searchItems.size(), &amp;kCFTypeArrayCallBacks));
&gt;  
&gt; -        for (const auto&amp; searchItem : searchItems)
&gt; -            CFArrayAppendValue(items.get(), searchItem.createCFString().get());
&gt; +        for (const auto&amp; searchItem : searchItems) {
&gt; +            const void* searchItemString[] = { searchItem.first };
&gt; +            const void* searchItemDate[] = { CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, &amp;searchItem.second) };
&gt; +            RetainPtr&lt;CFDictionaryRef&gt; searchItemMap = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, searchItemString, searchItemDate, 1, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +            CFArrayAppendValue(items.get(), searchItemMap.get());

Seems weird to use CF API instead of Foundation API in this Objective-C file.

&gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:81
&gt; +        if (auto item = dynamic_cf_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(items.get(), i))) {
&gt; +            CFIndex size = CFDictionaryGetCount(item);
&gt; +            Vector&lt;CFStringRef, 1&gt; keys(size);
&gt; +            Vector&lt;CFNumberRef, 1&gt; values(size);
&gt; +            CFDictionaryGetKeysAndValues(item, reinterpret_cast&lt;const void**&gt;(keys.data()), reinterpret_cast&lt;const void**&gt;(values.data()));
&gt; +            if (size &gt; 0)
&gt; +                searchItems.append(std::make_pair((String)keys[0], ((__bridge NSNumber*)values[0]).doubleValue));
&gt; +        }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121842</commentid>
    <comment_count>8</comment_count>
      <attachid>260183</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-08-28 15:03:39 -0700</bug_when>
    <thetext>Created attachment 260183
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121844</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-28 15:05:04 -0700</bug_when>
    <thetext>Attachment 260183 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:49:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:61:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:64:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:75:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:78:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 5 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125813</commentid>
    <comment_count>10</comment_count>
      <attachid>261153</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-14 16:48:24 -0700</bug_when>
    <thetext>Created attachment 261153
Patch v2 for EWS

This patch is re-uploaded to see the build error on Windows platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125867</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-14 20:32:44 -0700</bug_when>
    <thetext>Attachment 261153 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:49:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:61:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:64:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:75:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:78:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 5 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126118</commentid>
    <comment_count>12</comment_count>
      <attachid>261233</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-15 14:10:42 -0700</bug_when>
    <thetext>Created attachment 261233
Patch v2

Now it should build on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126119</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-15 14:13:52 -0700</bug_when>
    <thetext>Attachment 261233 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:49:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:61:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:75:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126120</commentid>
    <comment_count>14</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-15 14:14:58 -0700</bug_when>
    <thetext>The above style errors are false positive, which is tracked by &lt;rdar://problem/22408083&gt; check-webkit-style reports a false positive error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126149</commentid>
    <comment_count>15</comment_count>
      <attachid>261233</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-09-15 15:04:38 -0700</bug_when>
    <thetext>Comment on attachment 261233
Patch v2

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

I think you should use std::chrono::system_clock::time_point for times instead of double - then you can use std::chrono::system_clock::now() to create a time.

You can convert between time_points and NSDates using

    NSTimeInterval timeInterval = std::chrono::duration_cast&lt;std::chrono::duration&lt;double&gt;&gt;(modifiedSince.time_since_epoch()).count();
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];

Does older versions of WebKit deal with the updated user defaults format?

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:96
&gt; +        if (CFGetTypeID(item) == CFArrayGetTypeID() &amp;&amp; CFArrayGetCount((CFArrayRef)item) == 2) {

Can use dynamic_cf_cast here.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:64
&gt; +        [items addObject:[NSArray arrayWithObjects:searchItem.first, [[NSNumber alloc] initWithDouble:searchItem.second], nil]];

I think you should use NSDate for the times instead.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:77
&gt; +        if ([item isKindOfClass:[NSArray class]] &amp;&amp; ((NSArray*)item).count == 2)
&gt; +            searchItems.append(std::make_pair((String)item[0], ((NSNumber*)item[1]).doubleValue));

You can use dynamic_objc_cast here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126216</commentid>
    <comment_count>16</comment_count>
      <attachid>261270</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-15 17:36:49 -0700</bug_when>
    <thetext>Created attachment 261270
Patch v3

Addressed Anders&apos; comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126372</commentid>
    <comment_count>17</comment_count>
      <attachid>261270</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-16 09:56:28 -0700</bug_when>
    <thetext>Comment on attachment 261270
Patch v3

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

&gt; Source/WebCore/platform/SearchPopupMenu.h:36
&gt; +    virtual void saveRecentSearches(const AtomicString&amp; name, const Vector&lt;std::pair&lt;String, double&gt;&gt;&amp; searchItems) = 0;
&gt; +    virtual void loadRecentSearches(const AtomicString&amp; name, Vector&lt;std::pair&lt;String, double&gt;&gt;&amp; searchItems) = 0;

This interface is confusing. Nothing about std::pair&lt;String, double&gt; indicates to me that one element is the search string and the other is a time. We’d probably be better off with a struct so we can name the two members.

Also, I suggest for new code we use std::chrono. Instead of double we would use std::chrono::time_point&lt;std::chrono::system_clock&gt;.

&gt; Source/WebCore/rendering/RenderSearchField.cpp:95
&gt; +    int size = static_cast&lt;int&gt;(m_recentSearches.size());
&gt; +    for (int i = size - 1; i &gt;= 0; --i) {
&gt; +        if (m_recentSearches[i].first == value)
&gt; +            m_recentSearches.remove(i);
&gt; +    }

This is really ugly, especially the static_cast&lt;int&gt; part. We should try to do a little better.

&gt; Source/WebCore/rendering/RenderSearchField.cpp:96
&gt; +    m_recentSearches.insert(0, std::make_pair(value, (double)time(nullptr)));

We should definitely not be using the C standard library function time and converting it to a double! If we use std::chrono, then it would be std::chrono::system_clock::now().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126373</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-16 09:57:21 -0700</bug_when>
    <thetext>Hmm, it seems like Anders made some of the same comments I did, but they weren’t really addressed in patch v3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126400</commentid>
    <comment_count>19</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-16 10:44:47 -0700</bug_when>
    <thetext>Sorry, I clicked on &quot;Review Patch&quot; directly to view Anders&apos; comments and it didn&apos;t show his suggestions about using std::chrono somehow. I will revise the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126735</commentid>
    <comment_count>20</comment_count>
      <attachid>261397</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-17 10:46:43 -0700</bug_when>
    <thetext>Created attachment 261397
Patch v3

Check if it builds on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126835</commentid>
    <comment_count>21</comment_count>
      <attachid>261397</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2015-09-17 14:18:21 -0700</bug_when>
    <thetext>Comment on attachment 261397
Patch v3

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

These new searches that have a time associated with them should probably be put in a new location (aka with a new preference key). Clients of WebKit will probably need to do the migration from the old preference key to the new one - unless I am missing some facility in WebKit to do that directly. Anders?

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:106
&gt; +            searchItems.append(RecentSearchItem((String)(CFStringRef)CFArrayGetValueAtIndex((CFArrayRef)item, 0), searchTime));

As Anders pointed out, this will probably break older clients.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:86
&gt; +            searchItems.append(RecentSearchItem((String)item, system_clock::time_point::min()));

As Anders pointed out, this will break older clients. You are storing an array or arrays where they are expecting an array of strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126873</commentid>
    <comment_count>22</comment_count>
      <attachid>261233</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-17 14:50:00 -0700</bug_when>
    <thetext>Comment on attachment 261233
Patch v2

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

&gt;&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:96
&gt;&gt; +        if (CFGetTypeID(item) == CFArrayGetTypeID() &amp;&amp; CFArrayGetCount((CFArrayRef)item) == 2) {
&gt; 
&gt; Can use dynamic_cf_cast here.

I will change that.

&gt;&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:64
&gt;&gt; +        [items addObject:[NSArray arrayWithObjects:searchItem.first, [[NSNumber alloc] initWithDouble:searchItem.second], nil]];
&gt; 
&gt; I think you should use NSDate for the times instead.

Yup, I should, as using NSDate is consistent with other user defaults.

&gt;&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:77
&gt;&gt; +            searchItems.append(std::make_pair((String)item[0], ((NSNumber*)item[1]).doubleValue));
&gt; 
&gt; You can use dynamic_objc_cast here.

I will change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126884</commentid>
    <comment_count>23</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-17 15:07:51 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 261270 [details]
&gt; Patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261270&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:36
&gt; &gt; +    virtual void saveRecentSearches(const AtomicString&amp; name, const Vector&lt;std::pair&lt;String, double&gt;&gt;&amp; searchItems) = 0;
&gt; &gt; +    virtual void loadRecentSearches(const AtomicString&amp; name, Vector&lt;std::pair&lt;String, double&gt;&gt;&amp; searchItems) = 0;
&gt; 
&gt; This interface is confusing. Nothing about std::pair&lt;String, double&gt;
&gt; indicates to me that one element is the search string and the other is a
&gt; time. We’d probably be better off with a struct so we can name the two
&gt; members.

That sounds a lot better. I will use a struct to represent the recent search item.

&gt; 
&gt; Also, I suggest for new code we use std::chrono. Instead of double we would
&gt; use std::chrono::time_point&lt;std::chrono::system_clock&gt;.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSearchField.cpp:95
&gt; &gt; +    int size = static_cast&lt;int&gt;(m_recentSearches.size());
&gt; &gt; +    for (int i = size - 1; i &gt;= 0; --i) {
&gt; &gt; +        if (m_recentSearches[i].first == value)
&gt; &gt; +            m_recentSearches.remove(i);
&gt; &gt; +    }
&gt; 
&gt; This is really ugly, especially the static_cast&lt;int&gt; part. We should try to
&gt; do a little better.

Totally agreed. I think removeAllMatching can make this better.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSearchField.cpp:96
&gt; &gt; +    m_recentSearches.insert(0, std::make_pair(value, (double)time(nullptr)));
&gt; 
&gt; We should definitely not be using the C standard library function time and
&gt; converting it to a double! If we use std::chrono, then it would be
&gt; std::chrono::system_clock::now().

I will change the time type to use std::chromo::system_clock::time_point instead of double! Thanks for the suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126888</commentid>
    <comment_count>24</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-17 15:11:42 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 261233 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261233&amp;action=review
&gt; 
&gt; I think you should use std::chrono::system_clock::time_point for times
&gt; instead of double - then you can use std::chrono::system_clock::now() to
&gt; create a time.
&gt; 
&gt; You can convert between time_points and NSDates using
&gt; 
&gt;     NSTimeInterval timeInterval =
&gt; std::chrono::duration_cast&lt;std::chrono::duration&lt;double&gt;&gt;(modifiedSince.
&gt; time_since_epoch()).count();
&gt;     NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
&gt; 
&gt; Does older versions of WebKit deal with the updated user defaults format?

After talking with Jessie, older versions of WebKit do not deal with the updated user defaults format. I should think of a way to migrate the preferences.

&gt; 
&gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:96
&gt; &gt; +        if (CFGetTypeID(item) == CFArrayGetTypeID() &amp;&amp; CFArrayGetCount((CFArrayRef)item) == 2) {
&gt; 
&gt; Can use dynamic_cf_cast here.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:64
&gt; &gt; +        [items addObject:[NSArray arrayWithObjects:searchItem.first, [[NSNumber alloc] initWithDouble:searchItem.second], nil]];
&gt; 
&gt; I think you should use NSDate for the times instead.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:77
&gt; &gt; +        if ([item isKindOfClass:[NSArray class]] &amp;&amp; ((NSArray*)item).count == 2)
&gt; &gt; +            searchItems.append(std::make_pair((String)item[0], ((NSNumber*)item[1]).doubleValue));
&gt; 
&gt; You can use dynamic_objc_cast here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129760</commentid>
    <comment_count>25</comment_count>
      <attachid>262212</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-30 17:29:39 -0700</bug_when>
    <thetext>Created attachment 262212
Patch v4

After discussing with Anders, we think it is better to store these recent searches in a plist in a new location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129762</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 17:31:12 -0700</bug_when>
    <thetext>Attachment 262212 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:68:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129765</commentid>
    <comment_count>27</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-09-30 17:35:43 -0700</bug_when>
    <thetext>I will address the style issue after the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129946</commentid>
    <comment_count>28</comment_count>
      <attachid>262212</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-01 09:41:03 -0700</bug_when>
    <thetext>Comment on attachment 262212
Patch v4

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

Looks generally good, but review- because of the incorrect code to read from disk (see below for details)

&gt; Source/WebCore/platform/SearchPopupMenu.h:40
&gt; +typedef struct RecentSearchItem {
&gt; +    RecentSearchItem() { }
&gt; +
&gt; +    RecentSearchItem(const String&amp; searchString, std::chrono::system_clock::time_point time)
&gt; +        : searchString(searchString), time(time) { }
&gt; +
&gt; +    String searchString;
&gt; +    std::chrono::system_clock::time_point time;
&gt; +} RecentSearchItem;

This typedef struct X {} X; pattern is completely unnecessary in C++. Just struct X { } is fine. There is no need to create constructors for a struct like this in modern C++. I also don’t think there’s a good reason to call this searchString and time rather than searchString and searchTime or just string and time. And further, there’s no reason to call this both recent searches and recent search items. I don’t think the word items adds much. So this should be:

    struct RecentSearch {
        String string;
        std::chrono::system_clock::time_point time;
    };

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:94
&gt; +            searchItems.append(RecentSearchItem((String)(CFStringRef)item, std::chrono::system_clock::time_point::min()));

The cast to CFStringRef here is not helpful since item is already a CFStringRef. The C-style cast to String here is not something we normally do. I suggest a C++ style cast. Passing min() here requires a comment; it’s not obvious why ti’s OK. And we should use aggregate syntax for this struct. So please add a comment explaining why min is correct and write something more like this:

    searchItems.append({ String{ item }, std::chrono::system_clock::time_point::min() });

&gt; Source/WebCore/rendering/RenderSearchField.cpp:94
&gt; +    m_recentSearches.insert(0, RecentSearchItem(value, std::chrono::system_clock::now()));

Please use aggregate syntax rather than constructor syntax:

    m_recentSearches.insert(0, { value, std::chrono::system_clock::now() });

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:52
&gt; +static NSMutableDictionary *readSearchFieldRecentSearchesPlist()
&gt; +{
&gt; +    return [[NSMutableDictionary alloc] initWithContentsOfFile:searchFieldRecentSearchesPlistPath()];
&gt; +}

This function is dangerous. It returns a newly created Objective-C object, but doesn’t use autorelease, nor wrap the pointer in a RetainPtr, nor does it follow the create/copy rule for naming functions that create new objects without autoreleasing them. I suggest using RetainPtr for the result here so we don’t leak memory.

I’m also not sure that [NSMutableDictionary initWithContentsOfFile:] is safe to use on an untrusted file. We need to instead use an appropriate API that doesn’t allow objects of arbitrary classes.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:78
&gt; +    NSMutableDictionary *recentSearchesPlist = readSearchFieldRecentSearchesPlist();

Here we leak the contents of this file. That’s why we need to use a RetainPtr or autorelease.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:80
&gt; +        [recentSearchesPlist[itemsKey] removeObjectForKey:name];

This won’t compile when targeting older versions of OS X, so we need to use objectForKey here instead of array subscripting syntax.

This code assumes that type of the key in the property list that we read in from will be a mutable dictionary and we can call removeObjectForKey on it. We don’t have a guarantee of that. We need to check the type of the object to see that it‘s a dictionary before modifying it, and we also need to make a mutable copy of the dictionary unless we are using an API that guarantees that any dictionaries it creates when reading the file are created mutable, which we currently are not doing.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:84
&gt; +            NSTimeInterval timeInterval = duration_cast&lt;duration&lt;double&gt;&gt;(searchItem.time.time_since_epoch()).count();

I’d like to see a helper function template to convert a duration object into an NSDate rather than writing this out here. It’s also not good that the code that creates the interval since 1970 is on a different line than the code that create the NSDate.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:88
&gt; +            NSDictionary *recentSearch = @{
&gt; +                searchStringKey: searchItem.searchString,
&gt; +                dateKey: [NSDate dateWithTimeIntervalSince1970:timeInterval]
&gt; +            };

I’m pretty sure that the dictionary literal syntax is not supported in all tools that we use for the versions of OS X that we currently target with WebKit. This might need to use method calls instead. Unless I am mistaken.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:94
&gt; +            [recentSearchesPlist[itemsKey] setObject:@{ searchesKey: items.get() } forKey:name];

Same problem here as in the removeObjectForKey: call above, and same issue with literals.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:96
&gt; +            recentSearchesPlist = [@{ itemsKey: @{ name: @{ searchesKey: items.get() } } } mutableCopy];

Same issue with literals. Doesn’t seem to good to make a mutable copy here. Wasteful.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:99
&gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];

Using atomically:YES is costly in performance and in NAND life. We should be sure this is necessary.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:112
&gt; +    NSArray *recentSearches = [[[recentSearchesPlist objectForKey:itemsKey] objectForKey:name] objectForKey:searchesKey];

Same comment about calling objectForKey: on an object of unknown type as above.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:115
&gt; +            system_clock::time_point searchItemTime = system_clock::time_point(duration_cast&lt;system_clock::duration&gt;(duration&lt;double&gt;(dynamic_objc_cast&lt;NSDate&gt;(item[dateKey]).timeIntervalSince1970)));

Same comment about using helper functions to convert between NSDate and time points as above.

&gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:116
&gt; +            searchItems.append(WebCore::RecentSearchItem((String)item[searchStringKey], searchItemTime));

Same comment about aggregate syntax.

&gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:38
&gt; +static NSString * const dateKey = @&quot;date&quot;;
&gt; +static NSString * const itemsKey = @&quot;items&quot;;
&gt; +static NSString * const searchesKey = @&quot;searches&quot;;
&gt; +static NSString * const searchStringKey = @&quot;searchString&quot;;

Seems quite bad to literally have copied and pasted code for WebKit 1 and WebKit 2. Please find a way to share more of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130002</commentid>
    <comment_count>29</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-01 12:36:42 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 262212 [details]
&gt; Patch v4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262212&amp;action=review
&gt; 
&gt; Looks generally good, but review- because of the incorrect code to read from
&gt; disk (see below for details)

Yeah my code is not robust and I am making too many assumptions.

&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:40
&gt; &gt; +typedef struct RecentSearchItem {
&gt; &gt; +    RecentSearchItem() { }
&gt; &gt; +
&gt; &gt; +    RecentSearchItem(const String&amp; searchString, std::chrono::system_clock::time_point time)
&gt; &gt; +        : searchString(searchString), time(time) { }
&gt; &gt; +
&gt; &gt; +    String searchString;
&gt; &gt; +    std::chrono::system_clock::time_point time;
&gt; &gt; +} RecentSearchItem;
&gt; 
&gt; This typedef struct X {} X; pattern is completely unnecessary in C++. Just
&gt; struct X { } is fine. There is no need to create constructors for a struct
&gt; like this in modern C++. I also don’t think there’s a good reason to call
&gt; this searchString and time rather than searchString and searchTime or just
&gt; string and time. And further, there’s no reason to call this both recent
&gt; searches and recent search items. I don’t think the word items adds much. So
&gt; this should be:
&gt; 
&gt;     struct RecentSearch {
&gt;         String string;
&gt;         std::chrono::system_clock::time_point time;
&gt;     };

I was looking at examples of how struct is used in other places in WebKit and a lot of them have constructors, so I thought it is a good practice, but I will refine the struct declaration.

&gt; 
&gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:94
&gt; &gt; +            searchItems.append(RecentSearchItem((String)(CFStringRef)item, std::chrono::system_clock::time_point::min()));
&gt; 
&gt; The cast to CFStringRef here is not helpful since item is already a
&gt; CFStringRef. The C-style cast to String here is not something we normally
&gt; do. I suggest a C++ style cast. Passing min() here requires a comment; it’s
&gt; not obvious why ti’s OK. And we should use aggregate syntax for this struct.
&gt; So please add a comment explaining why min is correct and write something
&gt; more like this:
&gt; 
&gt;     searchItems.append({ String{ item },
&gt; std::chrono::system_clock::time_point::min() });

I will add comments to explain why the use of min().

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSearchField.cpp:94
&gt; &gt; +    m_recentSearches.insert(0, RecentSearchItem(value, std::chrono::system_clock::now()));
&gt; 
&gt; Please use aggregate syntax rather than constructor syntax:
&gt; 
&gt;     m_recentSearches.insert(0, { value, std::chrono::system_clock::now() });

Will do.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:52
&gt; &gt; +static NSMutableDictionary *readSearchFieldRecentSearchesPlist()
&gt; &gt; +{
&gt; &gt; +    return [[NSMutableDictionary alloc] initWithContentsOfFile:searchFieldRecentSearchesPlistPath()];
&gt; &gt; +}
&gt; 
&gt; This function is dangerous. It returns a newly created Objective-C object,
&gt; but doesn’t use autorelease, nor wrap the pointer in a RetainPtr, nor does
&gt; it follow the create/copy rule for naming functions that create new objects
&gt; without autoreleasing them. I suggest using RetainPtr for the result here so
&gt; we don’t leak memory.

Nice catch. Will take care of the memory management.

&gt; 
&gt; I’m also not sure that [NSMutableDictionary initWithContentsOfFile:] is safe
&gt; to use on an untrusted file. We need to instead use an appropriate API that
&gt; doesn’t allow objects of arbitrary classes.

When you say &quot;arbitrary classes&quot;, do you mean the plist should be a dictionary, not an array or a string, etc.?

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:78
&gt; &gt; +    NSMutableDictionary *recentSearchesPlist = readSearchFieldRecentSearchesPlist();
&gt; 
&gt; Here we leak the contents of this file. That’s why we need to use a
&gt; RetainPtr or autorelease.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:80
&gt; &gt; +        [recentSearchesPlist[itemsKey] removeObjectForKey:name];
&gt; 
&gt; This won’t compile when targeting older versions of OS X, so we need to use
&gt; objectForKey here instead of array subscripting syntax.
&gt; 
&gt; This code assumes that type of the key in the property list that we read in
&gt; from will be a mutable dictionary and we can call removeObjectForKey on it.
&gt; We don’t have a guarantee of that. We need to check the type of the object
&gt; to see that it‘s a dictionary before modifying it, and we also need to make
&gt; a mutable copy of the dictionary unless we are using an API that guarantees
&gt; that any dictionaries it creates when reading the file are created mutable,
&gt; which we currently are not doing.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:84
&gt; &gt; +            NSTimeInterval timeInterval = duration_cast&lt;duration&lt;double&gt;&gt;(searchItem.time.time_since_epoch()).count();
&gt; 
&gt; I’d like to see a helper function template to convert a duration object into
&gt; an NSDate rather than writing this out here. It’s also not good that the
&gt; code that creates the interval since 1970 is on a different line than the
&gt; code that create the NSDate.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:88
&gt; &gt; +            NSDictionary *recentSearch = @{
&gt; &gt; +                searchStringKey: searchItem.searchString,
&gt; &gt; +                dateKey: [NSDate dateWithTimeIntervalSince1970:timeInterval]
&gt; &gt; +            };
&gt; 
&gt; I’m pretty sure that the dictionary literal syntax is not supported in all
&gt; tools that we use for the versions of OS X that we currently target with
&gt; WebKit. This might need to use method calls instead. Unless I am mistaken.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:94
&gt; &gt; +            [recentSearchesPlist[itemsKey] setObject:@{ searchesKey: items.get() } forKey:name];
&gt; 
&gt; Same problem here as in the removeObjectForKey: call above, and same issue
&gt; with literals.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:96
&gt; &gt; +            recentSearchesPlist = [@{ itemsKey: @{ name: @{ searchesKey: items.get() } } } mutableCopy];
&gt; 
&gt; Same issue with literals. Doesn’t seem to good to make a mutable copy here.
&gt; Wasteful.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:99
&gt; &gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];
&gt; 
&gt; Using atomically:YES is costly in performance and in NAND life. We should be
&gt; sure this is necessary.

I am setting it to YES because I am afraid the file might be corrupted while writing. With my previous approach of reading the plist from disk, I assume the file should be in the expected format. Your suggestions above will alleviate the problem. But I still think we should write atomically, what do you think?

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:112
&gt; &gt; +    NSArray *recentSearches = [[[recentSearchesPlist objectForKey:itemsKey] objectForKey:name] objectForKey:searchesKey];
&gt; 
&gt; Same comment about calling objectForKey: on an object of unknown type as
&gt; above.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:115
&gt; &gt; +            system_clock::time_point searchItemTime = system_clock::time_point(duration_cast&lt;system_clock::duration&gt;(duration&lt;double&gt;(dynamic_objc_cast&lt;NSDate&gt;(item[dateKey]).timeIntervalSince1970)));
&gt; 
&gt; Same comment about using helper functions to convert between NSDate and time
&gt; points as above.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:116
&gt; &gt; +            searchItems.append(WebCore::RecentSearchItem((String)item[searchStringKey], searchItemTime));
&gt; 
&gt; Same comment about aggregate syntax.

Will fix.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:38
&gt; &gt; +static NSString * const dateKey = @&quot;date&quot;;
&gt; &gt; +static NSString * const itemsKey = @&quot;items&quot;;
&gt; &gt; +static NSString * const searchesKey = @&quot;searches&quot;;
&gt; &gt; +static NSString * const searchStringKey = @&quot;searchString&quot;;
&gt; 
&gt; Seems quite bad to literally have copied and pasted code for WebKit 1 and
&gt; WebKit 2. Please find a way to share more of the code.

Will do.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130148</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-01 21:01:56 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:99
&gt; &gt; &gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];
&gt; &gt; 
&gt; &gt; Using atomically:YES is costly in performance and in NAND life. We should be
&gt; &gt; sure this is necessary.
&gt; 
&gt; I am setting it to YES because I am afraid the file might be corrupted while
&gt; writing. With my previous approach of reading the plist from disk, I assume
&gt; the file should be in the expected format. Your suggestions above will
&gt; alleviate the problem. But I still think we should write atomically, what do
&gt; you think?

No, I don’t think we should do the atomic write. In theory it might reduce the chance that the file will be corrupted, but in practice I think its cost outweighs its benefit. Should probably talk to some other WebKit experts about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131798</commentid>
    <comment_count>31</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-08 17:43:04 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; Comment on attachment 262212 [details]
&gt; &gt; Patch v4
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=262212&amp;action=review
&gt; &gt; 
&gt; &gt; Looks generally good, but review- because of the incorrect code to read from
&gt; &gt; disk (see below for details)
&gt; 
&gt; Yeah my code is not robust and I am making too many assumptions.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:40
&gt; &gt; &gt; +typedef struct RecentSearchItem {
&gt; &gt; &gt; +    RecentSearchItem() { }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    RecentSearchItem(const String&amp; searchString, std::chrono::system_clock::time_point time)
&gt; &gt; &gt; +        : searchString(searchString), time(time) { }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    String searchString;
&gt; &gt; &gt; +    std::chrono::system_clock::time_point time;
&gt; &gt; &gt; +} RecentSearchItem;
&gt; &gt; 
&gt; &gt; This typedef struct X {} X; pattern is completely unnecessary in C++. Just
&gt; &gt; struct X { } is fine. There is no need to create constructors for a struct
&gt; &gt; like this in modern C++. I also don’t think there’s a good reason to call
&gt; &gt; this searchString and time rather than searchString and searchTime or just
&gt; &gt; string and time. And further, there’s no reason to call this both recent
&gt; &gt; searches and recent search items. I don’t think the word items adds much. So
&gt; &gt; this should be:
&gt; &gt; 
&gt; &gt;     struct RecentSearch {
&gt; &gt;         String string;
&gt; &gt;         std::chrono::system_clock::time_point time;
&gt; &gt;     };
&gt; 
&gt; I was looking at examples of how struct is used in other places in WebKit
&gt; and a lot of them have constructors, so I thought it is a good practice, but
&gt; I will refine the struct declaration.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:94
&gt; &gt; &gt; +            searchItems.append(RecentSearchItem((String)(CFStringRef)item, std::chrono::system_clock::time_point::min()));
&gt; &gt; 
&gt; &gt; The cast to CFStringRef here is not helpful since item is already a
&gt; &gt; CFStringRef. The C-style cast to String here is not something we normally
&gt; &gt; do. I suggest a C++ style cast. Passing min() here requires a comment; it’s
&gt; &gt; not obvious why ti’s OK. And we should use aggregate syntax for this struct.
&gt; &gt; So please add a comment explaining why min is correct and write something
&gt; &gt; more like this:
&gt; &gt; 
&gt; &gt;     searchItems.append({ String{ item },
&gt; &gt; std::chrono::system_clock::time_point::min() });
&gt; 
&gt; I will add comments to explain why the use of min().
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderSearchField.cpp:94
&gt; &gt; &gt; +    m_recentSearches.insert(0, RecentSearchItem(value, std::chrono::system_clock::now()));
&gt; &gt; 
&gt; &gt; Please use aggregate syntax rather than constructor syntax:
&gt; &gt; 
&gt; &gt;     m_recentSearches.insert(0, { value, std::chrono::system_clock::now() });
&gt; 
&gt; Will do.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:52
&gt; &gt; &gt; +static NSMutableDictionary *readSearchFieldRecentSearchesPlist()
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    return [[NSMutableDictionary alloc] initWithContentsOfFile:searchFieldRecentSearchesPlistPath()];
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; This function is dangerous. It returns a newly created Objective-C object,
&gt; &gt; but doesn’t use autorelease, nor wrap the pointer in a RetainPtr, nor does
&gt; &gt; it follow the create/copy rule for naming functions that create new objects
&gt; &gt; without autoreleasing them. I suggest using RetainPtr for the result here so
&gt; &gt; we don’t leak memory.
&gt; 
&gt; Nice catch. Will take care of the memory management.
&gt; 
&gt; &gt; 
&gt; &gt; I’m also not sure that [NSMutableDictionary initWithContentsOfFile:] is safe
&gt; &gt; to use on an untrusted file. We need to instead use an appropriate API that
&gt; &gt; doesn’t allow objects of arbitrary classes.

Dan and I looked at the implementation of [NSMutableDictionary initWithContentsOfFile:], it will return nil when the object is not a dictionary. It also should return all the container classes in mutable form. But I will check if the dictionary is mutable before modifying it.

&gt; 
&gt; When you say &quot;arbitrary classes&quot;, do you mean the plist should be a
&gt; dictionary, not an array or a string, etc.?
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:78
&gt; &gt; &gt; +    NSMutableDictionary *recentSearchesPlist = readSearchFieldRecentSearchesPlist();
&gt; &gt; 
&gt; &gt; Here we leak the contents of this file. That’s why we need to use a
&gt; &gt; RetainPtr or autorelease.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:80
&gt; &gt; &gt; +        [recentSearchesPlist[itemsKey] removeObjectForKey:name];
&gt; &gt; 
&gt; &gt; This won’t compile when targeting older versions of OS X, so we need to use
&gt; &gt; objectForKey here instead of array subscripting syntax.
&gt; &gt; 
&gt; &gt; This code assumes that type of the key in the property list that we read in
&gt; &gt; from will be a mutable dictionary and we can call removeObjectForKey on it.
&gt; &gt; We don’t have a guarantee of that. We need to check the type of the object
&gt; &gt; to see that it‘s a dictionary before modifying it, and we also need to make
&gt; &gt; a mutable copy of the dictionary unless we are using an API that guarantees
&gt; &gt; that any dictionaries it creates when reading the file are created mutable,
&gt; &gt; which we currently are not doing.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:84
&gt; &gt; &gt; +            NSTimeInterval timeInterval = duration_cast&lt;duration&lt;double&gt;&gt;(searchItem.time.time_since_epoch()).count();
&gt; &gt; 
&gt; &gt; I’d like to see a helper function template to convert a duration object into
&gt; &gt; an NSDate rather than writing this out here. It’s also not good that the
&gt; &gt; code that creates the interval since 1970 is on a different line than the
&gt; &gt; code that create the NSDate.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:88
&gt; &gt; &gt; +            NSDictionary *recentSearch = @{
&gt; &gt; &gt; +                searchStringKey: searchItem.searchString,
&gt; &gt; &gt; +                dateKey: [NSDate dateWithTimeIntervalSince1970:timeInterval]
&gt; &gt; &gt; +            };
&gt; &gt; 
&gt; &gt; I’m pretty sure that the dictionary literal syntax is not supported in all
&gt; &gt; tools that we use for the versions of OS X that we currently target with
&gt; &gt; WebKit. This might need to use method calls instead. Unless I am mistaken.

There are instances in WebKit where we use the dictionary literal syntax, but because
I had to use method calls in some places, I just used method calls instead of the
dictionary literal syntax in all the places.

&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:94
&gt; &gt; &gt; +            [recentSearchesPlist[itemsKey] setObject:@{ searchesKey: items.get() } forKey:name];
&gt; &gt; 
&gt; &gt; Same problem here as in the removeObjectForKey: call above, and same issue
&gt; &gt; with literals.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:96
&gt; &gt; &gt; +            recentSearchesPlist = [@{ itemsKey: @{ name: @{ searchesKey: items.get() } } } mutableCopy];
&gt; &gt; 
&gt; &gt; Same issue with literals. Doesn’t seem to good to make a mutable copy here.
&gt; &gt; Wasteful.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:99
&gt; &gt; &gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];
&gt; &gt; 
&gt; &gt; Using atomically:YES is costly in performance and in NAND life. We should be
&gt; &gt; sure this is necessary.

I decided to use atomically:NO in the end since I added all these checks when reading the plist from the disk so even if the file is corrupted, it shouldn&apos;t be a big concern and we avoid the costly performance issue by using atomically:YES.

&gt; 
&gt; I am setting it to YES because I am afraid the file might be corrupted while
&gt; writing. With my previous approach of reading the plist from disk, I assume
&gt; the file should be in the expected format. Your suggestions above will
&gt; alleviate the problem. But I still think we should write atomically, what do
&gt; you think?
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:112
&gt; &gt; &gt; +    NSArray *recentSearches = [[[recentSearchesPlist objectForKey:itemsKey] objectForKey:name] objectForKey:searchesKey];
&gt; &gt; 
&gt; &gt; Same comment about calling objectForKey: on an object of unknown type as
&gt; &gt; above.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:115
&gt; &gt; &gt; +            system_clock::time_point searchItemTime = system_clock::time_point(duration_cast&lt;system_clock::duration&gt;(duration&lt;double&gt;(dynamic_objc_cast&lt;NSDate&gt;(item[dateKey]).timeIntervalSince1970)));
&gt; &gt; 
&gt; &gt; Same comment about using helper functions to convert between NSDate and time
&gt; &gt; points as above.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:116
&gt; &gt; &gt; +            searchItems.append(WebCore::RecentSearchItem((String)item[searchStringKey], searchItemTime));
&gt; &gt; 
&gt; &gt; Same comment about aggregate syntax.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:38
&gt; &gt; &gt; +static NSString * const dateKey = @&quot;date&quot;;
&gt; &gt; &gt; +static NSString * const itemsKey = @&quot;items&quot;;
&gt; &gt; &gt; +static NSString * const searchesKey = @&quot;searches&quot;;
&gt; &gt; &gt; +static NSString * const searchStringKey = @&quot;searchString&quot;;
&gt; &gt; 
&gt; &gt; Seems quite bad to literally have copied and pasted code for WebKit 1 and
&gt; &gt; WebKit 2. Please find a way to share more of the code.
&gt; 
&gt; Will do.
&gt; 
&gt; Thanks for the review!

(In reply to comment #28)
&gt; Comment on attachment 262212 [details]
&gt; Patch v4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262212&amp;action=review
&gt; 
&gt; Looks generally good, but review- because of the incorrect code to read from
&gt; disk (see below for details)
&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:40
&gt; &gt; +typedef struct RecentSearchItem {
&gt; &gt; +    RecentSearchItem() { }
&gt; &gt; +
&gt; &gt; +    RecentSearchItem(const String&amp; searchString, std::chrono::system_clock::time_point time)
&gt; &gt; +        : searchString(searchString), time(time) { }
&gt; &gt; +
&gt; &gt; +    String searchString;
&gt; &gt; +    std::chrono::system_clock::time_point time;
&gt; &gt; +} RecentSearchItem;
&gt; 
&gt; This typedef struct X {} X; pattern is completely unnecessary in C++. Just
&gt; struct X { } is fine. There is no need to create constructors for a struct
&gt; like this in modern C++. I also don’t think there’s a good reason to call
&gt; this searchString and time rather than searchString and searchTime or just
&gt; string and time. And further, there’s no reason to call this both recent
&gt; searches and recent search items. I don’t think the word items adds much. So
&gt; this should be:
&gt; 
&gt;     struct RecentSearch {
&gt;         String string;
&gt;         std::chrono::system_clock::time_point time;
&gt;     };
&gt; 
&gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:94
&gt; &gt; +            searchItems.append(RecentSearchItem((String)(CFStringRef)item, std::chrono::system_clock::time_point::min()));
&gt; 
&gt; The cast to CFStringRef here is not helpful since item is already a
&gt; CFStringRef. The C-style cast to String here is not something we normally
&gt; do. I suggest a C++ style cast. Passing min() here requires a comment; it’s
&gt; not obvious why ti’s OK. And we should use aggregate syntax for this struct.
&gt; So please add a comment explaining why min is correct and write something
&gt; more like this:
&gt; 
&gt;     searchItems.append({ String{ item },
&gt; std::chrono::system_clock::time_point::min() });
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSearchField.cpp:94
&gt; &gt; +    m_recentSearches.insert(0, RecentSearchItem(value, std::chrono::system_clock::now()));
&gt; 
&gt; Please use aggregate syntax rather than constructor syntax:
&gt; 
&gt;     m_recentSearches.insert(0, { value, std::chrono::system_clock::now() });
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:52
&gt; &gt; +static NSMutableDictionary *readSearchFieldRecentSearchesPlist()
&gt; &gt; +{
&gt; &gt; +    return [[NSMutableDictionary alloc] initWithContentsOfFile:searchFieldRecentSearchesPlistPath()];
&gt; &gt; +}
&gt; 
&gt; This function is dangerous. It returns a newly created Objective-C object,
&gt; but doesn’t use autorelease, nor wrap the pointer in a RetainPtr, nor does
&gt; it follow the create/copy rule for naming functions that create new objects
&gt; without autoreleasing them. I suggest using RetainPtr for the result here so
&gt; we don’t leak memory.
&gt; 
&gt; I’m also not sure that [NSMutableDictionary initWithContentsOfFile:] is safe
&gt; to use on an untrusted file. We need to instead use an appropriate API that
&gt; doesn’t allow objects of arbitrary classes.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:78
&gt; &gt; +    NSMutableDictionary *recentSearchesPlist = readSearchFieldRecentSearchesPlist();
&gt; 
&gt; Here we leak the contents of this file. That’s why we need to use a
&gt; RetainPtr or autorelease.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:80
&gt; &gt; +        [recentSearchesPlist[itemsKey] removeObjectForKey:name];
&gt; 
&gt; This won’t compile when targeting older versions of OS X, so we need to use
&gt; objectForKey here instead of array subscripting syntax.
&gt; 
&gt; This code assumes that type of the key in the property list that we read in
&gt; from will be a mutable dictionary and we can call removeObjectForKey on it.
&gt; We don’t have a guarantee of that. We need to check the type of the object
&gt; to see that it‘s a dictionary before modifying it, and we also need to make
&gt; a mutable copy of the dictionary unless we are using an API that guarantees
&gt; that any dictionaries it creates when reading the file are created mutable,
&gt; which we currently are not doing.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:84
&gt; &gt; +            NSTimeInterval timeInterval = duration_cast&lt;duration&lt;double&gt;&gt;(searchItem.time.time_since_epoch()).count();
&gt; 
&gt; I’d like to see a helper function template to convert a duration object into
&gt; an NSDate rather than writing this out here. It’s also not good that the
&gt; code that creates the interval since 1970 is on a different line than the
&gt; code that create the NSDate.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:88
&gt; &gt; +            NSDictionary *recentSearch = @{
&gt; &gt; +                searchStringKey: searchItem.searchString,
&gt; &gt; +                dateKey: [NSDate dateWithTimeIntervalSince1970:timeInterval]
&gt; &gt; +            };
&gt; 
&gt; I’m pretty sure that the dictionary literal syntax is not supported in all
&gt; tools that we use for the versions of OS X that we currently target with
&gt; WebKit. This might need to use method calls instead. Unless I am mistaken.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:94
&gt; &gt; +            [recentSearchesPlist[itemsKey] setObject:@{ searchesKey: items.get() } forKey:name];
&gt; 
&gt; Same problem here as in the removeObjectForKey: call above, and same issue
&gt; with literals.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:96
&gt; &gt; +            recentSearchesPlist = [@{ itemsKey: @{ name: @{ searchesKey: items.get() } } } mutableCopy];
&gt; 
&gt; Same issue with literals. Doesn’t seem to good to make a mutable copy here.
&gt; Wasteful.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:99
&gt; &gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];
&gt; 
&gt; Using atomically:YES is costly in performance and in NAND life. We should be
&gt; sure this is necessary.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:112
&gt; &gt; +    NSArray *recentSearches = [[[recentSearchesPlist objectForKey:itemsKey] objectForKey:name] objectForKey:searchesKey];
&gt; 
&gt; Same comment about calling objectForKey: on an object of unknown type as
&gt; above.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:115
&gt; &gt; +            system_clock::time_point searchItemTime = system_clock::time_point(duration_cast&lt;system_clock::duration&gt;(duration&lt;double&gt;(dynamic_objc_cast&lt;NSDate&gt;(item[dateKey]).timeIntervalSince1970)));
&gt; 
&gt; Same comment about using helper functions to convert between NSDate and time
&gt; points as above.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/SearchPopupMenuMac.mm:116
&gt; &gt; +            searchItems.append(WebCore::RecentSearchItem((String)item[searchStringKey], searchItemTime));
&gt; 
&gt; Same comment about aggregate syntax.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:38
&gt; &gt; +static NSString * const dateKey = @&quot;date&quot;;
&gt; &gt; +static NSString * const itemsKey = @&quot;items&quot;;
&gt; &gt; +static NSString * const searchesKey = @&quot;searches&quot;;
&gt; &gt; +static NSString * const searchStringKey = @&quot;searchString&quot;;
&gt; 
&gt; Seems quite bad to literally have copied and pasted code for WebKit 1 and
&gt; WebKit 2. Please find a way to share more of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131802</commentid>
    <comment_count>32</comment_count>
      <attachid>262734</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-08 17:58:27 -0700</bug_when>
    <thetext>Created attachment 262734
Patch v5

Implement the logic to save and load recent searches in WebCore so that WebKit and WebKit2 can share the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131827</commentid>
    <comment_count>33</comment_count>
      <attachid>262745</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-08 21:55:53 -0700</bug_when>
    <thetext>Created attachment 262745
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131927</commentid>
    <comment_count>34</comment_count>
      <attachid>262745</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-09 09:13:04 -0700</bug_when>
    <thetext>Comment on attachment 262745
Patch v5

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

Many comments about possible improvements. The only one that caused me to say review- was the lack of check of the type of itemsKey; most of the other ideas for improvement are optional.

&gt; Source/WebCore/platform/SearchPopupMenu.h:24
&gt;  #include &quot;PopupMenu.h&quot;

Seems like a forward declaration of PopupMenu would suffice; no need to include the entire header.

&gt; Source/WebCore/platform/SearchPopupMenu.h:39
&gt;      virtual ~SearchPopupMenu() {}

We normally put a space in braces in cases like this.

&gt; Source/WebCore/platform/SearchPopupMenu.h:42
&gt; +    virtual void loadRecentSearches(const AtomicString&amp; name, Vector&lt;RecentSearch&gt;&amp; searchItems) = 0;

It would be nice cleanup/modernization to change this to return a Vector instead of using an out argument.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:3
&gt; + * Copyright (C) 2006 Apple Inc.
&gt; + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).

These seem like the wrong copyrights for this code. While we did move some code from a file with these dates on it, I don’t think that’s accurate about who wrote the code that is now here. In particular, this header seems all new, so should be copyright 2015 Apple. Also missing All rights reserved here.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:32
&gt; +class SearchPopupMenuCocoa {
&gt; +public:
&gt; +WEBCORE_EXPORT static void saveRecentSearches(const AtomicString&amp; name, const Vector&lt;RecentSearch&gt;&amp; searchItems);
&gt; +WEBCORE_EXPORT static void loadRecentSearches(const AtomicString&amp; name, Vector&lt;RecentSearch&gt;&amp; searchItems);
&gt; +};

There’s no reason we need to put these functions in a namespace with the name Cocoa in it. The code is compiled only for Cocoa and doesn’t need to reiterate its platform name in the function or namespace name.

These two functions should just be free functions. No value in wrapping them in a class and very little value in namespacing them at all. If you really do want them in a namespace, then I suggest a namespace, not a class. But the names seem sufficiently unique to be at the WebCore namespace level.

The loadRecentSearches function should use a return value rather than an out argument.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:3
&gt; + * Copyright (C) 2006 Apple Inc.
&gt; + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).

Same comment about copyright date. The code here is almost all new. I don’t think it needs the old copyright on it just because it is obliquely related to the code that was in WebKit2.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:40
&gt; +    return storagePath.stringByStandardizingPath.stringByResolvingSymlinksInPath;

Is it important to call stringByStandardizingPath and stringByResolvingSymlinksInPath? We’re not storing this path, just using it to write or read a file. I don’t think either of those operations are needed.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:57
&gt; +static system_clock::time_point fromNSDatetoSystemClockTime(NSDate *date)

When we write “to” functions we should list the “to” part first because that’s the return type and what’s most useful to see at the call site. Should be named toSystemClockTime. The argument type already makes it clear this takes an NSDate so I don’t think it needs to be named toSystemClockTimeFromNSDate.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:64
&gt; +static NSDate *fromSystemClockTimetoNSDate(system_clock::time_point time)

For the same reason as above, this should  be named toNSDate or perhaps toNSDateFromSystemClock.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:95
&gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];

Same comment about secure coding.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:110
&gt; +    NSArray *recentSearches = [[[recentSearchesPlist objectForKey:itemsKey] objectForKey:name] objectForKey:searchesKey];
&gt; +    if (![recentSearches isKindOfClass:[NSArray class]])
&gt; +        return;

This is missing a check of the type of the object stored under itemsKey. We need to check that is an NSDictionary.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:114
&gt; +        if (![item isKindOfClass:[NSDictionary class]] || item.count != 2)
&gt; +            continue;

Should omit this item.count check. Harmless to ignore additional key/value pairs in the dictionary; perhaps we might want to add a third key later without breaking ability of older versions of WebKit reading it.

Generally speaking we don’t check for extra things in dictionaries like this. We don’t do it for the top level dictionary above, for example.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:124
&gt; +        searchItems.append({ String { searchString }, fromNSDatetoSystemClockTime(date) });

I think our usual formatting puts the class name right next to the { }, so it can be:

    { String{ searchString } ...

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:96
&gt; +            // The timestamp is not used on Windows platform, but we need to conform to the new RecentSearch struct type.
&gt; +            // The time is initialized to min() because we do not know the time when the search string was created so we
&gt; +            // assume it was created long time ago.

It’s not appropriate to refer to something as “new” in a comment like this. The type won’t be new years from now when someone is reading this comment.

Comment should be more like:

    // We are choosing not to use or store search times on Windows at this time, so for now it&apos;s OK to use a &quot;distant past&quot; time as a placeholder.

That may not be exactly right, but it’s more like the kind of comment we should write.

I also think we could just use { } instead of std::chrono::system_clock::time_point::min(); it would store the epoch instead of the minimum time, which I think might also be OK. But I guess min() is slightly better.

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:97
&gt; +            searchItems.append({ String { item }, std::chrono::system_clock::time_point::min() });

I think our usual formatting puts the class name right next to the { }, so it can be:

    { String{ item } ...

&gt; Source/WebCore/rendering/RenderSearchField.cpp:95
&gt; +    RecentSearch recentSearch = { value, std::chrono::system_clock::now() };
&gt; +    m_recentSearches.insert(0, recentSearch);

Do we need a local variable? What happens if we just write this?

    m_recentSearches.insert(0, { value, std::chrono::system_clock::now() });

A while ago someone made sure that Vector::append was properly overloaded to make things like this work. Maybe it hasn’t been done yet for Vector::insert.

&gt; Source/WebCore/rendering/RenderSearchField.h:28
&gt; +#include &quot;SearchPopupMenu.h&quot;

We can get rid of the forward declaration of the SearchPopupMenu class below now that we are including the header. Unfortunate we have to do that, but not so bad I guess.

&gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:-43
&gt; -    if (!name) {
&gt; -        // FIXME: This should be a message check.
&gt; -        return;
&gt; -    }

Doesn’t seem good to be removing this code and comment, unless the FIXME is inaccurate.

&gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:-63
&gt; -    if (!name) {
&gt; -        // FIXME: This should be a message check.
&gt; -        return;
&gt; -    }

Doesn’t seem good to be removing this code and comment, unless the FIXME is inaccurate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131997</commentid>
    <comment_count>35</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-09 13:30:10 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Comment on attachment 262745 [details]
&gt; Patch v5
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262745&amp;action=review
&gt; 
&gt; Many comments about possible improvements. The only one that caused me to
&gt; say review- was the lack of check of the type of itemsKey; most of the other
&gt; ideas for improvement are optional.
&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:24
&gt; &gt;  #include &quot;PopupMenu.h&quot;
&gt; 
&gt; Seems like a forward declaration of PopupMenu would suffice; no need to
&gt; include the entire header.

I will change it to forward declaration, and this change will result me in including
the header in RenderSearchField.cpp file now.

&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:39
&gt; &gt;      virtual ~SearchPopupMenu() {}
&gt; 
&gt; We normally put a space in braces in cases like this.

Will fix since it is a trivial change.

&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:42
&gt; &gt; +    virtual void loadRecentSearches(const AtomicString&amp; name, Vector&lt;RecentSearch&gt;&amp; searchItems) = 0;
&gt; 
&gt; It would be nice cleanup/modernization to change this to return a Vector
&gt; instead of using an out argument.

I think I will leave this improvement to later because changing this function declaration means changes in a lot of different places and it is not what the patch primarily addresses.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:3
&gt; &gt; + * Copyright (C) 2006 Apple Inc.
&gt; &gt; + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
&gt; 
&gt; These seem like the wrong copyrights for this code. While we did move some
&gt; code from a file with these dates on it, I don’t think that’s accurate about
&gt; who wrote the code that is now here. In particular, this header seems all
&gt; new, so should be copyright 2015 Apple. Also missing All rights reserved
&gt; here.

I will use the 2015 copyright statement.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:32
&gt; &gt; +class SearchPopupMenuCocoa {
&gt; &gt; +public:
&gt; &gt; +WEBCORE_EXPORT static void saveRecentSearches(const AtomicString&amp; name, const Vector&lt;RecentSearch&gt;&amp; searchItems);
&gt; &gt; +WEBCORE_EXPORT static void loadRecentSearches(const AtomicString&amp; name, Vector&lt;RecentSearch&gt;&amp; searchItems);
&gt; &gt; +};
&gt; 
&gt; There’s no reason we need to put these functions in a namespace with the
&gt; name Cocoa in it. The code is compiled only for Cocoa and doesn’t need to
&gt; reiterate its platform name in the function or namespace name.
&gt; 
&gt; These two functions should just be free functions. No value in wrapping them
&gt; in a class and very little value in namespacing them at all. If you really
&gt; do want them in a namespace, then I suggest a namespace, not a class. But
&gt; the names seem sufficiently unique to be at the WebCore namespace level.

Originally I was afraid of function name collision, but I guess it is unique enough to
be at the WebCore namespace level.

&gt; 
&gt; The loadRecentSearches function should use a return value rather than an out
&gt; argument.

I will change that.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:3
&gt; &gt; + * Copyright (C) 2006 Apple Inc.
&gt; &gt; + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
&gt; 
&gt; Same comment about copyright date. The code here is almost all new. I don’t
&gt; think it needs the old copyright on it just because it is obliquely related
&gt; to the code that was in WebKit2.
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:40
&gt; &gt; +    return storagePath.stringByStandardizingPath.stringByResolvingSymlinksInPath;
&gt; 
&gt; Is it important to call stringByStandardizingPath and
&gt; stringByResolvingSymlinksInPath? We’re not storing this path, just using it
&gt; to write or read a file. I don’t think either of those operations are needed.

You are right, looking at the documentation, these are not necessary. The reason why I had them before was that we used them in WebProcessPoolCocoa.mm

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:57
&gt; &gt; +static system_clock::time_point fromNSDatetoSystemClockTime(NSDate *date)
&gt; 
&gt; When we write “to” functions we should list the “to” part first because
&gt; that’s the return type and what’s most useful to see at the call site.
&gt; Should be named toSystemClockTime. The argument type already makes it clear
&gt; this takes an NSDate so I don’t think it needs to be named
&gt; toSystemClockTimeFromNSDate.

I will use toSystemClockTime.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:64
&gt; &gt; +static NSDate *fromSystemClockTimetoNSDate(system_clock::time_point time)
&gt; 
&gt; For the same reason as above, this should  be named toNSDate or perhaps
&gt; toNSDateFromSystemClock.

I will use toNSDateFromSystemClock.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:95
&gt; &gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; 
&gt; Same comment about secure coding.

Somehow, I couldn&apos;t find the comments about secure coding?

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:110
&gt; &gt; +    NSArray *recentSearches = [[[recentSearchesPlist objectForKey:itemsKey] objectForKey:name] objectForKey:searchesKey];
&gt; &gt; +    if (![recentSearches isKindOfClass:[NSArray class]])
&gt; &gt; +        return;
&gt; 
&gt; This is missing a check of the type of the object stored under itemsKey. We
&gt; need to check that is an NSDictionary.

You are absolutely right. Plus I need to check the type of the object stored under name is also an NSDictionary.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:114
&gt; &gt; +        if (![item isKindOfClass:[NSDictionary class]] || item.count != 2)
&gt; &gt; +            continue;
&gt; 
&gt; Should omit this item.count check. Harmless to ignore additional key/value
&gt; pairs in the dictionary; perhaps we might want to add a third key later
&gt; without breaking ability of older versions of WebKit reading it.

I will revise this.

&gt; 
&gt; Generally speaking we don’t check for extra things in dictionaries like
&gt; this. We don’t do it for the top level dictionary above, for example.
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:124
&gt; &gt; +        searchItems.append({ String { searchString }, fromNSDatetoSystemClockTime(date) });
&gt; 
&gt; I think our usual formatting puts the class name right next to the { }, so
&gt; it can be:
&gt; 
&gt;     { String{ searchString } ...

I had { String{ searchString } ... before, but when I ran check-webkit-style, I got this error: Missing space before {. I searched in the WebKit repository and there are no examples of using either String{ or String { to do the cast, so I will leave it as it is for now unless you feel strongly about using the style above, I will change it to your suggested style and file a bug against check-webkit-style.

&gt; 
&gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:96
&gt; &gt; +            // The timestamp is not used on Windows platform, but we need to conform to the new RecentSearch struct type.
&gt; &gt; +            // The time is initialized to min() because we do not know the time when the search string was created so we
&gt; &gt; +            // assume it was created long time ago.
&gt; 
&gt; It’s not appropriate to refer to something as “new” in a comment like this.
&gt; The type won’t be new years from now when someone is reading this comment.

Totally missed this...

&gt; 
&gt; Comment should be more like:
&gt; 
&gt;     // We are choosing not to use or store search times on Windows at this
&gt; time, so for now it&apos;s OK to use a &quot;distant past&quot; time as a placeholder.
&gt; 
&gt; That may not be exactly right, but it’s more like the kind of comment we
&gt; should write.

I will use the comments above. It is more clear and concise than what I can come up with.

&gt; 
&gt; I also think we could just use { } instead of
&gt; std::chrono::system_clock::time_point::min(); it would store the epoch
&gt; instead of the minimum time, which I think might also be OK. But I guess
&gt; min() is slightly better.

Okay, I will stick with min(). My design is, when we support storing search times on Windows, these search entries in the old format will be delete when users select to delete all history.

&gt; 
&gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:97
&gt; &gt; +            searchItems.append({ String { item }, std::chrono::system_clock::time_point::min() });
&gt; 
&gt; I think our usual formatting puts the class name right next to the { }, so
&gt; it can be:
&gt; 
&gt;     { String{ item } ...

Same comment as above.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSearchField.cpp:95
&gt; &gt; +    RecentSearch recentSearch = { value, std::chrono::system_clock::now() };
&gt; &gt; +    m_recentSearches.insert(0, recentSearch);
&gt; 
&gt; Do we need a local variable? What happens if we just write this?
&gt; 
&gt;     m_recentSearches.insert(0, { value, std::chrono::system_clock::now() });
&gt; 
&gt; A while ago someone made sure that Vector::append was properly overloaded to
&gt; make things like this work. Maybe it hasn’t been done yet for Vector::insert.

I don&apos;t think this is done for Vector::insert, I used m_recentSearches.insert(0, { value, std::chrono::system_clock::now() }) before, but it gave me &quot;No matching member
function for call to &apos;insert&apos;&quot;.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSearchField.h:28
&gt; &gt; +#include &quot;SearchPopupMenu.h&quot; 
&gt; 
&gt; We can get rid of the forward declaration of the SearchPopupMenu class below
&gt; now that we are including the header. Unfortunate we have to do that, but
&gt; not so bad I guess.

Will fix.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:-43
&gt; &gt; -    if (!name) {
&gt; &gt; -        // FIXME: This should be a message check.
&gt; &gt; -        return;
&gt; &gt; -    }
&gt; 
&gt; Doesn’t seem good to be removing this code and comment, unless the FIXME is
&gt; inaccurate.

Will restore it.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:-63
&gt; &gt; -    if (!name) {
&gt; &gt; -        // FIXME: This should be a message check.
&gt; &gt; -        return;
&gt; &gt; -    }
&gt; 
&gt; Doesn’t seem good to be removing this code and comment, unless the FIXME is
&gt; inaccurate.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132111</commentid>
    <comment_count>36</comment_count>
      <attachid>262822</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-09 21:49:26 -0700</bug_when>
    <thetext>Created attachment 262822
Patch

New patch and see if it builds on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132412</commentid>
    <comment_count>37</comment_count>
      <attachid>262822</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-12 12:04:30 -0700</bug_when>
    <thetext>Comment on attachment 262822
Patch

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

General looks really good. I’d love to say review+ but there is still a bit of wrong code here.

&gt; Source/WebCore/platform/SearchPopupMenu.h:36
&gt; +class PopupMenu;

Normally we’d put a forward declaration before something defined in this file, so this would be slightly better above RecentSearch.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:52
&gt; +static RetainPtr&lt;NSMutableDictionary&gt;readSearchFieldRecentSearchesPlist()

Missing space here before the word &quot;read&quot;.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:56
&gt; +    if (![[recentSearchesPlist classForCoder] isSubclassOfClass:[NSMutableDictionary class]])
&gt; +        return nil;

I don’t understand what good this check does. Seems like this should just be removed. -[NSMutableDictionary initWithContentsOfFile:] is guaranteed to return a mutable dictionary or nil; no need to double check that the dictionary is mutable.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:96
&gt; +        NSMutableDictionary *itemsDictionary = [recentSearchesPlist objectForKey:itemsKey];
&gt; +        if ([[itemsDictionary classForCoder] isSubclassOfClass:[NSMutableDictionary class]])
&gt; +            [itemsDictionary setObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:items.get(), searchesKey, nil] forKey:name];
&gt; +        else
&gt; +            [recentSearchesPlist setObject:[NSMutableDictionary dictionary] forKey:itemsKey];

I don’t think this code is correct.

The use of classForCoder seems a peculiar way to check if a dictionary is mutable; the best practice is *not* to check but guarantee it is mutable. Typically by using mutableCopy on a dictionary.

More importantly, if -[NSMutableDictionary initWithContentsOfFile:] does not guarantee it creates all mutable collections, then we’d want to make a mutable copy of an immutable dictionary we find, not throw it away and make a new empty dictionary.

And finally, it looks like else part of the if does this completely wrong. It uses the items array as a key, not a value!

Did we test this? How?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:137
&gt; +        searchItems.append({ String { searchString }, toSystemClockTime(date) });

No space after String before the &quot;{&quot; as I mentioned in my last review.

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95
&gt; +            searchItems.append({ String { item }, std::chrono::system_clock::time_point::min() });

No space after String before the &quot;{&quot; as I mentioned in my last review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132574</commentid>
    <comment_count>38</comment_count>
      <attachid>262822</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-12 16:51:41 -0700</bug_when>
    <thetext>Comment on attachment 262822
Patch

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

&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:137
&gt;&gt; +        searchItems.append({ String { searchString }, toSystemClockTime(date) });
&gt; 
&gt; No space after String before the &quot;{&quot; as I mentioned in my last review.

Sorry that I missed your comment last time about being driven by a complaint from the style checker.

&gt;&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95
&gt;&gt; +            searchItems.append({ String { item }, std::chrono::system_clock::time_point::min() });
&gt; 
&gt; No space after String before the &quot;{&quot; as I mentioned in my last review.

Sorry that I missed your comment last time about being driven by a complaint from the style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132577</commentid>
    <comment_count>39</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-12 17:01:23 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Comment on attachment 262822 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262822&amp;action=review
&gt; 
&gt; General looks really good. I’d love to say review+ but there is still a bit
&gt; of wrong code here.
&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:36
&gt; &gt; +class PopupMenu;
&gt; 
&gt; Normally we’d put a forward declaration before something defined in this
&gt; file, so this would be slightly better above RecentSearch.

Will move.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:52
&gt; &gt; +static RetainPtr&lt;NSMutableDictionary&gt;readSearchFieldRecentSearchesPlist()
&gt; 
&gt; Missing space here before the word &quot;read&quot;.

Will fix.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:56
&gt; &gt; +    if (![[recentSearchesPlist classForCoder] isSubclassOfClass:[NSMutableDictionary class]])
&gt; &gt; +        return nil;
&gt; 
&gt; I don’t understand what good this check does. Seems like this should just be
&gt; removed. -[NSMutableDictionary initWithContentsOfFile:] is guaranteed to
&gt; return a mutable dictionary or nil; no need to double check that the
&gt; dictionary is mutable.

At Foundation level after calling creation method in CoreFoundation, it is only checking if it is a dictionary. But at CoreFoundation level, when the object is created, it is guaranteed to return a mutable dictionary or nil. So I guess the check is not necessary.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:96
&gt; &gt; +        NSMutableDictionary *itemsDictionary = [recentSearchesPlist objectForKey:itemsKey];
&gt; &gt; +        if ([[itemsDictionary classForCoder] isSubclassOfClass:[NSMutableDictionary class]])
&gt; &gt; +            [itemsDictionary setObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:items.get(), searchesKey, nil] forKey:name];
&gt; &gt; +        else
&gt; &gt; +            [recentSearchesPlist setObject:[NSMutableDictionary dictionary] forKey:itemsKey];
&gt; 
&gt; I don’t think this code is correct.
&gt; 
&gt; The use of classForCoder seems a peculiar way to check if a dictionary is
&gt; mutable; the best practice is *not* to check but guarantee it is mutable.
&gt; Typically by using mutableCopy on a dictionary.
&gt; 
&gt; More importantly, if -[NSMutableDictionary initWithContentsOfFile:] does not
&gt; guarantee it creates all mutable collections, then we’d want to make a
&gt; mutable copy of an immutable dictionary we find, not throw it away and make
&gt; a new empty dictionary.

The reason I have this check is that itemsDictionary is not guaranteed to be a mutable dictionary, it could be a mutable array or a mutable string, calling setObject:forKey: on those types would be bad. So I think the check is necessary.

&gt; 
&gt; And finally, it looks like else part of the if does this completely wrong.
&gt; It uses the items array as a key, not a value!

In the else part of the if, it uses itemsKey as the key and does not have anything to do with the items array. Are you referring to something else?

So if it is not a mutable dictionary, it means it could be a mutable array or a mutable string, then that probably means the plist is corrupted, so I want to clear the plist and make it an empty dictionary.

&gt; 
&gt; Did we test this? How?

We currently do not have existing tests for loading and saving recent searches. I tested manually by doing searches on different websites, checking the recent searches are shown correctly and the RecentSearches.plist is in the structure I expect it to be.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:137
&gt; &gt; +        searchItems.append({ String { searchString }, toSystemClockTime(date) });
&gt; 
&gt; No space after String before the &quot;{&quot; as I mentioned in my last review.

Okay. And I filed a bug &lt;rdar://problem/23077261&gt; against check-webkit-style.

&gt; 
&gt; &gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95
&gt; &gt; +            searchItems.append({ String { item }, std::chrono::system_clock::time_point::min() });
&gt; 
&gt; No space after String before the &quot;{&quot; as I mentioned in my last review.

Okay. And I filed a bug &lt;rdar://problem/23077261&gt; against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132602</commentid>
    <comment_count>40</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-12 17:40:31 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 262212 [details]
&gt; Patch v4
&gt; 
&gt; 
&gt; This function is dangerous. It returns a newly created Objective-C object,
&gt; but doesn’t use autorelease, nor wrap the pointer in a RetainPtr, nor does
&gt; it follow the create/copy rule for naming functions that create new objects
&gt; without autoreleasing them. I suggest using RetainPtr for the result here so
&gt; we don’t leak memory.
&gt; 
&gt; I’m also not sure that [NSMutableDictionary initWithContentsOfFile:] is safe
&gt; to use on an untrusted file. We need to instead use an appropriate API that
&gt; doesn’t allow objects of arbitrary classes.

I agree. This should use NSPropertyListSerialization, and pass NSPropertyListMutableContainersAndLeaves for its mutability options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132603</commentid>
    <comment_count>41</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-12 17:42:50 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; 
&gt; The reason I have this check is that itemsDictionary is not guaranteed to be
&gt; a mutable dictionary, it could be a mutable array or a mutable string,
&gt; calling setObject:forKey: on those types would be bad. So I think the check
&gt; is necessary.
&gt; 

Please don&apos;t check isSubclassOfClass, just use isKindOfClass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132650</commentid>
    <comment_count>42</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-12 18:59:22 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #28)
&gt; &gt; Comment on attachment 262212 [details]
&gt; &gt; Patch v4
&gt; &gt; 
&gt; &gt; 
&gt; &gt; This function is dangerous. It returns a newly created Objective-C object,
&gt; &gt; but doesn’t use autorelease, nor wrap the pointer in a RetainPtr, nor does
&gt; &gt; it follow the create/copy rule for naming functions that create new objects
&gt; &gt; without autoreleasing them. I suggest using RetainPtr for the result here so
&gt; &gt; we don’t leak memory.
&gt; &gt; 
&gt; &gt; I’m also not sure that [NSMutableDictionary initWithContentsOfFile:] is safe
&gt; &gt; to use on an untrusted file. We need to instead use an appropriate API that
&gt; &gt; doesn’t allow objects of arbitrary classes.
&gt; 
&gt; I agree. This should use NSPropertyListSerialization, and pass
&gt; NSPropertyListMutableContainersAndLeaves for its mutability options.

I think NSPropertyListMutableContainers will suffice, which is what [NSMutableDictionary initWithContentsOfFile:] will pass to NSPropertyListSerialization.  We do not need things like NSString in the plist to be guaranteed to be mutable; we just need the containers to be guaranteed mutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132655</commentid>
    <comment_count>43</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-12 19:03:55 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #39)
&gt; &gt; 
&gt; &gt; The reason I have this check is that itemsDictionary is not guaranteed to be
&gt; &gt; a mutable dictionary, it could be a mutable array or a mutable string,
&gt; &gt; calling setObject:forKey: on those types would be bad. So I think the check
&gt; &gt; is necessary.
&gt; &gt; 
&gt; 
&gt; Please don&apos;t check isSubclassOfClass, just use isKindOfClass.

Will use isKindOfClass:, with Darin&apos;s help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132821</commentid>
    <comment_count>44</comment_count>
      <attachid>262998</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-13 11:27:58 -0700</bug_when>
    <thetext>Created attachment 262998
Revised Patch

Talked with Anders, the work to add tests to WebKit is probably a lot, not sure if it is worth it for this patch, but I did test manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132828</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 11:35:38 -0700</bug_when>
    <thetext>Attachment 262998 did not pass style-queue:


ERROR: Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:131:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132830</commentid>
    <comment_count>46</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-13 11:37:32 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; Attachment 262998 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:131:  Missing
&gt; space before {  [whitespace/braces] [5]
&gt; ERROR: Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95:  Missing space
&gt; before {  [whitespace/braces] [5]
&gt; Total errors found: 2 in 27 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

rdar://problem/23077261 is tracking this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133295</commentid>
    <comment_count>47</comment_count>
      <attachid>262998</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-14 16:05:45 -0700</bug_when>
    <thetext>Comment on attachment 262998
Revised Patch

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

&gt; Source/WebCore/platform/SearchPopupMenu.h:42
&gt; +    virtual void saveRecentSearches(const AtomicString&amp; name, const Vector&lt;RecentSearch&gt;&amp; searchItems) = 0;

No need for the second argument to have a name; searchItems is redundant with the type Vector&lt;RecentSearch&gt;.

&gt; Source/WebCore/platform/SearchPopupMenu.h:43
&gt; +    virtual void loadRecentSearches(const AtomicString&amp; name, Vector&lt;RecentSearch&gt;&amp; searchItems) = 0;

No need for the second argument to have a name; searchItems is redundant with the type Vector&lt;RecentSearch&gt;.

We should come back and change this function to use a return value instead of an out argument in a later patch.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:87
&gt; +        for (auto searchItem : searchItems)

This should be auto&amp; rather than auto, since we have no need to copy each searchItem as we iterate the vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133368</commentid>
    <comment_count>48</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-14 20:57:19 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Comment on attachment 262998 [details]
&gt; Revised Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262998&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:42
&gt; &gt; +    virtual void saveRecentSearches(const AtomicString&amp; name, const Vector&lt;RecentSearch&gt;&amp; searchItems) = 0;
&gt; 
&gt; No need for the second argument to have a name; searchItems is redundant
&gt; with the type Vector&lt;RecentSearch&gt;.

Will change.

&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:43
&gt; &gt; +    virtual void loadRecentSearches(const AtomicString&amp; name, Vector&lt;RecentSearch&gt;&amp; searchItems) = 0;
&gt; 
&gt; No need for the second argument to have a name; searchItems is redundant
&gt; with the type Vector&lt;RecentSearch&gt;.

Will change.

&gt; 
&gt; We should come back and change this function to use a return value instead
&gt; of an out argument in a later patch.

Okay.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:87
&gt; &gt; +        for (auto searchItem : searchItems)
&gt; 
&gt; This should be auto&amp; rather than auto, since we have no need to copy each
&gt; searchItem as we iterate the vector.

Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133371</commentid>
    <comment_count>49</comment_count>
      <attachid>263136</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-14 21:03:40 -0700</bug_when>
    <thetext>Created attachment 263136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133372</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 21:05:22 -0700</bug_when>
    <thetext>Attachment 263136 did not pass style-queue:


ERROR: Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:131:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133373</commentid>
    <comment_count>51</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-14 21:06:25 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; Attachment 263136 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:131:  Missing
&gt; space before {  [whitespace/braces] [5]
&gt; ERROR: Source/WebCore/platform/win/SearchPopupMenuWin.cpp:95:  Missing space
&gt; before {  [whitespace/braces] [5]
&gt; Total errors found: 2 in 27 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

rdar://problem/23077261 is tracking this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133377</commentid>
    <comment_count>52</comment_count>
      <attachid>263136</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2015-10-14 21:32:24 -0700</bug_when>
    <thetext>Comment on attachment 263136
Patch

Looks like he addressed Darin&apos;s last comments so giving him a cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133390</commentid>
    <comment_count>53</comment_count>
      <attachid>263136</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 22:19:39 -0700</bug_when>
    <thetext>Comment on attachment 263136
Patch

Clearing flags on attachment: 263136

Committed r191084: &lt;http://trac.webkit.org/changeset/191084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133391</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 22:19:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259769</attachid>
            <date>2015-08-24 14:14:35 -0700</date>
            <delta_ts>2015-08-24 15:49:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148388-20150824141426.patch</filename>
            <type>text/plain</type>
            <size>19962</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJlZjY0ZDc4ZjRiYWFh
MWNmNmJlNjE1N2NkZDlhZDZjOWEyYWVlMS4uOTQyOTdkMDlhOWJhZGZkNjEwYTUwNDBkOGFmOTVh
MzYxNzI5NzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA4LTI0ICBaaHVv
IExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+
IHdpdGggVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJjaGVz
CisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFyY2hQb3B1cE1l
bnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVNlYXJjaFBv
cHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWFyY2hQ
b3B1cE1lbnUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOiBO
b3cgdGhhdCBtX3JlY2VudFNlYXJjaGVzIGFyZSBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJs
ZT4+CisgICAgICAgIHdlIGNhbm5vdCB1c2UgLXJlbW92ZUFsbCB3aXRoIGEgc2VhcmNoIHN0cmlu
Zy4gSXRlcmF0ZSB0aHJvdWdoIHRoZSBWZWN0b3IgYW5kIHJlbW92ZSB0aGUKKyAgICAgICAgaXRl
bSB0aGF0IGhhcyBrZXkgZXF1YWwgdG8gdGhlIHNlYXJjaCBzdHJpbmcuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KTogRWFjaCBIYXNoTWFwIG9u
bHkgY29udGFpbnMgb25lIHBhaXIgYW5kIHRoZQorICAgICAgICBrZXkgaXMgdGhlIHNlYXJjaCBz
dHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6aXRlbVRleHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorCiAyMDE1LTA4LTE4ICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IENTUyBmaWx0
ZXJzIHdpdGhvdXQgd2Via2l0IHByZWZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGQ0YTQ2ODNjOGQ3
NzQ5M2FmZDBkNzFiMDFhODUyNjNkYmRhY2EwMGUuLmQxYTFkOGU3YWY1NzIwNTAxOTgxNjg3YWQy
YWJkOGY2MWZmYTFiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0w
OC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBWZWN0
b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4gZm9yIHJlY2Vu
dCBzZWFyY2hlcworICAgICAgICBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5m
b3JtYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwOgorICAgICAgICAoU2Vh
cmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoU2VhcmNoUG9w
dXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oOgorCiAyMDE1LTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBhbGwgcmVtYWluaW5nIHVzZXMgb2YgV1RG
OjpNdXRleCB3aXRoIFdURjo6TG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZiZDk1NWFiYTg4YTUw
MWI5MmM3NThjMzYwOTMzYWU5MWMzM2ZmNzMuLmRhZmFiZjRjZmY0ZDEzYzM5MzJhOTJjNWY4NmE2
MzhlNTU1NDAyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wOC0y
NCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8
U3RyaW5nPiB3aXRoIFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4gZm9yIHJlY2VudCBz
ZWFyY2hlcworICAgICAgICBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3Jt
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDgzODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW06CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVN
YWM6OnNhdmVSZWNlbnRTZWFyY2hlcyk6IEFkZCBhIE5TRGljdGlvbmFyeSBpdGVtLgorICAgICAg
ICAoU2VhcmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBDaGVjayB0aGVyZSBp
cyBhdCBsZWFzdCBvbmUgaXRlbSBpbiB0aGUKKyAgICAgICAgTlNEaWN0aW9uYXJ5IGFuZCBjb252
ZXJ0IE5TRGljdGlvbmFyeSB0byBhIEhhc2hNYXAuCisKIDIwMTUtMDgtMTcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGFsbCByZW1haW5pbmcgdXNl
cyBvZiBXVEY6Ok11dGV4IHdpdGggV1RGOjpMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzE4ZDY3N2Y0YmU1
MzI1NGUzZTZjZTc1YjRkNGY4MjM4Y2YxNjUwMy4uMTUyOWYzMTIwNmZlOTc5ZTZhMjAwZjU0MDNm
NzJlOWZlZmRhYTliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA4LTI0ICBa
aHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJp
bmc+IHdpdGggVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJj
aGVzCisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4
OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBDb252ZXJ0IGVhY2ggSGFzaE1hcCB0byBD
RkRpY3Rpb25hcnlSZWYuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2Vu
dFNlYXJjaGVzKTogQ29udmVydCBlYWNoIENGRGljdGlvbmFyeVJlZiB0byBIYXNoTWFwLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNoUG9w
dXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFyY2hQ
b3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaDoKKwogMjAxNS0wOC0xOCAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBDU1MgZmlsdGVycyB3aXRo
b3V0IHdlYmtpdCBwcmVmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggZWE5MjU1YzgyMGYyM2Q0YTk0Y2Q1ZGNjMmFiMGVmYzk2YzE1NjJlMS4uYzMwNzYwOTVlYTRh
YWZiOGMyMDg2MmY4NTM3YTQ4NzA3MmQ2MDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKQEAgLTEzOCw4ICsxMzgsOCBAQCBwdWJsaWM6CiBjbGFzcyBFbXB0eVNlYXJj
aFBvcHVwTWVudSA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewogcHVibGljOgogICAgIHZpcnR1
YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSB7IHJldHVybiBtX3BvcHVwLmdldCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3Rv
cjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxIYXNoTWFwPFN0cmluZywg
ZG91YmxlPj4mKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFy
Y2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5o
CmluZGV4IGYxOTlmYWI3MDU4OGYxNzMxZGU0YjA2MTllYWFkMWYzMWY5NTkzNmEuLjA2OTQyYzEw
NmE0N2EwZGIyNmNlOWQ4NDU5Nzk2MWE2NGUzYzljNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NlYXJjaFBvcHVwTWVudS5oCkBAIC0yMyw3ICsyMyw5IEBACiAKICNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzIsOCArMzQsOCBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgUmVm
Q291bnRlZDxTZWFyY2hQb3B1cE1lbnU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TZWFyY2hQ
b3B1cE1lbnUoKSB7fQogICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPEhhc2hNYXA8U3Ry
aW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPEhhc2hNYXA8U3Ry
aW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxl
ZCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNo
RmllbGQuY3BwCmluZGV4IDg5ZGMzNGM0ZjQ0NGRjYzVjNmM5ZTA3NWUxN2Q3N2M2ZWQyZDQ4MDUu
LjJhYjdhNGY1YjQzMmYxYzUxMTYzZmY3MDc2MTlkNDg5MTg3NzczZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtODgsOCArODgsMTIg
QEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KCkKICAgICBpZiAoZnJh
bWUoKS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsKHZhbHVlKTsKLSAgICBtX3JlY2VudFNlYXJj
aGVzLmluc2VydCgwLCB2YWx1ZSk7CisgICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KG1f
cmVjZW50U2VhcmNoZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkgPj0g
MDsgLS1pKSB7CisgICAgICAgIGlmIChtX3JlY2VudFNlYXJjaGVzW2ldLmJlZ2luKCktPmtleSA9
PSB2YWx1ZSkKKyAgICAgICAgICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlKGkpOworICAgIH0K
KyAgICBtX3JlY2VudFNlYXJjaGVzLmluc2VydCgwLCBIYXNoTWFwPFN0cmluZywgZG91YmxlPiB7
IHsgdmFsdWUsIChkb3VibGUpdGltZShudWxscHRyKSB9IH0pOwogICAgIHdoaWxlIChzdGF0aWNf
Y2FzdDxpbnQ+KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKSA+IGlucHV0RWxlbWVudCgpLm1heFJl
c3VsdHMoKSkKICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVMYXN0KCk7CiAKQEAgLTIy
OCw3ICsyMzIsNyBAQCBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2lnbmVk
IGxpc3RJbmRleCkgY29uc3QKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsaXN0SW5kZXgpID09
IChzaXplIC0gMSkpCiAgICAgICAgIHJldHVybiBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hl
c1RleHQoKTsKICNlbmRpZgotICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAt
IDFdOworICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFdLmJlZ2luKCkt
PmtleTsKIH0KIAogU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtTGFiZWwodW5zaWduZWQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNo
RmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmlu
ZGV4IGI2MDU3ODFjOWQ0ZDBiMWMxNDk4NTFlMDg1MzMyNTEwM2UyZjZlNDQuLjU5ZjlkNjhjZjNh
YTdlYjE1NzJhM2ExMDkyYTY0Mjc0MTkzMDUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fc2VhcmNoUG9wdXBJc1Zpc2libGU7CiAgICAgUmVmUHRyPFNlYXJjaFBvcHVwTWVu
dT4gbV9zZWFyY2hQb3B1cDsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3JlY2VudFNlYXJjaGVzOwor
ICAgIFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4gbV9yZWNlbnRTZWFyY2hlczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDc1ZGE2ZWRjNjBi
YzQxY2QwOGJiZmM4Mzg5ZDhkMzkzMDhlNjRjNGUuLmRlNzM0YzI0ZDE3N2JlZTQ2YTU2NGJjNTlm
NzJiOWYxNGFjOTk4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIFBvcHVw
TWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVw
LmdldCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1z
Ki8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4mIC8qc2Vh
cmNoSXRlbXMqLykKIHsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYgLypzZWFyY2hJdGVt
cyovKQordm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmLCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiAvKnNlYXJjaEl0
ZW1zKi8pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKaW5kZXggNjE5N2I3ZDA3ODg0ZGRhOWQ4YzY0ZTAxNGE3
MDgxYTBkMWNiMTUzZS4uZDEyMjU5ZjBkYTdmMDMzNjc1MzQ1MTc3YTZlMWQxZDYyMGYxNGE1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9w
dXBNZW51SU9TLmgKQEAgLTMzLDggKzMzLDggQEAgcHVibGljOgogICAgIFNlYXJjaFBvcHVwTWVu
dUlPUyhXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+
PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRv
dWJsZT4+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKaW5kZXggNGMxY2M3OTgzODlmYTIyOWYz
Mjg4NTk2OWYyMjM0M2VlZjk1NDczNi4uMTY4ZTVjYjVlODQ2NWFhYjAxOWY5NDk2NjFmYjBkNGNh
OWU2YmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51TWFjLmgKQEAgLTM1LDggKzM1LDggQEAgcHVibGljOgogICAgIH5TZWFy
Y2hQb3B1cE1lbnVNYWMoKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1
cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1z
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJ
dGVtcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudU1hYy5tbQppbmRleCAyYjIyNzg0MjJmYzlkZTRmMWE5OGNiN2ExZGYyZTgz
MDJkYjZkOWFjLi5kMmRmYzQ2YzJhZjMwNmFkOTY4ODRlZjFkYzE0MjIyMjU2MzhiNDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51TWFjLm1tCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgU2VhcmNoUG9wdXBNZW51TWFjOjplbmFi
bGVkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8SGFzaE1hcDxT
dHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTYxLDE5ICs2MSwyMSBAQCB2b2lkIFNlYXJjaFBvcHVwTWVu
dU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdAogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCld
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW06IHNlYXJjaEl0ZW1zKQotICAgICAg
ICBbaXRlbXMgYWRkT2JqZWN0OnNlYXJjaEl0ZW1dOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0
OkB7IHNlYXJjaEl0ZW0uYmVnaW4oKS0+a2V5OiBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aERv
dWJsZTpzZWFyY2hJdGVtLmJlZ2luKCktPnZhbHVlXSB9XTsKIAogICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0
b3NhdmVLZXkobmFtZSldOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4mIHNl
YXJjaEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgc2VhcmNoSXRlbXMuY2xlYXIoKTsKLSAgICBmb3IgKE5TU3RyaW5nICppdGVtIGluIFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZl
S2V5KG5hbWUpXSkgewotICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVtKTsKKyAgICBmb3Ig
KE5TRGljdGlvbmFyeSAqaXRlbSBpbiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBhcnJheUZvcktleTphdXRvc2F2ZUtleShuYW1lKV0pIHsKKyAgICAgICAgaWYgKFtpdGVt
IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dICYmIGl0ZW0uYWxsS2V5cyA+IDAp
IHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpzZWFyY2hJdGVtU3RyaW5nID0gaXRlbS5hbGxLZXlz
WzBdOworICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKEhhc2hNYXA8U3RyaW5nLCBkb3Vi
bGU+IHsgeyAoU3RyaW5nKXNlYXJjaEl0ZW1TdHJpbmcsICgoTlNOdW1iZXIqKWl0ZW1bc2VhcmNo
SXRlbVN0cmluZ10pLmRvdWJsZVZhbHVlIH0gfSk7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
aW5kZXggM2IzZThiYzE0YWNlMTFjOTAxMTkwNGM4MTIyMjNmZjQ5YmRkMzdhNy4uZTRjMjQyMzM0
OGViM2VlZTc0ZDcyY2RjMzAwMWVhYjAzODJmYzk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzUsNyArMzUsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoi
ICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
ZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiBzZWFy
Y2hJdGVtcykKIHsKICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KQEAgLTQ3LDE1ICs0NywxOSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mCiAgICAgaWYgKCFzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsKICAgICAgICAgaXRl
bXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNlYXJjaEl0ZW1zLnNpemUoKSwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2Vh
cmNoSXRlbSA6IHNlYXJjaEl0ZW1zKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0
ZW1zLmdldCgpLCBzZWFyY2hJdGVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW0gOiBzZWFyY2hJdGVtcykgeworICAgICAgICAgICAg
Y29uc3Qgdm9pZCogc2VhcmNoSXRlbVN0cmluZ1tdID0geyBzZWFyY2hJdGVtLmJlZ2luKCktPmtl
eSB9OworICAgICAgICAgICAgY29uc3Qgdm9pZCogc2VhcmNoSXRlbURhdGVbXSA9IHsgQ0ZOdW1i
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnNlYXJj
aEl0ZW0uYmVnaW4oKS0+dmFsdWUpIH07CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBzZWFyY2hJdGVtTWFwID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc2VhcmNoSXRlbVN0cmluZywgc2VhcmNoSXRlbURhdGUsIDEsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNo
SXRlbU1hcC5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBDRlByZWZlcmVuY2VzU2V0
QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJl
bmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiAgICAgQ0ZQcmVmZXJlbmNlc0FwcFN5bmNocm9uaXpl
KGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJ
dGVtcykKIHsKICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGEgbWVzc2FnZSBjaGVjay4KQEAgLTY3LDggKzcxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYg
c2VhcmNoCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
Q0ZBcnJheUdldENvdW50KGl0ZW1zLmdldCgpKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBp
ZiAoYXV0byBpdGVtID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKSkpCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBl
bmQoaXRlbSk7CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKSkpIHsKKyAg
ICAgICAgICAgIENGSW5kZXggc2l6ZSA9IENGRGljdGlvbmFyeUdldENvdW50KGl0ZW0pOworICAg
ICAgICAgICAgVmVjdG9yPENGU3RyaW5nUmVmLCAxPiBrZXlzKHNpemUpOworICAgICAgICAgICAg
VmVjdG9yPENGTnVtYmVyUmVmLCAxPiB2YWx1ZXMoc2l6ZSk7CisgICAgICAgICAgICBDRkRpY3Rp
b25hcnlHZXRLZXlzQW5kVmFsdWVzKGl0ZW0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCoq
PihrZXlzLmRhdGEoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCoqPih2YWx1ZXMuZGF0
YSgpKSk7CisgICAgICAgICAgICBpZiAoc2l6ZSA+IDApCisgICAgICAgICAgICAgICAgc2VhcmNo
SXRlbXMuYXBwZW5kKEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IHsgeyhTdHJpbmcpa2V5c1swXSwg
KChfX2JyaWRnZSBOU051bWJlciopdmFsdWVzWzBdKS5kb3VibGVWYWx1ZX0gfSk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA2YzE4ZDg1ZGJjZGM2YWNmYmVlMzhmNmQyOTgyOGM2NWNkYjFiMmY4Li43ZDU3NDhlMzVhZDgz
ZmQ5MmY0Yjk3OGM1YzhmZDkzZWZkNDY2MzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xMjgxLDggKzEyODEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICAvLyBTZWFyY2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcs
IGRvdWJsZT4+Jik7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwg
VmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+PiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gU3BlZWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDVjYzIxMWQxM2IzNTk0MDk1NTBhYTU4NTljY2ExMWE1
YWU2M2E4OC4uNmNhZGJhY2RjZmU0YmJkMTJkZjMxMTYxODAxNWU1ZTBkMjIwMjU3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNzksOCArMzc5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAg
ICAgIyBTZWFyY2ggcG9wdXAgbWVudXMKLSAgICBTYXZlUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5h
bWUsIFZlY3RvcjxTdHJpbmc+IHNlYXJjaEl0ZW1zKQotICAgIExvYWRSZWNlbnRTZWFyY2hlcyhT
dHJpbmcgbmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHJlc3VsdCkKKyAgICBTYXZlUmVjZW50U2Vh
cmNoZXMoU3RyaW5nIG5hbWUsIFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4gc2VhcmNo
SXRlbXMpCisgICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPEhh
c2hNYXA8U3RyaW5nLCBkb3VibGU+PiByZXN1bHQpCiAKICAgICBTYXZlUERGVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5jcHAKaW5kZXggMWIwNjcwNTVlZGU4NDU1MGFkY2NlNmM1NmQ0MmNiZmM4YTZlOTNkNC4u
OTk1NWMxZWY4ZGJhYjg2YmEzODYxZGU5OWZkMmJjZGM2N2QzYTBlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcApAQCAtNDcsNyArNDcsNyBAQCBQb3B1cE1lbnUqIFdlYlNlYXJjaFBv
cHVwTWVudTo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKIH0KIAotdm9p
ZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViU2Vh
cmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsK
ICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNh
dmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyksIHBhZ2UtPnBhZ2VJRCgpKTsKIH0K
IAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHRJdGVtcykKK3ZvaWQgV2ViU2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiByZXN1bHRJdGVtcykKIHsKICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oCmluZGV4IDhmMTAxMWQyNjhmOTA3M2EwOWJiODBjNTM1ODA2ZTZkOTM0YmFhYTcuLjM4MGY3
MTZmZjQyNmFhMmJlMWJlYjg4Y2FiNTkyOTE5NmQzYzM4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1
cE1lbnUuaApAQCAtMzEsOCArMzEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7
CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3RvcjxIYXNoTWFwPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4+JiBzZWFy
Y2hJdGVtcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259787</attachid>
            <date>2015-08-24 15:49:16 -0700</date>
            <delta_ts>2015-08-28 15:03:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>20159</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBmMGUyNGE3MDRkNDI4Y2I3ZjgxZDdkZmZhMzc5OTQyYTZlNzZiZDdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDI0IEF1ZyAyMDE1IDE0OjI3OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkg
KysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAgICAgICAgICAgICAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQ
b3B1cE1lbnUuaCAgICAgICAgICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAgICAgIHwgMTAgKysrKysrKy0tLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggICAgICAgfCAgMiArLQogU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKysr
CiAuLi4vaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgICAgICB8ICA0
ICsrLS0KIC4uLi9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5o
IHwgIDQgKystLQogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgfCAxNCArKysrKysrKysrKysrKwogLi4uL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51TWFjLmggfCAgNCArKy0tCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudU1hYy5tbSAgICAgICB8IDE0ICsrKysrKysrLS0tLS0tCiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysr
KysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
ICAgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggICAgICAgICAgICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gIHwgIDQgKystLQogLi4uL1dlYkNvcmVTdXBw
b3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgICAgICAgICAgfCAgNCArKy0tCiAuLi4vV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCB8ICA0ICsrLS0KIDE3IGZp
bGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMTU3YjczOS4uNDdhNjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1
LTA4LTI0ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFZl
Y3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciBy
ZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1l
IGluZm9ybWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eVNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHA6IE5vdyB0aGF0IG1fcmVjZW50U2VhcmNoZXMgYXJlIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PgorICAgICAgICB3ZSBjYW5ub3QgdXNlIC1yZW1vdmVBbGwgd2l0
aCBhIHNlYXJjaCBzdHJpbmcuIEl0ZXJhdGUgdGhyb3VnaCB0aGUgVmVjdG9yIGFuZCByZW1vdmUg
dGhlCisgICAgICAgIGl0ZW0gdGhhdCBoYXMgZmlyc3Qgb2JqZWN0IGVxdWFsIHRvIHRoZSBzZWFy
Y2ggc3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJj
aFJlc3VsdCk6IFRoZSBmaXJzdCBvYmplY3QgaW4gdGhlIHBhaXIgaXMgdGhlIHNlYXJjaCBzdHJp
bmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6aXRlbVRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorCiAyMDE1LTA4LTI0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBi
dWlsZCBmaXhlcyBpbiByMTg4ODc1IGFuZCByMTg4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCmluZGV4IGVhOTI1NWMuLjI4MTgxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzgsOCArMTM4LDggQEAgcHVibGljOgogY2xhc3MgRW1w
dHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgeyByZXR1cm4gbV9wb3B1cC5nZXQoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNo
UG9wdXBNZW51LmgKaW5kZXggZjE5OWZhYi4uMzJhM2IyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKQEAgLTMyLDggKzMyLDggQEAgY2xhc3MgU2VhcmNoUG9w
dXBNZW51IDogcHVibGljIFJlZkNvdW50ZWQ8U2VhcmNoUG9wdXBNZW51PiB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+U2VhcmNoUG9wdXBNZW51KCkge30KICAgICB2aXJ0dWFsIFBvcHVwTWVudSog
cG9wdXBNZW51KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggODlkYzM0Yy4uNWExYzU2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBA
IC04OCw4ICs4OCwxMiBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQo
KQogICAgIGlmIChmcmFtZSgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVBbGwodmFsdWUpOwotICAg
IG1fcmVjZW50U2VhcmNoZXMuaW5zZXJ0KDAsIHZhbHVlKTsKKyAgICBpbnQgc2l6ZSA9IHN0YXRp
Y19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpOworICAgIGZvciAoaW50IGkgPSBz
aXplIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgaWYgKG1fcmVjZW50U2VhcmNoZXNbaV0u
Zmlyc3QgPT0gdmFsdWUpCisgICAgICAgICAgICBtX3JlY2VudFNlYXJjaGVzLnJlbW92ZShpKTsK
KyAgICB9CisgICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnQoMCwgc3RkOjptYWtlX3BhaXIodmFs
dWUsIChkb3VibGUpdGltZShudWxscHRyKSkpOwogICAgIHdoaWxlIChzdGF0aWNfY2FzdDxpbnQ+
KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKSA+IGlucHV0RWxlbWVudCgpLm1heFJlc3VsdHMoKSkK
ICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVMYXN0KCk7CiAKQEAgLTIyOCw3ICsyMzIs
NyBAQCBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRl
eCkgY29uc3QKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsaXN0SW5kZXgpID09IChzaXplIC0g
MSkpCiAgICAgICAgIHJldHVybiBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKTsK
ICNlbmRpZgotICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFdOworICAg
IHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFdLmZpcnN0OwogfQogCiBTdHJp
bmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1MYWJlbCh1bnNpZ25lZCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKaW5kZXggYjYwNTc4MS4uYTk5
MGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgK
QEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9zZWFyY2hQb3B1cElzVmlz
aWJsZTsKICAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBtX3NlYXJjaFBvcHVwOwotICAgIFZl
Y3RvcjxTdHJpbmc+IG1fcmVjZW50U2VhcmNoZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIGRvdWJsZT4+IG1fcmVjZW50U2VhcmNoZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggZDRhNDY4My4uN2ViOGU4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA4LTI0ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4gb3JkZXIg
dG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9w
dXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKwogMjAx
NS0wOC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgYWxsIHJlbWFpbmluZyB1c2VzIG9mIFdURjo6TXV0ZXggd2l0aCBXVEY6OkxvY2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlP
Uy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJ
T1MuY3BwCmluZGV4IDc1ZGE2ZWQuLmUwYzliZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEg
KzM1LDExIEBAIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAg
IHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBkb3VibGU+PiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVu
dUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJp
bmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBk
b3VibGU+PiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2Qu
Ljc3MzI1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFy
Y2hQb3B1cE1lbnVJT1MoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxv
YWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IGRiZTcyYjYuLjhiYjM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
NS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBW
ZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBmb3Ig
cmVjZW50IHNlYXJjaGVzCisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGlt
ZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKTogQWRkIGEgTlNEaWN0aW9uYXJ5IGl0ZW0u
CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyk6IENoZWNr
IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBpdGVtIGluIHRoZQorICAgICAgICBOU0RpY3Rpb25hcnkg
YW5kIGNvbnZlcnQgTlNEaWN0aW9uYXJ5IHRvIGEgcGFpci4KKwogMjAxNS0wOC0yMyAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBS
RUdSRVNTSU9OIChyMTgyMzU2KTogUHJvdmlzaW9uYWwgVVJMIGlzIGluY29ycmVjdCBpbiBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB3aGVuIENvbnRl
bnQgRmlsdGVyaW5nIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKaW5kZXggNGMxY2M3OS4uNWFiM2FlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9w
dXBNZW51TWFjLmgKQEAgLTM1LDggKzM1LDggQEAgcHVibGljOgogICAgIH5TZWFyY2hQb3B1cE1l
bnVNYWMoKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVNYWMubW0KaW5kZXggMmIyMjc4NC4uNTRlNDZjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAt
NDksNyArNDksNyBAQCBib29sIFNlYXJjaFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJs
ZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTYxLDE5ICs2MSwyMSBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogCiAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW06IHNlYXJjaEl0ZW1zKQotICAgICAgICBbaXRlbXMgYWRk
T2JqZWN0OnNlYXJjaEl0ZW1dOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OkB7IHNlYXJjaEl0
ZW0uZmlyc3Q6IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoRG91YmxlOnNlYXJjaEl0ZW0uc2Vj
b25kXSB9XTsKIAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNl
dE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOwogfQogCi12b2lk
IFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1l
bnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzZWFyY2hJdGVtcy5jbGVhcigp
OwotICAgIGZvciAoTlNTdHJpbmcgKml0ZW0gaW4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldKSB7Ci0gICAgICAgIGlm
IChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgc2Vh
cmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtIGluIFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZl
S2V5KG5hbWUpXSkgeworICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9u
YXJ5IGNsYXNzXV0gJiYgaXRlbS5hbGxLZXlzID4gMCkgeworICAgICAgICAgICAgTlNTdHJpbmcg
KnNlYXJjaEl0ZW1TdHJpbmcgPSBpdGVtLmFsbEtleXNbMF07CisgICAgICAgICAgICBzZWFyY2hJ
dGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0cmluZylzZWFyY2hJdGVtU3RyaW5nLCAoKE5T
TnVtYmVyKilpdGVtW3NlYXJjaEl0ZW1TdHJpbmddKS5kb3VibGVWYWx1ZSkpOworICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY3ZTY5YWUuLmE4YjZkZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJjaGVzCisgICAgICAgIGluIG9yZGVyIHRvIHN0
b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNo
ZXMpOiBDb252ZXJ0IHBhaXI8U3RyaW5nLCBkb3VibGU+IHRvIENGRGljdGlvbmFyeVJlZi4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOiBDb252ZXJ0
IGVhY2ggQ0ZEaWN0aW9uYXJ5UmVmIHRvIHBhaXI8U3RyaW5nLCBkb3VibGU+LgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNoUG9wdXBNZW51
OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFyY2hQb3B1cE1l
bnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaDoKKwogMjAxNS0wOC0yNCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgX05TU2Nyb2xsaW5nUHJlZG9t
aW5hbnRBeGlzRmlsdGVyIGZvciB3aGVlbCBldmVudCBmaWx0ZXJpbmcgb24gTWFjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5k
ZXggM2IzZThiYy4uY2NkYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
cmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKQog
ewogICAgIGlmICghbmFtZSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBt
ZXNzYWdlIGNoZWNrLgpAQCAtNDcsMTUgKzQ3LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYK
ICAgICBpZiAoIXNlYXJjaEl0ZW1zLmlzRW1wdHkoKSkgewogICAgICAgICBpdGVtcyA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2VhcmNoSXRlbXMuc2l6ZSgpLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKSk7CiAKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWFyY2hJdGVtIDog
c2VhcmNoSXRlbXMpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCks
IHNlYXJjaEl0ZW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc2VhcmNoSXRlbSA6IHNlYXJjaEl0ZW1zKSB7CisgICAgICAgICAgICBjb25zdCB2b2lk
KiBzZWFyY2hJdGVtU3RyaW5nW10gPSB7IHNlYXJjaEl0ZW0uZmlyc3QgfTsKKyAgICAgICAgICAg
IGNvbnN0IHZvaWQqIHNlYXJjaEl0ZW1EYXRlW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZzZWFyY2hJdGVtLnNlY29uZCkgfTsK
KyAgICAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHNlYXJjaEl0ZW1NYXAgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZWFyY2hJdGVt
U3RyaW5nLCBzZWFyY2hJdGVtRGF0ZSwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtTWFwLmdldCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1l
KS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsK
ICAgICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoa0NGUHJlZmVyZW5jZXNDdXJyZW50QXBw
bGljYXRpb24pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKCFuYW1l
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCkBA
IC02Nyw4ICs3MSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaAogICAgICAgICByZXR1cm47
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVtcy5n
ZXQoKSk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IGR5bmFtaWNf
Y2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVtcy5nZXQoKSwg
aSkpKQotICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAgICAgICBpZiAo
YXV0byBpdGVtID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChpdGVtcy5nZXQoKSwgaSkpKSB7CisgICAgICAgICAgICBDRkluZGV4IHNpemUg
PSBDRkRpY3Rpb25hcnlHZXRDb3VudChpdGVtKTsKKyAgICAgICAgICAgIFZlY3RvcjxDRlN0cmlu
Z1JlZiwgMT4ga2V5cyhzaXplKTsKKyAgICAgICAgICAgIFZlY3RvcjxDRk51bWJlclJlZiwgMT4g
dmFsdWVzKHNpemUpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhp
dGVtLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqKj4oa2V5cy5kYXRhKCkpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqKj4odmFsdWVzLmRhdGEoKSkpOworICAgICAgICAgICAgaWYg
KHNpemUgPiAwKQorICAgICAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcigoU3RyaW5nKWtleXNbMF0sICgoX19icmlkZ2UgTlNOdW1iZXIqKXZhbHVlc1swXSkuZG91
YmxlVmFsdWUpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDQyYTJjMTkuLjJlOTFhOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyODAsOCArMTI4MCw4IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIC8vIFNlYXJjaCBwb3B1cCByZXN1bHRzCi0gICAgdm9pZCBzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lk
IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpOworICAg
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpOworICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gU3BlZWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTJjMWI5ZC4uOWFiZjVjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0zNzksOCArMzc5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRp
ZgogCiAgICAgIyBTZWFyY2ggcG9wdXAgbWVudXMKLSAgICBTYXZlUmVjZW50U2VhcmNoZXMoU3Ry
aW5nIG5hbWUsIFZlY3RvcjxTdHJpbmc+IHNlYXJjaEl0ZW1zKQotICAgIExvYWRSZWNlbnRTZWFy
Y2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHJlc3VsdCkKKyAgICBTYXZlUmVj
ZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+
PiBzZWFyY2hJdGVtcykKKyAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gcmVzdWx0KQogCiAgICAgU2F2ZVBERlRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1
cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDFiMDY3MDUuLjIwOTlhNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNl
YXJjaFBvcHVwTWVudS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUG9wdXBNZW51KiBXZWJTZWFyY2hQ
b3B1cE1lbnU6OnBvcHVwTWVudSgpCiAgICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CiB9CiAKLXZv
aWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlNl
YXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykK
IHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyksIHBhZ2UtPnBhZ2VJRCgpKTsK
IH0KIAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHRJdGVtcykKK3ZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHJlc3VsdEl0ZW1zKQogewog
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9w
dXBNZW51LmgKaW5kZXggOGYxMDExZC4uNmQ4YTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oCkBAIC0zMSw4ICszMSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNlYXJjaFBv
cHVwTWVudT4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcm
IG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFy
Y2hJdGVtcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLS0gCjIuMy44IChBcHBsZSBHaXQtNTgpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260183</attachid>
            <date>2015-08-28 15:03:39 -0700</date>
            <delta_ts>2015-09-14 16:48:24 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>27400</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA4NmE5Mjk4OTFmNjcxNWZiYWZjZDQzYmZjMmZmNDAxZDRlZjcyMGZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDI0IEF1ZyAyMDE1IDE0OjI3OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgg
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAg
ICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51
LmggICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudVdpbi5jcHAgfCAyMSArKysrKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmggICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwICAgICB8IDEwICsrKy0tCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrCiAuLi4v
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgICAgICB8ICA0ICstCiAu
Li4vV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCB8ICA0ICst
CiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDE4
ICsrKysrKysrKwogLi4uL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
TWFjLmggfCAgNCArLQogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMu
bW0gICAgICAgfCAxNCArKysrLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gICB8IDQ2ICsrKysrKysrKystLS0tLS0tLS0t
LS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgICAgIHwg
IDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
IHwgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cCAgIHwgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcCAgIHwgIDQgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3Bw
ICAgICAgICAgIHwgIDQgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJj
aFBvcHVwTWVudS5oIHwgIDQgKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25zKCsp
LCA2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU3YjczOS4uYmNhMWFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA4LTI0ICBaaHVvIExpICA8emFjaGxpQGFwcGxl
LmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBz
ZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAg
ICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4g
Zm9yIHJlY2VudCBzZWFyY2hlcworICAgICAgICBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFs
IHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNo
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRT
ZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDogTm93IHRoYXQgbV9yZWNlbnRTZWFy
Y2hlcyBhcmUgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+CisgICAgICAgIHdlIGNh
bm5vdCB1c2UgLXJlbW92ZUFsbCB3aXRoIGEgc2VhcmNoIHN0cmluZy4gSXRlcmF0ZSB0aHJvdWdo
IHRoZSBWZWN0b3IgYW5kIHJlbW92ZSB0aGUKKyAgICAgICAgaXRlbSB0aGF0IGhhcyBmaXJzdCBv
YmplY3QgZXF1YWwgdG8gdGhlIHNlYXJjaCBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KTogVGhlIGZpcnN0IG9iamVjdCBpbiB0aGUg
cGFpciBpcyB0aGUgc2VhcmNoIHN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJj
aEZpZWxkOjppdGVtVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyk6IEFk
ZCBhIHR3by1vYmplY3QgYXJyYXkgd2hlcmUgdGhlIGZpcnN0IG9iamVjdCBpcyB0aGUgc2VhcmNo
CisgICAgICAgIHN0cmluZyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGltZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKTogSWYgdGhlIGl0
ZW0gaXMgYSB0d28tb2JqZWN0IGFycmF5LCB0aGVuIGNvbnZlcnQgaXRzIHZhbHVlcworICAgICAg
ICB0byBhIHBhaXIuIElmIHRoZSBpdGVtIGlzIGEgc3RyaW5nLCB0aGVuIHNldCB0aGUgdGltZSB0
byBiZSBEQkxfTUlOLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
aDoKKwogMjAxNS0wOC0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgZml4ZXMgaW4gcjE4ODg3NSBhbmQgcjE4ODg3NApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBlYTkyNTVjLi4yODE4MTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTM4LDggKzEzOCw4
IEBAIHB1YmxpYzoKIGNsYXNzIEVtcHR5U2VhcmNoUG9wdXBNZW51IDogcHVibGljIFNlYXJjaFBv
cHVwTWVudSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpIHsg
cmV0dXJuIG1fcG9wdXAuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0
b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCmluZGV4IGYxOTlmYWIuLjMyYTNiMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCkBAIC0zMiw4ICsz
Miw4IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlYXJjaFBv
cHVwTWVudT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHt9CiAg
ICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJ
dGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4m
IHNlYXJjaEl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+
PiYgc2VhcmNoSXRlbXMpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKaW5kZXggNzRjMzA1YS4uY2NiNWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1l
KQogfQogI2VuZGlmCiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJs
ZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTY2LDggKzY2LDExIEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgc2l6
ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5zaXplKCk7CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAg
aXRlbXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNpemUsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1z
W2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgY29uc3Qgdm9pZCogcmVjZW50U2VhcmNoW10g
PSB7IHNlYXJjaEl0ZW1zW2ldLmZpcnN0LCBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmc2VhcmNoSXRlbXNbaV0uc2Vjb25kKSB9OworICAg
ICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNlYXJjaEl0ZW0gPSBhZG9wdENGKENGQXJy
YXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVjZW50U2VhcmNoLCAyLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKSk7CisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0
KCksIHNlYXJjaEl0ZW0uZ2V0KCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NG
UHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpAQCAtNzUsNyArNzgsNyBAQCB2b2lkIFNl
YXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdAogI2VuZGlmCiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjps
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRv
dWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTg5LDkgKzkyLDE1IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyCiAKICAg
ICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVtcy5nZXQoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgaXRlbSA9
IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKTsKKyAg
ICAgICAgQ0ZUeXBlUmVmIGl0ZW0gPSAoQ0ZUeXBlUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
aXRlbXMuZ2V0KCksIGkpOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0gQ0ZBcnJh
eUdldFR5cGVJRCgpICYmIENGQXJyYXlHZXRDb3VudCgoQ0ZBcnJheVJlZilpdGVtKSA9PSAyKSB7
CisgICAgICAgICAgICBkb3VibGUgc2VhcmNoSXRlbVRpbWU7CisgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKChDRk51bWJlclJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KChDRkFycmF5UmVm
KWl0ZW0sIDEpLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmc2VhcmNoSXRlbVRpbWUpOworICAgICAg
ICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKChTdHJpbmcpKENGU3RyaW5n
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoKENGQXJyYXlSZWYpaXRlbSwgMCksIHNlYXJjaEl0
ZW1UaW1lKSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVt
KTsKKyAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigoU3RyaW5n
KShDRlN0cmluZ1JlZilpdGVtLCBEQkxfTUlOKSk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggMjk5
YTEzMy4uNzk3ZTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uaApAQCAtMzEsOCArMzEsOCBAQCBwdWJsaWM6CiAgICAgU2VhcmNoUG9w
dXBNZW51V2luKFBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBv
cHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcyk7CiAgICAgdmlydHVhbCBib29sIGVuYWJs
ZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Vh
cmNoRmllbGQuY3BwCmluZGV4IDg5ZGMzNGMuLjVhMWM1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtODgsOCArODgsMTIgQEAgdm9p
ZCBSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KCkKICAgICBpZiAoZnJhbWUoKS5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsKHZhbHVlKTsKLSAgICBtX3JlY2VudFNlYXJjaGVzLmlu
c2VydCgwLCB2YWx1ZSk7CisgICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVjZW50
U2VhcmNoZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkgPj0gMDsgLS1p
KSB7CisgICAgICAgIGlmIChtX3JlY2VudFNlYXJjaGVzW2ldLmZpcnN0ID09IHZhbHVlKQorICAg
ICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmUoaSk7CisgICAgfQorICAgIG1fcmVjZW50
U2VhcmNoZXMuaW5zZXJ0KDAsIHN0ZDo6bWFrZV9wYWlyKHZhbHVlLCAoZG91YmxlKXRpbWUobnVs
bHB0cikpKTsKICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8aW50PihtX3JlY2VudFNlYXJjaGVzLnNp
emUoKSkgPiBpbnB1dEVsZW1lbnQoKS5tYXhSZXN1bHRzKCkpCiAgICAgICAgIG1fcmVjZW50U2Vh
cmNoZXMucmVtb3ZlTGFzdCgpOwogCkBAIC0yMjgsNyArMjMyLDcgQEAgU3RyaW5nIFJlbmRlclNl
YXJjaEZpZWxkOjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4obGlzdEluZGV4KSA9PSAoc2l6ZSAtIDEpKQogICAgICAgICByZXR1cm4g
c2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCk7CiAjZW5kaWYKLSAgICByZXR1cm4g
bV9yZWNlbnRTZWFyY2hlc1tsaXN0SW5kZXggLSAxXTsKKyAgICByZXR1cm4gbV9yZWNlbnRTZWFy
Y2hlc1tsaXN0SW5kZXggLSAxXS5maXJzdDsKIH0KIAogU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxk
OjppdGVtTGFiZWwodW5zaWduZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGI2MDU3ODEuLmE5OTBhMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fc2VhcmNoUG9wdXBJc1Zpc2libGU7CiAgICAgUmVmUHRyPFNl
YXJjaFBvcHVwTWVudT4gbV9zZWFyY2hQb3B1cDsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3JlY2Vu
dFNlYXJjaGVzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBtX3JlY2Vu
dFNlYXJjaGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGQ0YTQ2ODMuLjNmZTlhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVu
dCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUg
dGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGlt
ZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGgg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAg
ICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAg
KFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFNlYXJj
aFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKwogMjAxNS0wOC0xNyAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgYWxsIHJlbWFpbmluZyB1c2VzIG9m
IFdURjo6TXV0ZXggd2l0aCBXVEY6OkxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDc1ZGE2ZWQuLmUw
YzliZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIFBvcHVwTWVudSogU2Vh
cmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwog
fQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lk
IFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgLypzZWFyY2hJdGVt
cyovKQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2
b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgLypzZWFyY2hJdGVtcyov
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLjc3MzI1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBA
IC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVJT1MoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9w
dXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRl
bXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNl
YXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRiZTcyYjYuLmE0YWE4ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hs
aUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyBy
ZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwK
KyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2gg
aGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRv
dWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRk
aXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51TWFjLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51TWFjLm1tOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNo
ZXMpOiBBZGQgYSB0d28tb2JqZWN0IGFycmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QgaXMgdGhl
CisgICAgICAgIHNlYXJjaCBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAg
ICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyk6IElmIHRoZSBpdGVt
IGlzIGEgdHdvLW9iamVjdCBhcnJheSwgdGhlbiBjb252ZXJ0CisgICAgICAgIGl0cyB2YWx1ZXMg
dG8gYSBwYWlyLiBJZiB0aGUgaXRlbSBpcyBhIHN0cmluZywgdGhlbiBzZXQgdGhlIHRpbWUgdG8g
YmUgREJMX01JTi4KKwogMjAxNS0wOC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBSRUdSRVNTSU9OIChyMTgyMzU2KTogUHJv
dmlzaW9uYWwgVVJMIGlzIGluY29ycmVjdCBpbiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSB3aGVuIENvbnRlbnQgRmlsdGVyaW5nIGlzIGVuYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudU1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51TWFjLmgKaW5kZXggNGMxY2M3OS4uNWFiM2FlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKQEAgLTM1LDggKzM1
LDggQEAgcHVibGljOgogICAgIH5TZWFyY2hQb3B1cE1lbnVNYWMoKTsKIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxv
YWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KaW5kZXggMmIy
Mjc4NC4uZTkyMjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtNDksNyArNDksNyBAQCBib29sIFNlYXJj
aFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Vh
cmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVw
TWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYxLDE5ICs2MSwyMyBA
QCB2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW06
IHNlYXJjaEl0ZW1zKQotICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OnNlYXJjaEl0ZW1dOworICAg
ICAgICBbaXRlbXMgYWRkT2JqZWN0OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c2VhcmNoSXRl
bS5maXJzdCwgW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhEb3VibGU6c2VhcmNoSXRlbS5zZWNv
bmRdLCBuaWxdXTsKIAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOwogfQogCi12
b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1
cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzZWFyY2hJdGVtcy5jbGVh
cigpOwotICAgIGZvciAoTlNTdHJpbmcgKml0ZW0gaW4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldKSB7CisgICAgZm9y
IChpZCBpdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5
Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgeworICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBjbGFzc11dICYmICgoTlNBcnJheSopaXRlbSkuY291bnQgPT0gMikgewor
ICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKChTdHJpbmcpaXRl
bVswXSwgKChOU051bWJlciopaXRlbVsxXSkuZG91YmxlVmFsdWUpKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAg
ICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAgICAgICAgICAgc2VhcmNoSXRlbXMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKChTdHJpbmcpaXRlbSwgREJMX01JTikpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmN2U2OWFlLi5hMjY3OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEF1
Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGgg
dGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVyIHRvIGFsbG93
IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3
aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJjaGVz
CisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSB0d28t
b2JqZWN0IGFycmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QKKyAgICAgICAgaXMgdGhlIHNlYXJj
aCBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKTogSWYgdGhlIGl0ZW0gaXMgYSB0d28tb2Jq
ZWN0IGFycmF5LCB0aGVuIGNvbnZlcnQKKyAgICAgICAgaXRzIHZhbHVlcyB0byBhIHBhaXIuIElm
IHRoZSBpdGVtIGlzIGEgc3RyaW5nLCB0aGVuIHNldCB0aGUgdGltZSB0byBiZSBEQkxfTUlOLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNo
UG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFy
Y2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
UmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisK
IDIwMTUtMDgtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIF9OU1Njcm9sbGluZ1ByZWRvbWluYW50QXhpc0ZpbHRlciBmb3Igd2hlZWwgZXZl
bnQgZmlsdGVyaW5nIG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNiM2U4YmMuLjUzYWVjZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTMwLDQ1ICszMCw0MSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQorc3RhdGlj
IE5TU3RyaW5nICphdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJu
IFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICByZXR1cm4gW0AiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiIHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nOm5hbWVdOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYg
c2VhcmNoSXRlbXMpCiB7Ci0gICAgaWYgKCFuYW1lKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBp
dGVtczsKIAotICAgIGlmICghc2VhcmNoSXRlbXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0ZW1z
ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzZWFyY2hJdGVtcy5zaXplKCksICZr
Q0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJj
aEl0ZW0gOiBzZWFyY2hJdGVtcykKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVt
cy5nZXQoKSwgc2VhcmNoSXRlbS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBpZiAoc2Vh
cmNoSXRlbXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHJlbW92ZU9iamVjdEZvcktleTphdXRvc2F2ZUtleShuYW1lKV07CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0b3Nh
dmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBs
aWNhdGlvbik7Ci0gICAgQ0ZQcmVmZXJlbmNlc0FwcFN5bmNocm9uaXplKGtDRlByZWZlcmVuY2Vz
Q3VycmVudEFwcGxpY2F0aW9uKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGl0ZW1z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNlYXJj
aEl0ZW1zLnNpemUoKV0pOworICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbTogc2VhcmNo
SXRlbXMpCisgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czpzZWFyY2hJdGVtLmZpcnN0LCBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aERvdWJsZTpzZWFy
Y2hJdGVtLnNlY29uZF0sIG5pbF1dOworCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0T2JqZWN0Oml0ZW1zLmdldCgpIGZvcktleTphdXRvc2F2ZUtleShuYW1l
KV07CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAoIW5hbWUpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KKyAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhdXRvIGl0ZW1z
ID0gYWRvcHRDRihkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlB
cHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBw
bGljYXRpb24pKSk7Ci0gICAgaWYgKCFpdGVtcykKLSAgICAgICAgcmV0dXJuOworICAgIHNlYXJj
aEl0ZW1zLmNsZWFyKCk7CisgICAgZm9yIChpZCBpdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgeworICAg
ICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dICYmICgoTlNBcnJh
eSopaXRlbSkuY291bnQgPT0gMikgeworICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKChTdHJpbmcpaXRlbVswXSwgKChOU051bWJlciopaXRlbVsxXSkuZG91Ymxl
VmFsdWUpKTsKKyAgICAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBDRkFy
cmF5R2V0Q291bnQoaXRlbXMuZ2V0KCkpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChh
dXRvIGl0ZW0gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaXRlbXMuZ2V0KCksIGkpKSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChp
dGVtKTsKKyAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
CisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0cmluZylp
dGVtLCBEQkxfTUlOKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNDJhMmMxOS4uMmU5MWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTI4MCw4ICsxMjgwLDggQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgLy8gU2VhcmNoIHBvcHVwIHJlc3VsdHMKLSAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgbG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIGRvdWJsZT4+Jik7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+Jik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBTcGVlY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMmMxYjlkLi45YWJmNWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTM3OSw4ICszNzksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAg
ICAjIFNlYXJjaCBwb3B1cCBtZW51cwotICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFt
ZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCi0gICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0
cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQorICAgIFNhdmVSZWNlbnRTZWFy
Y2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IHNlYXJj
aEl0ZW1zKQorICAgIExvYWRSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiByZXN1bHQpCiAKICAgICBTYXZlUERGVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRp
bmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggNjkwYWYzZS4uY2Uw
YzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5
RWZsLmNwcApAQCAtNzMsMTIgKzczLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRFZGl0b3JD
b21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mIC8qY29tbWFuZHNMCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0
b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IFN0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcAppbmRleCA0YjliZTczLi42ZjRmN2UzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC01NywxMiArNTcs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5VHJlZShjb25zdCBTdHJp
bmcmIHBsdWdJRCkKICAgICBtX2FjY2Vzc2liaWxpdHlQbHVnSUQgPSBwbHVnSUQ7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgZG91YmxlPj4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBv
cHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMWIwNjcwNS4uMjA5OWE2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1l
bnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNDcsNyArNDcsNyBAQCBQb3B1cE1lbnUqIFdlYlNlYXJj
aFBvcHVwTWVudTo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKIH0KIAot
dm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1z
KQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTksNyAr
NTksNyBAQCB2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSwgcGFnZS0+cGFnZUlEKCkp
OwogfQogCi12b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdEl0ZW1zKQordm9pZCBX
ZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgcmVzdWx0SXRlbXMpCiB7
CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuaAppbmRleCA4ZjEwMTFkLi42ZDhhMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBN
ZW51LmgKQEAgLTMxLDggKzMxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2VhcmNo
UG9wdXBNZW51PiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNl
YXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotLSAKMi4zLjggKEFwcGxlIEdpdC01OCkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261153</attachid>
            <date>2015-09-14 16:48:24 -0700</date>
            <delta_ts>2015-09-15 14:10:42 -0700</delta_ts>
            <desc>Patch v2 for EWS</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>27400</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA4NmE5Mjk4OTFmNjcxNWZiYWZjZDQzYmZjMmZmNDAxZDRlZjcyMGZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDI0IEF1ZyAyMDE1IDE0OjI3OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgg
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAg
ICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51
LmggICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudVdpbi5jcHAgfCAyMSArKysrKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmggICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwICAgICB8IDEwICsrKy0tCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrCiAuLi4v
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgICAgICB8ICA0ICstCiAu
Li4vV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCB8ICA0ICst
CiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8IDE4
ICsrKysrKysrKwogLi4uL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
TWFjLmggfCAgNCArLQogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMu
bW0gICAgICAgfCAxNCArKysrLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gICB8IDQ2ICsrKysrKysrKystLS0tLS0tLS0t
LS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgICAgIHwg
IDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
IHwgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cCAgIHwgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcCAgIHwgIDQgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3Bw
ICAgICAgICAgIHwgIDQgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJj
aFBvcHVwTWVudS5oIHwgIDQgKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25zKCsp
LCA2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU3YjczOS4uYmNhMWFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA4LTI0ICBaaHVvIExpICA8emFjaGxpQGFwcGxl
LmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBz
ZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAg
ICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4g
Zm9yIHJlY2VudCBzZWFyY2hlcworICAgICAgICBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFs
IHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNo
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRT
ZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDogTm93IHRoYXQgbV9yZWNlbnRTZWFy
Y2hlcyBhcmUgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+CisgICAgICAgIHdlIGNh
bm5vdCB1c2UgLXJlbW92ZUFsbCB3aXRoIGEgc2VhcmNoIHN0cmluZy4gSXRlcmF0ZSB0aHJvdWdo
IHRoZSBWZWN0b3IgYW5kIHJlbW92ZSB0aGUKKyAgICAgICAgaXRlbSB0aGF0IGhhcyBmaXJzdCBv
YmplY3QgZXF1YWwgdG8gdGhlIHNlYXJjaCBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KTogVGhlIGZpcnN0IG9iamVjdCBpbiB0aGUg
cGFpciBpcyB0aGUgc2VhcmNoIHN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJj
aEZpZWxkOjppdGVtVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyk6IEFk
ZCBhIHR3by1vYmplY3QgYXJyYXkgd2hlcmUgdGhlIGZpcnN0IG9iamVjdCBpcyB0aGUgc2VhcmNo
CisgICAgICAgIHN0cmluZyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGltZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKTogSWYgdGhlIGl0
ZW0gaXMgYSB0d28tb2JqZWN0IGFycmF5LCB0aGVuIGNvbnZlcnQgaXRzIHZhbHVlcworICAgICAg
ICB0byBhIHBhaXIuIElmIHRoZSBpdGVtIGlzIGEgc3RyaW5nLCB0aGVuIHNldCB0aGUgdGltZSB0
byBiZSBEQkxfTUlOLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
aDoKKwogMjAxNS0wOC0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgZml4ZXMgaW4gcjE4ODg3NSBhbmQgcjE4ODg3NApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBlYTkyNTVjLi4yODE4MTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTM4LDggKzEzOCw4
IEBAIHB1YmxpYzoKIGNsYXNzIEVtcHR5U2VhcmNoUG9wdXBNZW51IDogcHVibGljIFNlYXJjaFBv
cHVwTWVudSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpIHsg
cmV0dXJuIG1fcG9wdXAuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0
b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCmluZGV4IGYxOTlmYWIuLjMyYTNiMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCkBAIC0zMiw4ICsz
Miw4IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlYXJjaFBv
cHVwTWVudT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHt9CiAg
ICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJ
dGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4m
IHNlYXJjaEl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+
PiYgc2VhcmNoSXRlbXMpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKaW5kZXggNzRjMzA1YS4uY2NiNWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1l
KQogfQogI2VuZGlmCiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJs
ZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTY2LDggKzY2LDExIEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgc2l6
ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5zaXplKCk7CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAg
aXRlbXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNpemUsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1z
W2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgY29uc3Qgdm9pZCogcmVjZW50U2VhcmNoW10g
PSB7IHNlYXJjaEl0ZW1zW2ldLmZpcnN0LCBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmc2VhcmNoSXRlbXNbaV0uc2Vjb25kKSB9OworICAg
ICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNlYXJjaEl0ZW0gPSBhZG9wdENGKENGQXJy
YXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVjZW50U2VhcmNoLCAyLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKSk7CisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0
KCksIHNlYXJjaEl0ZW0uZ2V0KCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NG
UHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpAQCAtNzUsNyArNzgsNyBAQCB2b2lkIFNl
YXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdAogI2VuZGlmCiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjps
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRv
dWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTg5LDkgKzkyLDE1IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyCiAKICAg
ICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVtcy5nZXQoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgaXRlbSA9
IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKTsKKyAg
ICAgICAgQ0ZUeXBlUmVmIGl0ZW0gPSAoQ0ZUeXBlUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
aXRlbXMuZ2V0KCksIGkpOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0gQ0ZBcnJh
eUdldFR5cGVJRCgpICYmIENGQXJyYXlHZXRDb3VudCgoQ0ZBcnJheVJlZilpdGVtKSA9PSAyKSB7
CisgICAgICAgICAgICBkb3VibGUgc2VhcmNoSXRlbVRpbWU7CisgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKChDRk51bWJlclJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KChDRkFycmF5UmVm
KWl0ZW0sIDEpLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmc2VhcmNoSXRlbVRpbWUpOworICAgICAg
ICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKChTdHJpbmcpKENGU3RyaW5n
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoKENGQXJyYXlSZWYpaXRlbSwgMCksIHNlYXJjaEl0
ZW1UaW1lKSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVt
KTsKKyAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigoU3RyaW5n
KShDRlN0cmluZ1JlZilpdGVtLCBEQkxfTUlOKSk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggMjk5
YTEzMy4uNzk3ZTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uaApAQCAtMzEsOCArMzEsOCBAQCBwdWJsaWM6CiAgICAgU2VhcmNoUG9w
dXBNZW51V2luKFBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBv
cHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcyk7CiAgICAgdmlydHVhbCBib29sIGVuYWJs
ZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Vh
cmNoRmllbGQuY3BwCmluZGV4IDg5ZGMzNGMuLjVhMWM1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtODgsOCArODgsMTIgQEAgdm9p
ZCBSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KCkKICAgICBpZiAoZnJhbWUoKS5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsKHZhbHVlKTsKLSAgICBtX3JlY2VudFNlYXJjaGVzLmlu
c2VydCgwLCB2YWx1ZSk7CisgICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVjZW50
U2VhcmNoZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkgPj0gMDsgLS1p
KSB7CisgICAgICAgIGlmIChtX3JlY2VudFNlYXJjaGVzW2ldLmZpcnN0ID09IHZhbHVlKQorICAg
ICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmUoaSk7CisgICAgfQorICAgIG1fcmVjZW50
U2VhcmNoZXMuaW5zZXJ0KDAsIHN0ZDo6bWFrZV9wYWlyKHZhbHVlLCAoZG91YmxlKXRpbWUobnVs
bHB0cikpKTsKICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8aW50PihtX3JlY2VudFNlYXJjaGVzLnNp
emUoKSkgPiBpbnB1dEVsZW1lbnQoKS5tYXhSZXN1bHRzKCkpCiAgICAgICAgIG1fcmVjZW50U2Vh
cmNoZXMucmVtb3ZlTGFzdCgpOwogCkBAIC0yMjgsNyArMjMyLDcgQEAgU3RyaW5nIFJlbmRlclNl
YXJjaEZpZWxkOjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4obGlzdEluZGV4KSA9PSAoc2l6ZSAtIDEpKQogICAgICAgICByZXR1cm4g
c2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCk7CiAjZW5kaWYKLSAgICByZXR1cm4g
bV9yZWNlbnRTZWFyY2hlc1tsaXN0SW5kZXggLSAxXTsKKyAgICByZXR1cm4gbV9yZWNlbnRTZWFy
Y2hlc1tsaXN0SW5kZXggLSAxXS5maXJzdDsKIH0KIAogU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxk
OjppdGVtTGFiZWwodW5zaWduZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGI2MDU3ODEuLmE5OTBhMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fc2VhcmNoUG9wdXBJc1Zpc2libGU7CiAgICAgUmVmUHRyPFNl
YXJjaFBvcHVwTWVudT4gbV9zZWFyY2hQb3B1cDsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3JlY2Vu
dFNlYXJjaGVzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBtX3JlY2Vu
dFNlYXJjaGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGQ0YTQ2ODMuLjNmZTlhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVu
dCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUg
dGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGlt
ZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGgg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAg
ICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAg
KFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFNlYXJj
aFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKwogMjAxNS0wOC0xNyAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgYWxsIHJlbWFpbmluZyB1c2VzIG9m
IFdURjo6TXV0ZXggd2l0aCBXVEY6OkxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDc1ZGE2ZWQuLmUw
YzliZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIFBvcHVwTWVudSogU2Vh
cmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwog
fQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lk
IFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgLypzZWFyY2hJdGVt
cyovKQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2
b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgLypzZWFyY2hJdGVtcyov
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLjc3MzI1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBA
IC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVJT1MoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9w
dXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRl
bXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNl
YXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRiZTcyYjYuLmE0YWE4ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hs
aUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyBy
ZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwK
KyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2gg
aGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRv
dWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRk
aXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51TWFjLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51TWFjLm1tOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNo
ZXMpOiBBZGQgYSB0d28tb2JqZWN0IGFycmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QgaXMgdGhl
CisgICAgICAgIHNlYXJjaCBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAg
ICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyk6IElmIHRoZSBpdGVt
IGlzIGEgdHdvLW9iamVjdCBhcnJheSwgdGhlbiBjb252ZXJ0CisgICAgICAgIGl0cyB2YWx1ZXMg
dG8gYSBwYWlyLiBJZiB0aGUgaXRlbSBpcyBhIHN0cmluZywgdGhlbiBzZXQgdGhlIHRpbWUgdG8g
YmUgREJMX01JTi4KKwogMjAxNS0wOC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBSRUdSRVNTSU9OIChyMTgyMzU2KTogUHJv
dmlzaW9uYWwgVVJMIGlzIGluY29ycmVjdCBpbiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSB3aGVuIENvbnRlbnQgRmlsdGVyaW5nIGlzIGVuYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudU1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51TWFjLmgKaW5kZXggNGMxY2M3OS4uNWFiM2FlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKQEAgLTM1LDggKzM1
LDggQEAgcHVibGljOgogICAgIH5TZWFyY2hQb3B1cE1lbnVNYWMoKTsKIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxv
YWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KaW5kZXggMmIy
Mjc4NC4uZTkyMjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtNDksNyArNDksNyBAQCBib29sIFNlYXJj
aFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Vh
cmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVw
TWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYxLDE5ICs2MSwyMyBA
QCB2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW06
IHNlYXJjaEl0ZW1zKQotICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OnNlYXJjaEl0ZW1dOworICAg
ICAgICBbaXRlbXMgYWRkT2JqZWN0OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c2VhcmNoSXRl
bS5maXJzdCwgW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhEb3VibGU6c2VhcmNoSXRlbS5zZWNv
bmRdLCBuaWxdXTsKIAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOwogfQogCi12
b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1
cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzZWFyY2hJdGVtcy5jbGVh
cigpOwotICAgIGZvciAoTlNTdHJpbmcgKml0ZW0gaW4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldKSB7CisgICAgZm9y
IChpZCBpdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5
Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgeworICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBjbGFzc11dICYmICgoTlNBcnJheSopaXRlbSkuY291bnQgPT0gMikgewor
ICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKChTdHJpbmcpaXRl
bVswXSwgKChOU051bWJlciopaXRlbVsxXSkuZG91YmxlVmFsdWUpKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAg
ICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAgICAgICAgICAgc2VhcmNoSXRlbXMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKChTdHJpbmcpaXRlbSwgREJMX01JTikpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmN2U2OWFlLi5hMjY3OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEF1
Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGgg
dGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVyIHRvIGFsbG93
IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3
aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJjaGVz
CisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSB0d28t
b2JqZWN0IGFycmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QKKyAgICAgICAgaXMgdGhlIHNlYXJj
aCBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKTogSWYgdGhlIGl0ZW0gaXMgYSB0d28tb2Jq
ZWN0IGFycmF5LCB0aGVuIGNvbnZlcnQKKyAgICAgICAgaXRzIHZhbHVlcyB0byBhIHBhaXIuIElm
IHRoZSBpdGVtIGlzIGEgc3RyaW5nLCB0aGVuIHNldCB0aGUgdGltZSB0byBiZSBEQkxfTUlOLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNo
UG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFy
Y2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
UmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisK
IDIwMTUtMDgtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIF9OU1Njcm9sbGluZ1ByZWRvbWluYW50QXhpc0ZpbHRlciBmb3Igd2hlZWwgZXZl
bnQgZmlsdGVyaW5nIG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNiM2U4YmMuLjUzYWVjZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTMwLDQ1ICszMCw0MSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQorc3RhdGlj
IE5TU3RyaW5nICphdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJu
IFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICByZXR1cm4gW0AiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiIHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nOm5hbWVdOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYg
c2VhcmNoSXRlbXMpCiB7Ci0gICAgaWYgKCFuYW1lKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBp
dGVtczsKIAotICAgIGlmICghc2VhcmNoSXRlbXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0ZW1z
ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzZWFyY2hJdGVtcy5zaXplKCksICZr
Q0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJj
aEl0ZW0gOiBzZWFyY2hJdGVtcykKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVt
cy5nZXQoKSwgc2VhcmNoSXRlbS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBpZiAoc2Vh
cmNoSXRlbXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHJlbW92ZU9iamVjdEZvcktleTphdXRvc2F2ZUtleShuYW1lKV07CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0b3Nh
dmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBs
aWNhdGlvbik7Ci0gICAgQ0ZQcmVmZXJlbmNlc0FwcFN5bmNocm9uaXplKGtDRlByZWZlcmVuY2Vz
Q3VycmVudEFwcGxpY2F0aW9uKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGl0ZW1z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNlYXJj
aEl0ZW1zLnNpemUoKV0pOworICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbTogc2VhcmNo
SXRlbXMpCisgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czpzZWFyY2hJdGVtLmZpcnN0LCBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aERvdWJsZTpzZWFy
Y2hJdGVtLnNlY29uZF0sIG5pbF1dOworCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0T2JqZWN0Oml0ZW1zLmdldCgpIGZvcktleTphdXRvc2F2ZUtleShuYW1l
KV07CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAoIW5hbWUpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KKyAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhdXRvIGl0ZW1z
ID0gYWRvcHRDRihkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlB
cHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBw
bGljYXRpb24pKSk7Ci0gICAgaWYgKCFpdGVtcykKLSAgICAgICAgcmV0dXJuOworICAgIHNlYXJj
aEl0ZW1zLmNsZWFyKCk7CisgICAgZm9yIChpZCBpdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgeworICAg
ICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dICYmICgoTlNBcnJh
eSopaXRlbSkuY291bnQgPT0gMikgeworICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKChTdHJpbmcpaXRlbVswXSwgKChOU051bWJlciopaXRlbVsxXSkuZG91Ymxl
VmFsdWUpKTsKKyAgICAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBDRkFy
cmF5R2V0Q291bnQoaXRlbXMuZ2V0KCkpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChh
dXRvIGl0ZW0gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaXRlbXMuZ2V0KCksIGkpKSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChp
dGVtKTsKKyAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
CisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0cmluZylp
dGVtLCBEQkxfTUlOKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNDJhMmMxOS4uMmU5MWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTI4MCw4ICsxMjgwLDggQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgLy8gU2VhcmNoIHBvcHVwIHJlc3VsdHMKLSAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgbG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIGRvdWJsZT4+Jik7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+Jik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBTcGVlY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMmMxYjlkLi45YWJmNWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTM3OSw4ICszNzksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAg
ICAjIFNlYXJjaCBwb3B1cCBtZW51cwotICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFt
ZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCi0gICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0
cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQorICAgIFNhdmVSZWNlbnRTZWFy
Y2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IHNlYXJj
aEl0ZW1zKQorICAgIExvYWRSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiByZXN1bHQpCiAKICAgICBTYXZlUERGVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRp
bmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggNjkwYWYzZS4uY2Uw
YzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5
RWZsLmNwcApAQCAtNzMsMTIgKzczLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRFZGl0b3JD
b21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mIC8qY29tbWFuZHNMCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0
b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IFN0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcAppbmRleCA0YjliZTczLi42ZjRmN2UzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC01NywxMiArNTcs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5VHJlZShjb25zdCBTdHJp
bmcmIHBsdWdJRCkKICAgICBtX2FjY2Vzc2liaWxpdHlQbHVnSUQgPSBwbHVnSUQ7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgZG91YmxlPj4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBv
cHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMWIwNjcwNS4uMjA5OWE2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1l
bnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNDcsNyArNDcsNyBAQCBQb3B1cE1lbnUqIFdlYlNlYXJj
aFBvcHVwTWVudTo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKIH0KIAot
dm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1z
KQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTksNyAr
NTksNyBAQCB2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSwgcGFnZS0+cGFnZUlEKCkp
OwogfQogCi12b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdEl0ZW1zKQordm9pZCBX
ZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgcmVzdWx0SXRlbXMpCiB7
CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuaAppbmRleCA4ZjEwMTFkLi42ZDhhMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBN
ZW51LmgKQEAgLTMxLDggKzMxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU2VhcmNo
UG9wdXBNZW51PiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNl
YXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotLSAKMi4zLjggKEFwcGxlIEdpdC01OCkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261233</attachid>
            <date>2015-09-15 14:10:42 -0700</date>
            <delta_ts>2015-09-15 17:36:49 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>27241</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBjOWVhMjhlZGQ0NzgzY2VjZGMzZGM4NzU5ODkwNDBkNjY3NDUxZDRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDI0IEF1ZyAyMDE1IDE0OjI3OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgg
KysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAg
ICAgICAgICAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVu
dS5oICAgICAgICAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVXaW4uY3BwIHwgMjEgKysrKysrKy0tLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5oICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCAgICAgfCAxMCArKystLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggICAgICAgfCAgMiArLQogU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysrKwogLi4u
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwICAgICAgfCAgNCArLQog
Li4uL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggfCAgNCAr
LQogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAx
OCArKysrKysrKysKIC4uLi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dU1hYy5oIHwgIDQgKy0KIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
Lm1tICAgICAgIHwgMTMgKysrKy0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAgfCA0NSArKysrKysrKysrLS0tLS0tLS0t
LS0tCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgICAgICB8
ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
ICB8ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5j
cHAgICB8ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAgICB8ICA0ICstCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNw
cCAgICAgICAgICB8ICA0ICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFy
Y2hQb3B1cE1lbnUuaCB8ICA0ICstCiAyMSBmaWxlcyBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygr
KSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0MzRiODUuLjg0ZmIxZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQg
c2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAg
ICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9y
eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4
OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+
IGZvciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25h
bCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJj
aGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50
U2VhcmNoZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6IE5vdyB0aGF0IG1fcmVjZW50U2Vh
cmNoZXMgYXJlIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PgorICAgICAgICB3ZSBj
YW5ub3QgdXNlIC1yZW1vdmVBbGwgd2l0aCBhIHNlYXJjaCBzdHJpbmcuIEl0ZXJhdGUgdGhyb3Vn
aCB0aGUgVmVjdG9yIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGl0ZW0gdGhhdCBoYXMgZmlyc3Qg
b2JqZWN0IGVxdWFsIHRvIHRoZSBzZWFyY2ggc3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCk6IFRoZSBmaXJzdCBvYmplY3QgaW4gdGhl
IHBhaXIgaXMgdGhlIHNlYXJjaCBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFy
Y2hGaWVsZDo6aXRlbVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBB
ZGQgYSB0d28tb2JqZWN0IGFycmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QgaXMgdGhlIHNlYXJj
aAorICAgICAgICBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyk6IElmIHRoZSBp
dGVtIGlzIGEgdHdvLW9iamVjdCBhcnJheSwgdGhlbiBjb252ZXJ0IGl0cyB2YWx1ZXMKKyAgICAg
ICAgdG8gYSBwYWlyLiBJZiB0aGUgaXRlbSBpcyBhIHN0cmluZywgdGhlbiBzZXQgdGhlIHRpbWUg
dG8gYmUgREJMX01JTi4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
Lmg6CisKIDIwMTUtMDktMDQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggdGhlICFFTkFCTEUoVklERU8pIGJ1aWxkIGFmdGVyIHIxODkwMjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZWE5MjU1Yy4uMjgxODEyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEzOCw4ICsxMzgsOCBA
QCBwdWJsaWM6CiBjbGFzcyBFbXB0eVNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBTZWFyY2hQb3B1
cE1lbnUgewogcHVibGljOgogICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSB7IHJl
dHVybiBtX3BvcHVwLmdldCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9y
PFN0cmluZz4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JikgeyB9CiAgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAppbmRleCBmMTk5ZmFiLi4zMmEzYjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaApAQCAtMzIsOCArMzIs
OCBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgUmVmQ291bnRlZDxTZWFyY2hQb3B1
cE1lbnU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TZWFyY2hQb3B1cE1lbnUoKSB7fQogICAg
IHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBz
ZWFyY2hJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4m
IHNlYXJjaEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSA9IDA7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
Y3BwCmluZGV4IDc0YzMwNWEuLmNkNDk5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmluZyYgbmFtZSkK
IH0KICNlbmRpZgogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+
PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC02Niw4ICs2NiwxMSBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIHNpemVf
dCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0
ZW1zID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5
Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tp
XS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIHJlY2VudFNlYXJjaFtdID0g
eyBzZWFyY2hJdGVtc1tpXS5maXJzdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmc2VhcmNoSXRl
bXNbaV0uc2Vjb25kKSB9OworICAgICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNlYXJj
aEl0ZW0gPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVjZW50
U2VhcmNoLCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgICAgICAgICBDRkFycmF5
QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW0uZ2V0KCkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdl
dCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpAQCAt
NzUsNyArNzgsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogI2VuZGlmCiB9CiAKLXZvaWQg
U2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVu
dVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg5LDkgKzkyLDE1IEBAIHZvaWQgU2Vh
cmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyCiAKICAgICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVt
cy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgQ0ZTdHJpbmdSZWYgaXRlbSA9IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGl0ZW1zLmdldCgpLCBpKTsKKyAgICAgICAgQ0ZUeXBlUmVmIGl0ZW0gPSAoQ0ZUeXBlUmVmKUNG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoaXRlbXMuZ2V0KCksIGkpOworICAgICAgICBpZiAoQ0ZHZXRU
eXBlSUQoaXRlbSkgPT0gQ0ZBcnJheUdldFR5cGVJRCgpICYmIENGQXJyYXlHZXRDb3VudCgoQ0ZB
cnJheVJlZilpdGVtKSA9PSAyKSB7CisgICAgICAgICAgICBkb3VibGUgc2VhcmNoSXRlbVRpbWU7
CisgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KChDRkFycmF5UmVmKWl0ZW0sIDEpLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmc2Vh
cmNoSXRlbVRpbWUpOworICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKChTdHJpbmcpKENGU3RyaW5nUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoKENGQXJyYXlS
ZWYpaXRlbSwgMCksIHNlYXJjaEl0ZW1UaW1lKSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQoaXRlbSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHNl
YXJjaEl0ZW1zLmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcigoU3RyaW5nKShDRlN0cmluZ1JlZilpdGVtLCBEQkxfTUlOKSk7CiAgICAg
fQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmgKaW5kZXggMjk5YTEzMy4uNzk3ZTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzEsOCArMzEsOCBAQCBw
dWJsaWM6CiAgICAgU2VhcmNoUG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCopOwogCiAgICAg
dmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOworICAg
IHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcyk7CiAg
ICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDg5ZGMzNGMuLjVhMWM1NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApA
QCAtODgsOCArODgsMTIgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0
KCkKICAgICBpZiAoZnJhbWUoKS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsKHZhbHVlKTsKLSAg
ICBtX3JlY2VudFNlYXJjaGVzLmluc2VydCgwLCB2YWx1ZSk7CisgICAgaW50IHNpemUgPSBzdGF0
aWNfY2FzdDxpbnQ+KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGludCBpID0g
c2l6ZSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGlmIChtX3JlY2VudFNlYXJjaGVzW2ld
LmZpcnN0ID09IHZhbHVlKQorICAgICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmUoaSk7
CisgICAgfQorICAgIG1fcmVjZW50U2VhcmNoZXMuaW5zZXJ0KDAsIHN0ZDo6bWFrZV9wYWlyKHZh
bHVlLCAoZG91YmxlKXRpbWUobnVsbHB0cikpKTsKICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8aW50
PihtX3JlY2VudFNlYXJjaGVzLnNpemUoKSkgPiBpbnB1dEVsZW1lbnQoKS5tYXhSZXN1bHRzKCkp
CiAgICAgICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlTGFzdCgpOwogCkBAIC0yMjgsNyArMjMy
LDcgQEAgU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5k
ZXgpIGNvbnN0CiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4obGlzdEluZGV4KSA9PSAoc2l6ZSAt
IDEpKQogICAgICAgICByZXR1cm4gc2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCk7
CiAjZW5kaWYKLSAgICByZXR1cm4gbV9yZWNlbnRTZWFyY2hlc1tsaXN0SW5kZXggLSAxXTsKKyAg
ICByZXR1cm4gbV9yZWNlbnRTZWFyY2hlc1tsaXN0SW5kZXggLSAxXS5maXJzdDsKIH0KIAogU3Ry
aW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtTGFiZWwodW5zaWduZWQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGI2MDU3ODEuLmE5
OTBhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5o
CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2VhcmNoUG9wdXBJc1Zp
c2libGU7CiAgICAgUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gbV9zZWFyY2hQb3B1cDsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBtX3JlY2VudFNlYXJjaGVzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBkb3VibGU+PiBtX3JlY2VudFNlYXJjaGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGQ0YTQ2ODMuLjNmZTlhMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5j
b20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2Vh
cmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAg
aW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZv
ciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0
aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmNwcDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJj
aGVzKToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKwogMjAxNS0w
OC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2Ug
YWxsIHJlbWFpbmluZyB1c2VzIG9mIFdURjo6TXV0ZXggd2l0aCBXVEY6OkxvY2sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1Mu
Y3BwCmluZGV4IDc1ZGE2ZWQuLmUwYzliZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1
LDExIEBAIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJl
dHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAv
KnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBk
b3VibGU+PiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlP
Uzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+
JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLjc3
MzI1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQ
b3B1cE1lbnVJT1MoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBz
ZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDgx
ZmIyYjIuLmU3OTdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0w
OC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5w
dXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBl
YWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNl
ZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAg
aW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51
TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSB0d28tb2JqZWN0IGFycmF5IHdoZXJlIHRo
ZSBmaXJzdCBvYmplY3QgaXMgdGhlCisgICAgICAgIHNlYXJjaCBzdHJpbmcgYW5kIHRoZSBzZWNv
bmQgaXMgdGhlIHRpbWUuCisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRT
ZWFyY2hlcyk6IElmIHRoZSBpdGVtIGlzIGEgdHdvLW9iamVjdCBhcnJheSwgdGhlbiBjb252ZXJ0
CisgICAgICAgIGl0cyB2YWx1ZXMgdG8gYSBwYWlyLiBJZiB0aGUgaXRlbSBpcyBhIHN0cmluZywg
dGhlbiBzZXQgdGhlIHRpbWUgdG8gYmUgREJMX01JTi4KKwogMjAxNS0wOS0wMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE4OTMzOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKaW5kZXggNGMxY2M3OS4uNWFiM2FlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
TWFjLmgKQEAgLTM1LDggKzM1LDggQEAgcHVibGljOgogICAgIH5TZWFyY2hQb3B1cE1lbnVNYWMo
KTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1l
bnVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1l
bnVNYWMubW0KaW5kZXggMmIyMjc4NC4uYzJjYjZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtNDksNyAr
NDksNyBAQCBib29sIFNlYXJjaFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMp
Cit2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBz
ZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTYxLDE5ICs2MSwyMiBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogCiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHNlYXJjaEl0ZW06IHNlYXJjaEl0ZW1zKQotICAgICAgICBbaXRlbXMgYWRkT2JqZWN0
OnNlYXJjaEl0ZW1dOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OltOU0FycmF5IGFycmF5V2l0
aE9iamVjdHM6c2VhcmNoSXRlbS5maXJzdCwgW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhEb3Vi
bGU6c2VhcmNoSXRlbS5zZWNvbmRdLCBuaWxdXTsKIAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVL
ZXkobmFtZSldOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1z
KQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNo
SXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBzZWFyY2hJdGVtcy5jbGVhcigpOwotICAgIGZvciAoTlNTdHJpbmcgKml0ZW0gaW4gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXko
bmFtZSldKSB7CisgICAgZm9yIChpZCBpdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgeworICAgICAgICBp
ZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dICYmICgoTlNBcnJheSopaXRl
bSkuY291bnQgPT0gMikKKyAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcigoU3RyaW5nKWl0ZW1bMF0sICgoTlNOdW1iZXIqKWl0ZW1bMV0pLmRvdWJsZVZhbHVlKSk7
CisKICAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0g
ICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICBzZWFyY2hJ
dGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0cmluZylpdGVtLCBEQkxfTUlOKSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDFiZjk1NWYuLjI0YzYyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMiBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkg
d2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8g
YWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJp
bmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2Vh
cmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6IEFkZCBh
IHR3by1vYmplY3QgYXJyYXkgd2hlcmUgdGhlIGZpcnN0IG9iamVjdAorICAgICAgICBpcyB0aGUg
c2VhcmNoIHN0cmluZyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGltZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOiBJZiB0aGUgaXRlbSBpcyBhIHR3
by1vYmplY3QgYXJyYXksIHRoZW4gY29udmVydAorICAgICAgICBpdHMgdmFsdWVzIHRvIGEgcGFp
ci4gSWYgdGhlIGl0ZW0gaXMgYSBzdHJpbmcsIHRoZW4gc2V0IHRoZSB0aW1lIHRvIGJlIERCTF9N
SU4uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVz
KToKKwogMjAxNS0wOS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4OTMzOC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAz
YjNlOGJjLi42Y2NmM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMCw0NSArMzAsNDAgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNv
bnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3Ry
aW5nJiBuYW1lKQogewotICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNo
RmllbGQ6IiArIG5hbWUpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJuIFtAImNvbS5hcHBs
ZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuYW1lXTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKQogewotICAgIGlmICghbmFtZSkg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgorICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFp
blB0cjxDRk11dGFibGVBcnJheVJlZj4gaXRlbXM7CiAKLSAgICBpZiAoIXNlYXJjaEl0ZW1zLmlz
RW1wdHkoKSkgewotICAgICAgICBpdGVtcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgc2VhcmNoSXRlbXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0KLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpCi0gICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW0uY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CisgICAgaWYgKHNlYXJjaEl0ZW1zLmlzRW1wdHkoKSkgeworICAgICAgICBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6
YXV0b3NhdmVLZXkobmFtZSldOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ0ZQcmVm
ZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwg
a0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotICAgIENGUHJlZmVyZW5jZXNBcHBT
eW5jaHJvbml6ZShrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHNlYXJjaEl0ZW06IHNlYXJjaEl0ZW1zKQorICAgICAgICBbaXRlbXMgYWRkT2JqZWN0
OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c2VhcmNoSXRlbS5maXJzdCwgW1tOU051bWJlciBh
bGxvY10gaW5pdFdpdGhEb3VibGU6c2VhcmNoSXRlbS5zZWNvbmRdLCBuaWxdXTsKKworICAgIFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQo
KSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJp
bmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMp
CiB7Ci0gICAgaWYgKCFuYW1lKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBh
IG1lc3NhZ2UgY2hlY2suCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCi0gICAgYXV0byBpdGVtcyA9IGFkb3B0Q0YoZHluYW1pY19jZl9jYXN0PENGQXJy
YXlSZWY+KENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCks
IGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSkpOwotICAgIGlmICghaXRlbXMpCi0g
ICAgICAgIHJldHVybjsKKyAgICBzZWFyY2hJdGVtcy5jbGVhcigpOworICAgIGZvciAoaWQgaXRl
bSBpbiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBhcnJheUZvcktleTph
dXRvc2F2ZUtleShuYW1lKV0pIHsKKyAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05T
QXJyYXkgY2xhc3NdXSAmJiAoKE5TQXJyYXkqKWl0ZW0pLmNvdW50ID09IDIpCisgICAgICAgICAg
ICBzZWFyY2hJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0cmluZylpdGVtWzBdLCAoKE5T
TnVtYmVyKilpdGVtWzFdKS5kb3VibGVWYWx1ZSkpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDAs
IHNpemUgPSBDRkFycmF5R2V0Q291bnQoaXRlbXMuZ2V0KCkpOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIGl0ZW0gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoaXRlbXMuZ2V0KCksIGkpKSkKLSAgICAgICAgICAgIHNlYXJjaEl0
ZW1zLmFwcGVuZChpdGVtKTsKKyAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoKFN0cmluZylpdGVtLCBEQkxfTUlOKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzUzYzgwMS4uOTM5YjQ3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI3Niw4ICsxMjc2LDggQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgLy8gU2VhcmNoIHBvcHVwIHJlc3VsdHMKLSAgICB2b2lkIHNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAg
IHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+Jik7
CisgICAgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+Jik7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+Jik7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBTcGVlY2guCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkZWQ2YTEwLi4wNjBj
YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTM3OSw4ICszNzksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
I2VuZGlmCiAKICAgICAjIFNlYXJjaCBwb3B1cCBtZW51cwotICAgIFNhdmVSZWNlbnRTZWFyY2hl
cyhTdHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCi0gICAgTG9hZFJlY2Vu
dFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQorICAgIFNh
dmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRv
dWJsZT4+IHNlYXJjaEl0ZW1zKQorICAgIExvYWRSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkg
LT4gKFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiByZXN1bHQpCiAKICAgICBTYXZl
UERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJp
bmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXgg
NjkwYWYzZS4uY2UwYzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcApAQCAtNzMsMTIgKzczLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mIC8qY29t
bWFuZHNMCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBT
dHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA0YjliZTczLi42ZjRmN2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBA
IC01NywxMiArNTcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5VHJl
ZShjb25zdCBTdHJpbmcmIHBsdWdJRCkKICAgICBtX2FjY2Vzc2liaWxpdHlQbHVnSUQgPSBwbHVn
SUQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
ZG91YmxlPj4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQor
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMWIwNjcwNS4uMjA5OWE2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWFyY2hQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNDcsNyArNDcsNyBAQCBQb3B1cE1l
bnUqIFdlYlNlYXJjaFBvcHVwTWVudTo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5n
ZXQoKTsKIH0KIAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykKK3ZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4m
IHNlYXJjaEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTksNyArNTksNyBAQCB2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSwgcGFn
ZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdEl0
ZW1zKQordm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgcmVz
dWx0SXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNl
YXJjaFBvcHVwTWVudS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWFyY2hQb3B1cE1lbnUuaAppbmRleCA4ZjEwMTFkLi42ZDhhMDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmgKQEAgLTMxLDggKzMxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViU2VhcmNoUG9wdXBNZW51PiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6
OkF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNl
YXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
ZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxl
ZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotLSAKMi4zLjggKEFwcGxlIEdpdC01OCkKCg==
</data>
<flag name="review"
          id="286449"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261270</attachid>
            <date>2015-09-15 17:36:49 -0700</date>
            <delta_ts>2015-09-17 10:46:43 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>27603</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA3ZmVmMDBlMTBiYzA1NmJjNjg5NjZiNjUyNDkzNzZjMGNkZDkzNmMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDI0IEF1ZyAyMDE1IDE0OjI3OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgg
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAg
ICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51
LmggICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudVdpbi5jcHAgfCAyNCArKysrKysrKy0tLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5oICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCAgICAgfCAxMCArKystLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggICAgICAgfCAgMiArLQogU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysrKwogLi4u
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwICAgICAgfCAgNCArLQog
Li4uL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggfCAgNCAr
LQogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAx
OCArKysrKysrKysKIC4uLi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dU1hYy5oIHwgIDQgKy0KIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
Lm1tICAgICAgIHwgMTYgKysrKystLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKysKIC4uLi9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSAgIHwgNDYgKysrKysrKysrKy0tLS0tLS0t
LS0tLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICAgICAg
fCAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biAgfCAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwu
Y3BwICAgfCAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwICAgfCAgNCArLQogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5j
cHAgICAgICAgICAgfCAgNCArLQogLi4uL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmggfCAgNCArLQogMjEgZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMo
KyksIDY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNDM0Yjg1Li44NGZiMWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6YWNobGlAYXBw
bGUuY29tPgorCisgICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50
IHNlYXJjaCBoaXN0b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAg
ICAgIGluIG9yZGVyIHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3Rv
cnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgz
ODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+
PiBmb3IgcmVjZW50IHNlYXJjaGVzCisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9u
YWwgdGltZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2Vu
dFNlYXJjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOiBOb3cgdGhhdCBtX3JlY2VudFNl
YXJjaGVzIGFyZSBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4KKyAgICAgICAgd2Ug
Y2Fubm90IHVzZSAtcmVtb3ZlQWxsIHdpdGggYSBzZWFyY2ggc3RyaW5nLiBJdGVyYXRlIHRocm91
Z2ggdGhlIFZlY3RvciBhbmQgcmVtb3ZlIHRoZQorICAgICAgICBpdGVtIHRoYXQgaGFzIGZpcnN0
IG9iamVjdCBlcXVhbCB0byB0aGUgc2VhcmNoIHN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOiBUaGUgZmlyc3Qgb2JqZWN0IGluIHRo
ZSBwYWlyIGlzIHRoZSBzZWFyY2ggc3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Vh
cmNoRmllbGQ6Oml0ZW1UZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKTog
QWRkIGEgdHdvLW9iamVjdCBhcnJheSB3aGVyZSB0aGUgZmlyc3Qgb2JqZWN0IGlzIHRoZSBzZWFy
Y2gKKyAgICAgICAgc3RyaW5nIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSB0aW1lLgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBJZiB0aGUg
aXRlbSBpcyBhIHR3by1vYmplY3QgYXJyYXksIHRoZW4gY29udmVydCBpdHMgdmFsdWVzCisgICAg
ICAgIHRvIGEgcGFpci4gSWYgdGhlIGl0ZW0gaXMgYSBzdHJpbmcsIHRoZW4gc2V0IHRoZSB0aW1l
IHRvIGJlIERCTF9NSU4uCisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oOgorCiAyMDE1LTA5LTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IHRoZSAhRU5BQkxFKFZJREVPKSBidWlsZCBhZnRlciByMTg5MDIzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVhOTI1NWMuLjI4MTgxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzgsOCArMTM4LDgg
QEAgcHVibGljOgogY2xhc3MgRW1wdHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2VhcmNoUG9w
dXBNZW51IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgeyBy
ZXR1cm4gbV9wb3B1cC5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4m
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBlbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKaW5kZXggZjE5OWZhYi4uMzJhM2IyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKQEAgLTMyLDggKzMy
LDggQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51IDogcHVibGljIFJlZkNvdW50ZWQ8U2VhcmNoUG9w
dXBNZW51PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2VhcmNoUG9wdXBNZW51KCkge30KICAg
ICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYg
c2VhcmNoSXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+
JiBzZWFyY2hJdGVtcykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgPSAwOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcAppbmRleCA3NGMzMDVhLi5kNWI1NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtMjEsNiArMjEsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVdpbi5oIgogCisjaWYg
VVNFKENGKQorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgorI2VuZGlmCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKICNpZiBVU0UoQ0YpCkBAIC01NSw3ICs1OCw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIH0KICNlbmRpZgogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CkBAIC02Niw4ICs2OSwxMSBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAog
ICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAg
ICAgICAgIGl0ZW1zID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzaXplLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFy
Y2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIHJlY2VudFNl
YXJjaFtdID0geyBzZWFyY2hJdGVtc1tpXS5maXJzdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAm
c2VhcmNoSXRlbXNbaV0uc2Vjb25kKSB9OworICAgICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHNlYXJjaEl0ZW0gPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcmVjZW50U2VhcmNoLCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW0uZ2V0KCkpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5
KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b24pOwpAQCAtNzUsNyArODEsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogI2VuZGlmCiB9
CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJj
aFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcykKIHsKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg5LDkgKzk1LDE1IEBA
IHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyCiAKICAgICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRD
b3VudChpdGVtcy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgaXRlbSA9IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKTsKKyAgICAgICAgQ0ZUeXBlUmVmIGl0ZW0gPSAoQ0ZU
eXBlUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaXRlbXMuZ2V0KCksIGkpOworICAgICAgICBp
ZiAoQ0ZBcnJheUdldENvdW50KGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPihpdGVtKSkgPT0g
MikgeworICAgICAgICAgICAgZG91YmxlIHNlYXJjaEl0ZW1UaW1lOworICAgICAgICAgICAgQ0ZO
dW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleCgoQ0ZBcnJh
eVJlZilpdGVtLCAxKSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnNlYXJjaEl0ZW1UaW1lKTsKKyAg
ICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigoU3RyaW5nKShDRlN0
cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KChDRkFycmF5UmVmKWl0ZW0sIDApLCBzZWFy
Y2hJdGVtVGltZSkpOworICAgICAgICB9CisKICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGl0ZW0p
ID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQo
aXRlbSk7CisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0
cmluZykoQ0ZTdHJpbmdSZWYpaXRlbSwgREJMX01JTikpOwogICAgIH0KICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmluZGV4
IDI5OWExMzMuLjc5N2U0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmgKQEAgLTMxLDggKzMxLDggQEAgcHVibGljOgogICAgIFNlYXJj
aFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgUG9wdXBNZW51
KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsK
LSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JiBzZWFyY2hJdGVtcyk7CisgICAgdmlydHVhbCB2b2lk
IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpOwogICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNlYXJjaEZpZWxkLmNwcAppbmRleCA4OWRjMzRjLi41YTFjNTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTg4LDggKzg4LDEyIEBA
IHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKGZyYW1l
KCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3JlY2VudFNlYXJjaGVzLnJlbW92ZUFsbCh2YWx1ZSk7Ci0gICAgbV9yZWNlbnRTZWFyY2hl
cy5pbnNlcnQoMCwgdmFsdWUpOworICAgIGludCBzaXplID0gc3RhdGljX2Nhc3Q8aW50PihtX3Jl
Y2VudFNlYXJjaGVzLnNpemUoKSk7CisgICAgZm9yIChpbnQgaSA9IHNpemUgLSAxOyBpID49IDA7
IC0taSkgeworICAgICAgICBpZiAobV9yZWNlbnRTZWFyY2hlc1tpXS5maXJzdCA9PSB2YWx1ZSkK
KyAgICAgICAgICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlKGkpOworICAgIH0KKyAgICBtX3Jl
Y2VudFNlYXJjaGVzLmluc2VydCgwLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZSwgKGRvdWJsZSl0aW1l
KG51bGxwdHIpKSk7CiAgICAgd2hpbGUgKHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hl
cy5zaXplKCkpID4gaW5wdXRFbGVtZW50KCkubWF4UmVzdWx0cygpKQogICAgICAgICBtX3JlY2Vu
dFNlYXJjaGVzLnJlbW92ZUxhc3QoKTsKIApAQCAtMjI4LDcgKzIzMiw3IEBAIFN0cmluZyBSZW5k
ZXJTZWFyY2hGaWVsZDo6aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KGxpc3RJbmRleCkgPT0gKHNpemUgLSAxKSkKICAgICAgICAgcmV0
dXJuIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwogI2VuZGlmCi0gICAgcmV0
dXJuIG1fcmVjZW50U2VhcmNoZXNbbGlzdEluZGV4IC0gMV07CisgICAgcmV0dXJuIG1fcmVjZW50
U2VhcmNoZXNbbGlzdEluZGV4IC0gMV0uZmlyc3Q7CiB9CiAKIFN0cmluZyBSZW5kZXJTZWFyY2hG
aWVsZDo6aXRlbUxhYmVsKHVuc2lnbmVkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuaAppbmRleCBiNjA1NzgxLi5hOTkwYTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaApAQCAtODcsNyArODcsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlOwogICAgIFJlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IG1fc2VhcmNoUG9wdXA7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9y
ZWNlbnRTZWFyY2hlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gbV9y
ZWNlbnRTZWFyY2hlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZwppbmRleCBkNGE0NjgzLi4zZmU5YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEF1
Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGgg
dGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVyIHRvIGFsbG93
IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3
aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJjaGVz
CisgICAgICAgIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHA6CisgICAg
ICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChT
ZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmg6CisKIDIwMTUtMDgtMTcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGFsbCByZW1haW5pbmcgdXNl
cyBvZiBXVEY6Ok11dGV4IHdpdGggV1RGOjpMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAppbmRleCA3NWRhNmVk
Li5lMGM5YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKQEAgLTM1LDExICszNSwxMSBAQCBQb3B1cE1lbnUq
IFNlYXJjaFBvcHVwTWVudUlPUzo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5nZXQo
KTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypzZWFyY2hJdGVtcyovKQor
dm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIC8qc2VhcmNo
SXRlbXMqLykKIHsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYgLypzZWFyY2hJdGVtcyov
KQordm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIC8qc2VhcmNoSXRl
bXMqLykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51SU9TLmggYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaAppbmRleCA2MTk3YjdkLi43NzMyNTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1Mu
aApAQCAtMzMsOCArMzMsOCBAQCBwdWJsaWM6CiAgICAgU2VhcmNoUG9wdXBNZW51SU9TKFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUq
IHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJj
aEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+
JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4MWZiMmIyLi5lNzk3ZWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKA
mXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRk
ZWQsCisgICAgICAgIGluIG9yZGVyIHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2Vh
cmNoIGhpc3RvcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBkb3VibGU+PiBmb3IgcmVjZW50IHNlYXJjaGVzCisgICAgICAgIGluIG9yZGVyIHRvIHN0b3Jl
IGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudU1hYy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudU1hYy5tbToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNl
YXJjaGVzKTogQWRkIGEgdHdvLW9iamVjdCBhcnJheSB3aGVyZSB0aGUgZmlyc3Qgb2JqZWN0IGlz
IHRoZQorICAgICAgICBzZWFyY2ggc3RyaW5nIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSB0aW1lLgor
ICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBJZiB0aGUg
aXRlbSBpcyBhIHR3by1vYmplY3QgYXJyYXksIHRoZW4gY29udmVydAorICAgICAgICBpdHMgdmFs
dWVzIHRvIGEgcGFpci4gSWYgdGhlIGl0ZW0gaXMgYSBzdHJpbmcsIHRoZW4gc2V0IHRoZSB0aW1l
IHRvIGJlIERCTF9NSU4uCisKIDIwMTUtMDktMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODkzMzgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVNYWMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudU1hYy5oCmluZGV4IDRjMWNjNzkuLjVhYjNhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCkBAIC0zNSw4ICsz
NSw4IEBAIHB1YmxpYzoKICAgICB+U2VhcmNoUG9wdXBNZW51TWFjKCk7CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxv
YWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCmluZGV4IDJi
MjI3ODQuLjI3YzkyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBTZWFy
Y2hQb3B1cE1lbnVNYWM6OmVuYWJsZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNl
YXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1
cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC02MCwyMCArNjAsMjQg
QEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OnNlYXJjaEl0ZW1zLnNpemUoKV0pOwotICAgIGZvciAoY29uc3QgYXV0byYgc2Vh
cmNoSXRlbTogc2VhcmNoSXRlbXMpCi0gICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6c2VhcmNoSXRl
bV07CisgICAgZm9yIChjb25zdCBhdXRvJiBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpCisgICAg
ICAgIFtpdGVtcyBhZGRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpzZWFyY2hJdGVt
LmZpcnN0LCBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnNlYXJjaEl0ZW0u
c2Vjb25kXSwgbmlsXV07CiAKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBzZXRPYmplY3Q6aXRlbXMuZ2V0KCkgZm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXTsKIH0K
IAotdm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNo
UG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKQogewogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2VhcmNoSXRlbXMu
Y2xlYXIoKTsKLSAgICBmb3IgKE5TU3RyaW5nICppdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgeworICAg
IE5TQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOworICAgIGZvciAoaWQgaXRl
bSBpbiByZWNlbnRTZWFyY2hlcykgeworICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpb
TlNBcnJheSBjbGFzc11dICYmICgoTlNBcnJheSopaXRlbSkuY291bnQgPT0gMikKKyAgICAgICAg
ICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigoU3RyaW5nKWl0ZW1bMF0sIGR5
bmFtaWNfb2JqY19jYXN0PE5TRGF0ZT4oaXRlbVsxXSkudGltZUludGVydmFsU2luY2UxOTcwKSk7
CisKICAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0g
ICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICBzZWFyY2hJ
dGVtcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKFN0cmluZylpdGVtLCBEQkxfTUlOKSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDFiZjk1NWYuLjI0YzYyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMiBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkg
d2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8g
YWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJp
bmc+IHdpdGggVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2Vh
cmNoZXMKKyAgICAgICAgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6IEFkZCBh
IHR3by1vYmplY3QgYXJyYXkgd2hlcmUgdGhlIGZpcnN0IG9iamVjdAorICAgICAgICBpcyB0aGUg
c2VhcmNoIHN0cmluZyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGltZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOiBJZiB0aGUgaXRlbSBpcyBhIHR3
by1vYmplY3QgYXJyYXksIHRoZW4gY29udmVydAorICAgICAgICBpdHMgdmFsdWVzIHRvIGEgcGFp
ci4gSWYgdGhlIGl0ZW0gaXMgYSBzdHJpbmcsIHRoZW4gc2V0IHRoZSB0aW1lIHRvIGJlIERCTF9N
SU4uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVz
KToKKwogMjAxNS0wOS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4OTMzOC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAz
YjNlOGJjLi5jNzM1YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMCw0NSArMzAsNDEgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNv
bnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3Ry
aW5nJiBuYW1lKQogewotICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNo
RmllbGQ6IiArIG5hbWUpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJuIFtAImNvbS5hcHBs
ZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuYW1lXTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgZG91YmxlPj4mIHNlYXJjaEl0ZW1zKQogewotICAgIGlmICghbmFtZSkg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgorICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFp
blB0cjxDRk11dGFibGVBcnJheVJlZj4gaXRlbXM7CiAKLSAgICBpZiAoIXNlYXJjaEl0ZW1zLmlz
RW1wdHkoKSkgewotICAgICAgICBpdGVtcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgc2VhcmNoSXRlbXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0KLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpCi0gICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW0uY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CisgICAgaWYgKHNlYXJjaEl0ZW1zLmlzRW1wdHkoKSkgeworICAgICAgICBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6
YXV0b3NhdmVLZXkobmFtZSldOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ0ZQcmVm
ZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwg
a0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotICAgIENGUHJlZmVyZW5jZXNBcHBT
eW5jaHJvbml6ZShrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHNlYXJjaEl0ZW0gOiBzZWFyY2hJdGVtcykKKyAgICAgICAgW2l0ZW1zIGFkZE9iamVj
dDpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnNlYXJjaEl0ZW0uZmlyc3QsIFtOU0RhdGUgZGF0
ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6c2VhcmNoSXRlbS5zZWNvbmRdLCBuaWxdXTsKKwor
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVt
cy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNo
SXRlbXMpCiB7Ci0gICAgaWYgKCFuYW1lKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBhIG1lc3NhZ2UgY2hlY2suCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCi0gICAgYXV0byBpdGVtcyA9IGFkb3B0Q0YoZHluYW1pY19jZl9jYXN0
PENGQXJyYXlSZWY+KENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSku
Z2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSkpOwotICAgIGlmICghaXRl
bXMpCi0gICAgICAgIHJldHVybjsKKyAgICBzZWFyY2hJdGVtcy5jbGVhcigpOworICAgIE5TQXJy
YXkgKnJlY2VudFNlYXJjaGVzID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOworICAgIGZvciAoaWQgaXRlbSBpbiBy
ZWNlbnRTZWFyY2hlcykgeworICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNBcnJh
eSBjbGFzc11dICYmICgoTlNBcnJheSopaXRlbSkuY291bnQgPT0gMikKKyAgICAgICAgICAgIHNl
YXJjaEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigoU3RyaW5nKWl0ZW1bMF0sIGR5bmFtaWNf
b2JqY19jYXN0PE5TRGF0ZT4oaXRlbVsxXSkudGltZUludGVydmFsU2luY2UxOTcwKSk7CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVtcy5nZXQoKSk7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IGR5bmFtaWNfY2ZfY2Fz
dDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVtcy5nZXQoKSwgaSkpKQot
ICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAgICAgICBpZiAoW2l0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHNlYXJjaEl0ZW1z
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcigoU3RyaW5nKWl0ZW0sIERCTF9NSU4pKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3NTNjODAxLi45
MzliNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjc2
LDggKzEyNzYsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAvLyBTZWFyY2ggcG9wdXAgcmVz
dWx0cwotICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5n
JiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBT
dHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4mKTsKKyAgICB2
b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgZG91YmxlPj4mKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFNwZWVjaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGRlZDZhMTAuLjA2MGNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzc5LDggKzM3OSw4IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgU2VhcmNoIHBvcHVwIG1lbnVzCi0g
ICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8U3RyaW5nPiBzZWFyY2hJ
dGVtcykKLSAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8U3Ry
aW5nPiByZXN1bHQpCisgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gc2VhcmNoSXRlbXMpCisgICAgTG9hZFJlY2VudFNl
YXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+
IHJlc3VsdCkKIAogICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFn
ZVByb3h5RWZsLmNwcAppbmRleCA2OTBhZjNlLi5jZTBjMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC03MywxMiArNzMsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoVmVjdG9y
PFdURjo6U3RyaW5nPiYgLypjb21tYW5kc0wKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+JikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDRi
OWJlNzMuLjZmNGY3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogICAgIG1fYWNjZXNz
aWJpbGl0eVBsdWdJRCA9IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcm
LCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IFN0cmluZyYsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcAppbmRl
eCAxYjA2NzA1Li4yMDk5YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIFBvcHVwTWVudSogV2ViU2VhcmNoUG9wdXBNZW51Ojpwb3B1cE1lbnUoKQog
ICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgV2ViU2VhcmNoUG9w
dXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFt
ZSwgc2VhcmNoSXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9w
dXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0SXRlbXMpCit2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIGRvdWJsZT4+JiByZXN1bHRJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCmluZGV4IDhmMTAxMWQu
LjZkOGEwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaApAQCAtMzEsOCArMzEsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZShXZWJQYWdl
KiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBv
cHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYg
c2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0tIAoyLjMuOCAo
QXBwbGUgR2l0LTU4KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261397</attachid>
            <date>2015-09-17 10:46:43 -0700</date>
            <delta_ts>2015-09-30 17:29:39 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>33360</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBjODBmM2UyMmQ5OTA0ZWQwMDc2N2E2NmFjYmIxZTAyYzNkMjkyOWY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUaHUs
IDE3IFNlcCAyMDE1IDEwOjQ0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjkg
KysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAg
ICAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51
LmggICAgICAgICAgfCAxNSArKysrKystCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmNwcCB8IDI4ICsrKysrKysrKy0tLQogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCAgICAgfCAxMCArKystLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggICAgICAgfCAgMyArLQogU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysr
CiAuLi4vaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgICAgICB8ICA0
ICstCiAuLi4vV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCB8
ICA0ICstCiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICB8IDE4ICsrKysrKysrCiAuLi4vV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVNYWMuaCB8ICA0ICstCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dU1hYy5tbSAgICAgICB8IDIxICsrKysrKy0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0
Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSAgICAgICAgICB8ICAxICsKIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwICAgIHwgMTcgKysrKysrKysKIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAgICAgIHwgIDYgKysr
CiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gICB8IDUw
ICsrKysrKysrKysrLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCAgICAgICAgICAgIHwgIDUgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluICB8ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgICB8ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgICB8ICA0ICstCiAuLi4vV2ViQ29yZVN1cHBvcnQv
V2ViU2VhcmNoUG9wdXBNZW51LmNwcCAgICAgICAgICB8ICA0ICstCiAuLi4vV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCB8ICA0ICstCiAyNCBmaWxlcyBjaGFu
Z2VkLCAyMjQgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0
MzRiODUuLmQ0NDBiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wOC0yNCAg
Wmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlw
ZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVu
dHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVh
cmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2Vu
dFNlYXJjaEl0ZW0+LCB3aGVyZSBSZWNlbnRTZWFyY2hJdGVtIGlzIGEgc3RydWN0CisgICAgICAg
IHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hl
cyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2Vh
cmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RW1w
dHlTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcDogTm93IHRoYXQgbV9yZWNlbnRTZWFyY2hlcyBhcmUgVmVjdG9yPFJlY2VudFNlYXJj
aEl0ZW0+LAorICAgICAgICB3ZSBjYW5ub3QgdXNlIC1yZW1vdmVBbGwgd2l0aCBhIHNlYXJjaCBz
dHJpbmcuIFVzZSAtcmVtb3ZlQWxsTWF0Y2hpbmcgaW5zdGVhZCB0byByZW1vdmUgdGhlCisgICAg
ICAgIGl0ZW0gdGhhdCBoYXMgaXRzIG1lbWJlciBzZWFyY2ggc3RyaW5nIGVxdWFsIHRvIHRoZSBz
ZWFyY2ggc3RyaW5nIHVzZXIgaW5wdXRzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNo
RmllbGQ6OmFkZFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hG
aWVsZDo6aXRlbVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQg
YSB0d28tb2JqZWN0IGFycmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QgaXMgdGhlIHNlYXJjaAor
ICAgICAgICBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAgICAgIChXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyk6IElmIHRoZSBpdGVt
IGlzIGEgdHdvLW9iamVjdCBhcnJheSwgdGhlbiBjb252ZXJ0IGl0cyB2YWx1ZXMKKyAgICAgICAg
dG8gdGhlIHN0cnVjdCBSZWNlbnRTZWFyY2hJdGVtLiBJZiB0aGUgaXRlbSBpcyBhIHN0cmluZywg
dGhlbiBzZXQgdGhlIHRpbWUgdG8gYmUKKyAgICAgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludDo6bWluKCkuCisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudVdpbi5oOgorCiAyMDE1LTA5LTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IHRoZSAhRU5BQkxFKFZJREVPKSBidWlsZCBhZnRlciByMTg5
MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVhOTI1NWMuLmEw
YThlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzgsOCAr
MTM4LDggQEAgcHVibGljOgogY2xhc3MgRW1wdHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2Vh
cmNoUG9wdXBNZW51IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51
KCkgeyByZXR1cm4gbV9wb3B1cC5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYs
IFZlY3RvcjxTdHJpbmc+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoSXRlbT4mKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBlbmFi
bGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51LmgKaW5kZXggZjE5OWZhYi4uNjFlM2QxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKQEAgLTIyLDE4ICsyMiwyOSBAQAogI2Rl
ZmluZSBTZWFyY2hQb3B1cE1lbnVfaAogCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCisjaW5jbHVk
ZSA8Y2hyb25vPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3R5cGVkZWYgc3RydWN0IFJlY2VudFNlYXJjaEl0ZW0geworICAgIFJlY2VudFNlYXJj
aEl0ZW0oKSB7IH0KKworICAgIFJlY2VudFNlYXJjaEl0ZW0oY29uc3QgU3RyaW5nJiBzZWFyY2hT
dHJpbmcsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKKyAgICAg
ICAgOiBzZWFyY2hTdHJpbmcoc2VhcmNoU3RyaW5nKSwgdGltZSh0aW1lKSB7IH0KKworICAgIFN0
cmluZyBzZWFyY2hTdHJpbmc7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCB0aW1lOworfSBSZWNlbnRTZWFyY2hJdGVtOworCiBjbGFzcyBTZWFyY2hQb3B1cE1lbnUg
OiBwdWJsaWMgUmVmQ291bnRlZDxTZWFyY2hQb3B1cE1lbnU+IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TZWFyY2hQb3B1cE1lbnUoKSB7fQogICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1l
bnUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFJlY2VudFNlYXJjaEl0ZW0+JiBzZWFyY2hJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50
U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVXaW4uY3BwCmluZGV4IDc0YzMwNWEuLmYxMDY0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC0yMSwxMiAr
MjEsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVX
aW4uaCIKIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKyNl
bmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiAjaWYgVVNFKENGKQog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCit1c2luZyBuYW1lc3BhY2Ugc3Rk
OjpjaHJvbm87CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNoUG9wdXBNZW51V2luOjpT
ZWFyY2hQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCkBAIC01NSw3ICs2MCw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIH0KICNlbmRpZgogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVt
PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC02Niw4ICs3MSwxMiBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIHNpemVf
dCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0
ZW1zID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5
Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tp
XS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIGRvdWJsZSBzZWFyY2hJdGVtVGltZSA9IGR1cmF0
aW9uX2Nhc3Q8ZHVyYXRpb248ZG91YmxlPj4oc2VhcmNoSXRlbXNbaV0udGltZS50aW1lX3NpbmNl
X2Vwb2NoKCkpLmNvdW50KCk7CisgICAgICAgICAgICBjb25zdCB2b2lkKiByZWNlbnRTZWFyY2hb
XSA9IHsgc2VhcmNoSXRlbXNbaV0uc2VhcmNoU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUs
ICZzZWFyY2hJdGVtVGltZSkgfTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBz
ZWFyY2hJdGVtID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJl
Y2VudFNlYXJjaCwgMiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtLmdldCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1l
KS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsK
QEAgLTc1LDcgKzg0LDcgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICNlbmRpZgogfQogCi12
b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1
cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC04OSw5ICs5OCwxNiBAQCB2b2lkIFNlYXJjaFBv
cHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmVjdG9yPFN0cgogCiAgICAgc2l6ZV90IHNpemUgPSBDRkFycmF5R2V0Q291bnQoaXRlbXMuZ2V0
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIENG
U3RyaW5nUmVmIGl0ZW0gPSAoQ0ZTdHJpbmdSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVt
cy5nZXQoKSwgaSk7CisgICAgICAgIENGVHlwZVJlZiBpdGVtID0gKENGVHlwZVJlZilDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKTsKKyAgICAgICAgaWYgKENGQXJyYXlHZXRD
b3VudChkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oaXRlbSkpID09IDIpIHsKKyAgICAgICAg
ICAgIGRvdWJsZSBzZWFyY2hJdGVtVGltZTsKKyAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
KENGTnVtYmVyUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoKENGQXJyYXlSZWYpaXRlbSwgMSks
IGtDRk51bWJlckRvdWJsZVR5cGUsICZzZWFyY2hJdGVtVGltZSk7CisgICAgICAgICAgICBzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgc2VhcmNoVGltZSA9IHN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4o
c2VhcmNoSXRlbVRpbWUpKSk7CisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoUmVjZW50
U2VhcmNoSXRlbSgoU3RyaW5nKShDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KChD
RkFycmF5UmVmKWl0ZW0sIDApLCBzZWFyY2hUaW1lKSk7CisgICAgICAgIH0KKwogICAgICAgICBp
ZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAg
IHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVu
ZChSZWNlbnRTZWFyY2hJdGVtKChTdHJpbmcpKENGU3RyaW5nUmVmKWl0ZW0sIHN5c3RlbV9jbG9j
azo6dGltZV9wb2ludDo6bWluKCkpKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAppbmRleCAyOTlhMTMzLi41
ZDY4MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudVdpbi5oCkBAIC0zMSw4ICszMSw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVX
aW4oUG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVh
bCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2hJ
dGVtPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoSXRlbT4mIHNlYXJj
aEl0ZW1zKTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggODlkYzM0
Yy4uY2Y4YmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNo
RmllbGQuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5j
bHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgi
CkBAIC04OCw4ICs4NywxMSBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1
bHQoKQogICAgIGlmIChmcmFtZSgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVBbGwodmFsdWUpOwot
ICAgIG1fcmVjZW50U2VhcmNoZXMuaW5zZXJ0KDAsIHZhbHVlKTsKKyAgICBtX3JlY2VudFNlYXJj
aGVzLnJlbW92ZUFsbE1hdGNoaW5nKFt2YWx1ZV0gKGNvbnN0IFJlY2VudFNlYXJjaEl0ZW0mIHJl
Y2VudFNlYXJjaEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIHJlY2VudFNlYXJjaEl0ZW0uc2VhcmNo
U3RyaW5nID09IHZhbHVlOworICAgIH0pOworCisgICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnQo
MCwgUmVjZW50U2VhcmNoSXRlbSh2YWx1ZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93
KCkpKTsKICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8aW50PihtX3JlY2VudFNlYXJjaGVzLnNpemUo
KSkgPiBpbnB1dEVsZW1lbnQoKS5tYXhSZXN1bHRzKCkpCiAgICAgICAgIG1fcmVjZW50U2VhcmNo
ZXMucmVtb3ZlTGFzdCgpOwogCkBAIC0yMjgsNyArMjMwLDcgQEAgU3RyaW5nIFJlbmRlclNlYXJj
aEZpZWxkOjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgaWYgKHN0YXRp
Y19jYXN0PGludD4obGlzdEluZGV4KSA9PSAoc2l6ZSAtIDEpKQogICAgICAgICByZXR1cm4gc2Vh
cmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCk7CiAjZW5kaWYKLSAgICByZXR1cm4gbV9y
ZWNlbnRTZWFyY2hlc1tsaXN0SW5kZXggLSAxXTsKKyAgICByZXR1cm4gbV9yZWNlbnRTZWFyY2hl
c1tsaXN0SW5kZXggLSAxXS5zZWFyY2hTdHJpbmc7CiB9CiAKIFN0cmluZyBSZW5kZXJTZWFyY2hG
aWVsZDo6aXRlbUxhYmVsKHVuc2lnbmVkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuaAppbmRleCBiNjA1NzgxLi5hMzA5YjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmgiCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
X3NlYXJjaFBvcHVwSXNWaXNpYmxlOwogICAgIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IG1fc2Vh
cmNoUG9wdXA7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9yZWNlbnRTZWFyY2hlczsKKyAgICBWZWN0
b3I8UmVjZW50U2VhcmNoSXRlbT4gbV9yZWNlbnRTZWFyY2hlczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCBkNGE0NjgzLi43ZGVlMWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6YWNobGlA
YXBwbGUuY29tPgorCisgICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVj
ZW50IHNlYXJjaCBoaXN0b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisg
ICAgICAgIGluIG9yZGVyIHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhp
c3RvcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDgzODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiwgd2hl
cmUgUmVjZW50U2VhcmNoSXRlbSBpcyBhIHN0cnVjdAorICAgICAgICB0aGF0IGNvbnNpc3RzIHNl
YXJjaCBzdHJpbmcgYW5kIHRpbWUsIGZvciByZWNlbnQgc2VhcmNoZXMgaW4gb3JkZXIgdG8gc3Rv
cmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6
c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJ
T1MuaDoKKwogMjAxNS0wOC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgYWxsIHJlbWFpbmluZyB1c2VzIG9mIFdURjo6TXV0ZXggd2l0aCBXVEY6
OkxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFy
Y2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDc1ZGE2ZWQuLjkwMTIxODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNw
cApAQCAtMzUsMTEgKzM1LDExIEBAIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1
cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVw
TWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNl
bnRTZWFyY2hJdGVtPiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCi12b2lkIFNlYXJjaFBvcHVw
TWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxT
dHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVt
PiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLmM2ZjY2
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5oCkBAIC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1
cE1lbnVJT1MoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFy
Y2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFy
Y2hJdGVtPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDgxZmIy
YjIuLmU3OTdlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wOC0y
NCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQg
dHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNo
IGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBj
bGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGZvciByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgaW4g
b3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFj
OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSB0d28tb2JqZWN0IGFycmF5IHdoZXJlIHRoZSBm
aXJzdCBvYmplY3QgaXMgdGhlCisgICAgICAgIHNlYXJjaCBzdHJpbmcgYW5kIHRoZSBzZWNvbmQg
aXMgdGhlIHRpbWUuCisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFy
Y2hlcyk6IElmIHRoZSBpdGVtIGlzIGEgdHdvLW9iamVjdCBhcnJheSwgdGhlbiBjb252ZXJ0Cisg
ICAgICAgIGl0cyB2YWx1ZXMgdG8gYSBwYWlyLiBJZiB0aGUgaXRlbSBpcyBhIHN0cmluZywgdGhl
biBzZXQgdGhlIHRpbWUgdG8gYmUgREJMX01JTi4KKwogMjAxNS0wOS0wMyAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE4OTMzOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51TWFjLmgKaW5kZXggNGMxY2M3OS4uNzdjMzkwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
LmgKQEAgLTM1LDggKzM1LDggQEAgcHVibGljOgogICAgIH5TZWFyY2hQb3B1cE1lbnVNYWMoKTsK
IAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlJlY2VudFNlYXJjaEl0ZW0+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVN
YWMubW0KaW5kZXggMmIyMjc4NC4uNjI5YjY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKIAogU2VhcmNoUG9wdXBN
ZW51TWFjOjpTZWFyY2hQb3B1cE1lbnVNYWMoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVNYWMoY2xpZW50KSkpCkBAIC00OSw3ICs1
MCw3IEBAIGJvb2wgU2VhcmNoUG9wdXBNZW51TWFjOjplbmFibGVkKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykK
K3ZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1z
KQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjAsMjAg
KzYxLDI4IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgfQogCiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHNlYXJjaEl0ZW06IHNlYXJjaEl0ZW1zKQotICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OnNl
YXJjaEl0ZW1dOworICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbSA6IHNlYXJjaEl0ZW1z
KSB7CisgICAgICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IGR1cmF0aW9uX2Nhc3Q8
ZHVyYXRpb248ZG91YmxlPj4oc2VhcmNoSXRlbS50aW1lLnRpbWVfc2luY2VfZXBvY2goKSkuY291
bnQoKTsKKyAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OnNlYXJjaEl0ZW0uc2VhcmNoU3RyaW5nLCBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2lu
Y2UxOTcwOnRpbWVJbnRlcnZhbF0sIG5pbF1dOworICAgIH0KIAogICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0
b3NhdmVLZXkobmFtZSldOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRl
bXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBz
ZWFyY2hJdGVtcy5jbGVhcigpOwotICAgIGZvciAoTlNTdHJpbmcgKml0ZW0gaW4gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVLZXkobmFt
ZSldKSB7CisgICAgTlNBcnJheSAqcmVjZW50U2VhcmNoZXMgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBhcnJheUZvcktleTphdXRvc2F2ZUtleShuYW1lKV07CisgICAg
Zm9yIChpZCBpdGVtIGluIHJlY2VudFNlYXJjaGVzKSB7CisgICAgICAgIGlmIChbaXRlbSBpc0tp
bmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0gJiYgKChOU0FycmF5KilpdGVtKS5jb3VudCA9PSAy
KSB7CisgICAgICAgICAgICBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgc2VhcmNoSXRlbVRpbWUg
PSBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1
cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGR5bmFtaWNfb2JqY19jYXN0PE5TRGF0ZT4oaXRlbVsx
XSkudGltZUludGVydmFsU2luY2UxOTcwKSkpOworICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBw
ZW5kKFJlY2VudFNlYXJjaEl0ZW0oKFN0cmluZylpdGVtWzBdLCBzZWFyY2hJdGVtVGltZSkpOwor
ICAgICAgICB9CisKICAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7CisgICAgICAgICAg
ICBzZWFyY2hJdGVtcy5hcHBlbmQoUmVjZW50U2VhcmNoSXRlbSgoU3RyaW5nKWl0ZW0sIHN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludDo6bWluKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWJm
OTU1Zi4uZDQzYTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA4LTI0ICBa
aHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBl
PXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50
cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFy
aW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8UmVjZW50
U2VhcmNoSXRlbT4sIHdoZXJlIFJlY2VudFNlYXJjaEl0ZW0gaXMgYSBzdHJ1Y3QKKyAgICAgICAg
dGhhdCBjb25zaXN0cyBzZWFyY2ggc3RyaW5nIGFuZCB0aW1lLCBmb3IgcmVjZW50IHNlYXJjaGVz
IGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSB0d28tb2JqZWN0IGFy
cmF5IHdoZXJlIHRoZSBmaXJzdCBvYmplY3QKKyAgICAgICAgaXMgdGhlIHNlYXJjaCBzdHJpbmcg
YW5kIHRoZSBzZWNvbmQgaXMgdGhlIHRpbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bG9hZFJlY2VudFNlYXJjaGVzKTogSWYgdGhlIGl0ZW0gaXMgYSB0d28tb2JqZWN0IGFycmF5
LCB0aGVuIGNvbnZlcnQKKyAgICAgICAgaXRzIHZhbHVlcyB0byB0aGUgc3RydWN0IFJlY2VudFNl
YXJjaEl0ZW0uIElmIHRoZSBpdGVtIGlzIGEgc3RyaW5nLCB0aGVuIHNldCB0aGUgdGltZSB0byBi
ZQorICAgICAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJj
aFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9h
ZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgor
CiAyMDE1LTA5LTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5MzM4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0Mi9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAxMDc3NzdlLi40NTU5NzRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzYxLDYgKzM2MSw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5m
byc6IFsnPFdlYkNvcmUvUGx1Z2luRGF0YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJzogWyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudCc6IFsnPFdlYkNvcmUvUGFzdGVib2FyZC5oPiddLAorICAg
ICAgICAnV2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbSc6IFsnPFdlYkNvcmUvU2VhcmNoUG9wdXBN
ZW51Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSc6IFsn
PFdlYkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPidd
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCBkNTI4Y2UyLi41ZWUxODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29uc3Ry
YWludHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Np
b25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KQEAgLTQ4MCw2ICs0ODEsMjIgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFBhdGg+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQYXRoJiBw
YXRoKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVjZW50U2Vh
cmNoSXRlbT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlY2VudFNl
YXJjaEl0ZW0mIHJlY2VudFNlYXJjaCkKK3sKKyAgICBlbmNvZGVyIDw8IHJlY2VudFNlYXJjaC5z
ZWFyY2hTdHJpbmcgPDwgcmVjZW50U2VhcmNoLnRpbWU7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2Rl
cjxSZWNlbnRTZWFyY2hJdGVtPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVj
ZW50U2VhcmNoSXRlbSYgcmVjZW50U2VhcmNoKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVjZW50U2VhcmNoLnNlYXJjaFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVjZW50U2VhcmNoLnRpbWUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWdpb246OlNwYW4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiwgY29uc3QgUmVnaW9uOjpTcGFuJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYsIFJlZ2lvbjo6U3BhbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGNmNTQ5M2IuLjY0YWFmMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTg1LDYgKzg1
LDcgQEAgc3RydWN0IE1pbWVDbGFzc0luZm87CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3Ry
dWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87CitzdHJ1Y3QgUmVj
ZW50U2VhcmNoSXRlbTsKIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CiBzdHJ1Y3Qg
VGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwpAQCAtNDg4LDYg
KzQ4OSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0PiB7CiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbT4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZWNlbnRTZWFyY2hJ
dGVtJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OlJlY2VudFNlYXJjaEl0ZW0mKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiAjZW5kaWYg
Ly8gV2ViQ29yZUFyZ3VtZW50Q29kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAzYjNlOGJjLi43Zjg2MTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCkBAIC0yOCw0NyArMjgsNDkgQEAKIAogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3N0YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiAr
IG5hbWUpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJuIFtAImNvbS5hcHBsZS5XZWJLaXQu
c2VhcmNoRmllbGQ6IiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuYW1lXTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1zKQogewotICAgIGlmICghbmFtZSkgewotICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgorICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIFJldGFpblB0cjxDRk11
dGFibGVBcnJheVJlZj4gaXRlbXM7Ci0KLSAgICBpZiAoIXNlYXJjaEl0ZW1zLmlzRW1wdHkoKSkg
ewotICAgICAgICBpdGVtcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2VhcmNo
SXRlbXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgaWYgKHNlYXJjaEl0
ZW1zLmlzRW1wdHkoKSkgeworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbSA6IHNl
YXJjaEl0ZW1zKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBz
ZWFyY2hJdGVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6ZSgpXSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBzZWFy
Y2hJdGVtIDogc2VhcmNoSXRlbXMpIHsKKyAgICAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVy
dmFsID0gZHVyYXRpb25fY2FzdDxkdXJhdGlvbjxkb3VibGU+PihzZWFyY2hJdGVtLnRpbWUudGlt
ZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OltOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6c2VhcmNoSXRlbS5zZWFyY2hTdHJpbmcsIFtOU0RhdGUgZGF0
ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6dGltZUludGVydmFsXSwgbmlsXV07CiAgICAgfQog
Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBp
dGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotICAgIENGUHJl
ZmVyZW5jZXNBcHBTeW5jaHJvbml6ZShrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7
CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0Oml0
ZW1zLmdldCgpIGZvcktleTphdXRvc2F2ZUtleShuYW1lKV07CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaEl0ZW0+JiBzZWFy
Y2hJdGVtcykKIHsKLSAgICBpZiAoIW5hbWUpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAKLSAgICBhdXRvIGl0ZW1zID0gYWRvcHRDRihkeW5hbWljX2NmX2Nh
c3Q8Q0ZBcnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1l
KS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKSk7Ci0gICAgaWYgKCFp
dGVtcykKLSAgICAgICAgcmV0dXJuOworICAgIHNlYXJjaEl0ZW1zLmNsZWFyKCk7CisgICAgTlNB
cnJheSAqcmVjZW50U2VhcmNoZXMgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBhcnJheUZvcktleTphdXRvc2F2ZUtleShuYW1lKV07CisgICAgZm9yIChpZCBpdGVtIGlu
IHJlY2VudFNlYXJjaGVzKSB7CisgICAgICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0gJiYgKChOU0FycmF5KilpdGVtKS5jb3VudCA9PSAyKSB7CisgICAgICAgICAg
ICBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgc2VhcmNoSXRlbVRpbWUgPSBzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQoZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlv
bjxkb3VibGU+KGR5bmFtaWNfb2JqY19jYXN0PE5TRGF0ZT4oaXRlbVsxXSkudGltZUludGVydmFs
U2luY2UxOTcwKSkpOworICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKFdlYkNvcmU6OlJl
Y2VudFNlYXJjaEl0ZW0oKFN0cmluZylpdGVtWzBdLCBzZWFyY2hJdGVtVGltZSkpOworICAgICAg
ICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVt
cy5nZXQoKSk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IGR5bmFt
aWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVtcy5nZXQo
KSwgaSkpKQotICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAgICAgICBp
ZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHNl
YXJjaEl0ZW1zLmFwcGVuZChXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtKChTdHJpbmcpaXRlbSwg
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc1M2M4MDEuLmQwNmQxYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmll
d1N0YXRlLmg+CkBAIC0xMjc2LDggKzEyNzcsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAv
LyBTZWFyY2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2Vh
cmNoSXRlbT4mKTsKKyAgICB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBW
ZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbT4mKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIC8vIFNwZWVjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRlZDZhMTAuLjdiNzk2YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzc5LDgg
KzM3OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgU2Vh
cmNoIHBvcHVwIG1lbnVzCi0gICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0
b3I8U3RyaW5nPiBzZWFyY2hJdGVtcykKLSAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5h
bWUpIC0+IChWZWN0b3I8U3RyaW5nPiByZXN1bHQpCisgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0
cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbT4gc2VhcmNoSXRlbXMp
CisgICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OlJlY2VudFNlYXJjaEl0ZW0+IHJlc3VsdCkKIAogICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0
cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCA2OTBhZjNlLi44YjZjOWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3Bw
CkBAIC03MywxMiArNzMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEVkaXRvckNvbW1hbmRz
Rm9yS2V5RXZlbnQoVmVjdG9yPFdURjo6U3RyaW5nPiYgLypjb21tYW5kc0wKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJl
Y2VudFNlYXJjaEl0ZW0+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJp
bmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5n
JiwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaEl0ZW0+JikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCmluZGV4IDRiOWJlNzMuLjY5NGE2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1
Z0lEKQogICAgIG1fYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRT
ZWFyY2hJdGVtPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNo
UG9wdXBNZW51LmNwcAppbmRleCAxYjA2NzA1Li5iNzYwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFBvcHVwTWVudSogV2ViU2VhcmNoUG9wdXBN
ZW51Ojpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFdl
YlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBXZWJTZWFyY2hQ
b3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2Vh
cmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0SXRlbXMpCit2b2lkIFdlYlNlYXJjaFBvcHVwTWVu
dTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJl
Y2VudFNlYXJjaEl0ZW0+JiByZXN1bHRJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCmluZGV4IDhmMTAxMWQu
LmJhN2EwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaApAQCAtMzEsOCArMzEsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZShXZWJQYWdl
KiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBv
cHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYg
c2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpS
ZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3Rv
cjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0tIAoyLjMuOCAo
QXBwbGUgR2l0LTU4KQoK
</data>
<flag name="review"
          id="286607"
          type_id="1"
          status="-"
          setter="jberlin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262212</attachid>
            <date>2015-09-30 17:29:39 -0700</date>
            <delta_ts>2015-10-08 17:58:27 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>v2-0001-We-should-also-store-the-time-information-for-rec.patch</filename>
            <type>text/plain</type>
            <size>36690</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSAwZTc4MTEwODMxMzk1YmFlMGI3MWY0NTNlYTllNzFmMjIzNzAwYjllIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUaHUs
IDE3IFNlcCAyMDE1IDEwOjQ0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2Ml0gV2Ugc2hvdWxk
IGFsc28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgot
LS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
MjkgKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAg
ICAgICAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5o
ICAgICAgICAgIHwgMTUgKysrKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVXaW4uY3BwIHwgIDggKy0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmggICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwICAgICB8IDEwICstLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlYXJjaEZpZWxkLmggICAgICAgfCAgMyArLQogU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKwogLi4uL2lvcy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwICAgICAgfCAgNCArLQogLi4uL1dlYktpdC9p
b3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggfCAgNCArLQogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAzNiArKysrKysrKysr
CiAuLi4vV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaCB8ICA0
ICstCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbSAgICAgICB8
IDc2ICsrKysrKysrKysrKysrKystLS0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5ICAgICAgICAgIHwgIDEgKwogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgICAgfCAxNyArKysrKwogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oICAgICAgfCAgNiArKwogLi4uL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAgfCA3NyArKysrKysr
KysrKysrKystLS0tLS0tCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
ICAgICAgICAgICB8ICA1ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluICB8ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
Z2VQcm94eUVmbC5jcHAgICB8ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHAgICB8ICA0ICstCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNo
UG9wdXBNZW51LmNwcCAgICAgICAgICB8ICA0ICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCB8ICA0ICstCiAyNCBmaWxlcyBjaGFuZ2VkLCAzMDcg
aW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0MzRiODUuLjU1
NDEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAg
PHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+
4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBh
ZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBz
ZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2VudFNlYXJjaEl0
ZW0+LCB3aGVyZSBSZWNlbnRTZWFyY2hJdGVtIGlzIGEgc3RydWN0CisgICAgICAgIHRoYXQgY29u
c2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRl
ciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2VhcmNoUG9wdXBN
ZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFyY2hQ
b3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vU2VhcmNo
UG9wdXBNZW51Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDog
Tm93IHRoYXQgbV9yZWNlbnRTZWFyY2hlcyBhcmUgVmVjdG9yPFJlY2VudFNlYXJjaEl0ZW0+LAor
ICAgICAgICB3ZSBjYW5ub3QgdXNlIC1yZW1vdmVBbGwgd2l0aCBhIHNlYXJjaCBzdHJpbmcuIFVz
ZSAtcmVtb3ZlQWxsTWF0Y2hpbmcgaW5zdGVhZCB0byByZW1vdmUgdGhlCisgICAgICAgIGl0ZW0g
dGhhdCBoYXMgaXRzIG1lbWJlciBzZWFyY2ggc3RyaW5nIGVxdWFsIHRvIHRoZSBzZWFyY2ggc3Ry
aW5nIHVzZXIgaW5wdXRzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmFk
ZFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6aXRl
bVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBPbmx5IHNhdmUgdGhl
IFJlY2VudFNlYXJjaEl0ZW0ncyBzZWFyY2gKKyAgICAgICAgc3RyaW5nIG9uIFdpbmRvd3MgcGxh
dGZvcm0sIHdoaWNoIGlzIHdoYXQgd2UgdXNlZCB0byBkby4KKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKTogU2luY2Ugd2UgbmVlZCB0byBj
b25zdHJ1Y3QgYQorICAgICAgICBSZWNlbnRTZWFyY2hJdGVtLCB3ZSBnZXQgdGhlIHN0cmluZyBm
cm9tIHRoZSBhcHAncyBwcmVmZXJlbmNlcywgYW5kIHNldCB0aGUgdGltZSB0byBiZQorICAgICAg
ICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKS4KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6CisKIDIwMTUtMDktMDQgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlICFFTkFC
TEUoVklERU8pIGJ1aWxkIGFmdGVyIHIxODkwMjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKaW5kZXggZWE5MjU1Yy4uYTBhOGUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTEzOCw4ICsxMzgsOCBAQCBwdWJsaWM6CiBjbGFzcyBFbXB0eVNl
YXJjaFBvcHVwTWVudSA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewogcHVibGljOgogICAgIHZp
cnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSB7IHJldHVybiBtX3BvcHVwLmdldCgpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZl
Y3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlY2VudFNlYXJjaEl0ZW0+Jikg
eyB9CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAppbmRleCBmMTk5
ZmFiLi42MWUzZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQ
b3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUu
aApAQCAtMjIsMTggKzIyLDI5IEBACiAjZGVmaW5lIFNlYXJjaFBvcHVwTWVudV9oCiAKICNpbmNs
dWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBzdHJ1Y3QgUmVjZW50U2Vh
cmNoSXRlbSB7CisgICAgUmVjZW50U2VhcmNoSXRlbSgpIHsgfQorCisgICAgUmVjZW50U2VhcmNo
SXRlbShjb25zdCBTdHJpbmcmIHNlYXJjaFN0cmluZywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCB0aW1lKQorICAgICAgICA6IHNlYXJjaFN0cmluZyhzZWFyY2hTdHJpbmcp
LCB0aW1lKHRpbWUpIHsgfQorCisgICAgU3RyaW5nIHNlYXJjaFN0cmluZzsKKyAgICBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWU7Cit9IFJlY2VudFNlYXJjaEl0ZW07
CisKIGNsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlYXJjaFBvcHVw
TWVudT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHt9CiAgICAg
dmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1z
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggNzRjMzA1YS4u
ZjhjMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudVdpbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogfQogI2VuZGlmCiAKLXZvaWQg
U2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBv
cHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaEl0ZW0+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBT
ZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3QKICAgICBpZiAoc2l6ZSkgewogICAgICAgICBpdGVtcyA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0
KCksIHNlYXJjaEl0ZW1zW2ldLnNlYXJjaFN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICB9CiAKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSku
Z2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAjZW5kaWYKIH0KIAotdm9p
ZCBTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBN
ZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0
b3I8UmVjZW50U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFNlYXJjaFBvcHVw
TWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVj
dG9yPFN0cgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IENGU3RyaW5nUmVmIGl0ZW0gPSAoQ0ZTdHJpbmdSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChp
dGVtcy5nZXQoKSwgaSk7CiAgICAgICAgIGlmIChDRkdldFR5cGVJRChpdGVtKSA9PSBDRlN0cmlu
Z0dldFR5cGVJRCgpKQotICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAg
ICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKFJlY2VudFNlYXJjaEl0ZW0oKFN0cmluZykoQ0ZT
dHJpbmdSZWYpaXRlbSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludDo6bWlu
KCkpKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uaAppbmRleCAyOTlhMTMzLi41ZDY4MWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCkBAIC0zMSw4
ICszMSw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50
Kik7CiAKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJ
dGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMp
OworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoSXRlbT4mIHNlYXJjaEl0ZW1zKTsKICAgICB2aXJ0
dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggODlkYzM0Yy4uY2Y4YmRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC00MSw3
ICs0MSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBN
ZW51LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCkBAIC04OCw4ICs4NywxMSBA
QCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQoKQogICAgIGlmIChmcmFt
ZSgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVBbGwodmFsdWUpOwotICAgIG1fcmVjZW50U2VhcmNo
ZXMuaW5zZXJ0KDAsIHZhbHVlKTsKKyAgICBtX3JlY2VudFNlYXJjaGVzLnJlbW92ZUFsbE1hdGNo
aW5nKFt2YWx1ZV0gKGNvbnN0IFJlY2VudFNlYXJjaEl0ZW0mIHJlY2VudFNlYXJjaEl0ZW0pIHsK
KyAgICAgICAgcmV0dXJuIHJlY2VudFNlYXJjaEl0ZW0uc2VhcmNoU3RyaW5nID09IHZhbHVlOwor
ICAgIH0pOworCisgICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnQoMCwgUmVjZW50U2VhcmNoSXRl
bSh2YWx1ZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpKTsKICAgICB3aGlsZSAo
c3RhdGljX2Nhc3Q8aW50PihtX3JlY2VudFNlYXJjaGVzLnNpemUoKSkgPiBpbnB1dEVsZW1lbnQo
KS5tYXhSZXN1bHRzKCkpCiAgICAgICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlTGFzdCgpOwog
CkBAIC0yMjgsNyArMjMwLDcgQEAgU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtVGV4dCh1
bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4obGlzdElu
ZGV4KSA9PSAoc2l6ZSAtIDEpKQogICAgICAgICByZXR1cm4gc2VhcmNoTWVudUNsZWFyUmVjZW50
U2VhcmNoZXNUZXh0KCk7CiAjZW5kaWYKLSAgICByZXR1cm4gbV9yZWNlbnRTZWFyY2hlc1tsaXN0
SW5kZXggLSAxXTsKKyAgICByZXR1cm4gbV9yZWNlbnRTZWFyY2hlc1tsaXN0SW5kZXggLSAxXS5z
ZWFyY2hTdHJpbmc7CiB9CiAKIFN0cmluZyBSZW5kZXJTZWFyY2hGaWVsZDo6aXRlbUxhYmVsKHVu
c2lnbmVkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNlYXJjaEZpZWxkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuaAppbmRleCBiNjA1NzgxLi5hMzA5YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiUG9w
dXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgi
CisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODcsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3NlYXJjaFBvcHVwSXNWaXNp
YmxlOwogICAgIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IG1fc2VhcmNoUG9wdXA7Ci0gICAgVmVj
dG9yPFN0cmluZz4gbV9yZWNlbnRTZWFyY2hlczsKKyAgICBWZWN0b3I8UmVjZW50U2VhcmNoSXRl
bT4gbV9yZWNlbnRTZWFyY2hlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZwppbmRleCBkNGE0NjgzLi43ZGVlMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTUtMDgtMjQgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAg
ICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5
IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVyIHRv
IGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8U3Ry
aW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiwgd2hlcmUgUmVjZW50U2VhcmNoSXRl
bSBpcyBhIHN0cnVjdAorICAgICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBzdHJpbmcgYW5kIHRp
bWUsIGZvciByZWNlbnQgc2VhcmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1l
IGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmNwcDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKwogMjAxNS0wOC0x
NyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgYWxs
IHJlbWFpbmluZyB1c2VzIG9mIFdURjo6TXV0ZXggd2l0aCBXVEY6OkxvY2sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3Bw
CmluZGV4IDc1ZGE2ZWQuLjkwMTIxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9p
b3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1LDEx
IEBAIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJldHVy
biBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnNl
YXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgLypz
ZWFyY2hJdGVtcyovKQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0
ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYsIFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgLypzZWFyY2hJdGVtcyov
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLmM2ZjY2MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBA
IC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVJT1MoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9w
dXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRl
bXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbT4mIHNl
YXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDgxZmIyYjIuLmNjZTIzZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNS0wOC0yNCAgWmh1byBMaSAgPHphY2hs
aUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyBy
ZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwK
KyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2gg
aGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2VudFNlYXJjaEl0ZW0+LCB3
aGVyZSBSZWNlbnRTZWFyY2hJdGVtIGlzIGEgc3RydWN0CisgICAgICAgIHRoYXQgY29uc2lzdHMg
c2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRlciB0byBz
dG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWxsIHRoZXNlIG5l
dyBSZWNlbnRTZWFyY2hJdGVtcyBhcmUgc3RvcmVkIGluIGEgcGxpc3QgaW4gd2hpY2ggdGhlIHN0
cnVjdHVyZSBsb29rcyBsaWtlOgorICAgICAgICBSb290IHsKKyAgICAgICAgICAgICJpdGVtcyI6
IHsKKyAgICAgICAgICAgICAgICBhdXRvc2F2ZSBuYW1lOiB7CisgICAgICAgICAgICAgICAgICAg
ICJzZWFyY2hlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgInNlYXJjaFN0cmluZyI6
IHNlYXJjaFN0cmluZywgImRhdGUiOiBkYXRlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAu
Li4KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
TWFjLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tOgor
ICAgICAgICAoc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1N0b3JhZ2VEaXJlY3RvcnkpOiBSZWNl
bnQgc2VhcmNoZXMgd2l0aCB0aGUgbmV3IHN0cnVjdHVyZSBhcmUKKyAgICAgICAgc3RvcmVkIGlu
IGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAoc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0
UGF0aCk6IEdldCB0aGUgcGF0aCBmb3IgdGhlIHBsaXN0IG9mIHRoZSByZWNlbnQgc2VhcmNoZXMK
KyAgICAgICAgZW50cmllcy4KKyAgICAgICAgKHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVz
UGxpc3QpOiBSZXR1cm4gdGhlIHJlY2VudCBzZWFyY2hlcyBwbGlzdCBhcyBOU011dGFibGVEaWN0
aW9uYXJ5LgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMp
OiBBZGQgYSBkaWN0aW9uYXJ5IHdoZXJlIGl0IGhhcyB0d28gcGFpcnMgdGhhdCB0aGUKKyAgICAg
ICAgZmlyc3Qgb25lIGlzIHRoZSBzZWFyY2ggc3RyaW5nIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyB0
aGUgdGltZS4KKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVz
KTogV2UgZXhwZWN0IHRoZSByZWNlbnQgc2VhcmNoIGl0ZW0gaW4gdGhlIHBsaXN0IHRvCisgICAg
ICAgIGJlIGEgdHdvLXBhaXIgZGljdGlvbmFyeSwgYW5kIGNvbnZlcnQgdGhlIGRpY3Rpb25hcnkg
dG8gdGhlIHN0cnVjdCBSZWNlbnRTZWFyY2hJdGVtLgorICAgICAgICAoYXV0b3NhdmVLZXkpOiBE
ZWxldGVkLgorCiAyMDE1LTA5LTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5MzM4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMu
aAppbmRleCA0YzFjYzc5Li43N2MzOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaApAQCAtMzUsOCArMzUsOCBAQCBw
dWJsaWM6CiAgICAgflNlYXJjaFBvcHVwTWVudU1hYygpOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
SXRlbT4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2Vu
dFNlYXJjaEl0ZW0+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVu
YWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQppbmRleCAyYjIyNzg0Li4w
MDNhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFy
Y2hQb3B1cE1lbnVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51TWFjLm1tCkBAIC0yNCwxOSArMjQsNDAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBu
YW1lc3BhY2Ugc3RkOjpjaHJvbm87CiAKLVNlYXJjaFBvcHVwTWVudU1hYzo6U2VhcmNoUG9wdXBN
ZW51TWFjKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihu
ZXcgUG9wdXBNZW51TWFjKGNsaWVudCkpKQorc3RhdGljIE5TU3RyaW5nICogY29uc3QgZGF0ZUtl
eSA9IEAiZGF0ZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBpdGVtc0tleSA9IEAiaXRlbXMi
Oworc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc2VhcmNoZXNLZXkgPSBAInNlYXJjaGVzIjsKK3N0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IHNlYXJjaFN0cmluZ0tleSA9IEAic2VhcmNoU3RyaW5nIjsK
Kworc3RhdGljIE5TU3RyaW5nICpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVj
dG9yeSgpCiB7CisgICAgTlNTdHJpbmcgKmFwcE5hbWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdOworICAgIGlmICghYXBwTmFtZSkKKyAgICAgICAgYXBwTmFtZSA9
IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOworCisgICAgTlNTdHJp
bmcgKnN0b3JhZ2VQYXRoID0gW1tOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJMaWJyYXJ5L1dlYktpdCJdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDphcHBOYW1lXTsKKyAgICByZXR1cm4gc3RvcmFnZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6
aW5nUGF0aC5zdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoOwogfQogCi1TZWFyY2hQb3B1
cE1lbnVNYWM6On5TZWFyY2hQb3B1cE1lbnVNYWMoKQorc3RhdGljIE5TU3RyaW5nICpzZWFyY2hG
aWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkKK3sKKyAgICByZXR1cm4gW3NlYXJjaEZpZWxk
UmVjZW50U2VhcmNoZXNTdG9yYWdlRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiUmVjZW50U2VhcmNoZXMucGxpc3QiXTsKK30KKworc3RhdGljIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKnJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKQoreworICAgIHJl
dHVybiBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6
c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpXTsKK30KKworU2VhcmNoUG9wdXBN
ZW51TWFjOjpTZWFyY2hQb3B1cE1lbnVNYWMoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAg
OiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVNYWMoY2xpZW50KSkpCiB7CiB9CiAKLXN0
YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQorU2VhcmNoUG9w
dXBNZW51TWFjOjp+U2VhcmNoUG9wdXBNZW51TWFjKCkKIHsKLSAgICByZXR1cm4gW0AiY29tLmFw
cGxlLldlYktpdC5zZWFyY2hGaWVsZDoiIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOm5hbWVdOwog
fQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudU1hYzo6cG9wdXBNZW51KCkKQEAgLTQ5LDMx
ICs3MCw1MCBAQCBib29sIFNlYXJjaFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaEl0ZW0+JiBzZWFyY2hJ
dGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUp
XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpyZWNl
bnRTZWFyY2hlc1BsaXN0ID0gcmVhZFNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpOwor
ICAgIGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIFtyZWNlbnRTZWFyY2hlc1Bs
aXN0W2l0ZW1zS2V5XSByZW1vdmVPYmplY3RGb3JLZXk6bmFtZV07CisgICAgZWxzZSB7CisgICAg
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6ZSgpXSk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbSA6IHNlYXJjaEl0ZW1zKSB7CisgICAgICAg
ICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSBkdXJhdGlvbl9jYXN0PGR1cmF0aW9u
PGRvdWJsZT4+KHNlYXJjaEl0ZW0udGltZS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7Cisg
ICAgICAgICAgICBOU0RpY3Rpb25hcnkgKnJlY2VudFNlYXJjaCA9IEB7CisgICAgICAgICAgICAg
ICAgc2VhcmNoU3RyaW5nS2V5OiBzZWFyY2hJdGVtLnNlYXJjaFN0cmluZywKKyAgICAgICAgICAg
ICAgICBkYXRlS2V5OiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJ
bnRlcnZhbF0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6
cmVjZW50U2VhcmNoXTsKKyAgICAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW06
IHNlYXJjaEl0ZW1zKQotICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OnNlYXJjaEl0ZW1dOworICAg
ICAgICBpZiAocmVjZW50U2VhcmNoZXNQbGlzdCkKKyAgICAgICAgICAgIFtyZWNlbnRTZWFyY2hl
c1BsaXN0W2l0ZW1zS2V5XSBzZXRPYmplY3Q6QHsgc2VhcmNoZXNLZXk6IGl0ZW1zLmdldCgpIH0g
Zm9yS2V5Om5hbWVdOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZWNlbnRTZWFyY2hlc1Bs
aXN0ID0gW0B7IGl0ZW1zS2V5OiBAeyBuYW1lOiBAeyBzZWFyY2hlc0tleTogaXRlbXMuZ2V0KCkg
fSB9IH0gbXV0YWJsZUNvcHldOworICAgIH0KIAotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXko
bmFtZSldOworICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0IHdyaXRlVG9GaWxlOnNlYXJjaEZpZWxk
UmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5OllFU107CiB9CiAKLXZvaWQgU2Vh
cmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudU1h
Yzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJl
Y2VudFNlYXJjaEl0ZW0+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHNlYXJjaEl0ZW1zLmNsZWFyKCk7Ci0gICAgZm9yIChO
U1N0cmluZyAqaXRlbSBpbiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBh
cnJheUZvcktleTphdXRvc2F2ZUtleShuYW1lKV0pIHsKLSAgICAgICAgaWYgKFtpdGVtIGlzS2lu
ZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBl
bmQoaXRlbSk7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoZXNQbGlzdCA9
IHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKTsKKyAgICBpZiAoIXJlY2VudFNl
YXJjaGVzUGxpc3QpCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnJlY2VudFNlYXJj
aGVzID0gW1tbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6aXRlbXNLZXldIG9iamVj
dEZvcktleTpuYW1lXSBvYmplY3RGb3JLZXk6c2VhcmNoZXNLZXldOworICAgIGZvciAoaWQgaXRl
bSBpbiByZWNlbnRTZWFyY2hlcykgeworICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpb
TlNEaWN0aW9uYXJ5IGNsYXNzXV0gJiYgKChOU0RpY3Rpb25hcnkqKWl0ZW0pLmNvdW50ID09IDIp
IHsKKyAgICAgICAgICAgIHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBzZWFyY2hJdGVtVGltZSA9
IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVy
YXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZHluYW1pY19vYmpjX2Nhc3Q8TlNEYXRlPihpdGVtW2Rh
dGVLZXldKS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7CisgICAgICAgICAgICBzZWFyY2hJdGVt
cy5hcHBlbmQoV2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbSgoU3RyaW5nKWl0ZW1bc2VhcmNoU3Ry
aW5nS2V5XSwgc2VhcmNoSXRlbVRpbWUpKTsKKyAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAxYmY5NTVmLi4wOTk0NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTUt
MDgtMjQgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEF1Z21lbnQgPGlu
cHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGggdGhlIHRpbWUg
ZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVyIHRvIGFsbG93IHRpbWUtYmFz
ZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3Rv
cjxSZWNlbnRTZWFyY2hJdGVtPiwgd2hlcmUgUmVjZW50U2VhcmNoSXRlbSBpcyBhIHN0cnVjdAor
ICAgICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBzdHJpbmcgYW5kIHRpbWUsIGZvciByZWNlbnQg
c2VhcmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgor
CisgICAgICAgIEFsbCB0aGVzZSBuZXcgUmVjZW50U2VhcmNoSXRlbXMgYXJlIHN0b3JlZCBpbiBh
IHBsaXN0IGluIHdoaWNoIHRoZSBzdHJ1Y3R1cmUgbG9va3MgbGlrZTogCisgICAgICAgIFJvb3Qg
eworICAgICAgICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgICAgIGF1dG9zYXZlIG5hbWU6
IHsKKyAgICAgICAgICAgICAgICAgICAgInNlYXJjaGVzIjogWworICAgICAgICAgICAgICAgICAg
ICAgICAgeyAic2VhcmNoU3RyaW5nIjogc2VhcmNoU3RyaW5nLCAiZGF0ZSI6IGRhdGUgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC4uLiAgIAorICAgICAgICAgICAgICAgICAgICBdICAgICAK
KyAgICAgICAgICAgICAgICB9ICAgICAKKyAgICAgICAgICAgIH0gICAgIAorICAgICAgICB9ICAg
ICAKKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSBk
aWN0aW9uYXJ5IHdoZXJlIGl0IGhhcyB0d28gcGFpcnMgdGhhdCB0aGUKKyAgICAgICAgZmlyc3Qg
b25lIGlzIHRoZSBzZWFyY2ggc3RyaW5nIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyB0aGUgdGltZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOiBXZSBl
eHBlY3QgdGhlIHJlY2VudCBzZWFyY2ggaXRlbSBpbiB0aGUgcGxpc3QgdG8KKyAgICAgICAgYmUg
YSB0d28tcGFpciBkaWN0aW9uYXJ5LCBhbmQgY29udmVydCB0aGUgZGljdGlvbmFyeSB0byB0aGUg
c3RydWN0IFJlY2VudFNlYXJjaEl0ZW0uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKwogMjAxNS0wOS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE4OTMzOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
MTA3Nzc3ZS4uNDU1OTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTM2MSw2ICszNjEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAg
ICAgICAgJ1dlYkNvcmU6OlBsdWdpbkluZm8nOiBbJzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSc6IFsnPFdlYkNvcmUvUGFzdGVib2Fy
ZC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQnOiBbJzxXZWJD
b3JlL1Bhc3RlYm9hcmQuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlJlY2VudFNlYXJjaEl0ZW0n
OiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4
dENoZWNraW5nUmVxdWVzdERhdGEnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tl
ckNsaWVudC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEnOiBbJzxX
ZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZDUyOGNlMi4uNWVlMTg5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU5LDYg
KzU5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxpbmdDb29yZGluYXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRD
aGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CkBAIC00
ODAsNiArNDgxLDIyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXRoPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgUGF0aCYgcGF0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9p
ZCBBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaEl0ZW0+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWNlbnRTZWFyY2hJdGVtJiByZWNlbnRTZWFyY2gpCit7CisgICAg
ZW5jb2RlciA8PCByZWNlbnRTZWFyY2guc2VhcmNoU3RyaW5nIDw8IHJlY2VudFNlYXJjaC50aW1l
OworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoSXRlbT46OmRlY29kZShBcmd1
bWVudERlY29kZXImIGRlY29kZXIsIFJlY2VudFNlYXJjaEl0ZW0mIHJlY2VudFNlYXJjaCkKK3sK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlY2VudFNlYXJjaC5zZWFyY2hTdHJpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlY2VudFNlYXJj
aC50aW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVnaW9uOjpTcGFuPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFJlZ2lvbjo6U3BhbiYpOwog
ICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBSZWdpb246OlNwYW4mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBj
ZjU0OTNiLi42NGFhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC04NSw2ICs4NSw3IEBAIHN0cnVjdCBNaW1lQ2xhc3NJbmZvOwogc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIHN0cnVj
dCBQbHVnaW5JbmZvOworc3RydWN0IFJlY2VudFNlYXJjaEl0ZW07CiBzdHJ1Y3QgU2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVjdCBUZXh0
SW5kaWNhdG9yRGF0YTsKQEAgLTQ4OCw2ICs0ODksMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD4gewogfTsKICNl
bmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlY2VudFNl
YXJjaEl0ZW0+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbSYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtJik7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1bWVudENvZGVyc19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
aW5kZXggM2IzZThiYy4uODg4Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjgsNDcgKzI4LDgwIEBACiAKICNp
bXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJv
bm87CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCitzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBkYXRlS2V5ID0gQCJkYXRlIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGl0ZW1zS2V5ID0g
QCJpdGVtcyI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzZWFyY2hlc0tleSA9IEAic2VhcmNo
ZXMiOworc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc2VhcmNoU3RyaW5nS2V5ID0gQCJzZWFyY2hT
dHJpbmciOworCitzdGF0aWMgTlNTdHJpbmcgKnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNTdG9y
YWdlRGlyZWN0b3J5KCkKK3sKKyAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CisgICAgaWYgKCFhcHBOYW1lKQorICAgICAgICBh
cHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CisKKyAg
ICBOU1N0cmluZyAqc3RvcmFnZVBhdGggPSBbW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvV2ViS2l0Il0gc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmFwcE5hbWVdOworICAgIHJldHVybiBzdG9yYWdlUGF0aC5zdHJpbmdCeVN0
YW5kYXJkaXppbmdQYXRoLnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGg7Cit9CisKK3N0
YXRpYyBOU1N0cmluZyAqc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpCiB7Ci0g
ICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSku
Y3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gW3NlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNT
dG9yYWdlRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUmVjZW50
U2VhcmNoZXMucGxpc3QiXTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykKK3N0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpyZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlc1BsaXN0KCkKIHsKLSAgICBpZiAoIW5hbWUpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KKyAgICByZXR1cm4gW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZGaWxlOnNlYXJjaEZpZWxkUmVjZW50U2VhcmNo
ZXNQbGlzdFBhdGgoKV07Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
SXRlbT4mIHNlYXJjaEl0ZW1zKQoreworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAotICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gaXRlbXM7
CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoZXNQbGlzdCA9IHJlYWRTZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKTsKKyAgICBpZiAoc2VhcmNoSXRlbXMuaXNFbXB0
eSgpKSB7CisgICAgICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0W2l0ZW1zS2V5XSByZW1vdmVPYmpl
Y3RGb3JLZXk6bmFtZV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
ZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpIHsKKyAgICAgICAgICAgIE5TVGltZUludGVydmFsIHRp
bWVJbnRlcnZhbCA9IGR1cmF0aW9uX2Nhc3Q8ZHVyYXRpb248ZG91YmxlPj4oc2VhcmNoSXRlbS50
aW1lLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKKyAgICAgICAgICAgIE5TRGljdGlvbmFy
eSAqcmVjZW50U2VhcmNoID0gQHsKKyAgICAgICAgICAgICAgICBzZWFyY2hTdHJpbmdLZXk6IHNl
YXJjaEl0ZW0uc2VhcmNoU3RyaW5nLAorICAgICAgICAgICAgICAgIGRhdGVLZXk6IFtOU0RhdGUg
ZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6dGltZUludGVydmFsXQorICAgICAgICAgICAg
fTsKIAotICAgIGlmICghc2VhcmNoSXRlbXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0ZW1zID0g
YWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzZWFyY2hJdGVtcy5zaXplKCksICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6cmVjZW50
U2VhcmNoXTsKKyAgICAgICAgfQogCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRl
bSA6IHNlYXJjaEl0ZW1zKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdl
dCgpLCBzZWFyY2hJdGVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICBpZiAocmVj
ZW50U2VhcmNoZXNQbGlzdCkKKyAgICAgICAgICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0W2l0ZW1z
S2V5XSBzZXRPYmplY3Q6QHsgc2VhcmNoZXNLZXk6IGl0ZW1zLmdldCgpIH0gZm9yS2V5Om5hbWVd
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZWNlbnRTZWFyY2hlc1BsaXN0ID0gW0B7IGl0
ZW1zS2V5OiBAeyBuYW1lOiBAeyBzZWFyY2hlc0tleTogaXRlbXMuZ2V0KCkgfSB9IH0gbXV0YWJs
ZUNvcHldOwogICAgIH0KIAotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtl
eShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0
aW9uKTsKLSAgICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoa0NGUHJlZmVyZW5jZXNDdXJy
ZW50QXBwbGljYXRpb24pOworICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0IHdyaXRlVG9GaWxlOnNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5OllFU107CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1l
LCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNl
YXJjaEl0ZW0+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAoIW5hbWUpIHsKLSAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KKyAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhdXRvIGl0ZW1zID0gYWRvcHRD
RihkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShh
dXRvc2F2ZUtleShuYW1lKS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24p
KSk7Ci0gICAgaWYgKCFpdGVtcykKKyAgICBzZWFyY2hJdGVtcy5jbGVhcigpOworICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKnJlY2VudFNlYXJjaGVzUGxpc3QgPSByZWFkU2VhcmNoRmllbGRSZWNl
bnRTZWFyY2hlc1BsaXN0KCk7CisgICAgaWYgKCFyZWNlbnRTZWFyY2hlc1BsaXN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3Vu
dChpdGVtcy5nZXQoKSk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9
IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVt
cy5nZXQoKSwgaSkpKQotICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOworICAg
IE5TQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW1tbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RG
b3JLZXk6aXRlbXNLZXldIG9iamVjdEZvcktleTpuYW1lXSBvYmplY3RGb3JLZXk6c2VhcmNoZXNL
ZXldOworICAgIGZvciAoaWQgaXRlbSBpbiByZWNlbnRTZWFyY2hlcykgeworICAgICAgICBpZiAo
W2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0gJiYgKChOU0RpY3Rpb25h
cnkqKWl0ZW0pLmNvdW50ID09IDIpIHsKKyAgICAgICAgICAgIHN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBzZWFyY2hJdGVtVGltZSA9IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9j
YXN0PHN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZHluYW1pY19vYmpj
X2Nhc3Q8TlNEYXRlPihpdGVtW2RhdGVLZXldKS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7Cisg
ICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoV2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbSgo
U3RyaW5nKWl0ZW1bc2VhcmNoU3RyaW5nS2V5XSwgc2VhcmNoSXRlbVRpbWUpKTsKKyAgICAgICAg
fQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDc1M2M4MDEuLmQwNmQxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBl
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CkBAIC0xMjc2LDggKzEyNzcsOCBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICAvLyBTZWFyY2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7
Ci0gICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmlu
Zz4mKTsKKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbT4mKTsKKyAgICB2b2lkIGxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoSXRlbT4m
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFNwZWVjaC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRlZDZhMTAu
LjdiNzk2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzc5LDggKzM3OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAjZW5kaWYKIAogICAgICMgU2VhcmNoIHBvcHVwIG1lbnVzCi0gICAgU2F2ZVJlY2VudFNl
YXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8U3RyaW5nPiBzZWFyY2hJdGVtcykKLSAgICBMb2Fk
UmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiByZXN1bHQpCisg
ICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50
U2VhcmNoSXRlbT4gc2VhcmNoSXRlbXMpCisgICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBu
YW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaEl0ZW0+IHJlc3VsdCkKIAogICAg
IFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUs
IFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApp
bmRleCA2OTBhZjNlLi44YjZjOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC03MywxMiArNzMsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoVmVjdG9yPFdURjo6U3RyaW5nPiYg
Lypjb21tYW5kc0wKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaEl0ZW0+JikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaEl0
ZW0+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDRiOWJlNzMuLjY5NGE2NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmluZEFjY2Vzc2liaWxp
dHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogICAgIG1fYWNjZXNzaWJpbGl0eVBsdWdJRCA9
IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNl
bnRTZWFyY2hJdGVtPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5n
PiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYs
IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcAppbmRleCAxYjA2NzA1Li5iNzYw
ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFBv
cHVwTWVudSogV2ViU2VhcmNoUG9wdXBNZW51Ojpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3Bv
cHVwLmdldCgpOwogfQogCi12b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKQordm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2hJdGVtPiYgc2Vh
cmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBA
IC01OSw3ICs1OSw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpLCBwYWdlLT5w
YWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0SXRlbXMp
Cit2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaEl0ZW0+JiByZXN1bHRJdGVtcykKIHsK
ICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBv
cHVwTWVudS5oCmluZGV4IDhmMTAxMWQuLmJhN2EwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1l
bnUuaApAQCAtMzEsOCArMzEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTZWFyY2hQ
b3B1cE1lbnU+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYgc2VhcmNoSXRlbXMpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2hJdGVtPiYgc2Vh
cmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0tIAoyLjMuOCAoQXBwbGUgR2l0LTU4KQoK
</data>
<flag name="review"
          id="287421"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262734</attachid>
            <date>2015-10-08 17:58:27 -0700</date>
            <delta_ts>2015-10-08 21:55:53 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>115122</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBjMzdlMTM3YTgwYjA3ZmEyODZhYjM0YzBhNDlkNWY3MjA4MzI4YWNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUaHUs
IDE3IFNlcCAyMDE1IDEwOjQ0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGFs
c28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgotLS0K
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ2
ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
ICB8IDIxMCArKysrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TZWFyY2hQb3B1cE1lbnUuaCAgICAgICAgICB8ICAxMCArLQogLi4uL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAgfCAgMzYgKysrKwogLi4uL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gfCAxMjggKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgfCAg
MTQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCAg
IHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
ICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmggICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDE2ICsrCiAuLi4vaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51SU9TLmggfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICsrKwogLi4uL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmggfCAgIDYgKy0KIC4uLi9tYWMvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tICAgICAgIHwgIDMyICstLS0KIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ2ICsrKysrCiBTb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSAgICAgICAgICB8ICAgMSArCiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCAgICB8ICAxNyAr
KwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oICAgICAgfCAg
IDYgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAg
fCAgNDEgKy0tLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAg
ICAgICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAgICB8ICAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwICAgICAgICAgIHwgICA0ICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCB8ICAgNCArLQogMjcgZmlsZXMgY2hhbmdlZCwgNDkz
IGluc2VydGlvbnMoKyksIDIwMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51
Q29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q4OGNkYi4uZWY3M2VjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlz
dG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRl
ciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9y
PFN0cmluZz4gd2l0aCBWZWN0b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2VhcmNoIGlz
IGEgc3RydWN0CisgICAgICAgIHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwg
Zm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUKKyAg
ICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIFNlYXJjaFBvcHVwTWVudUNvY29hLmggYW5kIFNlYXJjaFBvcHVwTWVu
dUNvY29hLm1tCisgICAgICAgIGFuZCBzb3J0IHRoZSBwcm9qZWN0IGZpbGUuCisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVNlYXJjaFBv
cHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVu
dUNvY29hLmg6IEFkZGVkIGNsYXNzIG1ldGhvZHMgZm9yIFNlYWNoUG9wdXBNZW51TWFjIGluIFdl
YktpdAorICAgICAgICBhbmQgV2ViUGFnZVByb3h5Q29jb2EgaW4gV2ViS2l0MiB0byBjYWxsLgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNTdG9yYWdlRGlyZWN0
b3J5KTogUmVjZW50IHNlYXJjaGVzIHdpdGggdGhlIG5ldyBzdHJ1Y3R1cmUKKyAgICAgICAgYXJl
IHN0b3JlZCBpbiBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaEZpZWxk
UmVjZW50U2VhcmNoZXNQbGlzdFBhdGgpOiBHZXQgdGhlIHBhdGggZm9yIHRoZSBwbGlzdCBvZiB0
aGUgcmVjZW50CisgICAgICAgIHNlYXJjaGVzIGVudHJpZXMuCisgICAgICAgIChXZWJDb3JlOjpS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT5yZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
c1BsaXN0KTogUmV0dXJuIHRoZQorICAgICAgICByZWNlbnQgc2VhcmNoZXMgcGxpc3QgYXMgTlNN
dXRhYmxlRGljdGlvbmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21OU0RhdGV0b1N5c3RlbUNs
b2NrVGltZSk6IENvbnZlcnQgZnJvbSBOU0RhdGUgdG8gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
LgorICAgICAgICAoV2ViQ29yZTo6ZnJvbVN5c3RlbUNsb2NrVGltZXRvTlNEYXRlKTogQ29udmVy
dCBmcm9tIHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0byBOU0RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYTo6c2F2ZVJlY2VudFNlYXJjaGVzKTogQWRkIGEgZGlj
dGlvbmFyeSB3aGVyZSBpdCBoYXMgdHdvIHBhaXJzCisgICAgICAgIHRoYXQgdGhlIGZpcnN0IG9u
ZSBpcyB0aGUgc2VhcmNoIHN0cmluZyBhbmQgdGhlIHNlY29uZCBvbmUgaXMgdGhlIHRpbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYTo6bG9hZFJlY2VudFNlYXJjaGVz
KTogV2UgZXhwZWN0IHRoZSByZWNlbnQgc2VhcmNoIGl0ZW0gaW4gdGhlCisgICAgICAgIHBsaXN0
IHRvIGJlIGEgdHdvLXBhaXIgZGljdGlvbmFyeSwgYW5kIGNvbnZlcnQgdGhlIGRpY3Rpb25hcnkg
dG8gdGhlIHN0cnVjdCBSZWNlbnRTZWFyY2guCisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46
OnNhdmVSZWNlbnRTZWFyY2hlcyk6IE9ubHkgc2F2ZSB0aGUgUmVjZW50U2VhcmNoJ3Mgc2VhcmNo
CisgICAgICAgIHN0cmluZyBvbiBXaW5kb3dzIHBsYXRmb3JtLCB3aGljaCBpcyB3aGF0IHdlIHVz
ZWQgdG8gZG8uCisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNl
bnRTZWFyY2hlcyk6IFNpbmNlIHdlIG5lZWQgdG8gY29uc3RydWN0IGEKKyAgICAgICAgUmVjZW50
U2VhcmNoLCB3ZSBnZXQgdGhlIHN0cmluZyBmcm9tIHRoZSBhcHAncyBwcmVmZXJlbmNlcywgYW5k
IHNldCB0aGUgdGltZSB0byBiZQorICAgICAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50OjptaW4oKS4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDogTm93IHRo
YXQgbV9yZWNlbnRTZWFyY2hlcyBhcmUgVmVjdG9yPFJlY2VudFNlYXJjaD4sCisgICAgICAgIHdl
IGNhbm5vdCB1c2UgLXJlbW92ZUFsbCB3aXRoIGEgc2VhcmNoIHN0cmluZy4gVXNlIC1yZW1vdmVB
bGxNYXRjaGluZyBpbnN0ZWFkIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgaXRlbSB0aGF0IGhhcyBp
dHMgbWVtYmVyIHNlYXJjaCBzdHJpbmcgZXF1YWwgdG8gdGhlIHNlYXJjaCBzdHJpbmcgdXNlciBp
bnB1dHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVz
dWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjppdGVtVGV4dCk6CisK
IDIwMTUtMTAtMDUgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbmluZyB1cCBhZnRlciByZXZpc2lvbiAxOTAzMzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZjJlNDg4Li5jNGY1OWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NjUsNiArNDY1LDggQEAKIAkJMEMzRjFGNUIxMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQzNGMUY1ODEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCAqLzsgfTsKIAkJMEM0NTM0MjcxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3Bw
ICovOyB9OwogCQkwQzQ1MzQyODEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM0
NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLzsgfTsK
KwkJMEU3MDU4RUUxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU3MDU4RUQxQkM1
QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovOyB9OworCQkwRTcwNThG
NDFCQzVDRURBMDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFNzA1OEYzMUJDNUNDRDcwMDQ1QTUw
NyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMDNDMDc0MTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1N
ZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MDNDMDczMTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjAzQzA3NTE4ODQ4MDU1MDBBNUY4
Q0EgLyogSW5zcGVjdG9yT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJs
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjA5MDg3RjE0NDRGREIyMDAwMjg5MTcgLyogU2Nyb2xsYmFyVGhlbWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNzE0MTUxNDIxODlGQzAwREIz
M0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLzsgfTsKQEAgLTYzNSwxMCArNjM3LDEwIEBACiAJ
CTE0RDgyNDA4MEFGOTNBRUIwMDA0RjA1NyAvKiBDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDgyNDA2MEFGOTNBRUIwMDA0RjA1
NyAvKiBDaHJvbWVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNERDMEQzNzA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REMwRDM1MDlGRUQw
NzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICovOyB9OwogCQkxNERDMEQzODA5RkVEMDczMDA3QjAy
MzUgLyogSlNOb2RlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNERDMEQzNjA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKLQkJMTREQ0YzQjIxQjZCRTIw
ODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERDRjNCMDFCNkJFMjA4MDA2MkQ0
QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmNwcCAqLzsgfTsKLQkJMTREQ0YzQjMx
QjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREQ0YzQjExQjZCRTIwODAw
NjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oICovOyB9OwogCQkxNERDRjNC
MjFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERDRjNCMDFCNkJFMjA4MDA2
MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAgKi87IH07CisJCTE0RENGM0IyMUI2
QkUyMDgwMDYyRDRDMyAvKiBKU0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREQ0YzQjAxQjZCRTIwODAw
NjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5jcHAgKi87IH07CiAJCTE0RENG
M0IzMUI2QkUyMDgwMDYyRDRDMiAvKiBKU0NvdW50UXVldWluZ1N0cmF0ZWd5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERDRjNCMTFCNkJFMjA4MDA2
MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5oICovOyB9OworCQkxNERDRjNCMzFCNkJF
MjA4MDA2MkQ0QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERDRjNCMTFCNkJFMjA4MDA2MkQ0
QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmggKi87IH07CiAJCTE0RTgzNzg0MDlG
ODVEMUMwMEI4NUFFNCAvKiBKU0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTgzNzgzMDlGODVEMUMwMEI4NUFFNCAvKiBKU0V2ZW50LmNw
cCAqLzsgfTsKIAkJMTRFODM3OEUwOUY4NUQ0RjAwQjg1QUU0IC8qIEpTRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTgzNzhEMDlGODVENEYw
MEI4NUFFNCAvKiBKU0V2ZW50LmggKi87IH07CiAJCTE0RkZFMzFEMEFFMTk2MzMwMDEzNkJGNSAv
KiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1l
bnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTYzNjUsOCArNjM2Nyw4IEBACiAJCUUxRkY4RjY4MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1N1
YnRsZUNyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUZGOEY2NjE4MDc0NjA4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlwdG9DdXN0
b20uY3BwICovOyB9OwogCQlFMUZGOEY2QzE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmNwcCAqLzsgfTsKIAkJRTFGRjhGNkQxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAq
LzsgfTsKLQkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJB
RDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKLQkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyog
SlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCAq
LzsgfTsKKwkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLzsgfTsKIAkJRTQwMUMyNzUxN0NFNTNF
QzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAv
KiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyNEEzOUUxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2Fj
eVRpbGVHcmlkVGlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQyNEEzOUQxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5oICov
OyB9OwogCQlFNDI0QTNBMDEzMzBERjFFMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNEEzOUYx
MzMwREYxRTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5tbSAqLzsgfTsKQEAgLTc2ODAs
NiArNzY4Miw4IEBACiAJCTBDM0YxRjU5MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1M
b2NhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xVbmlmb3JtTG9jYXRpb24u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzQ1MzQyNTEwQ0RCQkZBMDA4Njkx
NTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFVuaWZv
cm1Mb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRTcwNThFRDFCQzVC
QzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBv
cHVwTWVudUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDNDMDczMTg4NDY5NUUwMEE1RjhDQSAvKiBT
eXN0ZW1NZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtTWVt
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDk5RDA2MTdCOTY4QTEwMEZG
ODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc4NDAsOCArNzg0NCw4IEBACiAJCTE0ODEzQkYzMDlFREY4OEUwMEY3NTdFMSAv
KiBJRExQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gSURMUGFy
c2VyLnBtOyBwYXRoID0gc2NyaXB0cy9JRExQYXJzZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0OEFGREEzMEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRpb25IYW5kbGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uSGFuZGxlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4QUZEQTQwQUY1ODM2MDAwOENDNzAwIC8q
IEV4Y2VwdGlvbkhhbmRsZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEV4Y2VwdGlvbkhhbmRsZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxNDhCNEZGRjFCNjkwNEM1MDBDOTU0RTUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OEI0RkZGMUI2OTA0QzUwMEM5NTRFNCAv
KiBDb3VudFF1ZXVpbmdTdHJhdGVneS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ291bnRR
dWV1aW5nU3RyYXRlZ3kuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDhCNEZG
RjFCNjkwNEM1MDBDOTU0RTUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OTQ3RkZCMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVu
dE9yZGVyZWRNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9j
dW1lbnRPcmRlcmVkTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5NDdG
RkMxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE9yZGVyZWRNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NjQsMTAgKzc4NjgsMTAg
QEAKIAkJMTREQzBEMEIwOUZFQ0ZBNDAwN0IwMjM1IC8qIE5vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERDMEQz
NTA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NERDMEQzNjA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU05vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTRE
Q0YzQjAxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0J5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNERDRjNCMTFCNkJF
MjA4MDA2MkQ0QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERDRjNCMDFCNkJFMjA4MDA2MkQ0QzIgLyogSlND
b3VudFF1ZXVpbmdTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NvdW50UXVldWluZ1N0cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTREQ0YzQjAxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0J5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERD
RjNCMTFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvdW50UXVldWluZ1N0cmF0ZWd5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RENGM0IxMUI2QkUyMDgwMDYyRDRDMyAvKiBKU0J5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0RTgzNkQyMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEU4
Mzc4MzA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0RTgzNzhEMDlGODVENEYwMEI4NUFFNCAvKiBKU0V2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzAxNywxMSArMTcwMjEsMTEgQEAKIAkJCQlDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAg
LyogTlNVUkxEb3dubG9hZFNQSS5oICovLAogCQkJCTY1M0VGODM4MTlBMDQzQUUwMDUyMjAyQyAv
KiBOU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaCAqLywKIAkJCQkzMUIzMTNEQzFCNjk4N0RCMDBG
MkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggKi8sCisJCQkJQ0VFMjdBQ0ExQkJCNTNBMjAwNzI0
MDBBIC8qIHB0aHJlYWRTUEkuaCAqLywKIAkJCQlDRTEyNTIzQzFBMTY3NkNEMDA4NjQ0ODAgLyog
UXVhcnR6Q29yZVNQSS5oICovLAogCQkJCTM3MTc4MzM5MUFBQ0RDRjcwMDA5MTBFMyAvKiBTZWN1
cml0eVNQSS5oICovLAogCQkJCUNFQzMzN0FDMUE0NjA3MUYwMDlCODUyMyAvKiBTZXJ2ZXJzU1BJ
LmggKi8sCiAJCQkJQTE5RDkzNDUxQTlGRUM3MjAwQjQ2QzI0IC8qIFdlYkZpbHRlckV2YWx1YXRv
clNQSS5oICovLAotCQkJCUNFRTI3QUNBMUJCQjUzQTIwMDcyNDAwQSAvKiBwdGhyZWFkU1BJLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTE3MDgyLDggKzE3MDg2LDggQEAKIAkJCQk3MUUyMTgzODE3MzU5RkI4MDA2RTZFNEQgLyog
UGx1Z0luc1Jlc291cmNlcy5oICovLAogCQkJCTcxRTIxODM5MTczNTlGQjgwMDZFNkU0RCAvKiBQ
bHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4
IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLywKLQkJCQk5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovLAogCQkJCTlCMDNE
ODA3MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oICov
LAorCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmggKi8sCiAJCQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi8sCiAJCQkJNDNCODVFRDIxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgKi8sCiAJCQkJNDNCODVFRDMxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRv
Q2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5ncGVyZiAqLywKQEAgLTE5Mzk3LDYgKzE5
NDAxLDggQEAKIAkJCQkxQUE4NEYwMjE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxl
ci5tbSAqLywKIAkJCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUuaCAqLywKIAkJCQlGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGUubW0gKi8sCisJCQkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNl
YXJjaFBvcHVwTWVudUNvY29hLmggKi8sCisJCQkJMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8q
IFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovLAogCQkJCTVENTk3NUIxMTk2MzVGMTEwMEQwMDg3
OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi8sCiAJCQkJNUQ1OTc1QjIxOTYzNUYxMTAwRDAwODc4IC8q
IFN5c3RlbVZlcnNpb24ubW0gKi8sCiAJCQkJN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUyIC8qIFRl
bGVwaG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwICovLApAQCAtMjE2NDksNiArMjE2NTUsOCBA
QAogCQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUu
Y3BwICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCAqLywKIAkJCQlCNTY1NzZFNDE3REE1OTlGMDBBNTZCREMgLyogSlNNYWluVGhyZWFk
RXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmggKi8sCisJCQkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYy
RUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCAqLywKKwkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJF
RTMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLywKIAkJCQlDNkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIg
LyogSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCAqLywKIAkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5
RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJODNGMTIwNkExQjhDMTAzNjAwRDc1
RjYzIC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi8sCkBAIC0yMTY1OSw4ICsyMTY2Nyw2IEBA
CiAJCQkJNDExODlFRjgxQUQ4MjMzQzAwQjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAv
KiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oICovLAotCQkJCUUzODgzODk0MUJBRDE0NUYwMEQ2
MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi8sCi0JCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8sCiAJCQkJNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1
IC8qIFJlYWRhYmxlSlNTdHJlYW0uY3BwICovLAogCQkJCTQxOThCREVGMUE4MTEyMzYwMEIyMkZC
NSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2
IC8qIFNjaGVkdWxlZEFjdGlvbi5jcHAgKi8sCkBAIC0yNDI3MSwxMyArMjQyNzcsMTEgQEAKIAkJ
CQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOEY2QkMxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkFBQzU5MERDMkEzQjEwMEEyMEQ5
QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTEwQTU4
RkMxQkFDQzdGMjAwQzE5MjgyIC8qIElEQlJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5QjQxNzA2NDEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREOTA5OUU2NDkyMDA1NkU1ODEgLyogQXBw
bHlTdHlsZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY2MEQ5MUU2QUYwMDBG
ODlFRSAvKiBBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGRDBEOTFFNkFGMDAw
Rjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZDMEQ5
MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMkREOEY4MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUIzNzYwRDE1QzZDNjg0MDA1OTEzMUQgLyog
QXJyYXlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5QzY4
IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MzE2LDcgKzI0MzIw
LDYgQEAKIAkJCQlGRDM1OTE5MDEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5l
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAyMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Q
cm9jZXNzaW5nRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg0MTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb1Byb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODcxQkI0
QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwODYxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvUmVzYW1wbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjA4ODEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9SZXNhbXBsZXJLZXJu
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEOEM0NkVDMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQzNTksNyArMjQzNjIs
NiBAQAogCQkJCUJDQThDQTYwMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQTEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUJ1dHRv
bklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOTExQkI0QzRFODAwMTI4OThG
IC8qIElEQkluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQzEyNkNBNUM0MDBCNjNF
OEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVFMEM2
NUMxNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNs
aWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ0NzcsNyArMjQ0
NzksNiBAQAogCQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgwMzcxNjIxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBS
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxMzE0RkEwOUQ1MDA3NDU3QUUgLyogQ2xv
c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFENzIzNkQxQkI2MTc0OTAwNDc4Q0EzIC8q
IElEQlJlc3VsdERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENCMTExOEM4RTQwMENF
MjYzNiAvKiBDb2RlR2VuZXJhdG9yLnBtIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REYwRTgx
QjlBQjAwQjI1OTY1IC8qIENvbGxhcHNlZEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDI1QTQ5QTE4MjkyQjg0MDAyMENGQ0YgLyogQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ1MDQsNyArMjQ1MDUsNiBAQAogCQkJCTc5RjJGNUEyMTA5MTkzOUEw
MDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4
RjEyQjAyNkY3MDBDMUEzNTkgLyogQ29uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDOTdBRjMw
OEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQkIx
QkI0Q0JGODAwMTI4OThGIC8qIElEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcy
MUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI5ODEwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRh
LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTE4LDcgKzI0NTE4LDYgQEAKIAkJCQkyNkYwQzhBMDFB
MkVDM0JFMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNjIzOTEzNjFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4dGVuc2lvbnNEZWJ1
Z2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkI2N0RDMUFFNkI4MkYwMEQwNkM1QSAvKiBD
b250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDNzUx
QkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNDA5MEZEMUFBNTFFNDgwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QzQ3MURDMTJGOTI1QkQwMDg2
MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1NTYs
NiArMjQ1NTUsNyBAQAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNURBMEY2NTVENkYwMDky
RDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRTQzNDY1OTBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxRTZGQTdDMUJCQjRGQzMwMDg3MDBEOSAvKiBDcm9zc1RocmVhZFRh
c2suaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNjk4MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVu
dGltZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1Q0EyOEIxMzAzNjVGODAwRTk5QUQ5
IC8qIENyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNkUxODBGMjRDNjAwRkJBREI5
IC8qIENyeXB0b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDYwNyw2ICsyNDYwNyw3
IEBACiAJCQkJOURBQzdDNTUxQUYyQ0FBMjAwNDM3QzQ0IC8qIENTU0NvbnRlbnREaXN0cmlidXRp
b25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4RkVCREQxNDNFM0VGNzAwNzI1MDJCIC8q
IENTU0Nyb3NzZmFkZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTIxRUNDRDBBQkYwRkM2
MDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3
NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBOUNDODE4MTZCQjlBQzYwMEVDNjQ1QSAvKiBDU1NEZWZhdWx0U3R5bGVT
aGVldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCQjBDNUI4MTdCQkQ2MjkwMDNEMzY3NyAvKiBD
U1NGaWx0ZXJJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjRENjBDQjQyOThB
MDA1RjJCNjIgLyogQ1NTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ2NzEsNyArMjQ2
NzIsNiBAQAogCQkJCUU0OUJEOUZBMTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRh
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNCNDFCQjRDNEU4MDAxMjg5OEYgLyogV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3MkFE
MEU4MkU4RjMwMEU3Rjk3NSAvKiBDdXJzb3JMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkNE
MzI1QTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4Q0I0MTNFMEU4NjMzRkQwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQ2OTgsMTAgKzI0Njk4LDEwIEBACiAJCQkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8q
IERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVG
QzcwMEY5OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCOEFGNEFB
MEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNm
ZXJJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAwOUE3RTAgLyog
RGF0YVRyYW5zZmVySXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgzMUI4MjBF
QzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRBMDA3
ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY1NUIzREI2MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NTNFQjYzNzE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3Jt
YXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MTUsNyArMjQ3MTUsNiBAQAogCQkJCTQxQTNENThG
MTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMDZERkE2MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDJDMTJCMDI2NzYwMEMxQTM1OSAvKiBE
ZWxheURTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODUxQkI0QzRFODAwMTI4
OThGIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAy
RTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjAzMTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RERGMDk5RTY0OTIwMDU2RTU4MSAvKiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzMyLDcgKzI0NzMxLDYgQEAKIAkJCQk1OUE4RjFEODEx
QTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxNDAzNzlEMTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEQx
QkI0QzRFODAwMTI4OThGIC8qIElEQkZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QThG
MUQ2MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRh
dGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QTg1RUE0MTE5RDY4RUMwMERFRjFFRiAv
KiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzU2LDcgKzI0
NzU0LDYgQEAKIAkJCQk3RURBQUZDOTE5QTJDQ0RDMDAzNERGRDEgLyogRGlza0NhY2hlTW9uaXRv
ckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyog
RGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNDNjE5MkVD
QzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkM5OTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOUVDQzgx
OTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQ3ODksNyArMjQ3ODYsNiBAQAogCQkJCTFBOEY2QkMzMERCNTVDREMwMDFE
Qjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUQzODlC
MjBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzEx
OEQwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUF0dHJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTE4NUZDQTcxQkI0QzRFODAwMTI4OThGIC8qIElEQlJlY29yZElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc2RkI5RkVCMTlBNzI4NEIwMDQyMDU2MiAvKiBET01BdXRvY29tcGxl
dGVFcnJvckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZCOUZFRDE5QTcyODRCMDA0MjA1
NjIgLyogRE9NQXV0b2NvbXBsZXRlRXJyb3JFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzk0NkVFRjEwN0ZEQkFDMDA4NTcxOTMgLyogRE9NQmVmb3JlTG9hZEV2ZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI0ODEwLDcgKzI0ODA2LDYgQEAKIAkJCQk4NTAzMkRENzBBQThDOUJF
MDA3RDNCN0QgLyogRE9NQ1NTQ2hhcnNldFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5
Q0RDMEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NDaGFyc2V0UnVsZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMkREOTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTRm9udEZhY2VS
dWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURC
RXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0REMEFDQzdBN0UwMERGMDFGMSAvKiBE
T01DU1NGb250RmFjZVJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzJEREIw
QUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1OTA5Q0RFMEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NJbXBvcnRSdWxlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLApAQCAtMjUwMDUsNyArMjUwMDAsNiBAQAogCQkJCTg1RTcxMUNEMEFDNUQ1
MzUwMDUzMjcwRiAvKiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUYzMkFGMjBBQTYzQjg3MDBGRjMxODQgLyogRE9NSFRNTFRleHRBcmVh
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQ0UwQUM1RDUzNTAwNTMyNzBGIC8q
IERPTUhUTUxUZXh0QXJlYUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4
NUZDQTQxQkI0QzRFODAwMTI4OThGIC8qIElEQk9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExQzc5NzFEMTg4M0U1MUYwMDBGNUUxRiAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5OTJFQzAwQUE1MDY5NTAwQUMwNzg1IC8q
IERPTUhUTUxUaXRsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUNGMEFDNUQ1
MzUwMDUzMjcwRiAvKiBET01IVE1MVGl0bGVFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LApAQCAtMjUwMzEsNyArMjUwMjUsNiBAQAogCQkJCTg1MThERDc4MEE5Q0YzMUIwMDkxQjdBNiAv
KiBET01OYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUQyMEFDNUQ1MzUw
MDUzMjcwRiAvKiBET01OYW1lZE5vZGVNYXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODUzQkY0REIwQUJCNkI1NTAwODY0N0JCIC8qIERPTU5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQzkzMUJCNEM0RTgwMDEyODk4RiAvKiBJREJJbmRleE1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTQwNzUyNjBBRDZDNjY3MDA2MjBDNTcgLyogRE9NTm9kZUZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODVCNDk4RkIwQURCMzQwMjAwOTI1Q0JCIC8qIERPTU5vZGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDMzcwQUIwQTE3RTAwMDMwMkVBIC8qIERP
TU5vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTA1OCw4ICsyNTA1MSw4IEBACiAJ
CQkJODUzOEYwNUQwQUQ3MjJGMTAwNkE4MUQxIC8qIERPTVJhbmdlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MzhGMDg1MEFENzJDQjYwMDZBODFEMSAvKiBET01SYW5nZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1OEMzOEE3MEFBOEYyMDQwMEIxODdBNCAvKiBET01SZWN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkM4RjFCQjRDNEU4MDAxMjg5OEYgLyogSURCR2V0UmVzdWx0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFENjBBQzVENTM1MDA1MzI3MEYgLyogRE9NUmVj
dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNCNzFCQjRDNzY3MDAxMjg5OEYg
LyogRE9NUmVxdWVzdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTVEMzU4QTBBRDcwNzMx
MDAxOUFBQzcgLyogRE9NUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDBGQzRGMERC
RDcyMEIwMEIyRjYzMCAvKiBET01SR0JDb2xvckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDlBMjQ2RTE1QjlCRDAwMDBEMzQ1MjcgLyogRE9NU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjUwODMsNyArMjUwNzYsNiBAQAogCQkJCTBGNTREQ0Q1MTg4MEY4NjcwMDNF
RURCQiAvKiBET01Ub3VjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRDcxODgwRjg2NzAw
M0VFREJCIC8qIERPTVRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0Q5MTg4
MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaEV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxODVGQzlCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY1NERDREExODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNTREQ0RCMTg4MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaExp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNDUzNDk3MTZBOUJCNkEwMDBGNkZEMiAvKiBET01U
cmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjUwOTEsNyArMjUwODMsNiBAQAog
CQkJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMg
LyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVDN0Y0OTEw
QUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTg5
REQwMEFDQzhCQkQwMEEwQkM1MSAvKiBET01VSUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFRDEzRDJBMENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMuaCBp
biBIZWFkZXJzICovLApAQCAtMjUxMjEsNiArMjUxMTIsNyBAQAogCQkJCTE0MDNCOTk3MDlFQjEz
QUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUZDOUEwRjc1MTY0
MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkEy
RDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QjM4RTI3MTUxQzQyNzEwMDQ2MjJFOSAvKiBET01X
aW5kb3dOb3RpZmljYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0QyQUQwNDE0QjgyM0E2
MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5RjYw
QjExMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNTI0OSw3ICsyNTI0MSw2IEBACiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZp
eGVkVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBG
NTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlBNTI4RTg0MTdE
N0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUJD
Nzc5RTE3MUJCMjI3Q0EwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU2OTk4NzIxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NjkwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTI3Q0EwMEIwRjJCMDkwMEYx
N0M3QiAvKiBGbG9hdFBvaW50M0QuaCBpbiBIZWFkZXJzICovLApAQCAtMjUyNzIsNyArMjUyNjMs
NiBAQAogCQkJCUIyQUZGQzdFMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dERlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3
RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRTgx
QkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQwOUVCREI2MTZCN0VFQTMwMENCQTNGQyAvKiBGb250TG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODQ1NjgwODEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MzIwRDZCMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250
UGxhdGZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MzMxLDcgKzI1MzIxLDYgQEAKIAkJ
CQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTE4NUZDODMxQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlw
aFBhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8q
IEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM3OSw3ICsyNTM2OCw2
IEBACiAJCQkJQThFQTdEMkUwQTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxBcmVhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0M1RjI4RkMxQTgyN0Q4NDAwQzBGMzFGIC8qIEhUTUxBdHRhY2ht
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQTIwQ0Q2MzMxMDAwRkFEQTc1
IC8qIEhUTUxBdWRpb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzk3MUJCNEM0
RTgwMDEyODk4RiAvKiBJREJLZXlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMxRjBB
MTUyMDU3MDBCMTJBNjggLyogSFRNTEJhc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OERGM0ZEMjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEJhc2VGb250RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1NTA2LDI1ICsyNTQ5NCw2MiBAQAogCQkJCTUxM0YxNDU0MEFC
NjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUxRUND
MTBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDVC
QUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODVGQzc4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJBbnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
QkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1ODVBNjYzMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE2ODFCQTczQjVCMDAyRTA1M0IgLyogSURCQ2FsbGJh
Y2tzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNCOTFCQjRDQkY4MDAxMjg5OEYgLyogSURC
Q29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTZEN0Q3MjFCQjVGMEJE
MDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxODVGQzVCMUJCNEJFNEMwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxNkQ3RDcwMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDN0IxQkI0
QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNkEx
QkE3M0I1QjAwMkUwNTNCIC8qIElEQkN1cnNvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxRjQxQTZDMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDN0UxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNv
cldpdGhWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDODExQkI0QzRFODAwMTI4OThG
IC8qIElEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE2RTFCQTczQjVCMDAy
RTA1M0IgLyogSURCRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE2
RjFCQTczQjVCMDAyRTA1M0IgLyogSURCRGF0YWJhc2VDYWxsYmFja3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxRjQxQTcxMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzgzMUJCNEM0RTgwMDEyODk4RiAvKiBJREJE
YXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4NTFCQjRDNEU4MDAxMjg5
OEYgLyogSURCRGF0YWJhc2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzg3
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODVGQzg5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyog
SURCRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzhCMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzhEMUJCNEM0
RTgwMDEyODk4RiAvKiBJREJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE3MjFC
QTczQjVCMDAyRTA1M0IgLyogSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDMxMDUwMUJBOENDMDMwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOEYxQkI0QzRFODAwMTI4OThGIC8qIElEQkdldFJlc3Vs
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTExQkI0QzRFODAwMTI4OThGIC8qIElEQklu
ZGV4LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5MzFCQjRDNEU4MDAxMjg5OEYgLyogSURC
SW5kZXhNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTUxQkI0QzRFODAwMTI4
OThGIC8qIElEQktleS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTcxQkI0QzRFODAwMTI4
OThGIC8qIElEQktleURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzk5MUJCNEM0RTgw
MDEyODk4RiAvKiBJREJLZXlQYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5QjFCQjRD
NEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzlF
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxODVGQ0EwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTE4NUZDQTIxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0E0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJP
cGVuREJSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMTA1QjFCQThEQjU2MDAzMzI5
QzAgLyogSURCT3BlbkRCUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0E2
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
RjQxQTc5MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJQZW5kaW5nRGVsZXRlQ2FsbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTFGNDFBN0ExQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdPcGVuQ2Fs
bC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2RDdENzIxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE3QzFC
QTczQjVCMDAyRTA1M0IgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE4NUZDQTcxQkI0QzRFODAwMTI4OThGIC8qIElEQlJlY29yZElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0E5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyog
SURCUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEE1OEZDMUJBQ0M3RjIwMEMx
OTI4MiAvKiBJREJSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzEw
NUQxQkE4REI1NjAwMzMyOUMwIC8qIElEQlJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUQ3MjM2RDFCQjYxNzQ5MDA0NzhDQTMgLyogSURCUmVzdWx0RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTE4NUZDQkIxQkI0Q0JGODAwMTI4OThGIC8qIElEQlNlcnZlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE4NUZDQUIxQkI0QzRFODAwMTI4OThGIC8qIElEQlNlcnZlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODg2NEU3MUJCQjRCODMwMEU1NDBDOSAvKiBJREJT
ZXJ2ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVGQ0FEMUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNzQxQkE3
M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGNDFBNzYxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTc4MUJBNzNCNUIwMDJFMDUzQiAvKiBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNCMDFC
QjRDNEU4MDAxMjg5OEYgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTcxRDU3QzBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDlFOTExQzUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50aXR5VHJhbnNmb3Jt
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYg
LyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU2Miw3ICsyNTU4Nyw3IEBACiAJ
CQkJMDczNjdEREYxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2QzU5NTE3Q0ZFMTcyMDA4NTJDMDQg
LyogSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQjIzQzJDQzBB
NTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxRTZGQTdDMUJCQjRGQzMwMDg3MDBEOSAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxODVGQ0IyMUJCNEM0RTgwMDEyODk4RiAvKiBJbmRleGVkREIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guaCBp
biBIZWFkZXJzICovLAogCQkJCUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAvKiBJbmxpbmVFbGVt
ZW50Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMzBBMTU1QTA1MDAwQTQyMzQgLyog
SW5saW5lRmxvd0JveC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU3MCw2ICsyNTU5NSw3IEBACiAJ
CQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxp
bmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEE1OEU1MUJBQTQwQjEwMEMx
OTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1MjRE
MTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMzNDg2
MTI0MTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlERUEwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjU2MzEsNyArMjU2NTcsNiBAQAogCQkJCTMxOTg0ODBDMUEx
RTZDRTgwMEExMzMxOCAvKiBKU0FuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NURGMzFEQjA5RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
REExNUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTE4NUZDNzgxQkI0QzRFODAwMTI4OThGIC8qIElEQkFueS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTAxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBNjEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2NTksNyArMjU2
ODQsNiBAQAogCQkJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5l
bE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUE0MTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMEE1OEU1
MUJBQTQwQjEwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1REYzMUY0MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0NoYXJhY3RlckRhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQzA2NTg4MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQzA2NThBMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzM4LDE0ICsyNTc2MiwxMiBAQAogCQkJCUZD
OUUwRTREMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTVdpbmRvd0NTUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0JGQjUzRDBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dT
aGVsbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRUExQkJEMTY4NDAwMEE2MDQzIC8qIFJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAxMzE1QzIgLyog
SlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGN0FERDEwMTYyQjM4MDA0
MjdERTcgLyogSlNFcnJvckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0NjE0OTExNjFE
NTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVG
Qzg5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZU1ldGFkYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNEU4Mzc4RTA5Rjg1RDRGMDBCODVBRTQgLyogSlNFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTBGRUYzNzJCMzdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3NjIsNyArMjU3ODQsNiBAQAogCQkJCTg5ODc4NUY1
MTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCNkQ5RDI3QjE0RUFDMDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MDlFQkRDMDE2QjdGMzhFMDBDQkEzRkMgLyogSlNGb250TG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MTg1RkNBQjFCQjRDNEU4MDAxMjg5OEYgLyogSURCU2VydmVyQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQUMxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
R2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEY1MDAyMTk0Q0FDM0EwMDgxQkFBRSAv
KiBKU0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEY1MDA0MTk0Q0FDM0EwMDgxQkFB
RSAvKiBKU0dhbWVwYWRCdXR0b24uaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MDAsNyArMjU4MjEs
NiBAQAogCQkJCUE4RDA2NEZDMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0OTE4QzcwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZy
YW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZC
IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQjcx
QkI0Qzc2NzAwMTI4OThGIC8qIERPTVJlcXVlc3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTgwRTdCMTUwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTEhlYWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUUyQUEyRjBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSGVhZGluZ0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQTMxMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hU
TUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MTgsNyArMjU4MzgsNiBAQAogCQkJ
CUJDNDkxQjc5MEMwMjNFRkQwMDlENjMxNiAvKiBKU0hUTUxNYXJxdWVlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ0NjE0M0EwQ0Q2ODlDODAwRkFEQTc1IC8qIEpTSFRNTE1lZGlhRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1IC8qIEpT
SFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4MTFCQjRDNEU4MDAx
Mjg5OEYgLyogSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QTE4MEExOUMz
RDYwMDdGQjhDNSAvKiBKU0hUTUxNZXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdC
QkUyNjcxMUFGQjNGMjAwMDVFQTAzIC8qIEpTSFRNTE1ldGVyRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFMkFCMkEwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1vZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjU4OTUsNiArMjU5MTQsNyBAQAogCQkJCTc1NzkzRUM5MEQwQ0U3
MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBREVE
REEwRTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxRjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2MzNBNSAvKiBKU01vdXNl
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RjQyMEEzMTZCNzE2NEUwMDUyQTlGMiAvKiBK
U011dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUZDMDlEMUNDNjAw
MDBCRTMyNSAvKiBKU011dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5OTIsNyAr
MjYwMTIsNiBAQAogCQkJCUE4NEVCRDgzMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUZGOEY2NTE4MDc0NUQ4MDAxMzI2NzQgLyogSlNT
dWJ0bGVDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMDExMTA4MEFCNzc0MDUwMERCMEU2
OCAvKiBKU1NWR0FFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg4NjRFNzFCQkI0Qjgz
MDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5
MTI5MjEzQ0E5NTFFMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaERlZkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1MTVFQzkyMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTYxM0NBOTU2MTAwRDIxOTE1IC8qIEpT
U1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjAxOSw3ICsyNjAz
OCw2IEBACiAJCQkJQjJGQTNENUQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ29sb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyRkEzRDYzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0RlZnNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2NTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEZXNj
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjcwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwNDQsNyArMjYwNjIsNiBAQAog
CQkJCUIyRkEzRDgzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEODUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
RkVJbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDg3MEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR0ZFTWVyZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5
NTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q4
OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRU1lcmdlTm9kZUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg0MjI0MTg0MTA3RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDhCMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA2MCw3ICsyNjA3Nyw2
IEBACiAJCQkJQTgzQjc5MDIwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VOYW1lRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgzQjc4RkUwQ0NBRkYxNTAwMEIwODI1IC8qIEpT
U1ZHRm9udEZhY2VTcmNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODNCNzhGQzBDQ0FG
RjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxODVGQ0E5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkZBM0Q5OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyN0IyODI4MENFRjBDMDcwMEQzOUQ1
NCAvKiBKU1NWR0dseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjIzMywxMiArMjYy
NDksMTAgQEAKIAkJCQk0NTBDRUJGMTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTQ1NkZBMjcxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVs
c05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQg
LyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0EwMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0Qzk2RTMxQUQ0NEFC
RjAwMzY1QTUwIC8qIExhdW5jaFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTE3
QjU2MjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjkxN0I1NjMxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OTE2RkY3MTk1REY2QTAwMDVBQjM0OSAvKiBM
YXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQjAxQkI0
QzRFODAwMTI4OThGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTgwMzcxNjQxQTY2RjFEMzAwQkFGNTE5IC8qIExheWVyRnJhZ21lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdBQTNBNkEwMTk0QjU5QjYwMDFDQkQyNCAvKiBMYXllclBvb2wuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjQ2LDcgKzI2MjYwLDYgQEAKIAkJCQkxNDFEQzA1MzE2
NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTM4
RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQxREMwNTQxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCBpbiBIZWFkZXJzICov
LAotCQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAvKiBM
YXlvdXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzQzJCOTFCQTIzQTI2MDBFMjYzMzcg
LyogTGVnYWN5QW55LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MzUwLDcgKzI2MzYzLDYgQEAKIAkJ
CQlDRTEyNTI0MTFBMTZCMUI2MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyRTJDQUZDMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQTBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQzBBMzlEQUNDMDAyMjBGRTUgLyog
TWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkUwQTM5REFD
QzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQTk0QTM5
MTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjM2OCw4ICsyNjM4MCw2IEBACiAJCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlEMDFCMDAy
NzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUIzMTgxOEY1
RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQ0E2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RDOEI1QTcxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEREMxRTdBMThBOTUyRjMwMDI3QTlENCAv
KiBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjFGRTY4
MTc5NEFBREIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2Mzk3LDggKzI2NDA3LDggQEAKIAkJCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUyOTE3RkRF
MDJDMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5QzdDQ0IzMThDNjYzRTQwMDMyRTQxMyAvKiBNZW1vaXplZERPTVJlc3VsdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTE2RDdENzAxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25U
b1NlcnZlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMxODA5NzlDM0JEMDA0
Njc3NDEgLyogTWVtb3J5Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkE0QUNCMUJCQzVC
RDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1NzFEQ0M4MTM4NUU2QTQwMDcwMkREMCAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REZBMDk5RTY0OTIwMDU2RTU4MSAvKiBNZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBREVDQ0UwRTc2QUQ4QjAw
NEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDA4LDcgKzI2
NDE4LDYgQEAKIAkJCQlBNzhFNTI3MDEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0RBNTEzODQ1MDFDMDAwOEI3OTMgLyogTUhU
TUxBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0RBNzEzODQ1MDFDMDAwOEI3OTMg
LyogTUhUTUxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0I5MUJCNENCRjgwMDEy
ODk4RiAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQjg5
NUFGMTlEQzdFRDkwMDlDQUE5MyAvKiBNaWNyb1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
RERDRDk1MTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjQ2Myw3ICsyNjQ3Miw2IEBACiAJCQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgz
NDlEIC8qIE5GQU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2NzcyNjAxMUE1QjNBRDkwMDND
MjRERCAvKiBORkFUb0RGQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRjQzREQwRTY3NDAxMjAw
MUMxMjg3IC8qIE5pbmVQaWVjZUltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5RTFC
QjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDExNUI1MjA5Rjg0QjcxMDBDQTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0
RkU3MzEwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1NEZFNzMzMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2NTk5LDcgKzI2NjA3LDYgQEAKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBC
QzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIz
QjlBRDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRh
YmFzZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAv
KiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCNThGRDQxOTVB
OTY0RDAwMjk5MEIwIC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1
QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjY1MSw3ICsyNjY1OCw2IEBACiAJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFF
Rjc3IC8qIFByaW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkMwQTE5NDVE
MDAwQThFRjVGIC8qIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ0NjEzRUMwQ0Q2ODFCNTAwRkFEQTc1IC8qIFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyQTY4MjQwQjVCRURFNzAwMDJBNDgw
IC8qIFByb2dyZXNzVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDQURENzkxODgwRDkx
QzAwRDhCNzFEIC8qIFByb2dyZXNzVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjY2Miw5ICsyNjY2OCw5IEBACiAJCQkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3Rl
Y3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjhFMTFBMTI1NjU5MjYwMDIz
MEZGNyAvKiBQcm94eVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkY5NDVFQ0MxNjFGN0Yz
NjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFRTI3QUNC
MUJCQjUzQTIwMDcyNDAwQSAvKiBwdGhyZWFkU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDgx
RkYwMDE2QjBBMkQzMDA4QUFBN0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQ0VFMjdBQ0IxQkJCNTNBMjAwNzI0MDBBIC8qIHB0aHJlYWRTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTEyNTIzRDFBMTY3NkNEMDA4NjQ0ODAgLyogUXVhcnR6
Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQyQUY3QTkxMDJDRERFQTAwOEZENEQzIC8q
IFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjY4NSw2ICsyNjY5MSw5IEBACiAJCQkJ
QTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5OEJERjExQTgxMTQzMTAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTAyM0YwMUEzOURCN0EwMEY3MjJDRiAvKiBSZWFk
YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQz
IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU2RkU4
MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MTZFNkZFQTFCQkQxNjg0MDAwQTYwNDMgLyogUmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUZBRkFG
MUFCQUJEMEMwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2ODc4LDcgKzI2ODg3LDYgQEAKIAkJCQk1MTRD
NzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MEE1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MEE3MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVsYXRpb25C
dWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBN
ZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE5MTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwQUQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2OTE4LDcgKzI2OTI2LDYgQEAKIAkJCQkwNzhFMDkyQTE3RDE0
RDFDMDA0MjBBQTEgLyogUlRDU3RhdHNSZXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUw
OTQ1MTdEMTZFMUMwMDQyMEFBMSAvKiBSVENTdGF0c1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OEUwOTJCMTdEMTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c1JlcXVlc3RJbXBsLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkM1QjFCQjRCRTRDMDAxMjg5OEYgLyogSURCQ29ubmVjdGlv
blRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyQzE3RDE0RDFDMDA0MjBBQTEg
LyogUlRDU3RhdHNSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NDYxN0QxNkUx
QzAwNDIwQUExIC8qIFJUQ1N0YXRzUmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzhFMDk0NzE3RDE2RTFDMDA0MjBBQTEgLyogUlRDVm9pZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
LApAQCAtMjY5OTcsNiArMjcwMDQsNyBAQAogCQkJCUJDNkQ2RTI2MDlBRjk0MzUwMEY1OTc1OSAv
KiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0REMjEyNTFGMTJEMDAzRUYy
NjkgLyogU2VhcmNoSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjcxNzA4OTBCMzEx
ODA4MDAxNzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRTcw
NThGNDFCQzVDRURBMDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NkYzNkVCMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRDBFMEZCMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFM0FBMEIxQjk4QkNBQjAwMzZBRDgxIC8qIFNl
Y3VyaXR5T3JpZ2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzEyOCw2ICsyNzEzNiw3IEBA
CiAJCQkJQkNFRjQ0NEQwRTY3NDYyODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTNFNjA1MTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZElt
YWdlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5REFDN0M1NzFBRjJDQjY0MDA0MzdDNDQgLyog
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3NzlFMTcx
QkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzVFQjY3RjBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRSZWdpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhCOTBFODIwMUJEMDBCMjU5NjUgLyog
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzM4
LDcgKzI3MzQ3LDYgQEAKIAkJCQk4M0MxRDQzMTE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0xpbmV0b0hvcml6b250YWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDMyMTc4RDVB
QjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0E3RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMzE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzNDE3OEQ1QUI1
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0E4MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjczODksMTQgKzI3Mzk3LDEyIEBACiAJCQkJQjIyMjdBQzEwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1N5bWJvbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUM1
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJG
QzMxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTE4NUZDQTIxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4MTY2OEQ0MTI1NjAzQkYwMDZGMjVERSAvKiBTVkdUZXh0Q2h1bmtC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDODBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDQjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RjBC
RkM0MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxMDkzREMxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEIxQkI0
QzRFODAwMTI4OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4MEU0OTI2MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5n
aW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0Ey
NyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ1
Miw3ICsyNzQ1OCw2IEBACiAJCQkJQjJBRkZDOUEwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2Rl
Y01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDAwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY1VzZXJEZWZpbmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0MjBEMDA2QzFE
MDBFRjZGMjYgLyogVGV4dENvZGVjVVRGMTYuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0Iy
MUJCNEM0RTgwMDEyODk4RiAvKiBJbmRleGVkREIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDND
QjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDJCOTdDQTEzMTM4OTQzMDA4QkVGNEIgLyogVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODRCNDEyMzcxMTgwMDAwQzYxNjEgLyogVGV4dERvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NTQ2LDYgKzI3NTUxLDcgQEAKIAkJCQlBQTQ3MzlE
MjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTlCMkQ4QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDg2RkU5ODA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5r
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxNzYyRTAxNzY2ODZEOTAwRDgzNkE4IC8q
IFVwU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc2OCw2ICsyNzc3NCw3IEBACiAJCQkJ
RjM0NzQyRTExMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUEzRTI2NDMxMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0I0MUJCNEM0RTgwMDEyODk4
RiAvKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdGOEU2NjYxNTFENEE0RTAwRDJEMTgxIC8qIFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNkUwN0E1MTM1OEE4
QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTI4MTI5LDcgKzI4MTM2LDYgQEAKIAkJCQkzN0Y1N0FDRDFBNTA3MkQ3MDA4NzZGOTggLyog
QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTM3RjU3QUNFMUE1MDcyREEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTkxQzlGQkUxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxp
dHlUcmVlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNDg0NTNFMUJCOUQwN0UwMDZBNzJFRCAv
KiBJREJFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZE
NTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1RDMx
REZBMTFDRjYxMEIwMDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUM0REU2RTBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjgxNDQsMTEgKzI4MTUwLDkgQEAKIAkJCQkzMTZGRTExMzBFNkUx
REE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMTk4NDgwMjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlFOTEyQUMwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOTgxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBh
dGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERDYwOTlFNjQ5MjAwNTZFNTgxIC8qIEFw
cGVuZE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJDMERCNTVDREMw
MDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2
QkJFMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE4NUZDN0QxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldpdGhWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQzAwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTJBQUM1ODBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODIwOSw3ICsyODIxMyw2IEBACiAJCQkJNDU4MzBENEQx
Njc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4Q0ZGMDUwMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAwQzA3NEE1IC8qIEFWQXVkaW9DYXB0
dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4ODY0RTYxQkJCNEI4MzAwRTU0MEM5
IC8qIElEQlNlcnZlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4
MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTA3MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODI0Miw3ICsyODI0NSw2
IEBACiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDNzcxQkI0QzRFODAwMTI4OThGIC8q
IElEQkFueS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTY0QTJFRDE5MUFFNjM1MDAxMDczN0Qg
LyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0QTk0
RDcxNkRGREY5NTAwNjhERTgyIC8qIEJsb2JSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRURFRjFGNjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI4MzE0LDcgKzI4MzE2LDYgQEAKIAkJCQkxNEQ4MjM4QjBBRjkyREY2MDAw
NEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCQUYyMjA4MEMwM0IxQzcw
MEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQ4QkZBQjFCODU3
Mjk4MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUx
ODVGQzgwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0MwNjU3RDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2Fy
ZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg0MzgsNyArMjg0MzksNiBAQAogCQkJCUJD
MDJBNjQ2MEUwOUFBRTkwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMjNFNEUxMERBQUNFMEYwMDlGREM5MSAvKiBDU1NHcmFkaWVudFZhbHVlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFt
bWFyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQ0E4MUJCNEM0RTgwMDEyODk4RiAvKiBJ
REJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEN0RCQjI4MThDQTE5QTQwMEMxMTA2
NiAvKiBDU1NHcmlkTGluZU5hbWVzVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzRTI1
MjMxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkJGODkwNDUxNjlFOUYxRjAwNTJEODZFIC8qIENTU0dyb3VwaW5nUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NTYxLDEyICsyODU2MSwxMCBAQAogCQkJCUE3ODFD
NkE3MTM4MjhCNUQwMDEyQTYyQSAvKiBEb2N1bWVudE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OTQ3RkZEMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1
bWVudE9yZGVyZWRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDNzQxQkI0QzRFODAw
MTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEMyMjgwRTExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEE0RjQ4QTkxNkIwREZDMDAwRURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ2RTcxQUMxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3Vt
ZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjkwNTYxOTBGMjU3
OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxODVGQzg2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODVGM0EwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3Vt
ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMg
LyogRG9jdW1lbnRXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QUUwOTdDNzE1
RjAwMTlGM0Q4IC8qIERPTS5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg2NjcsNyArMjg2NjUsNiBA
QAogCQkJCTg1NDA3NTZDMEFENkNCRjkwMDYyMEM1NyAvKiBET01IVE1MT3B0aW9uRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1REYyRjlDMEFBM0NBRTUwMEFENjRDNSAvKiBET01IVE1M
T3B0aW9uc0NvbGxlY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0NzBBQTY5MjYx
MDBGMTlGQTMgLyogRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKLQkJ
CQk1MTg4NjRFMDFCQkFGNTcxMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODVFQ0JFRjgwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxQYXJhbUVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0OTBBQTY5MjYxMDBGMTlGQTMgLyog
RE9NSFRNTFByZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNDIyNkU5NjExNjNENzNB
MDA4QjgzOTcgLyogRE9NSFRNTFByb2dyZXNzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAt
Mjg2ODcsNyArMjg2ODQsNiBAQAogCQkJCUE4MTg1RjNFMDk3NjU3NjYwMDU4MjZEOSAvKiBET01J
bXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdCQTA5N0M3MTVGMDAx
OUYzRDggLyogRE9NSW50ZXJuYWwubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUZGMzE1QjBBQUZC
RkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUx
RDcyMzZDMUJCNjE3NDkwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg1MDY1NkZGMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01NZWRpYUxpc3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3NTc5M0VENDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBQ0FGNEMwRTc5MUFBRjAwODdEMTJCIC8qIERPTU1l
c3NhZ2VQb3J0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODc0MCw3ICsyODczNiw2IEBACiAJCQkJ
MzEwNjAzN0ExNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENT
U01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAogCQkJCThBRDBBNTk3MTRDODgzNTgwMDBEODNDNSAv
KiBET01XZWJLaXRDU1NSZWdpb25SdWxlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRTM4ODM4OTgx
QkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxNjExRTYyMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIzM0VDMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJL
aXRDU1NWaWV3cG9ydFJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4QTE5NTkzMzE0N0VBMTZF
MDBEMUVBNjEgLyogRE9NV2ViS2l0TmFtZWRGbG93Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODc0
OSw2ICsyODc0NCw3IEBACiAJCQkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRv
dy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9N
V2luZG93Q1NTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1
OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDNzQx
QkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0IzOEUyODE1MUM0MjczMDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0QyQUQwMzE0QjgyM0E2MDA5M0RGMzIgLyog
RE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBRDcxNkE0ODYx
QTAwOTc1QTI1IC8qIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI4ODQ4LDcgKzI4ODQ0LDYgQEAKIAkJCQkyNkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyog
RmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEIzRjc2MEM3MjIwNTUwMDA1
MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MDMwMEIwQ0M0
MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
MTg1RkM4ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VNZXRhZGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzVFQjY5RTBFODFEQUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA4QzkyNTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTNGNjUxNDQzQjM1RjAwNkUyQTkwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5MTIsNyArMjg5MDcs
NiBAQAogCQkJCTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQ0FGMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVDQkZFRjkwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzIwNUFBRjEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDODFCODkwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVj
dG9yeVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTY2LDcgKzI4OTYwLDYgQEAKIAkJ
CQlBOENGRjdBNDBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEFuY2hvckVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg3MUQ0NUUwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxBcHBsZXRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3RDJGMEExOTM4NTUwMEE4RUY1RiAvKiBI
VE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOUQxQkI0QzRFODAw
MTI4OThGIC8qIElEQktleVJhbmdlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzVGMjhG
QjFBODI3RDg0MDBDMEYzMUYgLyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0NDYxM0ExMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzJBMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MQmFz
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTA0OCw3ICsyOTA0MSw2IEBACiAJCQkJ
QTQzQkY1OTgxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThDRkY3QTUwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMjIzRkQxNkI1MkU0RTAwMTU3Mjg4IC8qIEhU
TUxSZXNvdXJjZVByZWxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM5NDFCQjRD
NEU4MDAxMjg5OEYgLyogSURCS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzIyMEEx
NTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzdCMzg3NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5lci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODEzNjlEOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTA3OCw3ICsyOTA3MCw2IEBACiAJCQkJQThFQTc5
RjMwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTQ0NjEzQUEwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxWaWRlb0VsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODM5QUFGRUMxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMUE5MDQyMUJCQUI0N0EwMDBDRjE1NiAvKiBX
ZWJDb3JlSlNCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjhDNTZENDBGMjg2MjdG
MDAwNTAyRTEgLyogSFRUUEhlYWRlck1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBD
MzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxNEM3NjcyMENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQUGFyc2Vycy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI5MDkwLDE4ICsyOTA4MSw0NyBAQAogCQkJCTUxM0YxNDUzMEFCNjM0QzQwMDA5
NERERiAvKiBJY29uTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNThFMEIwNTNB
NjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQzAwQzkx
QzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZD
NzcxQkI0QzRFODAwMTI4OThGIC8qIElEQkFueS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1
QTY2MjExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTZEN0Q3MTFCQjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxNkQ3RDZGMUJCNUYwQkQwMEFGN0M3NyAvKiBJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDN0ExQkI0
QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY0MUE2
OTFCQTczQjVCMDAyRTA1M0IgLyogSURCQ3Vyc29yQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUY0MUE2QjFCQTczQjVCMDAyRTA1M0IgLyogSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDN0QxQkI0QzRFODAwMTI4OThGIC8qIElE
QkN1cnNvcldpdGhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4MDFCQjRDNEU4
MDAxMjg5OEYgLyogSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFBNkQx
QkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUY0MUE3MDFCQTczQjVCMDAyRTA1M0IgLyogSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzg0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4NjFCQjRDNEU4
MDAxMjg5OEYgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxQkE0QUMzMUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE4NUZDODgxQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlTWV0YWRh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE0ODQ1M0UxQkI5RDA3RTAwNkE3MkVEIC8qIElE
QkVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzhBMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJFdmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOEMxQkI0
QzRFODAwMTI4OThGIC8qIElEQkZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwMzEw
NEYxQkE4Q0MwMzAwMzMyOUMwIC8qIElEQkZhY3RvcnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxODVGQzkwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJJbmRleC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MTg1RkM5NDFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxODVGQzk2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlEYXRhLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxODVGQzk4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlQYXRoLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzlBMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlS
YW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM5RDFCQjRDNEU4MDAxMjg5OEYgLyog
SURCS2V5UmFuZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzlGMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkNB
MzFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlbkRCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTAzMTA1QTFCQThEQjU2MDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVzdEltcGwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFBN0IxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRp
bmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQTgxQkI0
QzRFODAwMTI4OThGIC8qIElEQlJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwQTU4
RjkxQkFDQzdGMjAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxMEE1OEZCMUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0SWRlbnRpZmllci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTAzMTA1QzFCQThEQjU2MDAzMzI5QzAgLyogSURCUmVxdWVz
dEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFENzIzNkMxQkI2MTc0OTAwNDc4Q0EzIC8q
IElEQlJlc3VsdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQkExQkI0Q0JGODAw
MTI4OThGIC8qIElEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg4NjRFNjFCQkI0
QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxODVGQ0FDMUJCNEM0RTgwMDEyODk4RiAvKiBJREJUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUY0MUE3MzFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTc1MUJBNzNCNUIwMDJFMDUzQiAvKiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjQxQTc3MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxODVGQ0FGMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9u
Q2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3MUQ1N0IwRjMzODE5MDAwRjlD
RTRFIC8qIElkZW50aWZpZXJSZXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTQxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI5MTQwLDYgKzI5MTYwLDcgQEAKIAkJCQlBQTRDM0E3NjBCMkIx
Njc5MDAyMzM0QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUE0ODU5MDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDMDEwNzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwQTU4RTQxQkFBNDBCMTAwQzE5MjgyIC8qIElu
UHJvY2Vzc0lEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0UzNTI0QjEyNDUwQzUy
MDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMzNDg2MTIzMTVG
REUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOURFOTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI5MTc1LDcgKzI5MTk2LDYgQEAKIAkJCQk3NTQxMzNBQTEwMkUw
MEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGMzgxMEMxQjEzNjVBNDk2MDBFRDZFMzMgLyogSW5zcGVjdG9yV29ya2VyQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjM1MEI3MzUxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1l
bnRpbmdBZ2VudHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOEMxQkI0QzRFODAwMTI4
OThGIC8qIElEQkZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ0NkYwNEUxN0I5NkZC
RDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTYwMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUz
NTdDMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAt
MjkxOTQsNyArMjkyMTQsNiBAQAogCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0Fs
bFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUM5MTJCMDNG
NTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUE3
OTVDNjE4ODhCQURDMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk1MTg1RkNBQzFCQjRDNEU4MDAxMjg5OEYgLyogSURCVHJhbnNhY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE5ODQ4MEIxQTFFNkNFNDAwQTEzMzE4IC8qIEpTQW5p
bWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxREEwOUQxQzEyMzAwMEJF
MzI1IC8qIEpTQXR0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJFRDZCQzBDNkJEMkYwMDA5
MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzNDcsNyArMjkz
NjYsNiBAQAogCQkJCUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUM2QTcwMzMyNUM5RDBCNkNEQ0JDNEQ3NyAvKiBKU0V2ZW50
VGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjA5MDIwMEU5MUI4RUMwMDBDNjhCNSAv
KiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzlGMUJC
NEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MzE0QUNFQjEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTcyNEVEMzMxMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTcyRjFBREE1MUEzOTBCOUYwMDAxNEUxOCAvKiBKU0VYVEZy
YWdEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NDA5LDcgKzI5NDI3LDYgQEAKIAkJCQk5
QjFBQjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQwNjRGQjBBMjNDMENDMDA1RTcyMDMgLyog
SlNIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY1QUUwQTI0NDZD
RDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxODVGQzdBMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0OTE4QzYwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1lRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJFRDdBNTBDNkMwRjM2MDA5MjBCRkYgLyogSlNIVE1M
RnJhbWVFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTI2RjgwMEMwNTUy
NDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yOTUzNCw2ICsyOTU1MSw3IEBACiAJCQkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURFRERCMEU3NkJE
OTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURF
RDQ3MEU3NkI4REQwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODY2MjlEMjA5REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM2RjQyMEEyMTZCNzE2NEUwMDUyQTlGMiAvKiBK
U011dGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRkIwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NzEy
LDcgKzI5NzMwLDYgQEAKIAkJCQlCMkZBM0Q5NDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDk2MEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0ZpbHRlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3
QjI4MjUwQ0VGMEMwNzAwRDM5RDU0IC8qIEpTU1ZHRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTE4NUZDQkExQkI0Q0JGODAwMTI4OThGIC8qIElEQlNlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODNCNzkwNDBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzQjc5MDEwQ0NBRkYxNTAwMEIwODI1IC8q
IEpTU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4M0I3
OTAzMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTgwOCw3ICsyOTgyNSw2IEBACiAJCQkJMDdCNUEyREIxNDY0MzIwQTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0I1QTMw
RDE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0NDYxNDFBMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNTE2RDdENkYxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0
QjUgLyogSlNUb3VjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBD
OTU0QjUgLyogSlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREE3QzFBMTg4
MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5ODIx
LDcgKzI5ODM3LDYgQEAKIAkJCQlBODY2MjlEMDA5REEyQjQ4MDA5NjMzQTUgLyogSlNVSUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBQTRGQUQzMTc1RDVDQjMwMDc0Mzg3MyAvKiBKU1VJ
UmVxdWVzdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjExMTkxRUY2RjQwMDdE
RTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1
RkNBMzFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlbkRCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzczRkIwQzE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI5ODQ2LDcgKzI5ODYxLDYgQEAKIAkJCQlCQzJDQkY3QjE0MEYx
RDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2RTNGQUQzODE0NzMzRjQwMTBFNDIzMDcgLyogSlNXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTZFM0ZBRDM4MTQ3MzNGNDAyMEU0MjMwNyAvKiBKU1dlYkdM
RGVidWdTaGFkZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzg0MUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNG
QUQzODE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2RUJGMEU3NjEyQTk4Njg4MDBEQjE3MEEgLyogSlNXZWJHTERyYXdCdWZmZXJz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk3MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dl
YkdMRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTg2MSw3ICsyOTg3NSw2IEBA
CiAJCQkJNkY5OTVBMzMxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xTYW1wbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5QzdCOUEyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMU2hhZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwN0QzMzU1MTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dl
YkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzhB
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJFdmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNkY5OTVBMzUxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xTeW5jLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5QzdCOUE0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMVGV4dHVyZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEzNzFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAwNDksNiArMzAwNjIs
NyBAQAogCQkJCTA3MDU4NTM4MTdGRTA0NEYwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUM3Q0NCNTE4QzZCODk5MDAzMkU0MTMgLyog
TWVtb2l6ZWRET01SZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMTcwOTc5QzNC
RDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQkE0QUNB
MUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjU3RURBMDgxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREI2QjI5ODE4RkI5MDI0MDA4MTk2M0UgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURGOTA5
OUU2NDkyMDA1NkU1ODEgLyogTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMDEwMSw3ICszMDExNSw2IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAw
N0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE3RkE2NDkwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUJBNEFDQTFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI2OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUY0M0UwMEU2NzQxMTAwMDFDMTI4NyAvKiBOaW5lUGllY2VJbWFnZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwMTQ4LDcgKzMwMTYxLDYgQEAKIAkJCQlDRDVFNUI2MTFBMTVGMTU2MDAw
QzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MjA4
OTIxNDdEMzVGOTAwMTBCQzA2IC8qIFBhZ2VDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJREFFRDIwMzAxNkYyNDQyQjAwNzBFQzBGIC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTUxMEE1OEY5MUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NzQyREMxMzQzNjJGMDAw
NTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDJC
MEJEMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MDUwOSw2ICszMDUyMSw3IEBACiAJCQkJRTQ1MzkwNDUwRUFGRDYzNzAwMzY5NUM4IC8qIFNjcm9s
bFZpZXdJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzUzNjc2QjA5QUVEODhCMDBEMzVDRDYg
LyogU2Nyb2xsVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREQxMTI1MUYxMkQw
MDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU3MDU4
RUUxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RjM2RUExNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0QwRTBGQTBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlP
cmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0FBMEExQjk4QkNBQjAwMzZBRDgxIC8q
IFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODgxLDcgKzMwODk0
LDYgQEAKIAkJCQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEMUU3MzQ3MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRENBODI5NjE2NzkxMDBG
MDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gaW4gU291cmNlcyAqLywK
LQkJCQk1MTg1RkM5NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyOTQ5ODY4MzE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25N
YXJrdXBNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMDEyNDJDNTM1MDAyMjI2QkEg
LyogVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUQzMjBFQUQxMjExMDA3RTQ1
MzMgLyogVGhlbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDkwMCw3ICszMDkxMiw2IEBACiAJ
CQkJMUY3MkJGMEExODdGRDQ0OTAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUEzQTZBMzE5NEI1QzIyMDAxQ0JEMjQgLyog
VGlsZUNvdmVyYWdlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0RTcw
MDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM5MDFCQjRD
NEU4MDAxMjg5OEYgLyogSURCSW5kZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4NzcwRjIx
MjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1
QjNEREIxMjUxRjEyRDAwM0VGMjY5IC8qIFRpbWVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzU1M0NGRTkxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTA5LDcgKzMwOTIwLDYgQEAKIAkJCQlBMURFNzEzMjE4
NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTFERTcxMkQxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNTFCQTRBQzMxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREMzE0NTlGRkFEMDA4RDhENDUgLyogVHJh
Y2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTgg
LyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkFDMzBGRjE4NEZCMTQ1
MDA4QzRGMUUgLyogVHJhaWxpbmdPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5MzEs
NiArMzA5NDEsNyBAQAogCQkJCTg1MDMxQjREMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzU0QTNDMEIyNEY4QzkwMDNGNkRFQSAvKiBVSUV2ZW50
V2l0aEtleVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNDczOUQxMTc1N0FGRUMwMEU3
Njc2NyAvKiBVSVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg4NjRFMDFC
QkFGNTcxMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDA4NkZFOTkwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkQxNzYyREYxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzA5NjMsNyArMzA5NzQsNiBAQAogCQkJCTJFM0JCRjA3MTE2MkRBMTEw
MEI5NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQw
MEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMx
NjBBRTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MTg1RkM5QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RFODNEQjExODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAv
KiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMDAzLDYgKzMxMDEzLDcg
QEAKIAkJCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM2OURENzE2MzIwMjZDMDA3QzM4
REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxMUE5MDQyMUJCQUI0N0EwMDBDRjE1NiAvKiBXZWJDb3JlSlNC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTQwMzc5QzEyNEJFQTdGMDBBRjQwRTQg
LyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzREOUJBNTBC
OEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzVCNEMyNEUxNTA5MjM2QzAwQTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4dHJhcy5tbSBp
biBTb3VyY2VzICovLApAQCAtMzEwNTAsNyArMzEwNjEsNiBAQAogCQkJCUEwOENGMTU0MTUyQjc3
QjMwMDlDNTc3NSAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwMUQzQ0Y4NjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMTUxQTcwNzU2MjAwQTczNUY0IC8qIFdlYkdMU3lu
Yy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTBBNThGQjFCQUNDN0YyMDBDMTkyODIgLyogSURC
UmVxdWVzdElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5RTUxMDQyRDMy
RjAwMDlENDQ3IC8qIFdlYkdMVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2Rjk5NUEy
MzFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwQzNGMUY1QTEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTA2Myw3ICszMTA3Myw2IEBACiAJCQkJOTc2RDZD
N0IxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxMDYwMzZGMTQzMjdEMkUwMEFCRjRCQSAvKiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTgzOTE1ODBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0
Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNkQ3RDcxMUJCNUYwQkQwMEFGN0M3
NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEFBNjFD
RkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM5QUREODAwQ0M0MDkyMjAwMDk4QzRDIC8qIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGRkZGOUE4MTU5RDlBNTUwMDIwQkJENSAvKiBX
ZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTA4OCw3ICszMTA5
Nyw2IEBACiAJCQkJOTdBQUJEMjYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMURFQTQ1NTFCMzlGNEQ5MDBGNzcxNzggLyogV2Vi
U3lzdGVtQmFja2Ryb3BMYXllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRkE0MTQ5Njkz
OTEwMEZCNUJEOCAvKiBXZWJUaWxlZEJhY2tpbmdMYXllci5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTUxODVGQ0IzMUJCNEM0RTgwMDEyODk4RiAvKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRh
YmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDgyMDMwQjEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNGNDJC
MzFFMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMzEx
MjAsNiArMzExMjgsNyBAQAogCQkJCUYzNDc0MkUwMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRTI2NDMwMTQ3NDg5OTEwMDVB
ODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjQ4
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MTg1RkNCMzFCQjRDNEU4MDAxMjg5OEYgLyogV29ya2VyR2xvYmFsU2NvcGVJbmRleGVk
RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdGOEU2NjUxNTFENEE0QjAwRDJEMTgx
IC8qIFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGMzZFMDdBNDEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0QzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTEzMSw3ICszMTE0MCw2IEBACiAJCQkJ
RjM0NzQyRTgxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NTQwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTBBNThFNDFCQUE0MEIx
MDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBC
OTA1NkY4MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3QUFCRDJDMTRGQTA5RDUwMDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUyMzA5OUU2
NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBiOTVkODVj
Li44MjRiNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTQ2
LDggKzE0Niw4IEBAIHB1YmxpYzoKIGNsYXNzIEVtcHR5U2VhcmNoUG9wdXBNZW51IDogcHVibGlj
IFNlYXJjaFBvcHVwTWVudSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVw
TWVudSgpIHsgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JikgeyB9CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
ZWFyY2hQb3B1cE1lbnUuaAppbmRleCBmMTk5ZmFiLi45YWFlZTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaApAQCAtMjIsMTggKzIyLDI0IEBACiAjZGVmaW5l
IFNlYXJjaFBvcHVwTWVudV9oCiAKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRlIDxj
aHJvbm8+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorc3RydWN0IFJlY2VudFNlYXJjaCB7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWU7Cit9OworCiBjbGFzcyBTZWFyY2hQ
b3B1cE1lbnUgOiBwdWJsaWMgUmVmQ291bnRlZDxTZWFyY2hQb3B1cE1lbnU+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TZWFyY2hQb3B1cE1lbnUoKSB7fQogICAgIHZpcnR1YWwgUG9wdXBNZW51
KiBwb3B1cE1lbnUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxS
ZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVk
KCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2VhcmNoUG9wdXBNZW51Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nl
YXJjaFBvcHVwTWVudUNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2Q0M2RmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NlYXJjaFBvcHVwTWVudUNvY29hLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNlYXJjaFBvcHVwTWVu
dUNvY29hX2gKKyNkZWZpbmUgU2VhcmNoUG9wdXBNZW51Q29jb2FfaAorCisjaW1wb3J0ICJTZWFy
Y2hQb3B1cE1lbnUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZWFyY2hQb3B1
cE1lbnVDb2NvYSB7CitwdWJsaWM6CitXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50
U2VhcmNoPiYgc2VhcmNoSXRlbXMpOworV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJj
aD4mIHNlYXJjaEl0ZW1zKTsKK307CisKK30KKworI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVudUNv
Y29hX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBv
cHVwTWVudUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9w
dXBNZW51Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViMzRj
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLm1tCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiU2VhcmNoUG9wdXBNZW51Q29jb2EuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25v
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGRhdGVL
ZXkgPSBAImRhdGUiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgaXRlbXNLZXkgPSBAIml0ZW1z
IjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHNlYXJjaGVzS2V5ID0gQCJzZWFyY2hlcyI7Citz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzZWFyY2hTdHJpbmdLZXkgPSBAInNlYXJjaFN0cmluZyI7
CisKK3N0YXRpYyBOU1N0cmluZyAqc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1N0b3JhZ2VEaXJl
Y3RvcnkoKQoreworICAgIE5TU3RyaW5nICphcHBOYW1lID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXTsKKyAgICBpZiAoIWFwcE5hbWUpCisgICAgICAgIGFwcE5hbWUg
PSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKKyAgICAKKyAgICBO
U1N0cmluZyAqc3RvcmFnZVBhdGggPSBbW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvV2ViS2l0Il0gc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OmFwcE5hbWVdOworICAgIHJldHVybiBzdG9yYWdlUGF0aC5zdHJpbmdCeVN0YW5k
YXJkaXppbmdQYXRoLnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGg7Cit9CisKK3N0YXRp
YyBOU1N0cmluZyAqc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpCit7CisgICAg
cmV0dXJuIFtzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVjdG9yeSgpIHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlJlY2VudFNlYXJjaGVzLnBsaXN0Il07Cit9CisK
K3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT5yZWFkU2VhcmNoRmllbGRSZWNl
bnRTZWFyY2hlc1BsaXN0KCkKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
cmVjZW50U2VhcmNoZXNQbGlzdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRzT2ZGaWxlOnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBh
dGgoKV0pOworICAgIGlmICghW1tyZWNlbnRTZWFyY2hlc1BsaXN0IGNsYXNzRm9yQ29kZXJdIGlz
U3ViY2xhc3NPZkNsYXNzOltOU011dGFibGVEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICByZXR1cm4gcmVjZW50U2VhcmNoZXNQbGlzdDsKK30KKworc3RhdGlj
IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBmcm9tTlNEYXRldG9TeXN0ZW1DbG9ja1RpbWUoTlNE
YXRlICpkYXRlKQoreworICAgIEFTU0VSVChkYXRlKTsKKworICAgIHJldHVybiBzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQoZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJh
dGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcwKSkpOworfQorCitzdGF0aWMg
TlNEYXRlICpmcm9tU3lzdGVtQ2xvY2tUaW1ldG9OU0RhdGUoc3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IHRpbWUpCit7CisgICAgcmV0dXJuIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5j
ZTE5NzA6ZHVyYXRpb25fY2FzdDxkdXJhdGlvbjxkb3VibGU+Pih0aW1lLnRpbWVfc2luY2VfZXBv
Y2goKSkuY291bnQoKV07Cit9CisKK3ZvaWQgU2VhcmNoUG9wdXBNZW51Q29jb2E6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRT
ZWFyY2g+JiBzZWFyY2hJdGVtcykKK3sKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNlbnRTZWFy
Y2hlc1BsaXN0ID0gcmVhZFNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpOworICAgIGlm
ICghcmVjZW50U2VhcmNoZXNQbGlzdCkKKyAgICAgICAgcmVjZW50U2VhcmNoZXNQbGlzdCA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OltOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldLCBpdGVtc0tleSwgbmlsXSk7CisKKyAg
ICBpZiAoc2VhcmNoSXRlbXMuaXNFbXB0eSgpKQorICAgICAgICBbW3JlY2VudFNlYXJjaGVzUGxp
c3Qgb2JqZWN0Rm9yS2V5Oml0ZW1zS2V5XSByZW1vdmVPYmplY3RGb3JLZXk6bmFtZV07CisgICAg
ZWxzZSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6
ZSgpXSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbSA6IHNlYXJjaEl0ZW1z
KSB7CisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKnJlY2VudFNlYXJjaCA9IFtOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpzZWFyY2hJdGVtLnN0cmluZywgc2VhcmNo
U3RyaW5nS2V5LCBmcm9tU3lzdGVtQ2xvY2tUaW1ldG9OU0RhdGUoc2VhcmNoSXRlbS50aW1lKSwg
ZGF0ZUtleSwgbmlsXTsKKworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDpyZWNlbnRTZWFy
Y2hdOworICAgICAgICB9CisKKyAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqaXRlbXNEaWN0
aW9uYXJ5ID0gW3JlY2VudFNlYXJjaGVzUGxpc3Qgb2JqZWN0Rm9yS2V5Oml0ZW1zS2V5XTsKKyAg
ICAgICAgaWYgKFtbaXRlbXNEaWN0aW9uYXJ5IGNsYXNzRm9yQ29kZXJdIGlzU3ViY2xhc3NPZkNs
YXNzOltOU011dGFibGVEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgICAgICBbaXRlbXNEaWN0
aW9uYXJ5IHNldE9iamVjdDpbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHNBbmRLZXlzOml0ZW1zLmdldCgpLCBzZWFyY2hlc0tleSwgbmlsXSBmb3JLZXk6bmFtZV07Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0IHNldE9iamVjdDpb
TlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSBmb3JLZXk6aXRlbXNLZXldOworICAgIH0K
KworICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0IHdyaXRlVG9GaWxlOnNlYXJjaEZpZWxkUmVjZW50
U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5Ok5PXTsKK30KKwordm9pZCBTZWFyY2hQb3B1
cE1lbnVDb2NvYTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQoreworICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VhcmNoSXRlbXMuY2xlYXIoKTsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVjZW50U2VhcmNoZXNQbGlzdCA9IHJlYWRT
ZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKTsKKyAgICBpZiAoIXJlY2VudFNlYXJjaGVz
UGxpc3QpCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnJlY2VudFNlYXJjaGVzID0g
W1tbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6aXRlbXNLZXldIG9iamVjdEZvcktl
eTpuYW1lXSBvYmplY3RGb3JLZXk6c2VhcmNoZXNLZXldOworICAgIGlmICghW3JlY2VudFNlYXJj
aGVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtIGluIHJlY2VudFNlYXJjaGVzKSB7CisgICAg
ICAgIGlmICghW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0gfHwgaXRl
bS5jb3VudCAhPSAyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBO
U1N0cmluZyAqc2VhcmNoU3RyaW5nID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OnNlYXJjaFN0cmluZ0tl
eV07CisgICAgICAgIGlmICghW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBOU0RhdGUg
KmRhdGUgPSBbaXRlbSBvYmplY3RGb3JLZXk6ZGF0ZUtleV07CisgICAgICAgIGlmICghW2RhdGUg
aXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZCh7IFN0cmluZyB7IHNlYXJjaFN0cmlu
ZyB9LCBmcm9tTlNEYXRldG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSkgfSk7CisgICAgfQorfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
Y3BwCmluZGV4IDc0YzMwNWEuLmM5NzVkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmluZyYgbmFtZSkK
IH0KICNlbmRpZgogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVt
cykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3LDcg
KzY3LDcgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBpZiAoc2l6ZSkgewogICAgICAg
ICBpdGVtcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRl
bXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1zW2ldLnN0cmluZy5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0b3NhdmVL
ZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNh
dGlvbik7CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAjZW5kaWYK
IH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2Vh
cmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC05MCw4ICs5MCwxMiBAQCB2b2lkIFNlYXJj
aFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPFN0cgogICAgIHNpemVfdCBzaXplID0gQ0ZBcnJheUdldENvdW50KGl0ZW1zLmdl
dCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBD
RlN0cmluZ1JlZiBpdGVtID0gKENGU3RyaW5nUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaXRl
bXMuZ2V0KCksIGkpOwotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0gQ0ZTdHJpbmdH
ZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVtKTsKKyAgICAg
ICAgaWYgKENGR2V0VHlwZUlEKGl0ZW0pID09IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKKyAgICAg
ICAgICAgIC8vIFRoZSB0aW1lc3RhbXAgaXMgbm90IHVzZWQgb24gV2luZG93cyBwbGF0Zm9ybSwg
YnV0IHdlIG5lZWQgdG8gY29uZm9ybSB0byB0aGUgbmV3IFJlY2VudFNlYXJjaCBzdHJ1Y3QgdHlw
ZS4KKyAgICAgICAgICAgIC8vIFRoZSB0aW1lIGlzIGluaXRpYWxpemVkIHRvIG1pbigpIGJlY2F1
c2Ugd2UgZG8gbm90IGtub3cgdGhlIHRpbWUgd2hlbiB0aGUgc2VhcmNoIHN0cmluZyB3YXMgY3Jl
YXRlZCBzbyB3ZQorICAgICAgICAgICAgLy8gYXNzdW1lIGl0IHdhcyBjcmVhdGVkIGxvbmcgdGlt
ZSBhZ28uCisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoeyBTdHJpbmcgeyBpdGVtIH0s
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpIH0pOworICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggMjk5YTEzMy4uMjIyZDA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzEsOCAr
MzEsOCBAQCBwdWJsaWM6CiAgICAgU2VhcmNoUG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCop
OwogCiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpOworICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpOwogICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNlYXJjaEZpZWxkLmNwcAppbmRleCA4OWRjMzRjLi45N2U4YjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTQxLDcgKzQxLDYgQEAK
ICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRl
ICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKQEAgLTg4LDggKzg3LDEyIEBAIHZvaWQgUmVu
ZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKGZyYW1lKCkucGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlY2Vu
dFNlYXJjaGVzLnJlbW92ZUFsbCh2YWx1ZSk7Ci0gICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnQo
MCwgdmFsdWUpOworICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsTWF0Y2hpbmcoW3ZhbHVl
XSAoY29uc3QgUmVjZW50U2VhcmNoJiByZWNlbnRTZWFyY2gpIHsKKyAgICAgICAgcmV0dXJuIHJl
Y2VudFNlYXJjaC5zdHJpbmcgPT0gdmFsdWU7CisgICAgfSk7CisKKyAgICBSZWNlbnRTZWFyY2gg
cmVjZW50U2VhcmNoID0geyB2YWx1ZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkg
fTsKKyAgICBtX3JlY2VudFNlYXJjaGVzLmluc2VydCgwLCByZWNlbnRTZWFyY2gpOwogICAgIHdo
aWxlIChzdGF0aWNfY2FzdDxpbnQ+KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKSA+IGlucHV0RWxl
bWVudCgpLm1heFJlc3VsdHMoKSkKICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVMYXN0
KCk7CiAKQEAgLTIyOCw3ICsyMzEsNyBAQCBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1U
ZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihs
aXN0SW5kZXgpID09IChzaXplIC0gMSkpCiAgICAgICAgIHJldHVybiBzZWFyY2hNZW51Q2xlYXJS
ZWNlbnRTZWFyY2hlc1RleHQoKTsKICNlbmRpZgotICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVz
W2xpc3RJbmRleCAtIDFdOworICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAt
IDFdLnN0cmluZzsKIH0KIAogU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtTGFiZWwodW5z
aWduZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5oCmluZGV4IGI2MDU3ODEuLjZkZTg3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQb3B1
cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIK
KyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04Nyw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2VhcmNoUG9wdXBJc1Zpc2li
bGU7CiAgICAgUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gbV9zZWFyY2hQb3B1cDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBtX3JlY2VudFNlYXJjaGVzOworICAgIFZlY3RvcjxSZWNlbnRTZWFyY2g+IG1f
cmVjZW50U2VhcmNoZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKaW5kZXggMWExN2YxMS4uZTM1Mzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBB
dWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRo
IHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRlciB0byBhbGxv
dyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9yPFN0cmluZz4g
d2l0aCBWZWN0b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2VhcmNoIGlzIGEgc3RydWN0
CisgICAgICAgIHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2Vu
dCBzZWFyY2hlcyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwOgorICAg
ICAgICAoU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAo
U2VhcmNoUG9wdXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oOgorCiAyMDE1LTA5LTE3ICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+
aGFzTG9jYWxGcm9udGVuZCgpKSB3aGVuIHJ1bm5pbmcgV2ViIEluc3BlY3RvciB0ZXN0cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmNwcCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dUlPUy5jcHAKaW5kZXggNzVkYTZlZC4uNzE1ODk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCkBAIC0zNSwx
MSArMzUsMTEgQEAgUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiAg
ICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIC8qc2VhcmNoSXRlbXMqLykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4m
IC8qc2VhcmNoSXRlbXMqLykKIHsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYgLypzZWFy
Y2hJdGVtcyovKQordm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypzZWFyY2hJdGVtcyov
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLmI5ODA5OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBA
IC0zMyw4ICszMyw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVJT1MoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9w
dXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVt
cykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2Yzk2OWVlLi4yNjZkNTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTUtMTAtMDggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNl
YXJjaCBoaXN0b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAg
IGluIG9yZGVyIHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3Rvcnku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODgu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2g+LCB3aGVyZSBSZWNlbnRT
ZWFyY2ggaXMgYSBzdHJ1Y3QKKyAgICAgICAgdGhhdCBjb25zaXN0cyBzZWFyY2ggc3RyaW5nIGFu
ZCB0aW1lLCBmb3IgcmVjZW50IHNlYXJjaGVzIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwg
dGltZSBpbmZvcm1hdGlvbi4KKworICAgICAgICBBbGwgdGhlc2UgbmV3IFJlY2VudFNlYXJjaGVz
IGFyZSBzdG9yZWQgaW4gYSBwbGlzdCBpbiB3aGljaCB0aGUgc3RydWN0dXJlIGxvb2tzIGxpa2U6
CisgICAgICAgIFJvb3QgeworICAgICAgICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgICAg
IGF1dG9zYXZlIG5hbWU6IHsKKyAgICAgICAgICAgICAgICAgICAgInNlYXJjaGVzIjogWworICAg
ICAgICAgICAgICAgICAgICAgICAgeyAic2VhcmNoU3RyaW5nIjogc2VhcmNoU3RyaW5nLCAiZGF0
ZSI6IGRhdGUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW06CisgICAgICAgIChTZWFyY2hQb3B1
cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyk6IENhbGwgc2F2ZVJlY2VudFNlYXJjaGVzIGlu
IFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudUNvY29hLgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51
TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBDYWxsIGxvYWRSZWNlbnRTZWFyY2hlcyBpbiBXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYS4KKyAgICAgICAgKGF1dG9zYXZlS2V5KTogRGVsZXRl
ZC4KKwogMjAxNS0xMC0wNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRHVtcFJlbmRlclRyZWUgYnVpbHQgd2l0aCBwdWJsaWMgaU9TIFNESyBjcmFzaGVzIHVu
ZGVyIC1bV2ViUHJlZmVyZW5jZXMoV2ViUHJpdmF0ZSkgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCmluZGV4IDRjMWNjNzkuLmRkY2Rj
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudU1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudU1hYy5oCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIFNlYXJjaFBvcHVwTWVu
dU1hY19oCiAjZGVmaW5lIFNlYXJjaFBvcHVwTWVudU1hY19oCiAKLSNpbmNsdWRlIDxXZWJDb3Jl
L1NlYXJjaFBvcHVwTWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29j
b2EuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwpAQCAt
MzUsOCArMzUsOCBAQCBwdWJsaWM6CiAgICAgflNlYXJjaFBvcHVwTWVudU1hYygpOwogCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2Vi
Q29yZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KaW5kZXggMmIy
Mjc4NC4uMjMwMTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtMzQsMTEgKzM0LDYgQEAgU2VhcmNoUG9w
dXBNZW51TWFjOjp+U2VhcmNoUG9wdXBNZW51TWFjKCkKIHsKIH0KIAotc3RhdGljIE5TU3RyaW5n
ICphdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIFtAImNvbS5h
cHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuYW1lXTsK
LX0KLQogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVNYWM6OnBvcHVwTWVudSgpCiB7CiAgICAg
cmV0dXJuIG1fcG9wdXAuZ2V0KCk7CkBAIC00OSwzMSArNDQsMTIgQEAgYm9vbCBTZWFyY2hQb3B1
cE1lbnVNYWM6OmVuYWJsZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJjaFBv
cHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVN
YWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2Jq
ZWN0Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6ZSgpXSk7Ci0gICAg
Zm9yIChjb25zdCBhdXRvJiBzZWFyY2hJdGVtOiBzZWFyY2hJdGVtcykKLSAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDpzZWFyY2hJdGVtXTsKLQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFt
ZSldOworICAgIFNlYXJjaFBvcHVwTWVudUNvY29hOjpzYXZlUmVjZW50U2VhcmNoZXMobmFtZSwg
c2VhcmNoSXRlbXMpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsK
LSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNlYXJjaEl0
ZW1zLmNsZWFyKCk7Ci0gICAgZm9yIChOU1N0cmluZyAqaXRlbSBpbiBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBhcnJheUZvcktleTphdXRvc2F2ZUtleShuYW1lKV0pIHsK
LSAgICAgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAg
ICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7Ci0gICAgfQorICAgIFNlYXJjaFBvcHVw
TWVudUNvY29hOjpsb2FkUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDdlMGU4YzAuLjJmN2YyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAxNS0xMC0wOCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVu
dCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUg
dGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGlt
ZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGgg
VmVjdG9yPFJlY2VudFNlYXJjaD4sIHdoZXJlIFJlY2VudFNlYXJjaCBpcyBhIHN0cnVjdAorICAg
ICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBzdHJpbmcgYW5kIHRpbWUsIGZvciByZWNlbnQgc2Vh
cmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lCisgICAgICAgIGluZm9ybWF0
aW9uLgorCisgICAgICAgIEFsbCB0aGVzZSBuZXcgUmVjZW50U2VhcmNoZXMgYXJlIHN0b3JlZCBp
biBhIHBsaXN0IGluIHdoaWNoIHRoZSBzdHJ1Y3R1cmUgbG9va3MgbGlrZToKKyAgICAgICAgUm9v
dCB7CisgICAgICAgICAgICAiaXRlbXMiOiB7CisgICAgICAgICAgICAgICAgYXV0b3NhdmUgbmFt
ZTogeworICAgICAgICAgICAgICAgICAgICAic2VhcmNoZXMiOiBbCisgICAgICAgICAgICAgICAg
ICAgICAgICB7ICJzZWFyY2hTdHJpbmciOiBzZWFyY2hTdHJpbmcsICJkYXRlIjogZGF0ZSB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZW5jb2RlKTogRW5jb2RlIHRoZSBuZXcgc3RydWN0
IFJlY2VudFNlYXJjaAorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46
OmRlY29kZSk6IERlY29kZSB0aGUgbmV3IHN0cnVjdCBSZWNlbnRTZWFyY2gKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNh
dmVSZWNlbnRTZWFyY2hlcyk6IENhbGwgc2F2ZVJlY2VudFNlYXJjaGVzIGluIFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudUNvY29hLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRS
ZWNlbnRTZWFyY2hlcyk6IENhbGwgbG9hZFJlY2VudFNlYXJjaGVzIGluIFdlYkNvcmU6OlNlYXJj
aFBvcHVwTWVudUNvY29hLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRT
ZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJj
aGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVj
ZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51Lmg6CisKIDIwMTUtMTAtMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbXByZXNzIHNuYXBzaG90cyBvbiBpT1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMTA3Nzc3ZS4uODlmNTZlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTM2MSw2ICszNjEsNyBA
QCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbklu
Zm8nOiBbJzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBhc3Rl
Ym9hcmRJbWFnZSc6IFsnPFdlYkNvcmUvUGFzdGVib2FyZC5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQnOiBbJzxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKKyAg
ICAgICAgJ1dlYkNvcmU6OlJlY2VudFNlYXJjaCc6IFsnPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSc6IFsnPFdl
YkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXN1bHQnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPiddLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCA3MWRjM2Q0Li4wZjU1ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25J
RC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KQEAgLTQ3Niw2ICs0NzcsMjIgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFBhdGg+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQYXRoJiBwYXRo
KQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNo
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVjZW50U2VhcmNoJiBy
ZWNlbnRTZWFyY2gpCit7CisgICAgZW5jb2RlciA8PCByZWNlbnRTZWFyY2guc3RyaW5nIDw8IHJl
Y2VudFNlYXJjaC50aW1lOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVjZW50U2VhcmNoJiByZWNlbnRTZWFy
Y2gpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWNlbnRTZWFyY2guc3RyaW5nKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWNlbnRTZWFy
Y2gudGltZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZ2lvbjo6U3Bhbj4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBSZWdpb246OlNwYW4mKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgUmVnaW9uOjpTcGFuJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXgg
MTZlMGFkMC4uYzgzZTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtNzksNiArNzksNyBAQCBzdHJ1Y3QgTWltZUNsYXNzSW5mbzsKIHN0
cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1
Y3QgUGx1Z2luSW5mbzsKK3N0cnVjdCBSZWNlbnRTZWFyY2g7CiBzdHJ1Y3QgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVjdCBUZXh0SW5k
aWNhdG9yRGF0YTsKQEAgLTQ1MSw2ICs0NTIsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD4gewogfTsKICNlbmRp
ZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlY2VudFNlYXJj
aD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpSZWNlbnRTZWFyY2gmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiwgV2ViQ29yZTo6UmVjZW50U2VhcmNoJik7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBJUEMK
IAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1bWVudENvZGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggM2IzZThiYy4u
OTllNmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQpAQCAtMjYsNTAgKzI2LDE5IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCisjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBv
cHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYgc2VhcmNoSXRlbXMpCiB7Ci0gICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5z
ZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnVDb2NvYTo6c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29y
ZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7Ci0gICAgaWYgKCFuYW1lKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGl0ZW1zOwot
Ci0gICAgaWYgKCFzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaXRlbXMgPSBhZG9w
dENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNlYXJjaEl0ZW1zLnNpemUoKSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbSA6
IHNlYXJjaEl0ZW1zKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgp
LCBzZWFyY2hJdGVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotICAgIH0KLQotICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCks
IGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKLSAgICBDRlByZWZlcmVuY2VzQXBw
U3luY2hyb25pemUoa0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotfQotCi12b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVj
dG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQotewotICAgIGlmICghbmFtZSkgewotICAgICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgYXV0byBpdGVtcyA9IGFkb3B0Q0YoZHluYW1pY19jZl9jYXN0PENGQXJy
YXlSZWY+KENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCks
IGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSkpOwotICAgIGlmICghaXRlbXMpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gQ0ZBcnJheUdl
dENvdW50KGl0ZW1zLmdldCgpKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoYXV0byBp
dGVtID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGl0ZW1zLmdldCgpLCBpKSkpCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7
Ci0gICAgfQorICAgIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudUNvY29hOjpsb2FkUmVjZW50U2Vh
cmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDFkN2U4NDUu
LmU2N2RhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcx
LDYgKzcxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CkBAIC0xMjg1LDggKzEyODYsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICAvLyBTZWFyY2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQgc2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAg
ICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UmVjZW50U2VhcmNoPiYpOworICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IFN0cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+Jik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBTcGVlY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2OGZkMDUzLi44ZmJkOTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTM3OSw4ICszNzksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAg
ICAjIFNlYXJjaCBwb3B1cCBtZW51cwotICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFt
ZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCi0gICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0
cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQorICAgIFNhdmVSZWNlbnRTZWFy
Y2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRl
bXMpCisgICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OlJlY2VudFNlYXJjaD4gcmVzdWx0KQogCiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDY5MGFmM2UuLmFhMTFjYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAK
QEAgLTczLDEyICs3MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNG
b3JLZXlFdmVudChWZWN0b3I8V1RGOjpTdHJpbmc+JiAvKmNvbW1hbmRzTAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZl
Y3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3Bw
CmluZGV4IDRiOWJlNzMuLjg0NWYzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogICAg
IG1fYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKaW5k
ZXggMWIwNjcwNS4uOGU2ZGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAt
NDcsNyArNDcsNyBAQCBQb3B1cE1lbnUqIFdlYlNlYXJjaFBvcHVwTWVudTo6cG9wdXBNZW51KCkK
ICAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKIH0KIAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50
U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRl
bXMpLCBwYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0SXRlbXMpCit2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHJlc3VsdEl0
ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmgKaW5kZXggOGYxMDExZC4uYTgzOWQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJj
aFBvcHVwTWVudS5oCkBAIC0zMSw4ICszMSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdl
YlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1z
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdU
Rjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2Vh
cmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0tIAoyLjQuNyAoQXBwbGUgR2l0LTU5KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262745</attachid>
            <date>2015-10-08 21:55:53 -0700</date>
            <delta_ts>2015-10-09 21:49:26 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>110545</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBlNjg4NTBiYmJiODQyMGVlZjhjMTM3ODRlNDk4M2I3NGZhYjc3MDViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUaHUs
IDggT2N0IDIwMTUgMjE6MTc6MDggLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZSBzaG91bGQgYWxz
byBzdG9yZSB0aGUgdGltZSBpbmZvcm1hdGlvbiBmb3IgcmVjZW50CiBzZWFyY2hlcy4KCi0tLQog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYg
KysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAg
IHwgMjA2ICsrKysrKysrKysrLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NlYXJjaFBvcHVwTWVudS5oICAgICAgICAgIHwgIDEwICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oICB8ICAzNiArKysrCiAuLi4vV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSB8IDEyOCArKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcCB8ICAx
NCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAg
ICAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
aCAgICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgMTYgKysKIC4uLi9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmNwcCAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaCB8ICAgNCArLQogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKysrCiAuLi4vV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaCB8ICAgNiArLQogLi4uL21hYy9XZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0gICAgICAgfCAgMzIgKy0tLQogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKysrKysKIFNvdXJj
ZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5ICAgICAgICAgIHwgICAxICsKIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwICAgIHwgIDE3ICsr
CiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggICAgICB8ICAg
NiArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gICB8
ICA0MSArLS0tCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAg
ICAgICB8ICAgNSArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVBy
b3h5RWZsLmNwcCAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAgICB8ICAgNCArLQogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBv
cHVwTWVudS5jcHAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oIHwgICA0ICstCiAyNyBmaWxlcyBjaGFuZ2VkLCA0OTEg
aW5zZXJ0aW9ucygrKSwgMTk4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVD
b2NvYS5tbQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTY0ZmY0Li40M2JmYWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDkgQEAKKzIwMTUtMTAtMDggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisg
ICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0
b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVy
IHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8
U3RyaW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2g+LCB3aGVyZSBSZWNlbnRTZWFyY2ggaXMg
YSBzdHJ1Y3QKKyAgICAgICAgdGhhdCBjb25zaXN0cyBzZWFyY2ggc3RyaW5nIGFuZCB0aW1lLCBm
b3IgcmVjZW50IHNlYXJjaGVzIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZQorICAg
ICAgICBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBhbmQgU2VhcmNoUG9wdXBNZW51
Q29jb2EubW0KKyAgICAgICAgYW5kIHNvcnQgdGhlIHByb2plY3QgZmlsZS4KKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2VhcmNoUG9w
dXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFy
Y2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Vh
cmNoUG9wdXBNZW51Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51
Q29jb2EuaDogQWRkZWQgY2xhc3MgbWV0aG9kcyBmb3IgU2VhY2hQb3B1cE1lbnVNYWMgaW4gV2Vi
S2l0CisgICAgICAgIGFuZCBXZWJQYWdlUHJveHlDb2NvYSBpbiBXZWJLaXQyIHRvIGNhbGwuCisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1N0b3JhZ2VEaXJlY3Rv
cnkpOiBSZWNlbnQgc2VhcmNoZXMgd2l0aCB0aGUgbmV3IHN0cnVjdHVyZQorICAgICAgICBhcmUg
c3RvcmVkIGluIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoRmllbGRS
ZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCk6IEdldCB0aGUgcGF0aCBmb3IgdGhlIHBsaXN0IG9mIHRo
ZSByZWNlbnQKKyAgICAgICAgc2VhcmNoZXMgZW50cmllcy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PnJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVz
UGxpc3QpOiBSZXR1cm4gdGhlCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBwbGlzdCBhcyBOU011
dGFibGVEaWN0aW9uYXJ5LgorICAgICAgICAoV2ViQ29yZTo6ZnJvbU5TRGF0ZXRvU3lzdGVtQ2xv
Y2tUaW1lKTogQ29udmVydCBmcm9tIE5TRGF0ZSB0byBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQu
CisgICAgICAgIChXZWJDb3JlOjpmcm9tU3lzdGVtQ2xvY2tUaW1ldG9OU0RhdGUpOiBDb252ZXJ0
IGZyb20gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRvIE5TRGF0ZS4KKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudUNvY29hOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSBkaWN0
aW9uYXJ5IHdoZXJlIGl0IGhhcyB0d28gcGFpcnMKKyAgICAgICAgdGhhdCB0aGUgZmlyc3Qgb25l
IGlzIHRoZSBzZWFyY2ggc3RyaW5nIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyB0aGUgdGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudUNvY29hOjpsb2FkUmVjZW50U2VhcmNoZXMp
OiBXZSBleHBlY3QgdGhlIHJlY2VudCBzZWFyY2ggaXRlbSBpbiB0aGUKKyAgICAgICAgcGxpc3Qg
dG8gYmUgYSB0d28tcGFpciBkaWN0aW9uYXJ5LCBhbmQgY29udmVydCB0aGUgZGljdGlvbmFyeSB0
byB0aGUgc3RydWN0IFJlY2VudFNlYXJjaC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNo
UG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6
c2F2ZVJlY2VudFNlYXJjaGVzKTogT25seSBzYXZlIHRoZSBSZWNlbnRTZWFyY2gncyBzZWFyY2gK
KyAgICAgICAgc3RyaW5nIG9uIFdpbmRvd3MgcGxhdGZvcm0sIHdoaWNoIGlzIHdoYXQgd2UgdXNl
ZCB0byBkby4KKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2Vu
dFNlYXJjaGVzKTogU2luY2Ugd2UgbmVlZCB0byBjb25zdHJ1Y3QgYQorICAgICAgICBSZWNlbnRT
ZWFyY2gsIHdlIGdldCB0aGUgc3RyaW5nIGZyb20gdGhlIGFwcCdzIHByZWZlcmVuY2VzLCBhbmQg
c2V0IHRoZSB0aW1lIHRvIGJlCisgICAgICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ6Om1pbigpLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOiBOb3cgdGhh
dCBtX3JlY2VudFNlYXJjaGVzIGFyZSBWZWN0b3I8UmVjZW50U2VhcmNoPiwKKyAgICAgICAgd2Ug
Y2Fubm90IHVzZSAtcmVtb3ZlQWxsIHdpdGggYSBzZWFyY2ggc3RyaW5nLiBVc2UgLXJlbW92ZUFs
bE1hdGNoaW5nIGluc3RlYWQgdG8gcmVtb3ZlIHRoZQorICAgICAgICBpdGVtIHRoYXQgaGFzIGl0
cyBtZW1iZXIgc2VhcmNoIHN0cmluZyBlcXVhbCB0byB0aGUgc2VhcmNoIHN0cmluZyB1c2VyIGlu
cHV0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KToKKwog
MjAxNS0xMC0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGJ1aWxkIGZpeCBmb3IgRU5BQkxFKE1FRElBX1NFU1NJT04pIGFmdGVyIHIxOTAw
MzAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTJlYmU5NS4uZWI2ZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDY1LDYgKzQ2NSw4IEBACiAJCTBDM0Yx
RjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMzRjFGNTgxMEM4ODcxMjAwRDcy
Q0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi87IH07CiAJCTBDNDUzNDI3MTBDREJCRkEw
MDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNDUzNDI1MTBDREJCRkEwMDg2OTE1NyAvKiBK
U1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLzsgfTsKIAkJMEM0NTM0MjgxMENEQkJGQTAwODY5
MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNDUzNDI2MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmggKi87IH07CisJCTBFNzA1OEVFMUJDNUJDMTkwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVD
b2NvYS5tbSAqLzsgfTsKKwkJMEU3MDU4RjQxQkM1Q0VEQTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVw
TWVudUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjAzQzA3NDE4
ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzQzA3MzE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVt
TWVtb3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYwM0MwNzUxODg0ODA1NTAwQTVGOENBIC8qIEluc3BlY3Rvck92ZXJsYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDRBMTVCNDc4QjIw
MDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwOTA4N0YxNDQ0RkRCMjAwMDI4OTE3IC8qIFNjcm9s
bGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTcxNDE1MTQyMTg5RkMwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZS5jcHAgKi87IH07
CkBAIC03Njc0LDYgKzc2NzYsOCBAQAogCQkwQzNGMUY1OTEwQzg4NzEyMDBENzJDRTEgLyogV2Vi
R0xVbmlmb3JtTG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMVW5pZm9y
bUxvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM0NTM0MjUxMENE
QkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNDUzNDI2MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dl
YkdMVW5pZm9ybUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViR0xVbmlmb3JtTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEU3
MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBFNzA1OEYzMUJDNUNDRDcwMDQ1QTUwNyAv
KiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjAzQzA3MzE4ODQ2OTVFMDBB
NUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5c3RlbU1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjA5OUQwNjE3
Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDk5RDA3MTdCOTY4QTEwMEZG
ODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNjI2NiwxMSArMTYyNzAsMTEgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMTQ4QjRGRkYxQjY5MDRDNTAwQzk1NEU1IC8qIEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaWRsICovLAotCQkJCTQxMjlERjgyMUJCNUI3QTYwMDMy
MkExNiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5oICovLAotCQkJCTQxMjlERjgxMUJCNUI3OUIw
MDMyMkExNiAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAqLywKIAkJCQkxNDhCNEZGRjFC
NjkwNEM1MDBDOTU0RTQgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsICovLAogCQkJCTQxQTAy
M0VEMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8sCisJCQkJNDEyOURG
ODExQkI1Qjc5QjAwMzIyQTE2IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oICovLAogCQkJ
CTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRs
ICovLAorCQkJCTQxMjlERjgyMUJCNUI3QTYwMDMyMkExNiAvKiBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oICovLAogCQkJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbVJl
YWRlci5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHN0cmVhbXM7CkBAIC0xNzAwMywxMSArMTcw
MDcsMTEgQEAKIAkJCQlDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAgLyogTlNVUkxEb3dubG9hZFNQ
SS5oICovLAogCQkJCTY1M0VGODM4MTlBMDQzQUUwMDUyMjAyQyAvKiBOU1VSTEZpbGVUeXBlTWFw
cGluZ3NTUEkuaCAqLywKIAkJCQkzMUIzMTNEQzFCNjk4N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1
ZXN0U1BJLmggKi8sCisJCQkJQ0VFMjdBQ0ExQkJCNTNBMjAwNzI0MDBBIC8qIHB0aHJlYWRTUEku
aCAqLywKIAkJCQlDRTEyNTIzQzFBMTY3NkNEMDA4NjQ0ODAgLyogUXVhcnR6Q29yZVNQSS5oICov
LAogCQkJCTM3MTc4MzM5MUFBQ0RDRjcwMDA5MTBFMyAvKiBTZWN1cml0eVNQSS5oICovLAogCQkJ
CUNFQzMzN0FDMUE0NjA3MUYwMDlCODUyMyAvKiBTZXJ2ZXJzU1BJLmggKi8sCiAJCQkJQTE5RDkz
NDUxQTlGRUM3MjAwQjQ2QzI0IC8qIFdlYkZpbHRlckV2YWx1YXRvclNQSS5oICovLAotCQkJCUNF
RTI3QUNBMUJCQjUzQTIwMDcyNDAwQSAvKiBwdGhyZWFkU1BJLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MDY4LDggKzE3MDcy
LDggQEAKIAkJCQk3MUUyMTgzODE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5o
ICovLAogCQkJCTcxRTIxODM5MTczNTlGQjgwMDZFNkU0RCAvKiBQbHVnSW5zUmVzb3VyY2VzRGF0
YS5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnMuaCAqLywKLQkJCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovLAogCQkJCTlCMDNEODA3MUJCMzExMEQwMEI3NjRE
OCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oICovLAorCQkJCTlCMDNEODA2MUJC
MzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCiAJ
CQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnNXcmFwcGVyLmggKi8sCiAJCQkJNDNCODVFRDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHAgKi8sCiAJCQkJNDNC
ODVFRDMxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmls
aXR5RWxlbWVudE1hcC5ncGVyZiAqLywKQEAgLTE5MzgzLDYgKzE5Mzg3LDggQEAKIAkJCQkxQUE4
NEYwMjE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5tbSAqLywKIAkJCQlGNDc4
NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLywKIAkJ
CQlGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0g
Ki8sCisJCQkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29h
LmggKi8sCisJCQkJMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNv
Y29hLm1tICovLAogCQkJCTVENTk3NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9u
LmggKi8sCiAJCQkJNUQ1OTc1QjIxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24ubW0g
Ki8sCiAJCQkJN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVj
dG9yQ29jb2EuY3BwICovLApAQCAtMjE2MzYsNiArMjE2NDIsOCBAQAogCQkJCThGOTM0RDg0MTE4
OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThGOTM0
RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKIAkJCQlC
NTY1NzZFNDE3REE1OTlGMDBBNTZCREMgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlSW5zdHJ1bWVu
dGF0aW9uLmggKi8sCisJCQkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9h
ZGVyLmNwcCAqLywKKwkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2Fk
ZXIuaCAqLywKIAkJCQlDNkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxi
YWNrLmNwcCAqLywKIAkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNh
bGxiYWNrLmggKi8sCiAJCQkJODNGMTIwNkExQjhDMTAzNjAwRDc1RjYzIC8qIEpTTm9kZUZpbHRl
ckN1c3RvbS5jcHAgKi8sCkBAIC0yMTY0Nyw4ICsyMTY1NSw2IEBACiAJCQkJNDEyOURGODQxQkI1
QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggKi8s
CiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuaCAqLywKLQkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVM
b2FkZXIuY3BwICovLAotCQkJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxv
YWRlci5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rp
b24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rp
b24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcCAqLywKQEAgLTI0MjYwLDcgKzI0MjY2LDYgQEAKIAkJCQk1MTJERDhGNjBEOTFF
NkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RkQwRDkx
RTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJE
RDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTg1RkM3RTFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCMzc2MEQxNUM2QzY4NDAwNTkx
MzFEIC8qIEFycmF5VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTY4NkNBMTNBQzE4MDIw
MEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDI5OSw3
ICsyNDMwNCw2IEBACiAJCQkJRkQzNTkxOTAxMzhEQjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFyYW1U
aW1lbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMjAxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4NDEyQjAy
NkY3MDBDMUEzNTkgLyogQXVkaW9Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVG
Qzg3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDg2MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1Jlc2FtcGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODgxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvUmVzYW1w
bGVyS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDhDNDZFQzE1NDYwOEU3MDBBNTkxMEMg
LyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MzQyLDcg
KzI0MzQ2LDYgQEAKIAkJCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFy
UHJvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJh
c2VCdXR0b25JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzkxMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0MxMjZDQTVD
NDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzMzRUU1QzUxNEZCNDk2MTAwMDIwOTVBIC8q
IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDYw
LDcgKzI0NDYzLDYgQEAKIAkJCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhP
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU4MDM3MTYyMUE2NkYwMEEwMEJBRjUxOSAv
KiBDbGlwUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMTMxNEZBMDlENTAwNzQ1N0FF
IC8qIENsb3NlRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxRDcyMzZEMUJCNjE3NDkwMDQ3
OENBMyAvKiBJREJSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDQjExMThD
OEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVC
NURGMEU4MUI5QUIwMEIyNTk2NSAvKiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQyNUE0OUExODI5MkI4NDAwMjBDRkNGIC8qIENvbGxlY3Rpb25JbmRleENhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDg3LDcgKzI0NDg5LDYgQEAKIAkJCQk3OUYyRjVBMjEw
OTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwOEYxMkIwMjZGNzAwQzFBMzU5IC8qIENvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQ0JCMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUwMEIyNTk2NSAvKiBDb250
ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDUwMSw3ICsyNDUwMiw2IEBACiAJCQkJMjZG
MEM4QTAxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRlbnRFeHRlbnNp
b25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZCNjdEQzFBRTZCODJGMDBEMDZD
NUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQwOTBGRDFBQTUxRTQ4MDA5MTE5MUEgLyogQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0M0NzFEQzEyRjky
NUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAg
LTI0NTM5LDYgKzI0NTM5LDcgQEAKIAkJCQlFMUM0MTYxMjBGNjU2MkZEMDA5MkQyRkIgLyogQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTVEQTBGNjU1
RDZGMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkU0MzQ2NTkwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUU2RkE3QzFCQkI0RkMzMDA4NzAwRDkgLyogQ3Jvc3NU
aHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTY5ODAzRDExMzM1NDJEMDA4OTQxMTUg
LyogQ1J1bnRpbWVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NUNBMjhCMTMwMzY1Rjgw
MEU5OUFEOSAvKiBDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJBRjZFMTgwRjI0QzYw
MEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1OTAsNiAr
MjQ1OTEsNyBAQAogCQkJCTlEQUM3QzU1MUFGMkNBQTIwMDQzN0M0NCAvKiBDU1NDb250ZW50RGlz
dHJpYnV0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOEZFQkREMTQzRTNFRjcwMDcy
NTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUEyMUVDQ0Qw
QUJGMEZDNjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QTlDQzgxODE2QkI5QUM2MDBFQzY0NUEgLyogQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkIwQzVCODE3QkJENjI5MDAzRDM2
NzcgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0RDYw
Q0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NjU0
LDcgKzI0NjU2LDYgQEAKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQ
b29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyRjA4MjQ1RTU5MDAxRTlBQkMgLyogQ3Vy
c29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vy
c29yRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQjQxQkI0QzRFODAwMTI4OThGIC8q
IFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzIyNzJBRDBFODJFOEYzMDBFN0Y5NzUgLyogQ3Vyc29yTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjJDRDMyNUExMTU3RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENCNDEzRTBFODYzM0ZEMDAzMkM0RjAgLyogRGFzaEFycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI0NjgxLDEwICsyNDY4MiwxMCBAQAogCQkJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0
NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUIz
RTBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRyYW5zZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
QjhBRjRBQTBCMUNFMDJCMDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5OTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0
YVRyYW5zZmVySXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OUExMzE2MzZFNjAwMDlB
N0UwIC8qIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEEwMDc4
MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNjEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzRUI2MzcxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVU
aW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKQEAgLTI0Njk4LDcgKzI0Njk5LDYgQEAKIAkJCQk0
MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDA2REZBNjEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAyQzEyQjAyNjc2MDBDMUEz
NTkgLyogRGVsYXlEU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzg1MUJCNEM0
RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMkUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwMzExMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2Rl
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDcxNSw3ICsyNDcxNSw2IEBACiAJCQkJNTlB
OEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTQwMzc5RDEyNEJFQTdGMDBBRjQwRTQgLyogRGV2aWNlT3JpZW50YXRp
b25DbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5MzA5QTEzMTFGNEFFNkEwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQzhEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1OUE4RjFENjExQTY5NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNl
T3JpZW50YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUE4NUVBNDExOUQ2OEVDMDBE
RUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDcz
OSw3ICsyNDczOCw2IEBACiAJCQkJN0VEQUFGQzkxOUEyQ0NEQzAwMzRERkQxIC8qIERpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZB
Nzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOUVD
QzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTE4NUZDOTkxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERTcwMDIzMTkyRkU4MkEwMEIw
OTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
MjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI0NzcyLDcgKzI0NzcwLDYgQEAKIAkJCQkxQThGNkJDMzBEQjU1
Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVEMzg5QjIwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1RTcxMThEMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01BdHRySW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUxODVGQ0E3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZWNvcmRJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZCOUZFQjE5QTcyODRCMDA0MjA1NjIgLyogRE9NQXV0
b2NvbXBsZXRlRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZGQjlGRUQxOUE3Mjg0
QjAwNDIwNTYyIC8qIERPTUF1dG9jb21wbGV0ZUVycm9yRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM5NDZFRUYxMDdGREJBQzAwODU3MTkzIC8qIERPTUJlZm9yZUxvYWRFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDc5Myw3ICsyNDc5MCw2IEBACiAJCQkJODUwMzJERDcw
QUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTkwOUNEQzBBQ0M3QTdFMDBERjAxRjEgLyogRE9NQ1NTQ2hhcnNldFJ1bGVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzJERDkwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0Zv
bnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE0ODQ1M0YxQkI5RDA3RTAwNkE3MkVE
IC8qIElEQkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTkwOUNERDBBQ0M3QTdFMDBERjAx
RjEgLyogRE9NQ1NTRm9udEZhY2VSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
MDMyRERCMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NJbXBvcnRSdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTkwOUNERTBBQ0M3QTdFMDBERjAxRjEgLyogRE9NQ1NTSW1wb3J0UnVsZUludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTg4LDcgKzI0OTg0LDYgQEAKIAkJCQk4NUU3MTFD
RDBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODVGMzJBRjIwQUE2M0I4NzAwRkYzMTg0IC8qIERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUNFMEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxODVGQ0E0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVuREJSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUM3OTcxRDE4ODNFNTFGMDAwRjVFMUYgLyogRE9NSFRNTFRleHRBcmVh
RWxlbWVudFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTkyRUMwMEFBNTA2OTUwMEFD
MDc4NSAvKiBET01IVE1MVGl0bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFD
RjBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRpdGxlRWxlbWVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1MDE0LDcgKzI1MDA5LDYgQEAKIAkJCQk4NTE4REQ3ODBBOUNGMzFCMDA5
MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFEMjBB
QzVENTM1MDA1MzI3MEYgLyogRE9NTmFtZWROb2RlTWFwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1M0JGNERCMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkM5MzFCQjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXhNZXRhZGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODU0MDc1MjYwQUQ2QzY2NzAwNjIwQzU3IC8qIERPTU5vZGVGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QjQ5OEZCMEFEQjM0MDIwMDkyNUNCQiAvKiBET01O
b2RlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2QzM3MEFCMEExN0UwMDAzMDJF
QSAvKiBET01Ob2RlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjUwNDEsOCArMjUwMzUs
OCBAQAogCQkJCTg1MzhGMDVEMEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5nZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTM4RjA4NTBBRDcyQ0I2MDA2QTgxRDEgLyogRE9NUmFuZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NThDMzhBNzBBQThGMjA0MDBCMTg3QTQgLyogRE9NUmVj
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEYxQkI0QzRFODAwMTI4OThGIC8qIElEQkdl
dFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExRDYwQUM1RDUzNTAwNTMyNzBGIC8q
IERPTVJlY3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjcxQkI0Qzc2NzAw
MTI4OThGIC8qIERPTVJlcXVlc3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1RDM1OEEw
QUQ3MDczMTAwMTlBQUM3IC8qIERPTVJHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Qw
RkM0RjBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ5QTI0NkUxNUI5QkQwMDAwRDM0NTI3IC8qIERPTVNlY3VyaXR5UG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1MDY2LDcgKzI1MDYwLDYgQEAKIAkJCQkwRjU0RENENTE4ODBG
ODY3MDAzRUVEQkIgLyogRE9NVG91Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0Q3MTg4
MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0
RENEOTE4ODBGODY3MDAzRUVEQkIgLyogRE9NVG91Y2hFdmVudEludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MTg1RkM5QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNTREQ0RBMTg4MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENEQjE4ODBGODY3MDAzRUVEQkIgLyogRE9N
VG91Y2hMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTQ1MzQ5NzE2QTlCQjZBMDAwRjZGRDIg
LyogRE9NVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDc0LDcgKzI1MDY3
LDYgQEAKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRy
ZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRTkxQkJEMTJFNTAw
MEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
QzdGNDkxMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTk4OUREMDBBQ0M4QkJEMDBBMEJDNTEgLyogRE9NVUlFdmVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRUQxM0QyQTBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRlbnNp
b25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTA0LDYgKzI1MDk2LDcgQEAKIAkJCQkxNDAzQjk5
NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlB
MEY3NTE2NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUZBMkQ3ODE1MjEzMkIzMDBDMUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTg1RkM3NTFCQjRDNEU4MDAxMjg5OEYgLyogRE9NV2luZG93SW5kZXhl
ZERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0IzOEUyNzE1MUM0MjcxMDA0NjIyRTkg
LyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdEMkFEMDQx
NEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4OUY2MEIxMTE1N0Y2ODZFMDA3NUUxNTcgLyogRE9NV2luZG93UXVvdGEuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjUyMzIsNyArMjUyMjUsNiBAQAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIz
NCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5
QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QTUy
OEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NBMDBCMEYy
QjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjU1LDcg
KzI1MjQ3LDYgQEAKIAkJCQlCMkFGRkM3RTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjYwRDAwNkNENjAwRUY2RjI2
IC8qIEZvbnREZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE2RTlGQzgxM0MxN0Q1
NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
NkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDlFQkRCNjE2QjdFRUEzMDBDQkEzRkMgLyogRm9udExv
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZv
bnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0NDAg
LyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTMxNCw3ICsyNTMwNSw2
IEBACiAJCQkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkMzREE2QzBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzgzMUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRh
YmFzZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODczQjg2QjEzNjA2NEVBMDBBNTIyQzIg
LyogR2x5cGhQYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVC
NUQgLyogR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY0MEQwMEJGMjIwMDcx
Qjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNjIsNyAr
MjUzNTIsNiBAQAogCQkJCUE4RUE3RDJFMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MQXJlYUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNUYyOEZDMUE4MjdEODQwMEMwRjMxRiAvKiBIVE1M
QXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0EyMENENjMzMTAw
MEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5
NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3
MURDMUYwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThERjNGRDIwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTlCMjRERThFMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ4OSwyNSArMjU0NzgsNjIgQEAKIAkJCQk1MTNG
MTQ1NDBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTg1RkM3ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNjgxQkE3M0I1QjAwMkUwNTNCIC8qIElE
QkNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjkxQkI0Q0JGODAwMTI4OThG
IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2RDdENzIx
QkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTg1RkM1QjFCQjRCRTRDMDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRv
U2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTZEN0Q3MDFCQjVGMEJEMDBBRjdDNzcgLyog
SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVG
QzdCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
RjQxQTZBMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY0MUE2QzFCQTczQjVCMDAyRTA1M0IgLyogSURCQ3Vyc29yQmFja2VuZE9wZXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJ
REJDdXJzb3JXaXRoVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzgxMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNkUxQkE3
M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFGNDFBNkYxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQ2FsbGJhY2tzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUY0MUE3MTFCQTczQjVCMDAyRTA1M0IgLyogSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4MzFCQjRDNEU4MDAxMjg5OEYg
LyogSURCRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDODUxQkI0QzRF
ODAwMTI4OThGIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTg1RkM4NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZv
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4OTFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0
YWJhc2VNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODQ1M0YxQkI5RDA3RTAwNkE3
MkVEIC8qIElEQkVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4QjFCQjRDNEU4MDAx
Mjg5OEYgLyogSURCRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4
RDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
NDFBNzIxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTAzMTA1MDFCQThDQzAzMDAzMzI5QzAgLyogSURCRmFjdG9yeUlt
cGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzhGMUJCNEM0RTgwMDEyODk4RiAvKiBJREJH
ZXRSZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzkxMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTMxQkI0QzRFODAwMTI4OThG
IC8qIElEQkluZGV4TWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzk1MUJCNEM0
RTgwMDEyODk4RiAvKiBJREJLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzk3MUJCNEM0
RTgwMDEyODk4RiAvKiBJREJLZXlEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5OTFC
QjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZD
OUIxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTg1RkM5RTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MTg1RkNBMDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODVGQ0EyMUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBNDFCQjRDNEU4MDAxMjg5OEYg
LyogSURCT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzEwNUIxQkE4REI1
NjAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTg1RkNBNjFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUY0MUE3OTFCQTczQjVCMDAyRTA1M0IgLyogSURCUGVuZGluZ0RlbGV0ZUNhbGwuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjQxQTdBMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJQZW5kaW5n
T3BlbkNhbGwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAv
KiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
NDFBN0MxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxODVGQ0E3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZWNvcmRJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBOTFCQjRDNEU4MDAxMjg5OEYg
LyogSURCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwQTU4RkExQkFDQzdGMjAwQzE5
MjgyIC8qIElEQlJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMTA1RDFCQThE
QjU2MDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNDVC
MTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxRDcyMzZEMUJCNjE3NDkwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTg1RkNCQjFCQjRDQkY4MDAxMjg5OEYgLyogSURCU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBQjFCQjRDNEU4MDAxMjg5OEYgLyogSURCU2VydmVy
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4ODY0RTcxQkJCNEI4MzAwRTU0MEM5
IC8qIElEQlNlcnZlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4NUZDQUQxQkI0
QzRFODAwMTI4OThGIC8qIElEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0
MUE3NDFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUY0MUE3NjFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNhY3Rpb25CYWNr
ZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNzgxQkE3M0I1QjAwMkUw
NTNCIC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODVGQ0IwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNzFENTdDMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNTBFRjg2RDQ3MDA5RDBDQUYgLyogSWRlbnRpdHlU
cmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENEMTExOEM4RTQw
MENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLywKQEAgLTI1NTQ1LDcgKzI1NTcx
LDcgQEAKIAkJCQkwNzM2N0RERjE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFMTZDNTk1MTdDRkUxNzIw
MDg1MkMwNCAvKiBJbmJhbmRXZWJWVFRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCURC
MjNDMkNDMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTFFNkZBN0MxQkJCNEZDMzAwODcwMEQ5IC8qIENyb3NzVGhyZWFkVGFzay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjIxQkI0QzRFODAwMTI4OThGIC8qIEluZGV4ZWRE
Qi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0MjM0IC8qIElubGlu
ZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU3Q0I1MkUxODJBM0VGQzAwNzlBNjQ3IC8qIElu
bGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGNUUzMEExNTVBMDUwMDBB
NDIzNCAvKiBJbmxpbmVGbG93Qm94LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NTUzLDYgKzI1NTc5
LDcgQEAKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogSW5saW5lU3R5bGVTaGVldE93
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5s
aW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAx
IC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwQTU4RTUxQkFB
NDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzM0ODYxMjQxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTYxNCw3ICsyNTY0MSw2IEBACiAJCQkJMzE5
ODQ4MEMxQTFFNkNFODAwQTEzMzE4IC8qIEpTQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTY1REYzMURCMDlEMUMxMjMwMDBCRTMyNSAvKiBKU0F0dHIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEQTE1RTlFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MTg1RkM3ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBMDEyQjAzRUUxMDAzQTU4M0EgLyog
SlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUE2MTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY0
Miw3ICsyNTY2OCw2IEBACiAJCQkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFT
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBMjEyQjAzRUUxMDAzQTU4M0EgLyog
SlNDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTQxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTEwQTU4RTUxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjVERjMxRjQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTQ2hhcmFjdGVyRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDMDY1ODgwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDMDY1OEEwRjNDRTJBNzAwQ0QyRDg3IC8qIEpT
Q2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2OTcsNiArMjU3MjIsNyBAQAog
CQkJCTY1REYzMUY2MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDMjI2MEQwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpT
RE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRD
IC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0
NjMwMEI5OTE4RiAvKiBKU0RPTUNvcmVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQw
RUNBRTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRTA4ODhENTExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTcyMSwxNCArMjU3NDcsMTIgQEAKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJC
RTMgLyogSlNET01XaW5kb3dDU1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdD
QjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNC
RkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVFMEU5NDQxMTMzQzg5RjAw
QjRDQjEwIC8qIEpTRE9NV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3ODY4QkExMzZC
OTk5MjAwRDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVERjMxRkEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQURFQzc4RjgxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkVDRjdBREQxMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJy
b3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4OTFCQjRDNEU4MDAxMjg5OEYg
LyogSURCRGF0YWJhc2VNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODM3OEUwOUY4
NUQ0RjAwQjg1QUU0IC8qIEpTRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjcwRDZBMDlF
QjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUw
RkVGMzcyQjM3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI1NzQ1LDcgKzI1NzY5LDYgQEAKIAkJCQk4OTg3ODVGNTEyMkUxRUFDMDAzQUFCREEgLyog
SlNGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjZEOUQyN0IxNEVBQzA4NjAw
OTBENzVFIC8qIEpTRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA5RUJEQzAxNkI3
RjM4RTAwQ0JBM0ZDIC8qIEpTRm9udExvYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZD
QUIxQkI0QzRFODAwMTI4OThGIC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEQTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MThGNTAwMjE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MThGNTAwNDE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkQnV0dG9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzgzLDcgKzI1ODA2LDYgQEAKIAkJCQlBOEQwNjRGQzBB
MjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDkxOEM3MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOTI2RjgxMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0I3MUJCNEM3NjcwMDEyODk4RiAvKiBE
T01SZXF1ZXN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjE1MEExOUQ2MDYwMDdG
QjhDNSAvKiBKU0hUTUxIZWFkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMkYw
QTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhlYWRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUUyQUEzMTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSFJFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1ODAxLDcgKzI1ODIzLDYgQEAKIAkJCQlCQzQ5MUI3OTBDMDIzRUZEMDA5
RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYx
NDNBMENENjg5QzgwMEZBREE3NSAvKiBKU0hUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRTJBRTVDMEExRDI2RjIwMEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODExQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0ExODBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1M
TWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkJFMjY3MTFBRkIzRjIwMDA1RUEw
MyAvKiBKU0hUTUxNZXRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjJBMEEx
Q0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1
ODc4LDYgKzI1ODk5LDcgQEAKIAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNz
YWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAv
KiBKU01lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5
Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4ODM4
OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODY2MjlEMTA5REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNkY0MjBBMzE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlv
bkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTI3LDYgKzI1OTQ5LDcgQEAKIAkJCQk2NURG
MzIwMjA5RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8qIEpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNGRTJGMTIwQzFCNTgzODAwMjAyMzVGIC8qIEpTUmVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDk5OEFFQ0UxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjU5NzUsNyArMjU5OTgsNiBA
QAogCQkJCUE4NEVCRDgzMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUZGOEY2NTE4MDc0NUQ4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlw
dG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMDExMTA4MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NW
R0FFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg4NjRFNzFCQkI0QjgzMDBFNTQwQzkg
LyogSURCU2VydmVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5MTI5MjEzQ0E5
NTFFMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaERlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1MTVFQzkyMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTYxM0NBOTU2MTAwRDIxOTE1IC8qIEpTU1ZHQWx0R2x5
cGhJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk5NCw3ICsyNjAxNiw2IEBACiAJ
CQkJQjJGQTNENEYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRTdHJpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzRDUxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTMwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHQW5pbWF0ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0MyQzM0
MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NDk2RTM5RTEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDU3MEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYwMDMsNyArMjYwMjQsNiBAQAogCQkJCUIyRkEzRDVEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0NvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1RjBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJGQTNENjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ3Vyc29yRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTEwQTU4RkExQkFDQzdGMjAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdE
ZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjUwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHRGVzY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDY3MEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDI4LDcg
KzI2MDQ4LDYgQEAKIAkJCQlCMkZBM0Q4MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDg1MEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR0ZFSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q4
NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTE4NUZDOTUxQkI0QzRFODAwMTI4OThGIC8qIElEQktleS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNEODkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDIyNDE4NDEwN0U3N0Y0MDA3NjZBODcgLyogSlNTVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q4QjBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYw
NDQsNyArMjYwNjMsNiBAQAogCQkJCUE4M0I3OTAyMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0Zv
bnRGYWNlTmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4M0I3OEZFMENDQUZGMTUw
MDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTgzQjc4RkMwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkNBOTFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDlCMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjdCMjgyODBD
RUYwQzA3MDBEMzlENTQgLyogSlNTVkdHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYyMTcsMTIgKzI2MjM1LDEwIEBACiAJCQkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExh
YmVsYWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTZGQTI3MTFBRDRBODMwMDIw
QjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIwQTcx
QTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNBMDFC
QjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
NEM5NkUzMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZs
dXNoU2NoZWR1bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDkxNkZGNzE5NURGNkEw
MDA1QUIzNDkgLyogTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQ0IwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU4MDM3MTY0MUE2NkYxRDMwMEJBRjUxOSAvKiBMYXllckZyYWdtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUEzQTZBMDE5NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQ
b29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5
b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjIzMCw3ICsyNjI0Niw2IEBACiAJ
CQkJMTQxREMwNTMxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExMjUzOEQ0MTNGOUI2MEEwMDAyNDc1NCAvKiBMYXlvdXRSZXBhaW50ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MURDMDU0MTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRTaXplLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlCQzc3OUUxNDFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5MDY2MDcwQkUxNDFENDAwOTU2
OTk4IC8qIExheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA0ODE2NDgzNDhG
MDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwM0MyQjkxQkEy
M0EyNjAwRTI2MzM3IC8qIExlZ2FjeUFueS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMzNCw3ICsy
NjM0OSw2IEBACiAJCQkJQ0UxMjUyNDExQTE2QjFCNjAwODY0NDgwIC8qIE1lZGlhUGxheWVyU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkUyQ0FGQzE5RkYwMjA3MDAxRUVCNEYgLyogTWVkaWFQ
cm9kdWNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkEwQTM5REFDQzAwMjIwRkU1IC8q
IE1lZGlhUXVlcnkuaCBpbiBIZWFkZXJzICovLAotCQkJCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVF
MyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkMwQTM5REFD
QzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRF
MTk1OTJFMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEM0E5NEEzOTEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxpc3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjYzNTIsOCArMjYzNjYsNiBAQAogCQkJCUM5RDg1MUYwMUIzOURDNzgwMDg1
MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5
NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MTg1RkNBNjFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29k
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRERDMUU3QTE4QTk1
MkYzMDAyN0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDYxRkU2ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjM4MSw4ICsyNjM5Myw4IEBACiAJCQkJMDcwNTg1MjQxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OUM3Q0NCMzE4QzY2M0U0MDAzMkU0MTMgLyogTWVtb2l6ZWRET01S
ZXN1bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNkQ3RDcwMUJCNUYwQkQwMEFGN0M3NyAvKiBJ
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZD
MTgwOTc5QzNCRDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTcxRENDODEzODVFNkE0MDA3MDJERDAgLyogTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGQTA5OUU2NDkyMDA1NkU1ODEgLyog
TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQURF
Q0NFMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjM5Miw3ICsyNjQwNCw2IEBACiAJCQkJQTc4RTUyNzAxMzQ2QkQxNzAwQUQ5QzMxIC8qIE1l
dGVyU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdERENEQTUxMzg0NTAxQzAw
MDhCNzkzIC8qIE1IVE1MQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdERENEQTcxMzg0
NTAxQzAwMDhCNzkzIC8qIE1IVE1MUGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNC
OTFCQjRDQkY4MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0I4OTVBRjE5REM3RUQ5MDA5Q0FBOTMgLyogTWljcm9UYXNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzN0REQ0Q5NTEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0MDAsNyArMjY0MTEsNiBAQAogCQkJCUNFMTI1MjQ5
MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RGMkIwMTMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJC
MDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QTBGRkE5RTFBQUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQy
NCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQ0OCw3
ICsyNjQ1OCw2IEBACiAJCQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTI2NzcyNjAxMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRjQzREQwRTY3NDAxMjAwMUMxMjg3IC8qIE5pbmVQaWVj
ZUltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5RTFCQjRDNEU4MDAxMjg5OEYgLyog
SURCS2V5UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI1MjA5Rjg0QjcxMDBD
QTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzEwQTIyOTdCRTAwNThE
N0FEIC8qIE5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzMzMEEyMjk3QkUw
MDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM1
LDcgKzI2NTQ0LDYgQEAKIAkJCQk3QTY3NEJEQzBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3Vw
TG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMDE5QzdCNTJFMDBCM0M1
QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5RDAyMTlDN0I1MkUw
MEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
NDVCMTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZCREI2MUExMTZENjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM4MjA4OTUxNDdEMzVGOTAwMTBCQzA2IC8qIFBhZ2VS
dW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RjM2RDNCMThGNzU4NzIwMDU0QzAy
NCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjY1ODUsNyAr
MjY1OTMsNiBAQAogCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjYwMUVCRjE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUE0ODcwMTRBMDUyNTMw
MDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUI1OEZENDE5NUE5NjREMDAyOTkwQjAgLyogUGxhdGZv
cm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQg
LyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NjM3LDcgKzI2
NjQ0LDYgQEAKIAkJCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0VCQzBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFQzBDRDY4MUI1MDBGQURB
NzUgLyogUHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4ODY0RTExQkJBRjU3
NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE1
RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTJBNjgyNDBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUNBREQ3OTE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NjQ4LDkgKzI2NjU0LDkgQEAKIAkJ
CQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFGOEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VFMjdBQ0IxQkJCNTNBMjAwNzI0MDBBIC8qIHB0
aHJlYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAv
KiBQdWJsaWNTdWZmaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEz
REI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUUyN0FDQjFC
QkI1M0EyMDA3MjQwMEEgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwQTBC
Q0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFMTI1MjNEMUExNjc2Q0QwMDg2NDQ4MCAvKiBRdWFydHpDb3JlU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NDJBRjdBOTEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29rLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2NjY5LDYgKzI2Njc1LDkgQEAKIAkJCQlGNTVCM0RDRTEyNTFGMTJEMDAzRUYy
NjkgLyogUmFuZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFODRFOUUxMTc2NjhC
RjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyN0Mx
MUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJs
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFNkZFQTFC
QkQxNjg0MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGlt
ZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjY4NjEsNyArMjY4NzAsNiBAQAogCQkJCTUxNEM3NjdGMENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJl
dmVyYkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUIxMkIwMjZGNzAwQzFB
MzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBB
RDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMjY5MDEsNyArMjY5MDksNiBAQAogCQkJCTA3OEUwOTJBMTdEMTREMUMwMDQyMEFBMSAvKiBS
VENTdGF0c1JlcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NDUxN0QxNkUxQzAwNDIw
QUExIC8qIFJUQ1N0YXRzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MkIxN0Qx
NEQxQzAwNDIwQUExIC8qIFJUQ1N0YXRzUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQzVCMUJCNEJFNEMwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3OEUwOTJDMTdEMTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c1Jlc3Bv
bnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDk0NjE3RDE2RTFDMDA0MjBBQTEgLyogUlRD
U3RhdHNSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTQ3MTdEMTZFMUMw
MDQyMEFBMSAvKiBSVENWb2lkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk4MCw2ICsy
Njk4Nyw3IEBACiAJCQkJQkM2RDZFMjYwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1NUIzREQyMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCNzE3MDg5MEIzMTE4MDgwMDE3MTIzRSAvKiBT
ZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBFNzA1OEY0MUJDNUNFREEwMDQ1
QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2
RUIxNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNEMEUwRkIwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUUzQUEwQjFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRh
LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTExLDYgKzI3MTE5LDcgQEAKIAkJCQlCQ0VGNDQ0RDBF
Njc0NjI4MDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM5M0U2MDUxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlEQUM3QzU3MUFGMkNCNjQwMDQzN0M0NCAvKiBTdHlsZUNvbnRlbnRBbGln
bm1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYg
LyogU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdG
MEU4MUQ0QTcwMEIyNTk2NSAvKiBTdHlsZURhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDNEE3RkQwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCOEI5MEU4MjAxQkQwMEIyNTk2NSAvKiBTdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjczMjEsNyArMjczMzAsNiBAQAog
CQkJCTgzQzFENDMxMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRh
bFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzIxNzhENUFCNTAwMTQxRTY4IC8qIFNW
R1BhdGhTZWdMaW5ldG9SZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTdEMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQzdCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQzFENDMzMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxB
YnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDM0MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQ
YXRoU2VnTGluZXRvVmVydGljYWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTgxMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM3
MiwxNCArMjczODAsMTIgQEAKIAkJCQlCMjIyN0FDMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3lt
Ym9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQzUwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1Rlc3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEYwQkZDMzEyNTVDNTNDMDAwNzUx
ODUgLyogU1ZHVGV4dENodW5rLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNBMjFCQjRDNEU4
MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDgxNjY4RDQxMjU2MDNCRjAwNkYyNURFIC8qIFNWR1RleHRDaHVua0J1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QUM4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJGQzQxMjU1QzUzQzAwMDc1
MTg1IC8qIFNWR1RleHRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QzJGN0ExMjM5
MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODEwOTNEQzEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4QjFCQjRDNEU4MDAxMjg5OEYgLyog
SURCRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODE2NjhEQTEyNTYwM0Q1
MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgw
RTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDgwRTQ5MjgxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlv
dXRFbmdpbmVTcGFjaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDM1LDcgKzI3NDQxLDYgQEAK
IAkJCQlCMkFGRkM5QTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkMzREE0MDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjVXNlckRlZmlu
ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTQyMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0
Q29kZWNVVEYxNi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQjIxQkI0QzRFODAwMTI4OThG
IC8qIEluZGV4ZWREQi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0M0NCODIxMkYyNUU1MTAwMzND
NUVFIC8qIFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkI5N0NBMTMxMzg5
NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3QkM4NEI0MTIzNzExODAwMDBDNjE2MSAvKiBUZXh0RG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjc1MjksNiArMjc1MzQsNyBAQAogCQkJCUFBNDczOUQyMTc1N0FGRUMwMEU3Njc2
NyAvKiBVSVJlcXVlc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIyRDhBNzkxNDk5N0ND
RjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODYzRTIwMTEzNDM0
MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODg2NEUx
MUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTRBRkNGQTUwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUQwODZGRTk4MDlENTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDE3NjJFMDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI3NzUxLDYgKzI3NzU3LDcgQEAKIAkJCQlGMzQ3NDJFMTEzNDM2MzFG
MDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNF
MjY0MzExNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjQxQkI0QzRFODAwMTI4OThGIC8qIFdvcmtlckdsb2Jh
bFNjb3BlSW5kZXhlZERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0Y4RTY2NjE1MUQ0
QTRFMDBEMkQxODEgLyogV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM2RTA3QTUxMzU4QThCRTAwQUFDQkM5IC8qIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjgxMTIsNyArMjgx
MTksNiBAQAogCQkJCTM3RjU3QUNEMUE1MDcyRDcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQ0UxQTUwNzJE
QTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNTE0ODQ1M0UxQkI5RDA3RTAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE5MUM5RkMyMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmls
aXR5VHJlZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjVEMzFERkExMUNGNjEwQjAwOUYy
MkI0IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZF
MEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODEyNywxMSArMjgxMzMsOSBAQAogCQkJCTMxNkZFMTEzMEU2RTFEQTcwMEJGNjA4OCAvKiBB
bmltYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxOTg0ODAyMUExRDgx
ODEwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5
MTJBQzBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk1MTg1RkM5ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzMwOURENjA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQkMwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxp
Y2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQkUwREI1NUNEQzAwMURC
Nzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1
RkM3RDFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTI0RjU0RUFDMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThGNkJDMDBEQjU1Q0RDMDAxREI3OTQgLyogQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkFBQzU4MERD
MkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI4MTkyLDcgKzI4MTk2LDYgQEAKIAkJCQk0NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMg
LyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNTAw
QTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzAzNjNFMTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gaW4g
U291cmNlcyAqLywKLQkJCQk1MTg4NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgxQTFDREMwMEMwNzRBNSAv
KiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTUx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGwubW0gaW4gU291cmNlcyAqLywKQEAgLTI4MjI1LDcgKzI4MjI4LDYgQEAKIAkJCQk5NzZENkM3
ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFG
MzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFE
MzFDREMxOTE5NjAyMDAwMTAwNUEzIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk1MTg1RkM3NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxNjRBMkVEMTkxQUU2MzUwMDEwNzM3RCAvKiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTRBOTRENzE2REZERjk1MDA2OERF
ODIgLyogQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFREVGMUY2MTIxQjBF
RkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgy
OTcsNyArMjgyOTksNiBAQAogCQkJCTE0RDgyMzhCMEFGOTJERjYwMDA0RjA1NyAvKiBDaHJvbWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUJBRjIyMDgwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9t
ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzNDhCRkFCMUI4NTcyOTgwMDkxMkYzNiAvKiBD
bGFzc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDODAxQkI0QzRFODAw
MTI4OThGIC8qIElEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYz
Q0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2
NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yODQyMSw3ICsyODQyMiw2IEBACiAJCQkJQkMwMkE2NDYwRTA5QUFFOTAw
NEI2RDJCIC8qIENTU0Z1bmN0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyM0U0
RTEwREFBQ0UwRjAwOUZEQzkxIC8qIENTU0dyYWRpZW50VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjUwRjUzREQwOUQxNURERjAwQzlCMEM4IC8qIENTU0dyYW1tYXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE4NUZDQTgxQkI0QzRFODAwMTI4OThGIC8qIElEQlJlcXVlc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0Q3REJCMjgxOENBMTlBNDAwQzExMDY2IC8qIENTU0dyaWRMaW5l
TmFtZXNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDNFMjUyMzE4MDQ2QkNEMDBFMjdG
NTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
QkY4OTA0NTE2OUU5RjFGMDA1MkQ4NkUgLyogQ1NTR3JvdXBpbmdSdWxlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjg1NDQsMTIgKzI4NTQ0LDEwIEBACiAJCQkJQTc4MUM2QTcxMzgyOEI1RDAwMTJB
NjJBIC8qIERvY3VtZW50TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFMDU3RkE1MTIy
MDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ5NDdGRkQxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM3NDFCQjRDNEU4MDAxMjg5OEYgLyogRE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzIyODBFMTFENEE1
OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTRG
NDhBOTE2QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBRDZFNzFBQzE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQ
b29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCOTA1NjE5MEYyNTc4QkUwMDk1RkY2QSAvKiBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDODYx
QkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODE4NUYzQTA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3Mzg4OUEwMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdBRTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODY1MCw3ICsyODY0OCw2IEBACiAJCQkJODU0MDc1NkMw
QUQ2Q0JGOTAwNjIwQzU3IC8qIERPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODVERjJGOUMwQUEzQ0FFNTAwQUQ2NEM1IC8qIERPTUhUTUxPcHRpb25zQ29sbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MTgzQjQ3MEFBNjkyNjEwMEYxOUZBMyAvKiBET01I
VE1MUGFyYWdyYXBoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxODg2NEUwMUJCQUY1
NzEwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NUVDQkVGODBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1MTgzQjQ5MEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MUHJlRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE0MjI2RTk2MTE2M0Q3M0EwMDhCODM5NyAvKiBET01I
VE1MUHJvZ3Jlc3NFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODY3MCw3ICsyODY2Nyw2
IEBACiAJCQkJQTgxODVGM0UwOTc2NTc2NjAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01JbnRl
cm5hbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1RkYzMTVCMEFBRkJGQ0IwMDM3NEYzOCAvKiBE
T01LZXlib2FyZEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFENzIzNkMxQkI2MTc0OTAw
NDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwNjU2RkYw
QUFCNDc2MzAwMkQxNUMwIC8qIERPTU1lZGlhTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc1
NzkzRUQ0MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQlFMUFDQUY0QzBFNzkxQUFGMDA4N0QxMkIgLyogRE9NTWVzc2FnZVBvcnQubW0gaW4g
U291cmNlcyAqLywKQEAgLTI4NzIzLDcgKzI4NzE5LDYgQEAKIAkJCQkzMTA2MDM3QTE0MzI4MUNE
MDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0OTgzOTE1MTBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOEFEMEE1OTcxNEM4ODM1ODAwMEQ4M0M1IC8qIERPTVdlYktpdENTU1Jl
Z2lvblJ1bGUubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMg
LyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2MTFFNjIwRTFDNEUx
NDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJM0YyQjMzRUMxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVs
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCThBMTk1OTMzMTQ3RUExNkUwMEQxRUE2MSAvKiBET01X
ZWJLaXROYW1lZEZsb3cubW0gaW4gU291cmNlcyAqLywKQEAgLTI4NzMyLDYgKzI4NzI3LDcgQEAK
IAkJCQkxNDAzQjk5ODA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZENjc3NzM4MTk1Q0FGM0QwMDcyRTBEMyAvKiBET01XaW5kb3dDU1MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE3RkJBMUUxNTFBQjE3QzAwQjU3OTU5IC8qIERPTVdpbmRvd0V4
dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM3NDFCQjRDNEU4MDAxMjg5OEYg
LyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QjM4
RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3RDJBRDAzMTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFENzE2QTQ4NjFBMDA5NzVBMjUgLyogRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg4MzEsNyArMjg4
MjcsNiBAQAogCQkJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0QjNGNzYwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0
ZW1NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYwMzAwQjBDQzQyNTEyMDBDOEFDMjUgLyog
RmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzg4MUJCNEM0RTgw
MDEyODk4RiAvKiBJREJEYXRhYmFzZU1ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NUVCNjlFMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDhDOTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODg5NSw3ICsyODg5MCw2IEBACiAJCQkJNEE4Qzk2
RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzRDRDYyOUExODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDQUYxQkI0QzRFODAwMTI4OThGIC8qIElEQlZl
cnNpb25DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUNCRkVGOTA5NzRGNjA3
MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUFGMTIz
OTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUM4MUI4OTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjg5NDksNyArMjg5NDMsNiBAQAogCQkJCUE4Q0ZGN0E0MEExNTY5
NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODcxRDQ1RTBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTEFwcGxldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThFQTdEMkYwQTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxBcmVhRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM5RDFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5
UmFuZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNUYyOEZCMUE4MjdEODQwMEMwRjMx
RiAvKiBIVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjEz
QTEwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTg3MURDMkEwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxCYXNlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI5MDMxLDcgKzI5MDI0LDYgQEAKIAkJCQlBNDNCRjU5ODExNDkyOTBB
MDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OENGRjdBNTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTFF1b3RlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEQyMjNGRDE2QjUyRTRFMDAxNTcyODggLyogSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzk0MUJCNEM0RTgwMDEyODk4RiAvKiBJ
REJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURDMjIwQTE1MjA1NzAwQjEyQTY4IC8q
IEhUTUxTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODc0MTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
MTM2OUQ5MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI5MDYxLDcgKzI5MDUzLDYgQEAKIAkJCQlBOEVBNzlGMzBBMTkxNkRGMDBBOEVG
NUYgLyogSFRNTFVMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBQTBD
RDYzMzEwMDBGQURBNzUgLyogSFRNTFZpZGVvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4MzlBQUZFQzFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNDExQTkwNDIxQkJBQjQ3QTAwMENGMTU2IC8qIFdlYkNvcmVKU0J1aWx0aW5z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQ
SGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzkwMEMzMTk0M0MwRkMwMDg2MjVC
NSAvKiBIVFRQSGVhZGVyTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzIwQ0U5
MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkwNzMs
MTggKzI5MDY0LDQ3IEBACiAJCQkJNTEzRjE0NTMwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1OEUwQjA1M0E2NjAwMkNFNjRGIC8qIElj
b25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUUxRUNDMDBDOTFDOTA0MDBEQzI1NUIgLyog
SWNvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM3NzFCQjRDNEU4MDAxMjg5
OEYgLyogSURCQW55LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1ODVBNjYyMTFENEZBQzUwMDRD
M0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxNkQ3
RDcxMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE2RDdENkYxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM3QTFCQjRDNEU4MDAxMjg5OEYgLyog
SURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTY5MUJBNzNCNUIwMDJFMDUz
QiAvKiBJREJDdXJzb3JCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTZCMUJB
NzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTg1RkM3RDFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzgwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJE
YXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY0MUE2RDFCQTczQjVCMDAyRTA1M0Ig
LyogSURCRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTcwMUJB
NzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE4NUZDODQxQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzg2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCQTRBQzMxQkJCNUNE
ODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1
RkM4ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VNZXRhZGF0YS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTQ4NDUzRTFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTE4NUZDOEExQkI0QzRFODAwMTI4OThGIC8qIElEQkV2ZW50RGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4QzFCQjRDNEU4MDAxMjg5OEYgLyog
SURCRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTAzMTA0RjFCQThDQzAzMDAzMzI5
QzAgLyogSURCRmFjdG9yeUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOTAxQkI0
QzRFODAwMTI4OThGIC8qIElEQkluZGV4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzk0
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZD
OTYxQkI0QzRFODAwMTI4OThGIC8qIElEQktleURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTE4NUZDOTgxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGguY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTE4NUZDOUExQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxODVGQzlEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOUYxQkI0QzRFODAwMTI4OThGIC8qIElEQk9i
amVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQ0EzMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJPcGVuREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDMxMDVBMUJB
OERCNTYwMDMzMjlDMCAvKiBJREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUY0MUE3QjFCQTczQjVCMDAyRTA1M0IgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkNBODFCQjRDNEU4MDAxMjg5OEYgLyog
SURCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBBNThGOTFCQUNDN0YyMDBDMTky
ODIgLyogSURCUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwMzEwNUMxQkE4
REI1NjAwMzMyOUMwIC8qIElEQlJlcXVlc3RJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
NDVCMTA5MUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFENzIzNkMxQkI2MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQkExQkI0Q0JGODAwMTI4OThGIC8qIElEQlNl
cnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg4NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyog
SURCU2VydmVyT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQ0FDMUJCNEM0
RTgwMDEyODk4RiAvKiBJREJUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY0
MUE3MzFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjQxQTc1MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTc3MUJBNzNCNUIw
MDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxODVGQ0FGMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3MUQ1N0IwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZp
ZXJSZXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTQxNUIwMDYzRjAwMjc2RDM5IC8q
IElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTYxNUIwMDYz
RjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI5MTIzLDYgKzI5MTQzLDcgQEAKIAkJCQlBQTRDM0E3NjBCMkIxNjc5MDAyMzM0QTIgLyog
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODU5MDk3
RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFD
MDEwNzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTEwQTU4RTQxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0UzNTI0QjEyNDUwQzUyMDBCQUY1RDkgLyogSW5w
dXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMzNDg2MTIzMTVGREUyMUUwMDdBMUNDOSAv
KiBJbnB1dFR5cGVOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURFOTA5OUU2NDky
MDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI5MTU4LDcgKzI5MTc5LDYgQEAKIAkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyog
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgxMEMxQjEz
NjVBNDk2MDBFRDZFMzMgLyogSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjM1MEI3MzUxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOEMxQkI0QzRFODAwMTI4OThGIC8qIElEQkZhY3Rv
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ0NkYwNEUxN0I5NkZCRDAwNTY0N0YwIC8qIElu
dFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTdDMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRQb2ludE1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjkxNzcsNyArMjkxOTcs
NiBAQAogCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUM5MTJCMDNGNTAwMDNBNTgzQSAvKiBK
U0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUE3OTVDNjE4ODhCQURDMDAz
ODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
MTg1RkNBQzFCQjRDNEU4MDAxMjg5OEYgLyogSURCVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE5ODQ4MEIxQTFFNkNFNDAwQTEzMzE4IC8qIEpTQW5pbWF0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxREEwOUQxQzEyMzAwMEJFMzI1IC8qIEpTQXR0ci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJFRDZCQzBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRy
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzMzAsNyArMjkzNDksNiBAQAogCQkJCUUw
RkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUM2QTcwMzMyNUM5RDBCNkNEQ0JDNEQ3NyAvKiBKU0V2ZW50VGFyZ2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNjA5MDIwMEU5MUI4RUMwMDBDNjhCNSAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzlGMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzE0QUNFQjEwODkyMDg2
MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcyNEVE
MzMxMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTcyRjFBREE1MUEzOTBCOUYwMDAxNEUxOCAvKiBKU0VYVEZyYWdEZXB0aC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI5MzkyLDcgKzI5NDEwLDYgQEAKIAkJCQk5QjFBQjA3QzE2NDhDN0M0
MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEQwNjRGQjBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAzIC8qIEpT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzdBMUJC
NEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0OTE4
QzYwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzJFRDdBNTBDNkMwRjM2MDA5MjBCRkYgLyogSlNIVE1MRnJhbWVFbGVtZW50Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTI2RjgwMEMwNTUyNDcwMDgyNzc2QiAvKiBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTUxNyw2ICsyOTUz
NCw3IEBACiAJCQkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURFRERCMEU3NkJEOTMwMDRBMUE1RSAvKiBK
U01lc3NhZ2VQb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURFRDQ3MEU3NkI4REQwMDRB
MUE1RSAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzODgz
ODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODY2MjlEMjA5REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUM2RjQyMEEyMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRkIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
TXV0YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTc1LDYgKzI5NTkzLDcgQEAK
IAkJCQk2NURGMzIwMTA5RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEyOURGODUxQkI1Qjgw
NzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDNEM5NkRFMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkUyRjExMEMxQjU4MzcwMDIwMjM1
RiAvKiBKU1JlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5OEFFQ0QxM0Y5RDZDOTAwOTBC
MUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yOTY5Miw3ICsyOTcxMSw2IEBACiAJCQkJQjJGQTNEOTQwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0Q5
NjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGaWx0ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyN0IyODI1MENFRjBDMDcwMEQzOUQ1NCAvKiBKU1NWR0ZvbnRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTUxODVGQ0JBMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzQjc5MDQwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4M0I3OTAxMENDQUZGMTUw
MDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODNCNzkwMzBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZU5hbWVFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3ODgsNyArMjk4MDYsNiBAQAogCQkJCTA3QjVBMkRC
MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDdCNUEzMEQxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxQTBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFu
Z2VzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNkQ3RDZGMUJCNUYwQkQwMEFGN0M3NyAvKiBJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdDMTYxODgz
MjJFQjAwQzk1NEI1IC8qIEpTVG91Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdDMTgx
ODgzMjJFQjAwQzk1NEI1IC8qIEpTVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkRBN0MxQTE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yOTgwMSw3ICsyOTgxOCw2IEBACiAJCQkJQTg2NjI5RDAwOURBMkI0ODAwOTYzM0E1IC8q
IEpTVUlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQUE0RkFEMzE3NUQ1Q0IzMDA3NDM4
NzMgLyogSlNVSVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzczRkIxMTE5
MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE4NUZDQTMxQkI0QzRFODAwMTI4OThGIC8qIElEQk9wZW5EQlJlcXVlc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMEMxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzczRkIxOTE5MUVG
ODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTgyNiw3ICsyOTg0Miw2IEBACiAJCQkJQkMy
Q0JGN0IxNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDEwRTQyMzA3IC8qIEpTV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNGQUQzODE0NzMzRjQwMjBFNDIzMDcg
LyogSlNXZWJHTERlYnVnU2hhZGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4NDFC
QjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzBBIC8qIEpTV2ViR0xE
cmF3QnVmZmVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3Qjk5NzEwNDJEMkQzMDAwOUQ0
NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4NDEsNyAr
Mjk4NTYsNiBAQAogCQkJCTZGOTk1QTMzMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMU2FtcGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QjlBMjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNX
ZWJHTFNoYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMDdEMzM1NTE1MkI2MzBFMDAxQjYz
OTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MTg1RkM4QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTZGOTk1QTM1MUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMU3luYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QjlBNDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJH
TFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMzcxQTcwODMzNzAwQTczNUY0
IC8qIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDI5
LDYgKzMwMDQzLDcgQEAKIAkJCQkwNzA1ODUzODE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlDN0NDQjUxOEM2Qjg5OTAw
MzJFNDEzIC8qIE1lbW9pemVkRE9NUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2
QzE3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MUJBNEFDQTFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTY1N0VEQTA4MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQURCNkIyOTgxOEZCOTAyNDAwODE5
NjNFIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMDlERjkwOTlFNjQ5MjAwNTZFNTgxIC8qIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5k
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAwODEsMTMgKzMwMDk2LDEwIEBACiAJCQkJNDQzRjA0
MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAv
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUJB
NEFDQTFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI2OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUY0M0UwMEU2NzQxMTAwMDFDMTI4NyAvKiBOaW5lUGllY2VJbWFn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwMDA5RDU2MzI3MDAwM0FDOEQgLyogTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTQ1QjEwOTFCQzQ4RTJFMDBFODYyMTkgLyogSURC
UmVzb3VyY2VJZGVudGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMjlERjg1MUJCNUI4
MDcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NTRGRTczMjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTczNDBBMjI5N0JFMDA1OEQ3QUQg
LyogTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUFDMTA5MUI0ODNEN0Yw
MDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDEzMCw3ICsz
MDE0Miw2IEBACiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODIwODkyMTQ3RDM1RjkwMDEwQkMwNiAvKiBQ
YWdlQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURBRUQyMDMwMTZGMjQ0MkIw
MDcwRUMwRiAvKiBQYWdlQ29uc29sZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTBB
NThGOTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzAyQjBCRDBENzlGODI5MDBDN0VFODMgLyog
UGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA0ODgsNiArMzA0OTksNyBAQAogCQkJ
CUU0NTM5MDQ1MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM1MzY3NkIwOUFFRDg4QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGNTVCM0REMTEyNTFGMTJEMDAzRUYyNjkgLyogU2VhcmNoSW5wdXRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBFNzA1OEVFMUJDNUJDMTkwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYy
MjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNE
MEUwRkEwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxRTNBQTBBMUI5OEJDQUIwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMDg2MCw3ICszMDg3Miw2IEBACiAJCQkJQjFBRDRFNzMxM0Ex
MkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RDQTgyOTYxNjc5MTAwRjAwODc1NzE0IC8qIFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOTYxQkI0QzRFODAw
MTI4OThGIC8qIElEQktleURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk0OTg2ODMxOTUz
NDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk4NzcwRjAxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFNjVEMzIwRUFEMTIxMTAwN0U0NTMzIC8qIFRoZW1lLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzA4NzksNyArMzA4OTAsNiBAQAogCQkJCTFGNzJCRjBBMTg3RkQ0NDkwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8qIFRpbGVDb3ZlcmFnZU1hcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QUEzQTY5QjE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUdyaWQuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOTAxQkI0QzRFODAwMTI4OThGIC8qIElEQkluZGV4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODc3MEYyMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxp
bmdEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRERCMTI1MUYxMkQwMDNFRjI2OSAv
KiBUaW1lSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NTNDRkU5MTA4RjQ3M0Yw
MEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MDg4OCw3ICszMDg5OCw2IEBACiAJCQkJQTFERTcxMzIxODYxMzIyMjAwNzM0MTkyIC8qIFRvdWNo
Q29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREU3MTJEMTg2MTJBQzEwMDcz
NDE5MiAvKiBUb3VjaEV2ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREOTE0NUEw
MDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxQkE0QUMz
MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcwMzM0RDMxNDU5RkZBRDAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkU4OEUwQzExNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkZBQzMwRkYxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2Jq
ZWN0cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTEwLDYgKzMwOTE5LDcgQEAKIAkJCQk4NTAz
MUI0RDBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzM1NEEzQzBCMjRGOEM5MDAzRjZERUEgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBQTQ3MzlEMTE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4ODY0RTAxQkJBRjU3MTAwRTU0MEM5IC8qIFVuaXF1
ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwODZGRTk5MDlENTNBQUIwMDVC
Qzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMTc2MkRGMTc2
Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU5Mzky
MzcwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTQyLDcg
KzMwOTUyLDYgQEAKIAkJCQkyRTNCQkYwNzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNUExNTQyNzEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1l
c3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQUUxMkIwMjZGNzAwQzFBMzU5IC8q
IFZlY3Rvck1hdGguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOUExQkI0QzRFODAwMTI4
OThGIC8qIElEQktleVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTgzREIxMTgzQzQ0
MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMDk4Miw2ICszMDk5MSw3IEBACiAJCQkJQ0RDNjlEREIxNjM3MUZE
NDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDNjlERDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2FybmluZ1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3
NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTFB
OTA0MjFCQkFCNDdBMDAwQ0YxNTYgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE0MDM3OUMxMjRCRUE3RjAwQUY0MEU0IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2Vy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM0RDlCQTUwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNv
cmVOU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1QjRDMjRFMTUwOTIzNkMw
MEE2RUYzNyAvKiBXZWJDb3JlTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKQEAgLTMxMDQx
LDcgKzMxMDUxLDYgQEAKIAkJCQk5NzZENkM3QjEyMkI4QTNEMDAxRkQxRjcgLyogV2ViS2l0Qmxv
YkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwNjAzNkYxNDMyN0QyRTAwQUJGNEJB
IC8qIFdlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODM5MTU4
MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTE2RDdENzExQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThD
NEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZG
RkY5QTgxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMxMDY2LDcgKzMxMDc1LDYgQEAKIAkJCQk5N0FBQkQyNjE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxREVB
NDU1MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xh
eWVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDQjMxQkI0QzRFODAwMTI4OThGIC8qIFdv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
ODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEODIwMzBE
MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTA5OCw2ICszMTEwNiw3IEBACiAJCQkJRjM0NzQyRTAx
MzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTNFMjY0MzAxNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NDgwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2Jh
bFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQ0IzMUJCNEM0RTgwMDEyODk4RiAv
KiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0Y4RTY2NTE1MUQ0QTRCMDBEMkQxODEgLyogV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRp
b25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNkUwN0E0MTM1OEE4QkUwMEFBQ0JDOSAvKiBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjRD
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMxMTA5LDcgKzMxMTE4LDYgQEAKIAkJCQlGMzQ3NDJFODEzNDM2MzUwMDA1MzFCQzIgLyogV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdENkIzNEEwRjYx
MTA0NTAwQjc5RkQxIC8qIFdvcmtlclNjcmlwdExvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRTQzNDY1NDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMEE1OEU0MUJBQTQwQjEwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEI5MDU2RjgwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMkMxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA5RTIzMDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1
bW15U3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCmluZGV4IGI5NWQ4NWMuLjgyNGI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xNDYsOCArMTQ2LDggQEAgcHVibGljOgogY2xhc3MgRW1w
dHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgeyByZXR1cm4gbV9wb3B1cC5nZXQoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlY2VudFNlYXJjaD4mKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCmluZGV4IGYxOTlmYWIu
LjlhYWVlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVw
TWVudS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCkBA
IC0yMiwxOCArMjIsMjQgQEAKICNkZWZpbmUgU2VhcmNoUG9wdXBNZW51X2gKIAogI2luY2x1ZGUg
IlBvcHVwTWVudS5oIgorI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgUmVjZW50U2VhcmNoIHsKKyAgICBT
dHJpbmcgc3RyaW5nOworICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
dGltZTsKK307CisKIGNsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFNl
YXJjaFBvcHVwTWVudT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgp
IHt9CiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBz
ZWFyY2hJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNo
SXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDQzZGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgU2VhcmNoUG9wdXBNZW51Q29jb2FfaAorI2RlZmluZSBTZWFyY2hQb3B1cE1l
bnVDb2NvYV9oCisKKyNpbXBvcnQgIlNlYXJjaFBvcHVwTWVudS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNlYXJjaFBvcHVwTWVudUNvY29hIHsKK3B1YmxpYzoKK1dFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcyk7CitXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpOworfTsKKworfQorCisj
ZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51Q29jb2FfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wNWIzNGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KQEAgLTAsMCArMSwx
MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIgorCit1
c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgZGF0ZUtleSA9IEAiZGF0ZSI7CitzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBpdGVtc0tleSA9IEAiaXRlbXMiOworc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc2Vh
cmNoZXNLZXkgPSBAInNlYXJjaGVzIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHNlYXJjaFN0
cmluZ0tleSA9IEAic2VhcmNoU3RyaW5nIjsKKworc3RhdGljIE5TU3RyaW5nICpzZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgTlNTdHJpbmcgKmFwcE5h
bWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOworICAgIGlmICgh
YXBwTmFtZSkKKyAgICAgICAgYXBwTmFtZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10g
cHJvY2Vzc05hbWVdOworICAgIAorICAgIE5TU3RyaW5nICpzdG9yYWdlUGF0aCA9IFtbTlNIb21l
RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFyeS9XZWJL
aXQiXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YXBwTmFtZV07CisgICAgcmV0dXJu
IHN0b3JhZ2VQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGguc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aDsKK30KKworc3RhdGljIE5TU3RyaW5nICpzZWFyY2hGaWVsZFJlY2VudFNl
YXJjaGVzUGxpc3RQYXRoKCkKK3sKKyAgICByZXR1cm4gW3NlYXJjaEZpZWxkUmVjZW50U2VhcmNo
ZXNTdG9yYWdlRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUmVj
ZW50U2VhcmNoZXMucGxpc3QiXTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PnJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKQoreworICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNlbnRTZWFyY2hlc1BsaXN0ID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c2VhcmNo
RmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpXSk7CisgICAgaWYgKCFbW3JlY2VudFNlYXJj
aGVzUGxpc3QgY2xhc3NGb3JDb2Rlcl0gaXNTdWJjbGFzc09mQ2xhc3M6W05TTXV0YWJsZURpY3Rp
b25hcnkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiByZWNlbnRT
ZWFyY2hlc1BsaXN0OworfQorCitzdGF0aWMgc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IGZyb21O
U0RhdGV0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUgKmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUp
OworCisgICAgcmV0dXJuIHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5
c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxT
aW5jZTE5NzApKSk7Cit9CisKK3N0YXRpYyBOU0RhdGUgKmZyb21TeXN0ZW1DbG9ja1RpbWV0b05T
RGF0ZShzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKK3sKKyAgICByZXR1cm4gW05TRGF0
ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpkdXJhdGlvbl9jYXN0PGR1cmF0aW9uPGRv
dWJsZT4+KHRpbWUudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpXTsKK30KKwordm9pZCBTZWFy
Y2hQb3B1cE1lbnVDb2NvYTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQoreworICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZWFkU2VhcmNoRmllbGRSZWNl
bnRTZWFyY2hlc1BsaXN0KCk7CisgICAgaWYgKCFyZWNlbnRTZWFyY2hlc1BsaXN0KQorICAgICAg
ICByZWNlbnRTZWFyY2hlc1BsaXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFy
eV0sIGl0ZW1zS2V5LCBuaWxdKTsKKworICAgIGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpCisg
ICAgICAgIFtbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6aXRlbXNLZXldIHJlbW92
ZU9iamVjdEZvcktleTpuYW1lXTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpIHsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAq
cmVjZW50U2VhcmNoID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OnNlYXJjaEl0ZW0uc3RyaW5nLCBzZWFyY2hTdHJpbmdLZXksIGZyb21TeXN0ZW1DbG9ja1RpbWV0
b05TRGF0ZShzZWFyY2hJdGVtLnRpbWUpLCBkYXRlS2V5LCBuaWxdOworCisgICAgICAgICAgICBb
aXRlbXMgYWRkT2JqZWN0OnJlY2VudFNlYXJjaF07CisgICAgICAgIH0KKworICAgICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICppdGVtc0RpY3Rpb25hcnkgPSBbcmVjZW50U2VhcmNoZXNQbGlzdCBv
YmplY3RGb3JLZXk6aXRlbXNLZXldOworICAgICAgICBpZiAoW1tpdGVtc0RpY3Rpb25hcnkgY2xh
c3NGb3JDb2Rlcl0gaXNTdWJjbGFzc09mQ2xhc3M6W05TTXV0YWJsZURpY3Rpb25hcnkgY2xhc3Nd
XSkKKyAgICAgICAgICAgIFtpdGVtc0RpY3Rpb25hcnkgc2V0T2JqZWN0OltOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6aXRlbXMuZ2V0KCksIHNlYXJjaGVz
S2V5LCBuaWxdIGZvcktleTpuYW1lXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW3JlY2Vu
dFNlYXJjaGVzUGxpc3Qgc2V0T2JqZWN0OltOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnld
IGZvcktleTppdGVtc0tleV07CisgICAgfQorCisgICAgW3JlY2VudFNlYXJjaGVzUGxpc3Qgd3Jp
dGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6
Tk9dOworfQorCit2b2lkIFNlYXJjaFBvcHVwTWVudUNvY29hOjpsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRl
bXMpCit7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBz
ZWFyY2hJdGVtcy5jbGVhcigpOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBy
ZWNlbnRTZWFyY2hlc1BsaXN0ID0gcmVhZFNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgp
OworICAgIGlmICghcmVjZW50U2VhcmNoZXNQbGlzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TlNBcnJheSAqcmVjZW50U2VhcmNoZXMgPSBbW1tyZWNlbnRTZWFyY2hlc1BsaXN0IG9iamVjdEZv
cktleTppdGVtc0tleV0gb2JqZWN0Rm9yS2V5Om5hbWVdIG9iamVjdEZvcktleTpzZWFyY2hlc0tl
eV07CisgICAgaWYgKCFbcmVjZW50U2VhcmNoZXMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFz
c11dKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChOU0RpY3Rpb25hcnkgKml0ZW0g
aW4gcmVjZW50U2VhcmNoZXMpIHsKKyAgICAgICAgaWYgKCFbaXRlbSBpc0tpbmRPZkNsYXNzOltO
U0RpY3Rpb25hcnkgY2xhc3NdXSB8fCBpdGVtLmNvdW50ICE9IDIpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgCisgICAgICAgIE5TU3RyaW5nICpzZWFyY2hTdHJpbmcgPSBbaXRlbSBv
YmplY3RGb3JLZXk6c2VhcmNoU3RyaW5nS2V5XTsKKyAgICAgICAgaWYgKCFbc2VhcmNoU3RyaW5n
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgCisgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtpdGVtIG9iamVjdEZvcktleTpkYXRl
S2V5XTsKKyAgICAgICAgaWYgKCFbZGF0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgc2VhcmNoSXRlbXMuYXBw
ZW5kKHsgU3RyaW5nIHsgc2VhcmNoU3RyaW5nIH0sIGZyb21OU0RhdGV0b1N5c3RlbUNsb2NrVGlt
ZShkYXRlKSB9KTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggNzRjMzA1YS4uYzk3NWQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3Nh
dmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogfQogI2VuZGlmCiAKLXZvaWQgU2VhcmNoUG9wdXBN
ZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdp
bjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dAogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
KyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNb
aV0uc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIENGUHJlZmVy
ZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtD
RlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBT
ZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3QKICNlbmRpZgogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFy
Y2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTkwLDggKzkwLDEyIEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyCiAgICAgc2l6ZV90IHNpemUg
PSBDRkFycmF5R2V0Q291bnQoaXRlbXMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIENGU3RyaW5nUmVmIGl0ZW0gPSAoQ0ZTdHJpbmdSZWYp
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVtcy5nZXQoKSwgaSk7Ci0gICAgICAgIGlmIChDRkdl
dFR5cGVJRChpdGVtKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgc2VhcmNo
SXRlbXMuYXBwZW5kKGl0ZW0pOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXRlbSkgPT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSkgeworICAgICAgICAgICAgLy8gVGhlIHRpbWVzdGFtcCBpcyBub3Qg
dXNlZCBvbiBXaW5kb3dzIHBsYXRmb3JtLCBidXQgd2UgbmVlZCB0byBjb25mb3JtIHRvIHRoZSBu
ZXcgUmVjZW50U2VhcmNoIHN0cnVjdCB0eXBlLgorICAgICAgICAgICAgLy8gVGhlIHRpbWUgaXMg
aW5pdGlhbGl6ZWQgdG8gbWluKCkgYmVjYXVzZSB3ZSBkbyBub3Qga25vdyB0aGUgdGltZSB3aGVu
IHRoZSBzZWFyY2ggc3RyaW5nIHdhcyBjcmVhdGVkIHNvIHdlCisgICAgICAgICAgICAvLyBhc3N1
bWUgaXQgd2FzIGNyZWF0ZWQgbG9uZyB0aW1lIGFnby4KKyAgICAgICAgICAgIHNlYXJjaEl0ZW1z
LmFwcGVuZCh7IFN0cmluZyB7IGl0ZW0gfSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludDo6bWluKCkgfSk7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAppbmRleCAyOTlh
MTMzLi4yMjJkMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5oCkBAIC0zMSw4ICszMSw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1
cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9w
dXBNZW51KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAg
dmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRT
ZWFyY2g+JiBzZWFyY2hJdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJ
dGVtcyk7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDg5ZGMzNGMu
Ljk3ZThiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgog
I2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1
ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgpA
QCAtODgsOCArODcsMTIgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0
KCkKICAgICBpZiAoZnJhbWUoKS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsKHZhbHVlKTsKLSAg
ICBtX3JlY2VudFNlYXJjaGVzLmluc2VydCgwLCB2YWx1ZSk7CisgICAgbV9yZWNlbnRTZWFyY2hl
cy5yZW1vdmVBbGxNYXRjaGluZyhbdmFsdWVdIChjb25zdCBSZWNlbnRTZWFyY2gmIHJlY2VudFNl
YXJjaCkgeworICAgICAgICByZXR1cm4gcmVjZW50U2VhcmNoLnN0cmluZyA9PSB2YWx1ZTsKKyAg
ICB9KTsKKworICAgIFJlY2VudFNlYXJjaCByZWNlbnRTZWFyY2ggPSB7IHZhbHVlLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSB9OworICAgIG1fcmVjZW50U2VhcmNoZXMuaW5zZXJ0
KDAsIHJlY2VudFNlYXJjaCk7CiAgICAgd2hpbGUgKHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRT
ZWFyY2hlcy5zaXplKCkpID4gaW5wdXRFbGVtZW50KCkubWF4UmVzdWx0cygpKQogICAgICAgICBt
X3JlY2VudFNlYXJjaGVzLnJlbW92ZUxhc3QoKTsKIApAQCAtMjI4LDcgKzIzMSw3IEBAIFN0cmlu
ZyBSZW5kZXJTZWFyY2hGaWVsZDo6aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAog
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGxpc3RJbmRleCkgPT0gKHNpemUgLSAxKSkKICAgICAg
ICAgcmV0dXJuIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwogI2VuZGlmCi0g
ICAgcmV0dXJuIG1fcmVjZW50U2VhcmNoZXNbbGlzdEluZGV4IC0gMV07CisgICAgcmV0dXJuIG1f
cmVjZW50U2VhcmNoZXNbbGlzdEluZGV4IC0gMV0uc3RyaW5nOwogfQogCiBTdHJpbmcgUmVuZGVy
U2VhcmNoRmllbGQ6Oml0ZW1MYWJlbCh1bnNpZ25lZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKaW5kZXggYjYwNTc4MS4uNmRlODcyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5oIgorI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9zZWFyY2hQb3B1cElzVmlzaWJsZTsKICAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBtX3NlYXJjaFBvcHVwOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVjZW50U2VhcmNoZXM7Cisg
ICAgVmVjdG9yPFJlY2VudFNlYXJjaD4gbV9yZWNlbnRTZWFyY2hlczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxYTE3ZjExLi5lMzUzOTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9p
b3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTAtMDggIFpodW8gTGkgIDx6YWNo
bGlAYXBwbGUuY29tPgorCisgICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMg
cmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQs
CisgICAgICAgIGluIG9yZGVyIHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNo
IGhpc3RvcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgzODguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSBWZWN0b3I8U3RyaW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2g+LCB3aGVy
ZSBSZWNlbnRTZWFyY2ggaXMgYSBzdHJ1Y3QKKyAgICAgICAgdGhhdCBjb25zaXN0cyBzZWFyY2gg
c3RyaW5nIGFuZCB0aW1lLCBmb3IgcmVjZW50IHNlYXJjaGVzIGluIG9yZGVyIHRvIHN0b3JlIGFk
ZGl0aW9uYWwgdGltZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5jcHA6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVS
ZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRT
ZWFyY2hlcyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmg6
CisKIDIwMTUtMDktMTcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
QVNTRVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCkpIHdoZW4gcnVubmlu
ZyBXZWIgSW5zcGVjdG9yIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNlL1dlYktpdC9pb3MvV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAppbmRleCA3NWRhNmVkLi43MTU4OTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5jcHAKQEAgLTM1LDExICszNSwxMSBAQCBQb3B1cE1lbnUqIFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKIH0KIAot
dm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypzZWFyY2hJdGVtcyovKQordm9pZCBTZWFy
Y2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypzZWFyY2hJdGVtcyovKQogewogfQogCi12b2lk
IFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJjaFBvcHVwTWVu
dUlPUzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxSZWNl
bnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIGIvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKaW5kZXggNjE5N2I3
ZC4uYjk4MDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51SU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKQEAgLTMzLDggKzMzLDggQEAgcHVibGljOgogICAgIFNl
YXJjaFBvcHVwTWVudUlPUyhXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJl
Y2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6
OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDRkMWRj
NzkuLjAxYTY2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0xMC0w
OCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQg
dHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNo
IGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBj
bGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJl
Y2VudFNlYXJjaD4sIHdoZXJlIFJlY2VudFNlYXJjaCBpcyBhIHN0cnVjdAorICAgICAgICB0aGF0
IGNvbnNpc3RzIHNlYXJjaCBzdHJpbmcgYW5kIHRpbWUsIGZvciByZWNlbnQgc2VhcmNoZXMgaW4g
b3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgIEFs
bCB0aGVzZSBuZXcgUmVjZW50U2VhcmNoZXMgYXJlIHN0b3JlZCBpbiBhIHBsaXN0IGluIHdoaWNo
IHRoZSBzdHJ1Y3R1cmUgbG9va3MgbGlrZToKKyAgICAgICAgUm9vdCB7CisgICAgICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAgICAgYXV0b3NhdmUgbmFtZTogeworICAgICAgICAgICAg
ICAgICAgICAic2VhcmNoZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7ICJzZWFyY2hT
dHJpbmciOiBzZWFyY2hTdHJpbmcsICJkYXRlIjogZGF0ZSB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudU1hYy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1h
Yy5tbToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKTog
Q2FsbCBzYXZlUmVjZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2Eu
CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyk6IENhbGwg
bG9hZFJlY2VudFNlYXJjaGVzIGluIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudUNvY29hLgorICAg
ICAgICAoYXV0b3NhdmVLZXkpOiBEZWxldGVkLgorCiAyMDE1LTEwLTA2ICBEYW5pZWwgQmF0ZXMg
IDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgWFNMVCB3aGVuIGJ1aWxkaW5n
IFdlYktpdCBmb3IgaU9TIHVzaW5nIHRoZSBwdWJsaWMgaU9TIFNESwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaAppbmRleCA0
YzFjYzc5Li5kZGNkYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaApAQCAtMjEsNyArMjEsNyBAQAogI2lmbmRlZiBT
ZWFyY2hQb3B1cE1lbnVNYWNfaAogI2RlZmluZSBTZWFyY2hQb3B1cE1lbnVNYWNfaAogCi0jaW5j
bHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlYXJj
aFBvcHVwTWVudUNvY29hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBvcHVwTWVu
dUNsaWVudDsKQEAgLTM1LDggKzM1LDggQEAgcHVibGljOgogICAgIH5TZWFyY2hQb3B1cE1lbnVN
YWMoKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
Lm1tCmluZGV4IDJiMjI3ODQuLjIzMDEyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KQEAgLTM0LDExICszNCw2
IEBAIFNlYXJjaFBvcHVwTWVudU1hYzo6flNlYXJjaFBvcHVwTWVudU1hYygpCiB7CiB9CiAKLXN0
YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJl
dHVybiBbQCJjb20uYXBwbGUuV2ViS2l0LnNlYXJjaEZpZWxkOiIgc3RyaW5nQnlBcHBlbmRpbmdT
dHJpbmc6bmFtZV07Ci19Ci0KIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51TWFjOjpwb3B1cE1l
bnUoKQogewogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwpAQCAtNDksMzEgKzQ0LDEyIEBAIGJv
b2wgU2VhcmNoUG9wdXBNZW51TWFjOjplbmFibGVkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2Vh
cmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7Ci0gICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc2VhcmNoSXRlbXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHJlbW92ZU9iamVjdEZvcktleTphdXRvc2F2ZUtleShuYW1lKV07Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGl0ZW1zID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNlYXJjaEl0ZW1zLnNp
emUoKV0pOwotICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbTogc2VhcmNoSXRlbXMpCi0g
ICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6c2VhcmNoSXRlbV07Ci0KLSAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRPYmplY3Q6aXRlbXMuZ2V0KCkgZm9yS2V5OmF1
dG9zYXZlS2V5KG5hbWUpXTsKKyAgICBTZWFyY2hQb3B1cE1lbnVDb2NvYTo6c2F2ZVJlY2VudFNl
YXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6
OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2Vh
cmNoSXRlbXMpCiB7Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBzZWFyY2hJdGVtcy5jbGVhcigpOwotICAgIGZvciAoTlNTdHJpbmcgKml0ZW0gaW4gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYXJyYXlGb3JLZXk6YXV0b3NhdmVL
ZXkobmFtZSldKSB7Ci0gICAgICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQotICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOwotICAgIH0KKyAg
ICBTZWFyY2hQb3B1cE1lbnVDb2NvYTo6bG9hZFJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0
ZW1zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMzkzNzNlLi4zM2ZlMjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDkgQEAKKzIwMTUtMTAtMDggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisg
ICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0
b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVy
IHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8
U3RyaW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2g+LCB3aGVyZSBSZWNlbnRTZWFyY2ggaXMg
YSBzdHJ1Y3QKKyAgICAgICAgdGhhdCBjb25zaXN0cyBzZWFyY2ggc3RyaW5nIGFuZCB0aW1lLCBm
b3IgcmVjZW50IHNlYXJjaGVzIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZQorICAg
ICAgICBpbmZvcm1hdGlvbi4KKworICAgICAgICBBbGwgdGhlc2UgbmV3IFJlY2VudFNlYXJjaGVz
IGFyZSBzdG9yZWQgaW4gYSBwbGlzdCBpbiB3aGljaCB0aGUgc3RydWN0dXJlIGxvb2tzIGxpa2U6
CisgICAgICAgIFJvb3QgeworICAgICAgICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgICAg
IGF1dG9zYXZlIG5hbWU6IHsKKyAgICAgICAgICAgICAgICAgICAgInNlYXJjaGVzIjogWworICAg
ICAgICAgICAgICAgICAgICAgICAgeyAic2VhcmNoU3RyaW5nIjogc2VhcmNoU3RyaW5nLCAiZGF0
ZSI6IGRhdGUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKGhlYWRlcnNfZm9y
X3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmVuY29kZSk6IEVuY29kZSB0
aGUgbmV3IHN0cnVjdCBSZWNlbnRTZWFyY2gKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWNlbnRTZWFyY2g+OjpkZWNvZGUpOiBEZWNvZGUgdGhlIG5ldyBzdHJ1Y3QgUmVjZW50U2VhcmNo
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOiBDYWxsIHNhdmVSZWNlbnRTZWFyY2hlcyBp
biBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOiBDYWxsIGxvYWRSZWNlbnRTZWFyY2hlcyBpbiBX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFyY2hQb3B1cE1l
bnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlYXJjaFBvcHVw
TWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oOgorCiAyMDE1LTEwLTA4ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBGb3JtYXQgc3RyaW5nIGlz
c3VlcyBpbiBOZXR3b3JrQ2FjaGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IDEwNzc3N2UuLjg5ZjU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNjEsNiArMzYxLDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5JbmZvJzogWyc8V2ViQ29yZS9Q
bHVnaW5EYXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UnOiBbJzxX
ZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBhc3RlYm9hcmRXZWJD
b250ZW50JzogWyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpS
ZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEnOiBbJzxXZWJDb3JlL1RleHRDaGVja2lu
Zy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JzogWyc8V2ViQ29y
ZS9UZXh0Q2hlY2tlckNsaWVudC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dEluZGljYXRv
ckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNzFkYzNkNC4uMGY1NWZl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNo
UG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNh
dG9yLmg+CkBAIC00NzYsNiArNDc3LDIyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXRoPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUGF0aCYgcGF0aCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlY2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQorewor
ICAgIGVuY29kZXIgPDwgcmVjZW50U2VhcmNoLnN0cmluZyA8PCByZWNlbnRTZWFyY2gudGltZTsK
K30KKworYm9vbCBBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFJlY2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVjZW50U2VhcmNoLnN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjZW50U2VhcmNoLnRpbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWdpb246OlNwYW4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiwgY29uc3QgUmVnaW9uOjpTcGFuJik7CiAgICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFJlZ2lvbjo6U3BhbiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDE2ZTBhZDAuLmM4M2U5OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTc5LDYgKzc5LDcgQEAgc3RydWN0IE1pbWVDbGFzc0luZm87CiBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87Citz
dHJ1Y3QgUmVjZW50U2VhcmNoOwogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVyczsKIHN0
cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CkBAIC00
NTEsNiArNDUyLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVjZW50U2VhcmNo
Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlJl
Y2VudFNlYXJjaCYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKICNlbmRpZiAvLyBXZWJD
b3JlQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNiM2U4YmMuLjk5ZTZkZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTI2LDUwICsyNiwxOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgog
I2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5h
bWUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQog
ewotICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5h
bWUpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2E6
OnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4m
IHNlYXJjaEl0ZW1zKQogewotICAgIGlmICghbmFtZSkgewotICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBpdGVtczsKLQotICAgIGlmICghc2VhcmNo
SXRlbXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0ZW1zID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBzZWFyY2hJdGVtcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsK
LQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlYXJjaEl0ZW0gOiBzZWFyY2hJdGVtcykKLSAg
ICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKLSAgICB9Ci0KLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbik7Ci0gICAgQ0ZQcmVmZXJlbmNlc0FwcFN5bmNocm9uaXplKGtDRlBy
ZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFy
Y2hJdGVtcykKLXsKLSAgICBpZiAoIW5hbWUpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1
dG8gaXRlbXMgPSBhZG9wdENGKGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPihDRlByZWZlcmVu
Y2VzQ29weUFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbikpKTsKLSAgICBpZiAoIWl0ZW1zKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVtcy5nZXQo
KSk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbSA9IGR5bmFtaWNfY2Zf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChpdGVtcy5nZXQoKSwgaSkp
KQotICAgICAgICAgICAgc2VhcmNoSXRlbXMuYXBwZW5kKGl0ZW0pOwotICAgIH0KKyAgICBXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYTo6bG9hZFJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJj
aEl0ZW1zKTsKIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1M2I3ZjkzLi42MjdmMmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MSw2ICs3MSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
YXJjaFBvcHVwTWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdT
dGF0ZS5oPgpAQCAtMTI4Myw4ICsxMjg0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8g
U2VhcmNoIHBvcHVwIHJlc3VsdHMKLSAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBT
dHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgbG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJj
aD4mKTsKKyAgICB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8
V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8g
U3BlZWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggNjhmZDA1My4uOGZiZDkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNzksOCArMzc5LDggQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBTZWFyY2ggcG9wdXAg
bWVudXMKLSAgICBTYXZlUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUsIFZlY3RvcjxTdHJpbmc+
IHNlYXJjaEl0ZW1zKQotICAgIExvYWRSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZl
Y3RvcjxTdHJpbmc+IHJlc3VsdCkKKyAgICBTYXZlUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUs
IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHNlYXJjaEl0ZW1zKQorICAgIExvYWRSZWNl
bnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+
IHJlc3VsdCkKIAogICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFn
ZVByb3h5RWZsLmNwcAppbmRleCA2OTBhZjNlLi5hYTExY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC03MywxMiArNzMsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoVmVjdG9y
PFdURjo6U3RyaW5nPiYgLypjb21tYW5kc0wKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA0YjliZTczLi44
NDVmMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCkBAIC01NywxMiArNTcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJpbmRBY2Nl
c3NpYmlsaXR5VHJlZShjb25zdCBTdHJpbmcmIHBsdWdJRCkKICAgICBtX2FjY2Vzc2liaWxpdHlQ
bHVnSUQgPSBwbHVnSUQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJv
eHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6UmVjZW50U2VhcmNoPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3Ry
aW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmlu
ZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDFiMDY3MDUuLjhlNmRm
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU2VhcmNoUG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUG9w
dXBNZW51KiBXZWJTZWFyY2hQb3B1cE1lbnU6OnBvcHVwTWVudSgpCiAgICAgcmV0dXJuIG1fcG9w
dXAuZ2V0KCk7CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpCit2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0
ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTks
NyArNTksNyBAQCB2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSwgcGFnZS0+cGFnZUlE
KCkpOwogfQogCi12b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdEl0ZW1zKQordm9p
ZCBXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JiByZXN1bHRJdGVtcykKIHsKICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5o
CmluZGV4IDhmMTAxMWQuLmE4MzlkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaApAQCAt
MzEsOCArMzEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTZWFyY2hQb3B1cE1lbnU+
IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBW
ZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYg
bmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotLSAK
Mi40LjcgKEFwcGxlIEdpdC01OSkKCg==
</data>
<flag name="review"
          id="287943"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262822</attachid>
            <date>2015-10-09 21:49:26 -0700</date>
            <delta_ts>2015-10-13 11:27:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>111588</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSAxNzZiOTJjMmNlOTcxNTc3YjExYzBmNjE2OWVjNzgyZjYxZTFjMGYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDkgT2N0IDIwMTUgMTQ6MjQ6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZSBzaG91bGQgYWxz
byBzdG9yZSB0aGUgdGltZSBpbmZvcm1hdGlvbiBmb3IgcmVjZW50CiBzZWFyY2hlcy4KCi0tLQog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYg
KysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAg
IHwgMjA1ICsrKysrKysrKysrLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NlYXJjaFBvcHVwTWVudS5oICAgICAgICAgIHwgIDE1ICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oICB8ICAzOCArKysrCiAuLi4vV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSB8IDE0MyArKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgfCAg
MTIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCAg
IHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
ICAgICB8ICAxMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmggICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDE2ICsrCiAuLi4vaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51SU9TLmggfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICsrKwogLi4uL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmggfCAgIDYgKy0KIC4uLi9tYWMvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tICAgICAgIHwgIDM4ICstLS0KIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ2ICsrKysrCiBTb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSAgICAgICAgICB8ICAgMSArCiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCAgICB8ICAxNyAr
KwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oICAgICAgfCAg
IDYgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tICAg
fCAgMzEgKy0tLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAg
ICAgICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAgICB8ICAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwICAgICAgICAgIHwgICA0ICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCB8ICAgNCArLQogMjcgZmlsZXMgY2hhbmdlZCwgNTEy
IGluc2VydGlvbnMoKyksIDE5NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51
Q29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZhN2E1Ny4uNWNhY2JkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlz
dG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRl
ciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9y
PFN0cmluZz4gd2l0aCBWZWN0b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2VhcmNoIGlz
IGEgc3RydWN0CisgICAgICAgIHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwg
Zm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUKKyAg
ICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIFNlYXJjaFBvcHVwTWVudUNvY29hLmggYW5kIFNlYXJjaFBvcHVwTWVu
dUNvY29hLm1tCisgICAgICAgIGFuZCBzb3J0IHRoZSBwcm9qZWN0IGZpbGUuCisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVNlYXJjaFBv
cHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVu
dUNvY29hLmg6IEFkZGVkIG1ldGhvZHMgZm9yIFNlYWNoUG9wdXBNZW51TWFjIGluIFdlYktpdAor
ICAgICAgICBhbmQgV2ViUGFnZVByb3h5Q29jb2EgaW4gV2ViS2l0MiB0byBjYWxsLgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNTdG9yYWdlRGlyZWN0b3J5KTog
UmVjZW50IHNlYXJjaGVzIHdpdGggdGhlIG5ldyBzdHJ1Y3R1cmUKKyAgICAgICAgYXJlIHN0b3Jl
ZCBpbiBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaEZpZWxkUmVjZW50
U2VhcmNoZXNQbGlzdFBhdGgpOiBHZXQgdGhlIHBhdGggZm9yIHRoZSBwbGlzdCBvZiB0aGUgcmVj
ZW50CisgICAgICAgIHNlYXJjaGVzIGVudHJpZXMuCisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5Q
dHI8TlNNdXRhYmxlRGljdGlvbmFyeT5yZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0
KTogUmV0dXJuIHRoZQorICAgICAgICByZWNlbnQgc2VhcmNoZXMgcGxpc3QgYXMgTlNNdXRhYmxl
RGljdGlvbmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21OU0RhdGV0b1N5c3RlbUNsb2NrVGlt
ZSk6IENvbnZlcnQgZnJvbSBOU0RhdGUgdG8gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50LgorICAg
ICAgICAoV2ViQ29yZTo6ZnJvbVN5c3RlbUNsb2NrVGltZXRvTlNEYXRlKTogQ29udmVydCBmcm9t
IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0byBOU0RhdGUuCisgICAgICAgIChXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnVDb2NvYTo6c2F2ZVJlY2VudFNlYXJjaGVzKTogQWRkIGEgZGljdGlvbmFy
eSB3aGVyZSBpdCBoYXMgdHdvIHBhaXJzCisgICAgICAgIHRoYXQgdGhlIGZpcnN0IG9uZSBpcyB0
aGUgc2VhcmNoIHN0cmluZyBhbmQgdGhlIHNlY29uZCBvbmUgaXMgdGhlIHRpbWUuCisgICAgICAg
IChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYTo6bG9hZFJlY2VudFNlYXJjaGVzKTogV2Ug
ZXhwZWN0IHRoZSByZWNlbnQgc2VhcmNoIGl0ZW0gaW4gdGhlCisgICAgICAgIHBsaXN0IHRvIGJl
IGEgdHdvLXBhaXIgZGljdGlvbmFyeSwgYW5kIGNvbnZlcnQgdGhlIGRpY3Rpb25hcnkgdG8gdGhl
IHN0cnVjdCBSZWNlbnRTZWFyY2guCisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVS
ZWNlbnRTZWFyY2hlcyk6IE9ubHkgc2F2ZSB0aGUgUmVjZW50U2VhcmNoJ3Mgc2VhcmNoCisgICAg
ICAgIHN0cmluZyBvbiBXaW5kb3dzIHBsYXRmb3JtLCB3aGljaCBpcyB3aGF0IHdlIHVzZWQgdG8g
ZG8uCisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFy
Y2hlcyk6IFNpbmNlIHdlIG5lZWQgdG8gY29uc3RydWN0IGEKKyAgICAgICAgUmVjZW50U2VhcmNo
LCB3ZSBnZXQgdGhlIHN0cmluZyBmcm9tIHRoZSBhcHAncyBwcmVmZXJlbmNlcywgYW5kIHNldCB0
aGUgdGltZSB0byBiZQorICAgICAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50OjptaW4oKS4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDogTm93IHRoYXQgbV9y
ZWNlbnRTZWFyY2hlcyBhcmUgVmVjdG9yPFJlY2VudFNlYXJjaD4sCisgICAgICAgIHdlIGNhbm5v
dCB1c2UgLXJlbW92ZUFsbCB3aXRoIGEgc2VhcmNoIHN0cmluZy4gVXNlIC1yZW1vdmVBbGxNYXRj
aGluZyBpbnN0ZWFkIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgaXRlbSB0aGF0IGhhcyBpdHMgbWVt
YmVyIHNlYXJjaCBzdHJpbmcgZXF1YWwgdG8gdGhlIHNlYXJjaCBzdHJpbmcgdXNlciBpbnB1dHMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjppdGVtVGV4dCk6CisKIDIwMTUt
MTAtMDkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBEeW5h
bWljIGJhY2tncm91bmQgY29sb3IgY2hhbmdlcyBkbyBub3QgdXBkYXRlIHVudGlsIGEgbGF5b3V0
IGlzIGZvcmNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDQ4ZDVkMGYuLmU1ODgwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2NSw2ICs0NjUsOCBAQAog
CQkwQzNGMUY1QjEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDM0YxRjU4MTBDODg3
MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovOyB9OwogCQkwQzQ1MzQyNzEw
Q0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzQ1MzQyNTEwQ0RCQkZBMDA4Njkx
NTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi87IH07CiAJCTBDNDUzNDI4MTBDREJC
RkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyog
SlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovOyB9OworCQkwRTcwNThFRTFCQzVCQzE5MDA0NUE1
MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRTcwNThFRDFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9w
dXBNZW51Q29jb2EubW0gKi87IH07CisJCTBFNzA1OEY0MUJDNUNFREEwMDQ1QTUwNyAvKiBTZWFy
Y2hQb3B1cE1lbnVDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29h
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYw
M0MwNzQxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwM0MwNzMxODg0Njk1RTAwQTVGOENBIC8q
IFN5c3RlbU1lbW9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMDNDMDc1MTg4NDgwNTUwMEE1RjhDQSAvKiBJbnNwZWN0b3JPdmVybGF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0QTE1
QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDkwODdGMTQ0NEZEQjIwMDAyODkxNyAv
KiBTY3JvbGxiYXJUaGVtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkU3MTQxNTE0MjE4OUZDMDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWUuY3Bw
ICovOyB9OwpAQCAtNzY3Nyw2ICs3Njc5LDggQEAKIAkJMEMzRjFGNTkxMEM4ODcxMjAwRDcyQ0Ux
IC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
TFVuaWZvcm1Mb2NhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNDUz
NDI1MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcg
LyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRTcwNThGMzFCQzVDQ0Q3MDA0
NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VhcmNoUG9w
dXBNZW51Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwM0MwNzMxODg0
Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTeXN0ZW1NZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
OTlEMDYxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVHlwZWRBcnJheUNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjA5OUQwNzE3Qjk2
OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNzIsMTEgKzE2Mjc2LDExIEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTE0OEI0RkZGMUI2OTA0QzUwMEM5NTRF
NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmlkbCAqLywKLQkJCQk0MTI5REY4MjFCQjVC
N0E2MDAzMjJBMTYgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLywKLQkJCQk0MTI5REY4MTFC
QjVCNzlCMDAzMjJBMTYgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggKi8sCiAJCQkJMTQ4
QjRGRkYxQjY5MDRDNTAwQzk1NEU0IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5LmlkbCAqLywKIAkJ
CQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyQ0YgLyogUmVhZGFibGVTdHJlYW0uaWRsICovLAorCQkJ
CTQxMjlERjgxMUJCNUI3OUIwMDMyMkExNiAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCAq
LywKIAkJCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmlkbCAqLywKKwkJCQk0MTI5REY4MjFCQjVCN0E2MDAzMjJBMTYgLyogUmVhZGFibGVTdHJl
YW1SZWFkZXIuaCAqLywKIAkJCQk0MTlGQUZBRDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVT
dHJlYW1SZWFkZXIuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSBzdHJlYW1zOwpAQCAtMTcwMDks
MTEgKzE3MDEzLDExIEBACiAJCQkJQ0UxMjUyNTQxQTFCRUMwRTAwODY0NDgwIC8qIE5TVVJMRG93
bmxvYWRTUEkuaCAqLywKIAkJCQk2NTNFRjgzODE5QTA0M0FFMDA1MjIwMkMgLyogTlNVUkxGaWxl
VHlwZU1hcHBpbmdzU1BJLmggKi8sCiAJCQkJMzFCMzEzREMxQjY5ODdEQjAwRjJBQUJDIC8qIE5T
VVJMUmVxdWVzdFNQSS5oICovLAorCQkJCUNFRTI3QUNBMUJCQjUzQTIwMDcyNDAwQSAvKiBwdGhy
ZWFkU1BJLmggKi8sCiAJCQkJQ0UxMjUyM0MxQTE2NzZDRDAwODY0NDgwIC8qIFF1YXJ0ekNvcmVT
UEkuaCAqLywKIAkJCQkzNzE3ODMzOTFBQUNEQ0Y3MDAwOTEwRTMgLyogU2VjdXJpdHlTUEkuaCAq
LywKIAkJCQlDRUMzMzdBQzFBNDYwNzFGMDA5Qjg1MjMgLyogU2VydmVyc1NQSS5oICovLAogCQkJ
CUExOUQ5MzQ1MUE5RkVDNzIwMEI0NkMyNCAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCAqLywK
LQkJCQlDRUUyN0FDQTFCQkI1M0EyMDA3MjQwMEEgLyogcHRocmVhZFNQSS5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzA3NCw4
ICsxNzA3OCw4IEBACiAJCQkJNzFFMjE4MzgxNzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNv
dXJjZXMuaCAqLywKIAkJCQk3MUUyMTgzOTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291
cmNlc0RhdGEuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi8sCi0JCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKIAkJCQk5QjAzRDgwNzFCQjMxMTBE
MDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaCAqLywKKwkJCQk5QjAz
RDgwNjFCQjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
ICovLAogCQkJCTlCMDNEODA3MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zV3JhcHBlci5oICovLAogCQkJCTQzQjg1RUQyMThDQkVDNTIwMEUzMUFGNCAv
KiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwICovLAog
CQkJCTQzQjg1RUQzMThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29t
cGF0aWJpbGl0eUVsZW1lbnRNYXAuZ3BlcmYgKi8sCkBAIC0xOTM4OSw2ICsxOTM5Myw4IEBACiAJ
CQkJMUFBODRGMDIxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJRjQ3ODc1NTIxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmgg
Ki8sCiAJCQkJRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0
YXRlLm1tICovLAorCQkJCTBFNzA1OEYzMUJDNUNDRDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1l
bnVDb2NvYS5oICovLAorCQkJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1
cE1lbnVDb2NvYS5tbSAqLywKIAkJCQk1RDU5NzVCMTE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVt
VmVyc2lvbi5oICovLAogCQkJCTVENTk3NUIyMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJz
aW9uLm1tICovLAogCQkJCTdDQzU2NEI5MThCQUM3MjAwMDFCOTY1MiAvKiBUZWxlcGhvbmVOdW1i
ZXJEZXRlY3RvckNvY29hLmNwcCAqLywKQEAgLTIxNjQyLDYgKzIxNjQ4LDggQEAKIAkJCQk4Rjkz
NEQ4NDExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJ
CQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8s
CiAJCQkJQjU2NTc2RTQxN0RBNTk5RjAwQTU2QkRDIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZUlu
c3RydW1lbnRhdGlvbi5oICovLAorCQkJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01v
ZHVsZUxvYWRlci5jcHAgKi8sCisJCQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi8sCiAJCQkJQzZGNDIwQTAxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRp
b25DYWxsYmFjay5jcHAgKi8sCiAJCQkJQzZGNDIwQTExNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0
YXRpb25DYWxsYmFjay5oICovLAogCQkJCTgzRjEyMDZBMUI4QzEwMzYwMEQ3NUY2MyAvKiBKU05v
ZGVGaWx0ZXJDdXN0b20uY3BwICovLApAQCAtMjE2NTMsOCArMjE2NjEsNiBAQAogCQkJCTQxMjlE
Rjg0MUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9y
cy5oICovLAogCQkJCUUxQzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZS5jcHAgKi8sCiAJCQkJRTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmggKi8sCi0JCQkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpT
TW9kdWxlTG9hZGVyLmNwcCAqLywKLQkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogSlNN
b2R1bGVMb2FkZXIuaCAqLywKIAkJCQlCQ0EzNzhCQTBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1
bGVkQWN0aW9uLmNwcCAqLywKIAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1
bGVkQWN0aW9uLmggKi8sCiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENh
Y2hlZEZyYW1lRGF0YS5jcHAgKi8sCkBAIC0yNDI2OSw3ICsyNDI3NSw2IEBACiAJCQkJNTEyREQ4
RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkRE
OEZEMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyREQ4RkMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTE4NUZDN0UxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldpdGhWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QjM3NjBEMTVDNkM2
ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDU2ODZDQTEz
QUMxODAyMDBCNjlDNjggLyogQXN5bmNBdWRpb0RlY29kZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MjQzMDgsNyArMjQzMTMsNiBAQAogCQkJCUZEMzU5MTkwMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRp
b1BhcmFtVGltZWxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDIwMTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
ODQxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1MTg1RkM4NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjA4NjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9SZXNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg4MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1Jlc2FtcGxlcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAw
QTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NDM1MSw3ICsyNDM1NSw2IEBACiAJCQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tG
b3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2NDFDRDAwOUUyMzQ5
IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUU2MUNBMTI2Q0E1QzQwMEI2M0U4
RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5MTFC
QjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUU2MUND
MTI2Q0E1QzQwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNUUwQzY1QzE2NDNDNDJDMDBENkNCNjkgLyogQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMzM0VFNUM1MTRGQjQ5NjEwMDAy
MDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDQ2OSw3ICsyNDQ3Miw2IEBACiAJCQkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENs
aXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODAzNzE2MjFBNjZGMDBBMDBC
QUY1MTkgLyogQ2xpcFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDEzMTRGQTA5RDUw
MDc0NTdBRSAvKiBDbG9zZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQ3MjM2RDFCQjYx
NzQ5MDA0NzhDQTMgLyogSURCUmVzdWx0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDMDU0
Q0IxMTE4QzhFNDAwQ0UyNjM2IC8qIENvZGVHZW5lcmF0b3IucG0gaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVFQjVERjBFODFCOUFCMDBCMjU5NjUgLyogQ29sbGFwc2VkQm9yZGVyVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0MjVBNDlBMTgyOTJCODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5k
ZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ5Niw3ICsyNDQ5OCw2IEBACiAJCQkJNzlG
MkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE2MDhGMTJCMDI2RjcwMEMxQTM1OSAvKiBDb25lLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTg1RkNCQjFCQjRDQkY4MDAxMjg5OEYgLyogSURCU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NzIxQzA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjk4MTBFODIwNzI1MDBCMjU5NjUg
LyogQ29udGVudERhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1MTAsNyArMjQ1MTEsNiBAQAog
CQkJCTI2RjBDOEEwMUEyRUMzQkUwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2MjM5MTM2MUE2NDhDRUUwMDcyNTFBMyAvKiBDb250ZW50
RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGQjY3REMxQUU2Qjgy
RjAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTg1RkM3NTFCQjRDNEU4MDAxMjg5OEYgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVu
dEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDkwRkQxQUE1MUU0ODAwOTExOTFBIC8q
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdDNDcx
REMxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNDU0OCw2ICsyNDU0OCw3IEBACiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZC
IC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE1
REEwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTJFNDM0NjU5MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9zc1RocmVh
ZENvcGllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFFNkZBN0MxQkJCNEZDMzAwODcwMEQ5IC8q
IENyb3NzVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2OTgwM0QxMTMzNTQyRDAw
ODk0MTE1IC8qIENSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzVDQTI4QjEz
MDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcyQUY2RTE4
MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKQEAgLTI0
NTk5LDYgKzI0NjAwLDcgQEAKIAkJCQk5REFDN0M1NTFBRjJDQUEyMDA0MzdDNDQgLyogQ1NTQ29u
dGVudERpc3RyaWJ1dGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDhGRUJERDE0M0Uz
RUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFB
MjFFQ0NEMEFCRjBGQzYwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzc3OUUxNDFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE5Q0M4MTgxNkJCOUFDNjAwRUM2NDVBIC8qIENT
U0RlZmF1bHRTdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJCMEM1QjgxN0JCRDYy
OTAwM0QzNjc3IC8qIENTU0ZpbHRlckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NjRCNEQ2MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDY2Myw3ICsyNDY2NSw2IEBACiAJCQkJRTQ5QkQ5RkExMzFGRDJFRDAwM0M1NkYwIC8qIENT
U1ZhbHVlUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5MkYwODI0NUU1OTAwMUU5QUJD
IC8qIEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjcyQTIwRTgyRTg3QzAwRTdGOTc1
IC8qIEN1cnNvckRhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0I0MUJCNEM0RTgwMDEy
ODk4RiAvKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMyMjcyQUQwRTgyRThGMzAwRTdGOTc1IC8qIEN1cnNvckxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTYyQ0QzMjVBMTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDQjQxM0UwRTg2MzNGRDAwMzJDNEYwIC8qIERhc2hBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNDY5MCwxMCArMjQ2OTEsMTAgQEAKIAkJCQlCQzY0NjQxQzExRDdG
NDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGlj
eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJh
Y2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkxMzE2MzZFNjAwMDlBN0Uw
IC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM1OTlBMTMxNjM2
RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRBMDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NzMyQjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjYxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1M0VCNjM3MTU5QzU3MDQwMDAwMUJCNyAv
KiBEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDcwNyw3ICsyNDcwOCw2IEBA
CiAJCQkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQwNkRGQTYxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMkMxMkIwMjY3
NjAwQzFBMzU5IC8qIERlbGF5RFNQS2VybmVsLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4
NTFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE2MDJFMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDMxMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlEREYwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21U
ZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MjQsNyArMjQ3MjQsNiBAQAog
CQkJCTU5QThGMUQ4MTFBNjk1MjAwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzE0MDM3OUQxMjRCRUE3RjAwQUY0MEU0IC8qIERldmljZU9y
aWVudGF0aW9uQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTMwOUExMzExRjRBRTZB
MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTg1RkM4RDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTlBOEYxRDYxMUE2OTUxMzAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8q
IERldmljZU9yaWVudGF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlBODVFQTQxMTlE
NjhFQzAwREVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQ3NDgsNyArMjQ3NDcsNiBAQAogCQkJCTdFREFBRkM5MTlBMkNDREMwMDM0REZEMSAvKiBE
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUYyRDY5MTQ0MzVE
MDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEMjlFQ0M2MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzk5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlQ
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNDQTE5MkYxRjFEMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREU3MDAyMzE5MkZF
ODJBMDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDI5RUNDODE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDc4MSw3ICsyNDc3OSw2IEBACiAJCQkJMUE4RjZC
QzMwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1RDM4OUIyMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUU3MTE4RDBBQzVENTM1MDA1MzI3MEYgLyogRE9NQXR0ckludGVybmFsLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkNBNzFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVjb3JkSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZGQjlGRUIxOUE3Mjg0QjAwNDIwNTYyIC8q
IERPTUF1dG9jb21wbGV0ZUVycm9yRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2RkI5RkVE
MTlBNzI4NEIwMDQyMDU2MiAvKiBET01BdXRvY29tcGxldGVFcnJvckV2ZW50SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOTQ2RUVGMTA3RkRCQUMwMDg1NzE5MyAvKiBET01CZWZvcmVM
b2FkRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ4MDIsNyArMjQ3OTksNiBAQAogCQkJCTg1
MDMyREQ3MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NDaGFyc2V0UnVsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODU5MDlDREMwQUNDN0E3RTAwREYwMUYxIC8qIERPTUNTU0NoYXJzZXRSdWxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMyREQ5MEFBOEM5QkUwMDdEM0I3RCAvKiBE
T01DU1NGb250RmFjZVJ1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNDg0NTNGMUJCOUQwN0Uw
MDZBNzJFRCAvKiBJREJFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5MDlDREQwQUNDN0E3
RTAwREYwMUYxIC8qIERPTUNTU0ZvbnRGYWNlUnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTAzMkREQjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTSW1wb3J0UnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODU5MDlDREUwQUNDN0E3RTAwREYwMUYxIC8qIERPTUNTU0ltcG9ydFJ1
bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk5Nyw3ICsyNDk5Myw2IEBACiAJCQkJ
ODVFNzExQ0QwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RjMyQUYyMEFBNjNCODcwMEZGMzE4NCAvKiBE
T01IVE1MVGV4dEFyZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDRTBBQzVE
NTM1MDA1MzI3MEYgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MTg1RkNBNDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlbkRCUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFDNzk3MUQxODgzRTUxRjAwMEY1RTFGIC8qIERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTk5MkVDMDBBQTUw
Njk1MDBBQzA3ODUgLyogRE9NSFRNTFRpdGxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVFNzExQ0YwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxUaXRsZUVsZW1lbnRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTAyMyw3ICsyNTAxOCw2IEBACiAJCQkJODUxOERENzgwQTlD
RjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVF
NzExRDIwQUM1RDUzNTAwNTMyNzBGIC8qIERPTU5hbWVkTm9kZU1hcEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTNCRjREQjBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTE4NUZDOTMxQkI0QzRFODAwMTI4OThGIC8qIElEQkluZGV4TWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NDA3NTI2MEFENkM2NjcwMDYyMEM1NyAvKiBET01O
b2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUI0OThGQjBBREIzNDAyMDA5MjVDQkIg
LyogRE9NTm9kZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkMzNzBBQjBBMTdF
MDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDUwLDgg
KzI1MDQ0LDggQEAKIAkJCQk4NTM4RjA1RDBBRDcyMkYxMDA2QTgxRDEgLyogRE9NUmFuZ2VJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUzOEYwODUwQUQ3MkNCNjAwNkE4MUQxIC8qIERP
TVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU4QzM4QTcwQUE4RjIwNDAwQjE4N0E0IC8q
IERPTVJlY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzhGMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJHZXRSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUQ2MEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01SZWN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0I3MUJC
NEM3NjcwMDEyODk4RiAvKiBET01SZXF1ZXN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
NUQzNThBMEFENzA3MzEwMDE5QUFDNyAvKiBET01SR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNEMEZDNEYwREJENzIwQjAwQjJGNjMwIC8qIERPTVJHQkNvbG9ySW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEOUEyNDZFMTVCOUJEMDAwMEQzNDUyNyAvKiBET01TZWN1cml0eVBv
bGljeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTA3NSw3ICsyNTA2OSw2IEBACiAJCQkJMEY1NERD
RDUxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0
RENENzE4ODBGODY3MDAzRUVEQkIgLyogRE9NVG91Y2hFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1NERDRDkxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoRXZlbnRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOUIxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENEQTE4ODBGODY3MDAzRUVEQkIgLyogRE9NVG91
Y2hJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDREIxODgwRjg2NzAwM0VFREJC
IC8qIERPTVRvdWNoTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE0NTM0OTcxNkE5QkI2QTAw
MEY2RkQyIC8qIERPTVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTA4Myw3
ICsyNTA3Niw2IEBACiAJCQkJQkMxQTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNh
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMwMkVBIC8qIERPTVRy
ZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MEI0MUMzMEFEOUU3RTcwMEE2RUQ0RiAv
KiBET01UcmVlV2Fsa2VySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkU5MUJC
RDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NUM3RjQ5MTBBQUY3OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODU5ODlERDAwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVVJRXZlbnRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkVEMTNEMkEwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0
RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTExMyw2ICsyNTEwNSw3IEBACiAJCQkJ
MTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkM5QTBGNzUxNjQwOTRDRjAwM0Q2QjhEIC8qIERPTVdpbmRvd0NTUy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGQTJENzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDNzUxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCMzhFMjcxNTFDNDI3MTAw
NDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODlGNjBCMTExNTdGNjg2RTAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggaW4g
SGVhZGVycyAqLywKQEAgLTI1MjQxLDcgKzI1MjM0LDYgQEAKIAkJCQlBOENGRjA0RjBBMTU0RjA5
MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNzNC
QUEwQzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOUE1MjhFODQxN0Q3RjUyRjAwQUE5NTE4IC8qIEZsb2F0aW5nT2JqZWN0cy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkM3NzlFMTcxQkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY5OTg3MjE5MjA4N0U3MDA2OTM2QkQgLyog
RmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2OTBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJFMjdD
QTAwQjBGMkIwOTAwRjE3QzdCIC8qIEZsb2F0UG9pbnQzRC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTI2NCw3ICsyNTI1Niw2IEBACiAJCQkJQjJBRkZDN0UwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTY2MEQwMDZDRDYw
MEVGNkYyNiAvKiBGb250RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNkU5RkM4
MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA5RUJEQjYxNkI3RUVBMzAwQ0JBM0ZDIC8q
IEZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5
RiAvKiBGb250TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUzMjBENkIxMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzMjMsNyAr
MjUzMTQsNiBAQAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJDM0RBNkMwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoQnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRy
aWNzTWFwLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4MzFCQjRDNEU4MDAxMjg5OEYgLyog
SURCRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAw
QTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0M1RjUwREE1NkI5
MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NDBEMDBC
RjIyMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI1
MzcxLDcgKzI1MzYxLDYgQEAKIAkJCQlBOEVBN0QyRTBBMTkzODU1MDBBOEVGNUYgLyogSFRNTEFy
ZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzVGMjhGQzFBODI3RDg0MDBDMEYzMUYg
LyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBMjBD
RDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTE4NUZDOTcxQkI0QzRFODAwMTI4OThGIC8qIElEQktleURhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4NzFEQzFGMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MQmFzZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4REYzRkQyMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQmFzZUZvbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRN
TEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0OTksMjUgKzI1NDg4LDYyIEBACiAJ
CQkJNTEzRjE0NTQwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxRTFFQ0MxMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE4NUZDNzgxQkI0QzRFODAwMTI4OThGIC8qIElEQkFueS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2NjMxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRp
bmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTY4MUJBNzNCNUIwMDJFMDUz
QiAvKiBJREJDYWxsYmFja3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0I5MUJCNENCRjgw
MDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
NkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDNUIxQkI0QkU0QzAwMTI4OThGIC8qIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2RDdENzAxQkI1RjBCRDAwQUY3
Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUY0MUE2QTFCQTczQjVCMDAyRTA1M0IgLyogSURCQ3Vyc29yQmFja2VuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFGNDFBNkMxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkN1cnNvckJhY2tl
bmRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM3RTFCQjRDNEU4MDAxMjg5
OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4MTFC
QjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQx
QTZFMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUJhY2tlbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxRjQxQTZGMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUNhbGxiYWNrcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNzExQkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDODMxQkI0QzRFODAw
MTI4OThGIC8qIElEQkRhdGFiYXNlRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzg1
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTE4NUZDODcxQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFi
YXNlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDODkxQkI0QzRFODAwMTI4OThGIC8q
IElEQkRhdGFiYXNlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNDg0NTNGMUJCOUQw
N0UwMDZBNzJFRCAvKiBJREJFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOEIxQkI0
QzRFODAwMTI4OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTE4NUZDOEQxQkI0QzRFODAwMTI4OThGIC8qIElEQkZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxRjQxQTcyMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzEwNTAxQkE4Q0MwMzAwMzMyOUMwIC8qIElEQkZh
Y3RvcnlJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4RjFCQjRDNEU4MDAxMjg5OEYg
LyogSURCR2V0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5MTFCQjRDNEU4MDAx
Mjg5OEYgLyogSURCSW5kZXguaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzkzMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJJbmRleE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5
NTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5
NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4
NUZDOTkxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGguaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxODVGQzlCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTE4NUZDOUUxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE4NUZDQTAxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBMjFCQjRDNEU4MDAxMjg5OEYgLyogSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQTQxQkI0QzRFODAw
MTI4OThGIC8qIElEQk9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDMxMDVC
MUJBOERCNTYwMDMzMjlDMCAvKiBJREJPcGVuREJSZXF1ZXN0SW1wbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTE4NUZDQTYxQkI0QzRFODAwMTI4OThGIC8qIElEQk9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTFGNDFBNzkxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdEZWxldGVD
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE3QTFCQTczQjVCMDAyRTA1M0IgLyogSURC
UGVuZGluZ09wZW5DYWxsLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTZEN0Q3MjFCQjVGMEJEMDBB
RjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxRjQxQTdDMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25p
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBNzFCQjRDNEU4MDAxMjg5OEYgLyogSURC
UmVjb3JkSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQTkxQkI0QzRFODAw
MTI4OThGIC8qIElEQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEE1OEZBMUJBQ0M3
RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzEw
NUQxQkE4REI1NjAwMzMyOUMwIC8qIElEQlJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTQ1QjEwQTFCQzQ4RTJFMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MUQ3MjM2RDFCQjYxNzQ5MDA0NzhDQTMgLyogSURCUmVzdWx0RGF0
YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQkIxQkI0Q0JGODAwMTI4OThGIC8qIElEQlNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQUIxQkI0QzRFODAwMTI4OThGIC8qIElE
QlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODg2NEU3MUJCQjRCODMw
MEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVG
Q0FEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGNDFBNzQxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNzYxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0
aW9uQmFja2VuZE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTc4MUJBNzNC
NUIwMDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTg1RkNCMDFCQjRDNEU4MDAxMjg5OEYgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTcxRDU3QzBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmll
clJlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElk
ZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDRDEx
MThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU1NSw3
ICsyNTU4MSw3IEBACiAJCQkJMDczNjdEREYxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2QzU5NTE3
Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxRTZGQTdDMUJCQjRGQzMwMDg3MDBEOSAvKiBDcm9zc1RocmVh
ZFRhc2suaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0IyMUJCNEM0RTgwMDEyODk4RiAvKiBJ
bmRleGVkREIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAv
KiBJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0
NyAvKiBJbmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMzBBMTU1
QTA1MDAwQTQyMzQgLyogSW5saW5lRmxvd0JveC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU2Myw2
ICsyNTU4OSw3IEBACiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxl
U2hlZXRPd25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0
IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEE1
OEU1MUJBQTQwQjEwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMzNDg2MTI0MTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUEwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2MjQsNyArMjU2NTEsNiBAQAog
CQkJCTMxOTg0ODBDMUExRTZDRTgwMEExMzMxOCAvKiBKU0FuaW1hdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NURGMzFEQjA5RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGREExNUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDNzgxQkI0QzRFODAwMTI4OThGIC8qIElEQkFueS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9C
dWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTAxMkIwM0VFMTAwM0E1
ODNBIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREEx
NUVBNjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjU2NTIsNyArMjU2NzgsNiBAQAogCQkJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBK
U0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTIxMkIwM0VFMTAwM0E1
ODNBIC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUE0
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxMEE1OEU1MUJBQTQwQjEwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1REYzMUY0MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0NoYXJhY3Rl
ckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzA2NTg4MEYzQ0UyQTcwMENEMkQ4NyAvKiBK
U0NsaWVudFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzA2NThBMEYzQ0UyQTcwMENEMkQ4
NyAvKiBKU0NsaWVudFJlY3RMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzA3LDYgKzI1NzMy
LDcgQEAKIAkJCQk2NURGMzFGNjA5RDFDQzYwMDAwQkUzMjUgLyogSlNEb2N1bWVudFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQzIyNjBEMERCNjlGMTkwMDg5QjY2OSAvKiBKU0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2
OCAvKiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0MyQzM0MUJDMjlBOEYw
MDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwRDdD
MTBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01Db3JlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MEVDQUU3RTE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkUwODg4RDUxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjU3MzEsMTQgKzI1NzU3LDEyIEBACiAJCQkJRkM5RTBFNEQxNjQxOUMx
RTAwMzkyQkUzIC8qIEpTRE9NV2luZG93Q1NTLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTJGQkJC
QzBERTI3Q0I2MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0b20uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQkZCNTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MTZFNkZFQTFCQkQxNjg0MDAwQTYwNDQgLyogUmVhZGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1RTBFOTQ0MTEz
M0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENzg2
OEJBMTM2Qjk5OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1REYzMUZBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUFERUM3OEY4MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0
b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQ0Y3QUREMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vy
cm9yRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRDQ2MTQ5MTE2MUQ1MzIwMENBMEQwOSAv
KiBKU0Vycm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODkxQkI0QzRFODAw
MTI4OThGIC8qIElEQkRhdGFiYXNlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RTgz
NzhFMDlGODVENEYwMEI4NUFFNCAvKiBKU0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3
MEQ2QTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMEZFRjM3MkIzN0M1M0VBQzFDMUZCRUUgLyogSlNFdmVudFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTc1NSw3ICsyNTc3OSw2IEBACiAJCQkJODk4Nzg1RjUxMjJFMUVBQzAwM0FB
QkRBIC8qIEpTRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2RDlEMjdCMTRF
QUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwOUVC
REMwMTZCN0YzOEUwMENCQTNGQyAvKiBKU0ZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQ0FCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGREExNUVBQzEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE4RjUwMDIxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBhZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RjUwMDQxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBh
ZEJ1dHRvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTc5Myw3ICsyNTgxNiw2IEBACiAJCQkJQThE
MDY0RkMwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzQ5MThDNzBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJh
bWVTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNCNzFCQjRDNzY3MDAxMjg5
OEYgLyogRE9NUmVxdWVzdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0IxNTBBMTlE
NjA2MDA3RkI4QzUgLyogSlNIVE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RTJBQTJGMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFFMkFBMzEwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhSRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTgxMSw3ICsyNTgzMyw2IEBACiAJCQkJQkM0OTFCNzkwQzAy
M0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDQ2MTQzQTBDRDY4OUM4MDBGQURBNzUgLyogSlNIVE1MTWVkaWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUUyQUU1QzBBMUQyNkYyMDBCNDJCMjUgLyogSlNIVE1MTWVudUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzgxMUJCNEM0RTgwMDEyODk4RiAvKiBJREJE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdBMTgwQTE5QzNENjAwN0ZCOEM1IC8q
IEpTSFRNTE1ldGFFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0JCRTI2NzExQUZCM0Yy
MDAwNUVBMDMgLyogSlNIVE1MTWV0ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUy
QUIyQTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTW9kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNTg4OCw2ICsyNTkwOSw3IEBACiAJCQkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8q
IEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUFERUREQTBFNzZCRDkzMDA0
QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNTg0QzcxMDQ2
NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzZGNDIwQTMxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
TXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTkzOCw2ICsyNTk2MCw3IEBACiAJ
CQkJNjVERjMyMDIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMjlERjg2MUJCNUI4MEMwMDMyMkEx
NiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0M0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkUyRjEyMEMxQjU4MzgwMDIwMjM1RiAvKiBKU1JlY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUNFMTNGOUQ2QzkwMDkwQjFBQSAvKiBKU1JlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTg2LDcgKzI2
MDA5LDYgQEAKIAkJCQlBODRFQkQ4MzBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFGRjhGNjUxODA3NDVEODAwMTMyNjc0IC8qIEpTU3Vi
dGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjgg
LyogSlNTVkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4ODY0RTcxQkJCNEI4MzAw
RTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEy
OTIxM0NBOTUxRTAwRDIxOTE1IC8qIEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTE1RUM5MjBEOTcyM0ZGMDA2M0Q0OUEgLyogSlNTVkdBbHRHbHlwaEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI0RDkxMjk2MTNDQTk1NjEwMEQyMTkxNSAvKiBKU1NW
R0FsdEdseXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwMDUsNyArMjYwMjcs
NiBAQAogCQkJCUIyRkEzRDRGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDUzMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDQ5NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDU1MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1
NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MDE0LDcgKzI2MDM1LDYgQEAKIAkJCQlCMkZBM0Q1RDBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUYwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyRkEzRDYxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0N1cnNvckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxMEE1OEZBMUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1
ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjMwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDY1MEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0Rlc2NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2
NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjAzOSw3ICsyNjA1OSw2IEBACiAJCQkJQjJGQTNEODMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q4NTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdGRUltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEODcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVNZXJnZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUxODVGQzk1MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyRkEzRDg5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFTWVyZ2VOb2Rl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQyMjQxODQxMDdFNzdGNDAwNzY2QTg3IC8q
IEpTU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOEIw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVPZmZzZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2MDU1LDcgKzI2MDc0LDYgQEAKIAkJCQlBODNCNzkwMjBDQ0FGRjE1MDAwQjA4MjUgLyog
SlNTVkdGb250RmFjZU5hbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODNCNzhGRTBD
Q0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVNyY0VsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4M0I3OEZDMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlVXJpRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQTkxQkI0QzRFODAwMTI4OThGIC8qIElEQlJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDk5MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q5QjBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3
QjI4MjgwQ0VGMEMwNzAwRDM5RDU0IC8qIEpTU1ZHR2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MjI5LDEyICsyNjI0NywxMCBAQAogCQkJCTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0
OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDU2RkEyNzExQUQ0
QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUM5
QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4
NUZDQTAxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5MTdCNTYyMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2No
ZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTE3QjU2MzE0NzM0OTZDMDA1MkM5RDAgLyog
TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5MTZGRjcx
OTVERjZBMDAwNUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkNCMDFCQjRDNEU4MDAxMjg5OEYgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODAzNzE2NDFBNjZGMUQzMDBCQUY1MTkgLyogTGF5ZXJG
cmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBM0E2QTAxOTRCNTlCNjAwMUNCRDI0IC8q
IExheWVyUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxRDcyRjYxNUZFNjk1MzAwQzRDMDdF
IC8qIExheW91dE1pbGVzdG9uZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyNDIsNyArMjYyNTgs
NiBAQAogCQkJCTE0MURDMDUzMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMTI1MzhENDEzRjlCNjBBMDAwMjQ3NTQgLyogTGF5b3V0UmVwYWludGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA1NDE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0
U2l6ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM3NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENT
U0N1c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTA2NjA3MEJFMTQx
RDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMwNDgx
NjQ4MzQ4RjAwMzcxRTVBIC8qIExheW91dFVuaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDND
MkI5MUJBMjNBMjYwMEUyNjMzNyAvKiBMZWdhY3lBbnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjYz
NDYsNyArMjYzNjEsNiBAQAogCQkJCUNFMTI1MjQxMUExNkIxQjYwMDg2NDQ4MCAvKiBNZWRpYVBs
YXllclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJFMkNBRkMxOUZGMDIwNzAwMUVFQjRGIC8q
IE1lZGlhUHJvZHVjZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTJBMEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMzg4Mzg5OTFCQUQxNDVG
MDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTJD
MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0RTE5NTkyRTBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2MzY0LDggKzI2Mzc4LDYgQEAKIAkJCQlDOUQ4NTFGMDFCMzlE
Qzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQTYxQkI0QzRFODAwMTI4OThGIC8qIElEQk9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRBMDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFV
UkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBNzE4MDQ3NEY3MDAxNkU2ODUg
LyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0REQzFF
N0ExOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q2MUZFNjgxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjYzOTMsOCArMjY0MDUsOCBAQAogCQkJCTA3MDU4NTI0
MTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3MDU4NTI5MTdGREUwMkMwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDN0NDQjMxOEM2NjNFNDAwMzJFNDEzIC8qIE1lbW9p
emVkRE9NUmVzdWx0LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTZEN0Q3MDFCQjVGMEJEMDBBRjdD
NzcgLyogSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQjE2QzE4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3MURDQzgxMzg1RTZBNDAwNzAyREQwIC8qIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERkEwOTlFNjQ5MjAwNTZF
NTgxIC8qIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUFERUNDRTBFNzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNoYW5uZWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY0MDQsNyArMjY0MTYsNiBAQAogCQkJCUE3OEU1MjcwMTM0NkJEMTcwMEFEOUMz
MSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RERDREE1MTM4
NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RERD
REE3MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTE4NUZDQjkxQkI0Q0JGODAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvVGFzay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdERENEOTUxMzg0NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQzRGMEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlw
ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDEyLDcgKzI2NDIzLDYgQEAKIAkJCQlD
RTEyNTI0OTFBMTZDM0JDMDA4NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjJCMDEzMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8q
IEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREYyQjAxNTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3
MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MjY0NjAsNyArMjY0NzAsNiBAQAogCQkJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0REQgLyogTkZB
VG9ERkEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0M0REMEU2NzQwMTIwMDFDMTI4NyAvKiBO
aW5lUGllY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOUUxQkI0QzRFODAwMTI4
OThGIC8qIElEQktleVJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxMTVCNTIwOUY4
NEI3MTAwQ0E0RkMxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzMxMEEyMjk3
QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczMzBB
MjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlckNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjU0Nyw3ICsyNjU1Niw2IEBACiAJCQkJN0E2NzRCREMwRjlFQkY0RTAwNkNGMDk5IC8qIFBh
Z2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDAxOUM3QjUy
RTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMjE5
QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTQ1QjEwQTFCQzQ4RTJFMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGQkRCNjFBMTE2RDYwMzdFMDBCQjMzOTQgLyogUGFnZVJ1bGVD
b2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzODIwODk1MTQ3RDM1RjkwMDEwQkMwNiAv
KiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUYzNkQzQjE4Rjc1ODcy
MDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2
NTk3LDcgKzI2NjA1LDYgQEAKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZv
cm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZFIC8q
IFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FBNDg3MDE0
QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCNThGRDQxOTVBOTY0RDAwMjk5MEIwIC8q
IFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAw
QTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjY0
OSw3ICsyNjY1Niw2IEBACiAJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkMwQTE5NDVEMDAwQThFRjVGIC8qIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzRUMwQ0Q2ODFC
NTAwRkFEQTc1IC8qIFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODg2NEUx
MUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyQTY4MjQwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDQURENzkxODgwRDkxQzAwRDhCNzFEIC8qIFBy
b2dyZXNzVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjY2MCw5ICsyNjY2Niw5
IEBACiAJCQkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjhFMTFBMTI1NjU5MjYwMDIzMEZGNyAvKiBQcm94eVNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkY5NDVFQ0MxNjFGN0YzNjAwOTcxQkM4IC8qIFBz
ZXVkb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFRTI3QUNCMUJCQjUzQTIwMDcyNDAw
QSAvKiBwdGhyZWFkU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDgxRkYwMDE2QjBBMkQzMDA4
QUFBN0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0RTE1
QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0VF
MjdBQ0IxQkJCNTNBMjAwNzI0MDBBIC8qIHB0aHJlYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRTEyNTIzRDFBMTY3NkNEMDA4NjQ0ODAgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDQyQUY3QTkxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjY4MSw2ICsyNjY4Nyw5IEBACiAJCQkJRjU1QjNEQ0UxMjUxRjEy
RDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTg0RTlF
MTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNDMgLyog
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2
RTZGRUExQkJEMTY4NDAwMEE2MDQ0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNX
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyog
UmVhbHRpbWVBbmFseXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzExQUE5OTdGMTAw
RTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2
NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2ODczLDcgKzI2ODgyLDYgQEAKIAkJCQk1MTRDNzY3RjBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MEE1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MEE3MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE5MTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFCMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwQUQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2OTEzLDcgKzI2OTIxLDYgQEAKIAkJCQkwNzhFMDkyQTE3RDE0RDFDMDA0MjBB
QTEgLyogUlRDU3RhdHNSZXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTQ1MTdEMTZF
MUMwMDQyMEFBMSAvKiBSVENTdGF0c1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUw
OTJCMTdEMTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c1JlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkM1QjFCQjRCRTRDMDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyQzE3RDE0RDFDMDA0MjBBQTEgLyogUlRDU3Rh
dHNSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NDYxN0QxNkUxQzAwNDIwQUEx
IC8qIFJUQ1N0YXRzUmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDk0NzE3
RDE2RTFDMDA0MjBBQTEgLyogUlRDVm9pZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5
OTIsNiArMjY5OTksNyBAQAogCQkJCUJDNkQ2RTI2MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxW
aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0REMjEyNTFGMTJEMDAzRUYyNjkgLyogU2Vh
cmNoSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjcxNzA4OTBCMzExODA4MDAxNzEy
M0UgLyogU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRTcwNThGNDFCQzVD
RURBMDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3NkYzNkVCMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRDBFMEZCMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFFM0FBMEIxQjk4QkNBQjAwMzZBRDgxIC8qIFNlY3VyaXR5T3Jp
Z2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzEyMyw2ICsyNzEzMSw3IEBACiAJCQkJQkNF
RjQ0NEQwRTY3NDYyODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOTNFNjA1MTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5REFDN0M1NzFBRjJDQjY0MDA0MzdDNDQgLyogU3R5bGVDb250
ZW50QWxpZ25tZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3NzlFMTcxQkIyMjdDQTAw
Q0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzVFQjY3RjBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhCOTBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzMzLDcgKzI3MzQy
LDYgQEAKIAkJCQk4M0MxRDQzMTE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b0hv
cml6b250YWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2
OCAvKiBTVkdQYXRoU2VnTGluZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E3RDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0MxRDQzMzE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1Zl
cnRpY2FsQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzNDE3OEQ1QUI1MDAxNDFFNjgg
LyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0E4MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFkZXJzICovLApA
QCAtMjczODQsMTQgKzI3MzkyLDEyIEBACiAJCQkJQjIyMjdBQzEwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1N5bWJvbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUM1MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUZXN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJGQzMxMjU1QzUz
QzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQTIx
QkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4MTY2OEQ0MTI1NjAzQkYwMDZGMjVERSAvKiBTVkdUZXh0Q2h1bmtCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDQjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RjBCRkM0MTI1NUM1
M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEMy
RjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDgxMDkzREMxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEIxQkI0QzRFODAwMTI4
OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxNjY4REEx
MjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4MEU0OTI2MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxp
bmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdU
ZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ0Nyw3ICsyNzQ1
Myw2IEBACiAJCQkJQjJBRkZDOUEwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDAwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY1Vz
ZXJEZWZpbmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0MjBEMDA2QzFEMDBFRjZGMjYg
LyogVGV4dENvZGVjVVRGMTYuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0IyMUJCNEM0RTgw
MDEyODk4RiAvKiBJbmRleGVkREIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgyMTJGMjVF
NTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJCOTdD
QTEzMTM4OTQzMDA4QkVGNEIgLyogVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5N0JDODRCNDEyMzcxMTgwMDAwQzYxNjEgLyogVGV4dERvY3VtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI3NTQxLDYgKzI3NTQ2LDcgQEAKIAkJCQlBQTQ3MzlEMjE3NTdBRkVD
MDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMkQ4QTc5
MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2M0Uy
MDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEMDg2RkU5ODA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxNzYyRTAxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc2Myw2ICsyNzc2OSw3IEBACiAJCQkJRjM0NzQyRTEx
MzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUEzRTI2NDMxMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0I0MUJCNEM0RTgwMDEyODk4RiAvKiBXb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdGOEU2
NjYxNTFENEE0RTAwRDJEMTgxIC8qIFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNkUwN0E1MTM1OEE4QkUwMEFBQ0JD
OSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTI0
LDcgKzI4MTMxLDYgQEAKIAkJCQkzN0Y1N0FDRDFBNTA3MkQ3MDA4NzZGOTggLyogQWNjZXNzaWJp
bGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUNF
MUE1MDcyREEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTkxQzlGQkUxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTUxNDg0NTNFMUJCOUQwN0UwMDZBNzJFRCAvKiBJREJFcnJv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZENTQgLyogQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1RDMxREZBMTFDRjYx
MEIwMDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUM0REU2RTBFQTc1QzY1MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjgxMzksMTEgKzI4MTQ1LDkgQEAKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBCRjYw
ODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4NDgw
MjFBMUQ4MTgxMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDlFOTEyQUMwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE4NUZDOTgxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERDYwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVD
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJDMERCNTVDREMwMDFEQjc5NCAv
KiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJFMERCNTVD
REMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTE4NUZDN0QxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0
IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJB
QUM1ODBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yODIwNCw3ICsyODIwOCw2IEBACiAJCQkJNDU4MzBENEQxNjc5QjRGODAw
QUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
Q0ZGMDUwMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAwQzA3NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNl
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4ODY0RTYxQkJCNEI4MzAwRTU0MEM5IC8qIElEQlNl
cnZlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBD
MDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3
MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODIzNyw3ICsyODI0MCw2IEBACiAJCQkJ
OTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDNzcxQkI0QzRFODAwMTI4OThGIC8qIElEQkFueS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTY0QTJFRDE5MUFFNjM1MDAxMDczN0QgLyogQmxvYkRh
dGFGaWxlUmVmZXJlbmNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0QTk0RDcxNkRGREY5
NTAwNjhERTgyIC8qIEJsb2JSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFG
NjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI4MzA5LDcgKzI4MzExLDYgQEAKIAkJCQkxNEQ4MjM4QjBBRjkyREY2MDAwNEYwNTcgLyog
Q2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCQUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAv
KiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQ4QkZBQjFCODU3Mjk4MDA5MTJG
MzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzgwMUJC
NEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Mw
NjU3RDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjg0MzMsNyArMjg0MzQsNiBAQAogCQkJCUJDMDJBNjQ2MEUw
OUFBRTkwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMjNFNEUxMERBQUNFMEYwMDlGREM5MSAvKiBDU1NHcmFkaWVudFZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTUxODVGQ0E4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEN0RCQjI4MThDQTE5QTQwMEMxMTA2NiAvKiBDU1NH
cmlkTGluZU5hbWVzVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzRTI1MjMxODA0NkJD
RDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkJGODkwNDUxNjlFOUYxRjAwNTJEODZFIC8qIENTU0dyb3VwaW5nUnVsZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI4NTU2LDEyICsyODU1NiwxMCBAQAogCQkJCUE3ODFDNkE3MTM4MjhC
NUQwMDEyQTYyQSAvKiBEb2N1bWVudE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTA1
N0ZBNTEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0OTQ3RkZEMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVy
ZWRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDNzQxQkI0QzRFODAwMTI4OThGIC8q
IERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEMyMjgw
RTExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNEE0RjQ4QTkxNkIwREZDMDAwRURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQUQ2RTcxQUMxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVk
T2JqZWN0UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjkwNTYxOTBGMjU3OEJFMDA5NUZG
NkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUx
ODVGQzg2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgxODVGM0EwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1l
bnRXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QUUwOTdDNzE1RjAwMTlGM0Q4
IC8qIERPTS5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg2NjIsNyArMjg2NjAsNiBAQAogCQkJCTg1
NDA3NTZDMEFENkNCRjkwMDYyMEM1NyAvKiBET01IVE1MT3B0aW9uRWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1REYyRjlDMEFBM0NBRTUwMEFENjRDNSAvKiBET01IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0NzBBQTY5MjYxMDBGMTlGQTMg
LyogRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTg4NjRF
MDFCQkFGNTcxMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODVFQ0JFRjgwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxQYXJhbUVsZW1lbnQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0OTBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTFBy
ZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNDIyNkU5NjExNjNENzNBMDA4QjgzOTcg
LyogRE9NSFRNTFByb2dyZXNzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg2ODIsNyAr
Mjg2NzksNiBAQAogCQkJCUE4MTg1RjNFMDk3NjU3NjYwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdCQTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NSW50ZXJuYWwubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUZGMzE1QjBBQUZCRkNCMDAzNzRG
MzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxRDcyMzZDMUJC
NjE3NDkwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDY1NkZGMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01NZWRpYUxpc3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3NTc5M0VENDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFBQ0FGNEMwRTc5MUFBRjAwODdEMTJCIC8qIERPTU1lc3NhZ2VQb3J0
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODczNSw3ICsyODczMSw2IEBACiAJCQkJMzEwNjAzN0Ex
NDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCThBRDBBNTk3MTRDODgzNTgwMDBEODNDNSAvKiBET01XZWJL
aXRDU1NSZWdpb25SdWxlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRTM4ODM4OTgxQkFEMTQ1RjAw
RDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNjExRTYy
MEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTNGMkIzM0VDMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3
cG9ydFJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4QTE5NTkzMzE0N0VBMTZFMDBEMUVBNjEg
LyogRE9NV2ViS2l0TmFtZWRGbG93Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODc0NCw2ICsyODcz
OSw3IEBACiAJCQkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NV2luZG93Q1NT
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAvKiBET01X
aW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDNzQxQkI0QzRFODAw
MTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0IzOEUyODE1MUM0MjczMDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0QyQUQwMzE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93
UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBRDcxNkE0ODYxQTAwOTc1QTI1
IC8qIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4ODQz
LDcgKzI4ODM5LDYgQEAKIAkJCQkyNkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3Rl
bUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEIzRjc2MEM3MjIwNTUwMDA1MzBERiAvKiBG
aWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MDMwMEIwQ0M0MjUxMjAwQzhB
QzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4ODFC
QjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VNZXRhZGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzVFQjY5RTBFODFEQUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA4QzkyNTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzEzMTNGNjUxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5MDcsNyArMjg5MDIsNiBAQAogCQkJ
CTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEgLyogRnJh
bWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQ0FGMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDQkZFRjkw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzIw
NUFBRjEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFDODFCODkwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTYxLDcgKzI4OTU1LDYgQEAKIAkJCQlBOENGRjdB
NDBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEFuY2hvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTg3MUQ0NUUwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxBcHBsZXRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4RUE3RDJGMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MQXJlYUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOUQxQkI0QzRFODAwMTI4OThGIC8q
IElEQktleVJhbmdlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzVGMjhGQjFBODI3RDg0
MDBDMEYzMUYgLyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0NDYxM0ExMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4NzFEQzJBMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MQmFzZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTA0Myw3ICsyOTAzNiw2IEBACiAJCQkJQTQzQkY1OTgx
MTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThDRkY3QTUwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThEMjIzRkQxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJj
ZVByZWxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM5NDFCQjRDNEU4MDAxMjg5
OEYgLyogSURCS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzIyMEExNTIwNTcwMEIx
MkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3
NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODEzNjlEOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yOTA4NSwxOCArMjkwNzcsNDcgQEAKIAkJCQk1MTNGMTQ1MzBBQjYz
NEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU4
RTBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFF
Q0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxODVGQzc3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJBbnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzU4NUE2NjIxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTE2RDdENzExQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rp
b25Ub0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTZEN0Q2RjFCQjVGMEJEMDBBRjdD
NzcgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVG
QzdBMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGNDFBNjkxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFGNDFBNkIxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkN1cnNvckJhY2tlbmRP
cGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzdEMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDODAx
QkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjQxQTZEMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUJhY2tlbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFGNDFBNzAxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4NDFCQjRDNEU4MDAxMjg5OEYg
LyogSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDODYx
QkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MUJBNEFDMzFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxODVGQzg4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFz
ZU1ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxNDg0NTNFMUJCOUQwN0UwMDZBNzJF
RCAvKiBJREJFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4QTFCQjRDNEU4MDAx
Mjg5OEYgLyogSURCRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVG
QzhDMUJCNEM0RTgwMDEyODk4RiAvKiBJREJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMDMxMDRGMUJBOENDMDMwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTg1RkM5MDFCQjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXguY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTE4NUZDOTQxQkI0QzRFODAwMTI4OThGIC8qIElEQktleS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTg1RkM5NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM5ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5
UGF0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM5QTFCQjRDNEU4MDAxMjg5OEYgLyog
SURCS2V5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOUQxQkI0QzRFODAwMTI4
OThGIC8qIElEQktleVJhbmdlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM5RjFC
QjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTE4NUZDQTMxQkI0QzRFODAwMTI4OThGIC8qIElEQk9wZW5EQlJlcXVlc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwMzEwNUExQkE4REI1NjAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJ
bXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTdCMUJBNzNCNUIwMDJFMDUzQiAvKiBJ
REJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVG
Q0E4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMEE1OEY5MUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTAzMTA1QzFCQThEQjU2MDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTE0NUIxMDkxQkM0OEUyRTAwRTg2MjE5IC8qIElEQlJlc291
cmNlSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQ3MjM2QzFCQjYxNzQ5MDA0
NzhDQTMgLyogSURCUmVzdWx0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkNCQTFC
QjRDQkY4MDAxMjg5OEYgLyogSURCU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODg2
NEU2MUJCQjRCODMwMEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE4NUZDQUMxQkI0QzRFODAwMTI4OThGIC8qIElEQlRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxRjQxQTczMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFBNzUxQkE3M0I1QjAwMkUw
NTNCIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFGNDFBNzcxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQUYxQkI0QzRFODAwMTI4OThGIC8qIElE
QlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTcxRDU3QjBGMzM4
MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NG
MTdBNDE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMzUsNiArMjkxNTYsNyBAQAogCQkJCUFBNEMz
QTc2MEIyQjE2NzkwMDIzMzRBMiAvKiBJbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFQTQ4NTkwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRl
eHRCb3hTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBBNThFNDFCQUE0MEIxMDBDMTky
ODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RTM1MjRC
MTI0NTBDNTIwMEJBRjVEOSAvKiBJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzM0
ODYxMjMxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzA5REU5MDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxNzAsNyArMjkxOTIsNiBAQAogCQkJCTc1NDEz
M0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBDNDMgLyog
SW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4QzFCQjRD
NEU4MDAxMjg5OEYgLyogSURCRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDQ2RjA0
RTE3Qjk2RkJEMDA1NjQ3RjAgLyogSW50UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3
NTM1NjAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjI3NTM1N0MwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC0yOTE4OSw3ICsyOTIxMCw2IEBACiAJCQkJMDcwNTg1MDIxN0ZBMTBEMDAwNUYyQkNC
IC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVF
QzkxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxQTc5NUM2MTg4OEJBREMwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQ0FDMUJCNEM0RTgwMDEyODk4RiAvKiBJREJUcmFu
c2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0MDBBMTMzMTgg
LyogSlNBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFEQTA5RDFD
MTIzMDAwQkUzMjUgLyogSlNBdHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkVENkJDMEM2
QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTM0
Miw3ICsyOTM2Miw2IEBACiAJCQkJRTBGRUYzNzJCNDdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZBNzAzMzI1QzlEMEI2Q0RDQkM0RDc3IC8q
IEpTRXZlbnRUYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MDkwMjAwRTkxQjhFQzAw
MEM2OEI1IC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4
NUZDOUYxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMzMTRBQ0VCMTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzI0RUQzMzExQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRN
aW5NYXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzJGMUFEQTUxQTM5MEI5RjAwMDE0RTE4IC8q
IEpTRVhURnJhZ0RlcHRoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk0MDQsNyArMjk0MjMsNiBA
QAogCQkJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2NEZCMEEyM0MwQ0MwMDVF
NzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQwNjVB
RTBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE4NUZDN0ExQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzQ5MThDNjBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkVEN0E1MEM2QzBGMzYwMDkyMEJGRiAv
KiBKU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MjZG
ODAwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI5NTI5LDYgKzI5NTQ3LDcgQEAKIAkJCQk0MTBCN0U3MjEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBREVE
REIwRTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFBREVENDcwRTc2QjhERDAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NjYyOUQyMDlEQTJCNDgwMDk2MzNBNSAvKiBK
U01vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGNDIwQTIxNkI3MTY0RTAwNTJB
OUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFG
QjA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjk1ODcsNiArMjk2MDYsNyBAQAogCQkJCTY1REYzMjAxMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U1JhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU1JlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZDNEM5NkRFMUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTI5REY4NTFCQjVCODA3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Qzk2REUxQUQ0NDgzNTAw
MzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNGRTJGMTEwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OTk4QUVDRDEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NzA0LDcgKzI5NzI0LDYgQEAKIAkJCQlCMkZB
M0Q5NDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyRkEzRDk2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZpbHRlckVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3QjI4MjUwQ0VGMEMwNzAwRDM5RDU0IC8q
IEpTU1ZHRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDQkExQkI0Q0JG
ODAwMTI4OThGIC8qIElEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwNDBD
Q0FGRjE1MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgzQjc5MDEwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VGb3JtYXRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4M0I3OTAzMENDQUZGMTUwMDBCMDgyNSAvKiBK
U1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTgwMCw3ICsy
OTgxOSw2IEBACiAJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNU
ZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDFBMENENjgy
NjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE2RDdE
NkYxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGREE3QzFBMTg4MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNo
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5ODEzLDcgKzI5ODMxLDYgQEAKIAkJCQlBODY2
MjlEMDA5REEyQjQ4MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUFBQTRGQUQzMTc1RDVDQjMwMDc0Mzg3MyAvKiBKU1VJUmVxdWVzdEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDNzNGQjExMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFu
ZGxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkNBMzFCQjRDNEU4MDAxMjg5OEYgLyog
SURCT3BlbkRCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzczRkIwQzE5MUVGNUE4
MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQxMDBEM0NB
ODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5ODM4
LDcgKzI5ODU1LDYgQEAKIAkJCQlCQzJDQkY3QjE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENv
bnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNGQUQzODE0NzMzRjQwMTBFNDIz
MDcgLyogSlNXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZF
M0ZBRDM4MTQ3MzNGNDAyMEU0MjMwNyAvKiBKU1dlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxODVGQzg0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDcgLyog
SlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUJGMEU3NjEyQTk4
Njg4MDBEQjE3MEEgLyogSlNXZWJHTERyYXdCdWZmZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5QzdCOTk3MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTg1Myw3ICsyOTg2OSw2IEBACiAJCQkJNkY5OTVBMzMxQTcwODMzNzAw
QTczNUY0IC8qIEpTV2ViR0xTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUEy
MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEwN0QzMzU1MTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzhBMUJCNEM0RTgwMDEyODk4RiAvKiBJREJF
dmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMzUxQTcwODMzNzAw
QTczNUY0IC8qIEpTV2ViR0xTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUE0MTA0
MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
Rjk5NUEzNzFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzAwNDEsNiArMzAwNTYsNyBAQAogCQkJCTA3MDU4NTM4MTdGRTA0
NEYwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5OUM3Q0NCNTE4QzZCODk5MDAzMkU0MTMgLyogTWVtb2l6ZWRET01SZXN1bHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMTcwOTc5QzNCRDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQkE0QUNBMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU3RURBMDgxMzg1Q0I5
NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBREI2QjI5ODE4RkI5MDI0MDA4MTk2M0UgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURGOTA5OUU2NDkyMDA1NkU1ODEgLyogTWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA5MywxMyAr
MzAxMDksMTAgQEAKIAkJCQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4
QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEz
RUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTUxQkE0QUNBMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY5Mzk3MjYxQTRBNUZCRDAwRTgz
NDlEIC8qIE5GQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjc3MjYwMDFBNUIzQUQ5MDAzQzI0
REQgLyogTkZBVG9ERkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQzRTAwRTY3NDExMDAw
MUMxMjg3IC8qIE5pbmVQaWVjZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODAw
MDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNDVCMTA5
MUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNDEyOURGODUxQkI1QjgwNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2
YXRlQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzMyMEEyMjk3QkUw
MDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
NEZFNzM0MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NFQUMxMDkxQjQ4M0Q3RjAwMzM0NDgyIC8qIE5vZGVPclN0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwMTQyLDcgKzMwMTU1LDYgQEAKIAkJCQlDRDVFNUI2MTFBMTVGMTU2MDAw
QzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MjA4
OTIxNDdEMzVGOTAwMTBCQzA2IC8qIFBhZ2VDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJREFFRDIwMzAxNkYyNDQyQjAwNzBFQzBGIC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTUxMEE1OEY5MUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NzQyREMxMzQzNjJGMDAw
NTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDJC
MEJEMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MDUwMCw2ICszMDUxMiw3IEBACiAJCQkJRTQ1MzkwNDUwRUFGRDYzNzAwMzY5NUM4IC8qIFNjcm9s
bFZpZXdJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzUzNjc2QjA5QUVEODhCMDBEMzVDRDYg
LyogU2Nyb2xsVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREQxMTI1MUYxMkQw
MDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU3MDU4
RUUxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RjM2RUExNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0QwRTBGQTBFOTcyQzM1MDAyNjVERUEgLyogU2VjdXJpdHlP
cmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0FBMEExQjk4QkNBQjAwMzZBRDgxIC8q
IFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODcyLDcgKzMwODg1
LDYgQEAKIAkJCQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNrTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEMUU3MzQ3MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRENBODI5NjE2NzkxMDBG
MDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gaW4gU291cmNlcyAqLywK
LQkJCQk1MTg1RkM5NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyOTQ5ODY4MzE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25N
YXJrdXBNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMDEyNDJDNTM1MDAyMjI2QkEg
LyogVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUQzMjBFQUQxMjExMDA3RTQ1
MzMgLyogVGhlbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDg5MSw3ICszMDkwMyw2IEBACiAJ
CQkJMUY3MkJGMEExODdGRDQ0OTAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUEzQTZBMzE5NEI1QzIyMDAxQ0JEMjQgLyog
VGlsZUNvdmVyYWdlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0RTcw
MDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM5MDFCQjRD
NEU4MDAxMjg5OEYgLyogSURCSW5kZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4NzcwRjIx
MjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1
QjNEREIxMjUxRjEyRDAwM0VGMjY5IC8qIFRpbWVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzU1M0NGRTkxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTAwLDcgKzMwOTExLDYgQEAKIAkJCQlBMURFNzEzMjE4
NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTFERTcxMkQxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNTFCQTRBQzMxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREMzE0NTlGRkFEMDA4RDhENDUgLyogVHJh
Y2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTgg
LyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkFDMzBGRjE4NEZCMTQ1
MDA4QzRGMUUgLyogVHJhaWxpbmdPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5MjIs
NiArMzA5MzIsNyBAQAogCQkJCTg1MDMxQjREMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzU0QTNDMEIyNEY4QzkwMDNGNkRFQSAvKiBVSUV2ZW50
V2l0aEtleVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNDczOUQxMTc1N0FGRUMwMEU3
Njc2NyAvKiBVSVJlcXVlc3RFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg4NjRFMDFC
QkFGNTcxMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDA4NkZFOTkwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkQxNzYyREYxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzA5NTQsNyArMzA5NjUsNiBAQAogCQkJCTJFM0JCRjA3MTE2MkRBMTEw
MEI5NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQw
MEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMx
NjBBRTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MTg1RkM5QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RFODNEQjExODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAv
KiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTk0LDYgKzMxMDA0LDcg
QEAKIAkJCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM2OURENzE2MzIwMjZDMDA3QzM4
REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxMUE5MDQyMUJCQUI0N0EwMDBDRjE1NiAvKiBXZWJDb3JlSlNC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTQwMzc5QzEyNEJFQTdGMDBBRjQwRTQg
LyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzREOUJBNTBC
OEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzVCNEMyNEUxNTA5MjM2QzAwQTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4dHJhcy5tbSBp
biBTb3VyY2VzICovLApAQCAtMzEwNTMsNyArMzEwNjQsNiBAQAogCQkJCTk3NkQ2QzdCMTIyQjhB
M0QwMDFGRDFGNyAvKiBXZWJLaXRCbG9iQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MTA2MDM2RjE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTZEN0Q3MTFCQjVGMEJEMDBBRjdDNzcgLyogSURC
Q29ubmVjdGlvblRvQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBQTYxQ0ZGMTQ0RDU5
NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDOUFERDgwMENDNDA5MjIwMDA5OEM0QyAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzRkZGRjlBODE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NT
Vmlld3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEwNzgsNyArMzEwODgsNiBAQAog
CQkJCTk3QUFCRDI2MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFERUE0NTUxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJh
Y2tkcm9wTGF5ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjU4MEZBNDE0OTY5MzkxMDBGQjVC
RDggLyogV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkNC
MzFCQjRDNEU4MDAxMjg5OEYgLyogV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzRjQyQjMxRTE4ODEx
OTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKQEAgLTMxMTEwLDYgKzMx
MTE5LDcgQEAKIAkJCQlGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0UyNjQzMDE0NzQ4OTkxMDA1QTg1ODggLyog
V29ya2VyRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0ODBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4
NUZDQjMxQkI0QzRFODAwMTI4OThGIC8qIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RjhFNjY1MTUxRDRBNEIwMEQyRDE4MSAvKiBXb3Jr
ZXJHbG9iYWxTY29wZU5vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM2RTA3
QTQxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkU0MzQ2NEMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExMjEsNyArMzExMzEsNiBAQAogCQkJCUYzNDc0MkU4
MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0Q2QjM0QTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VyU2NyaXB0TG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjU0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwQTU4RTQxQkFBNDBCMTAwQzE5Mjgy
IC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjkwNTZGODBG
MjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5N0FBQkQyQzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMjMwOTlFNjQ5MjAwNTZF
NTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYjk1ZDg1Yy4uODI0Yjcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTE0Niw4ICsxNDYs
OCBAQCBwdWJsaWM6CiBjbGFzcyBFbXB0eVNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBTZWFyY2hQ
b3B1cE1lbnUgewogcHVibGljOgogICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSB7
IHJldHVybiBtX3BvcHVwLmdldCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVj
dG9yPFN0cmluZz4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0
b3I8UmVjZW50U2VhcmNoPiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NlYXJjaFBvcHVwTWVudS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9w
dXBNZW51LmgKaW5kZXggZjE5OWZhYi4uNTdjM2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51LmgKQEAgLTIxLDE5ICsyMSwyNiBAQAogI2lmbmRlZiBTZWFyY2hQ
b3B1cE1lbnVfaAogI2RlZmluZSBTZWFyY2hQb3B1cE1lbnVfaAogCi0jaW5jbHVkZSAiUG9wdXBN
ZW51LmgiCisjaW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBSZWNlbnRTZWFyY2ggeworICAgIFN0cmluZyBz
dHJpbmc7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lOwor
fTsKKworY2xhc3MgUG9wdXBNZW51OworCiBjbGFzcyBTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTZWFyY2hQb3B1cE1lbnU+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5TZWFy
Y2hQb3B1cE1lbnUoKSB7fQorICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHsgfQogICAg
IHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBlbmFibGVkKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNjk5NmZkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU2VhcmNoUG9wdXBNZW51Q29jb2FfaAorI2RlZmluZSBT
ZWFyY2hQb3B1cE1lbnVDb2NvYV9oCisKKyNpbXBvcnQgIlNlYXJjaFBvcHVwTWVudS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4m
IHNlYXJjaEl0ZW1zKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZWNlbnRTZWFyY2g+IGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworCit9CisKKyNlbmRpZiAv
LyBTZWFyY2hQb3B1cE1lbnVDb2NvYV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjEyODQ2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQpAQCAtMCwwICsxLDE0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2VhcmNoUG9wdXBNZW51
Q29jb2EuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGRhdGVLZXkgPSBAImRhdGUiOworc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgaXRlbXNLZXkgPSBAIml0ZW1zIjsKK3N0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IHNlYXJjaGVzS2V5ID0gQCJzZWFyY2hlcyI7CitzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBzZWFyY2hTdHJpbmdLZXkgPSBAInNlYXJjaFN0cmluZyI7CisKK3N0YXRpYyBOU1N0cmlu
ZyAqc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIE5T
U3RyaW5nICphcHBOYW1lID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XTsKKyAgICBpZiAoIWFwcE5hbWUpCisgICAgICAgIGFwcE5hbWUgPSBbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKKyAgICAKKyAgICByZXR1cm4gW1tOU0hvbWVEaXJl
Y3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L1dlYktpdCJd
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDphcHBOYW1lXTsKK30KKworc3RhdGljIE5T
U3RyaW5nICpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkKK3sKKyAgICByZXR1
cm4gW3NlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNTdG9yYWdlRGlyZWN0b3J5KCkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUmVjZW50U2VhcmNoZXMucGxpc3QiXTsKK30KKworc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PnJlYWRTZWFyY2hGaWVsZFJlY2VudFNl
YXJjaGVzUGxpc3QoKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNl
bnRTZWFyY2hlc1BsaXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoQ29udGVudHNPZkZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgp
XSk7CisgICAgaWYgKCFbW3JlY2VudFNlYXJjaGVzUGxpc3QgY2xhc3NGb3JDb2Rlcl0gaXNTdWJj
bGFzc09mQ2xhc3M6W05TTXV0YWJsZURpY3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiByZWNlbnRTZWFyY2hlc1BsaXN0OworfQorCitzdGF0aWMgc3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKK3sK
KyAgICBBU1NFUlQoZGF0ZSk7CisKKyAgICByZXR1cm4gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
KGR1cmF0aW9uX2Nhc3Q8c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihk
YXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkpKTsKK30KKworc3RhdGljIE5TRGF0ZSAqdG9OU0Rh
dGVGcm9tU3lzdGVtQ2xvY2soc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit7CisgICAg
cmV0dXJuIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZHVyYXRpb25fY2Fz
dDxkdXJhdGlvbjxkb3VibGU+Pih0aW1lLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKV07Cit9
CisKK3ZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQoreworICAgIGlmIChuYW1lLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
c1BsaXN0KCk7CisgICAgaWYgKCFyZWNlbnRTZWFyY2hlc1BsaXN0KQorICAgICAgICByZWNlbnRT
ZWFyY2hlc1BsaXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV0sIGl0ZW1z
S2V5LCBuaWxdKTsKKworICAgIGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIFtb
cmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6aXRlbXNLZXldIHJlbW92ZU9iamVjdEZv
cktleTpuYW1lXTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzZWFyY2hJdGVtcy5zaXplKCldKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWFyY2hJ
dGVtIDogc2VhcmNoSXRlbXMpIHsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqcmVjZW50U2Vh
cmNoID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOnNlYXJjaEl0
ZW0uc3RyaW5nLCBzZWFyY2hTdHJpbmdLZXksIHRvTlNEYXRlRnJvbVN5c3RlbUNsb2NrKHNlYXJj
aEl0ZW0udGltZSksIGRhdGVLZXksIG5pbF07CisKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmpl
Y3Q6cmVjZW50U2VhcmNoXTsKKyAgICAgICAgfQorCisgICAgICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKml0ZW1zRGljdGlvbmFyeSA9IFtyZWNlbnRTZWFyY2hlc1BsaXN0IG9iamVjdEZvcktleTpp
dGVtc0tleV07CisgICAgICAgIGlmIChbW2l0ZW1zRGljdGlvbmFyeSBjbGFzc0ZvckNvZGVyXSBp
c1N1YmNsYXNzT2ZDbGFzczpbTlNNdXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICAg
ICAgW2l0ZW1zRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3RzQW5kS2V5czppdGVtcy5nZXQoKSwgc2VhcmNoZXNLZXksIG5pbF0gZm9y
S2V5Om5hbWVdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBbcmVjZW50U2VhcmNoZXNQbGlz
dCBzZXRPYmplY3Q6W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV0gZm9yS2V5Oml0ZW1z
S2V5XTsKKyAgICB9CisKKyAgICBbcmVjZW50U2VhcmNoZXNQbGlzdCB3cml0ZVRvRmlsZTpzZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWljYWxseTpOT107Cit9CisKK1Zl
Y3RvcjxSZWNlbnRTZWFyY2g+IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCit7CisgICAgVmVjdG9yPFJlY2VudFNlYXJjaD4gc2VhcmNoSXRlbXM7CisKKyAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzZWFyY2hJdGVtczsKKworICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNlbnRTZWFyY2hlc1BsaXN0ID0gcmVhZFNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpOworICAgIGlmICghcmVjZW50U2VhcmNoZXNQ
bGlzdCkKKyAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOworCisgICAgTlNEaWN0aW9uYXJ5ICpp
dGVtcyA9IFtyZWNlbnRTZWFyY2hlc1BsaXN0IG9iamVjdEZvcktleTppdGVtc0tleV07CisgICAg
aWYgKCFbaXRlbXMgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAg
IHJldHVybiBzZWFyY2hJdGVtczsKKworICAgIE5TRGljdGlvbmFyeSAqbmFtZUl0ZW1zID0gW2l0
ZW1zIG9iamVjdEZvcktleTpuYW1lXTsKKyAgICBpZiAoIVtuYW1lSXRlbXMgaXNLaW5kT2ZDbGFz
czpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBzZWFyY2hJdGVtczsKKwor
ICAgIE5TQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW25hbWVJdGVtcyBvYmplY3RGb3JLZXk6c2Vh
cmNoZXNLZXldOworICAgIGlmICghW3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05TQXJy
YXkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOworICAgIAorICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICppdGVtIGluIHJlY2VudFNlYXJjaGVzKSB7CisgICAgICAgIGlmICghW2l0
ZW0gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgCisgICAgICAgIE5TU3RyaW5nICpzZWFyY2hTdHJpbmcgPSBbaXRlbSBv
YmplY3RGb3JLZXk6c2VhcmNoU3RyaW5nS2V5XTsKKyAgICAgICAgaWYgKCFbc2VhcmNoU3RyaW5n
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgCisgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtpdGVtIG9iamVjdEZvcktleTpkYXRl
S2V5XTsKKyAgICAgICAgaWYgKCFbZGF0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgc2VhcmNoSXRlbXMuYXBw
ZW5kKHsgU3RyaW5nIHsgc2VhcmNoU3RyaW5nIH0sIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUpIH0p
OworICAgIH0KKworICAgIHJldHVybiBzZWFyY2hJdGVtczsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCA3NGMz
MDVhLi5iODFmZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiB9CiAjZW5kaWYKIAot
dm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2Vh
cmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQg
U2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAgaXRlbXMgPSBhZG9w
dENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdl
dCgpLCBzZWFyY2hJdGVtc1tpXS5zdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
fQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgp
LCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogI2VuZGlmCiB9CiAKLXZvaWQgU2Vh
cmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdp
bjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJl
Y2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTAsOCArOTAsMTAgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46
OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHIK
ICAgICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChpdGVtcy5nZXQoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgaXRl
bSA9IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKTsK
LSAgICAgICAgaWYgKENGR2V0VHlwZUlEKGl0ZW0pID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0g
ICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7CisgICAgICAgIGlmIChDRkdldFR5
cGVJRChpdGVtKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CisgICAgICAgICAgICAvLyBXZSBh
cmUgY2hvb3Npbmcgbm90IHRvIHVzZSBvciBzdG9yZSBzZWFyY2ggdGltZXMgb24gV2luZG93cyBh
dCB0aGlzIHRpbWUsIHNvIGZvciBub3cgaXQncyBPSyB0byB1c2UgYSAiZGlzdGFudCBwYXN0IiB0
aW1lIGFzIGEgcGxhY2Vob2xkZXIuCisgICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoeyBT
dHJpbmcgeyBpdGVtIH0sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1p
bigpIH0pOworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggMjk5YTEzMy4uMjIyZDA4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaApAQCAtMzEsOCArMzEsOCBAQCBwdWJsaWM6CiAgICAgU2VhcmNoUG9wdXBNZW51V2luKFBv
cHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2Vh
cmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpOwogICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCA4OWRjMzRjLi4yMDA4OWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAg
LTM3LDExICszNywxMSBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAi
UG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJT
Y3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVy
RWxlbWVudHMuaCIKQEAgLTg4LDggKzg4LDEyIEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFk
ZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKGZyYW1lKCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlY2VudFNlYXJjaGVzLnJlbW92ZUFs
bCh2YWx1ZSk7Ci0gICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnQoMCwgdmFsdWUpOworICAgIG1f
cmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsTWF0Y2hpbmcoW3ZhbHVlXSAoY29uc3QgUmVjZW50U2Vh
cmNoJiByZWNlbnRTZWFyY2gpIHsKKyAgICAgICAgcmV0dXJuIHJlY2VudFNlYXJjaC5zdHJpbmcg
PT0gdmFsdWU7CisgICAgfSk7CisKKyAgICBSZWNlbnRTZWFyY2ggcmVjZW50U2VhcmNoID0geyB2
YWx1ZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgfTsKKyAgICBtX3JlY2VudFNl
YXJjaGVzLmluc2VydCgwLCByZWNlbnRTZWFyY2gpOwogICAgIHdoaWxlIChzdGF0aWNfY2FzdDxp
bnQ+KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKSA+IGlucHV0RWxlbWVudCgpLm1heFJlc3VsdHMo
KSkKICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVMYXN0KCk7CiAKQEAgLTIyOCw3ICsy
MzIsNyBAQCBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJ
bmRleCkgY29uc3QKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsaXN0SW5kZXgpID09IChzaXpl
IC0gMSkpCiAgICAgICAgIHJldHVybiBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQo
KTsKICNlbmRpZgotICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFdOwor
ICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFdLnN0cmluZzsKIH0KIAog
U3RyaW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtTGFiZWwodW5zaWduZWQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGI2MDU3ODEu
LmJjMGNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgorI2luY2x1ZGUgIlNlYXJj
aFBvcHVwTWVudS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbnB1dEVs
ZW1lbnQ7Ci1jbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKIGNsYXNzIFJlbmRlclNlYXJjaEZpZWxk
IGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSwgcHJpdmF0ZSBQb3B1
cE1lbnVDbGllbnQgewogcHVibGljOgpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlOwogICAgIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+
IG1fc2VhcmNoUG9wdXA7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9yZWNlbnRTZWFyY2hlczsKKyAg
ICBWZWN0b3I8UmVjZW50U2VhcmNoPiBtX3JlY2VudFNlYXJjaGVzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDFhMTdmMTEuLmUzNTM5OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0xMC0wOCAgWmh1byBMaSAgPHphY2hs
aUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyBy
ZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwK
KyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2gg
aGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2VudFNlYXJjaD4sIHdoZXJl
IFJlY2VudFNlYXJjaCBpcyBhIHN0cnVjdAorICAgICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBz
dHJpbmcgYW5kIHRpbWUsIGZvciByZWNlbnQgc2VhcmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRk
aXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoK
KwogMjAxNS0wOS0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBB
U1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkgd2hlbiBydW5uaW5n
IFdlYiBJbnNwZWN0b3IgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNv
cmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDc1ZGE2ZWQuLjcxNTg5NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNo
UG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIFBvcHVwTWVudSogU2VhcmNoUG9w
dXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12
b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJj
aFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCiB7CiB9CiAKLXZvaWQg
U2VhcmNoUG9wdXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiwgVmVjdG9yPFN0cmluZz4mIC8qc2VhcmNoSXRlbXMqLykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51
SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlY2Vu
dFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAppbmRleCA2MTk3Yjdk
Li5iOTgwOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaApAQCAtMzMsOCArMzMsOCBAQCBwdWJsaWM6CiAgICAgU2Vh
cmNoUG9wdXBNZW51SU9TKFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6
UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGQxZGM3
OS4uMDFhNjY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTEwLTA4
ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0
eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2gg
ZW50cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNs
ZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8UmVj
ZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2VhcmNoIGlzIGEgc3RydWN0CisgICAgICAgIHRoYXQg
Y29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hlcyBpbiBv
cmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWxs
IHRoZXNlIG5ldyBSZWNlbnRTZWFyY2hlcyBhcmUgc3RvcmVkIGluIGEgcGxpc3QgaW4gd2hpY2gg
dGhlIHN0cnVjdHVyZSBsb29rcyBsaWtlOgorICAgICAgICBSb290IHsKKyAgICAgICAgICAgICJp
dGVtcyI6IHsKKyAgICAgICAgICAgICAgICBhdXRvc2F2ZSBuYW1lOiB7CisgICAgICAgICAgICAg
ICAgICAgICJzZWFyY2hlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgInNlYXJjaFN0
cmluZyI6IHNlYXJjaFN0cmluZywgImRhdGUiOiBkYXRlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9w
dXBNZW51TWFjLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFj
Lm1tOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBD
YWxsIHNhdmVSZWNlbnRTZWFyY2hlcyBpbiBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYS4K
KyAgICAgICAgKFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVzKTogQ2FsbCBs
b2FkUmVjZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2EuCisgICAg
ICAgIChhdXRvc2F2ZUtleSk6IERlbGV0ZWQuCisKIDIwMTUtMTAtMDYgIERhbmllbCBCYXRlcyAg
PGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBYU0xUIHdoZW4gYnVpbGRpbmcg
V2ViS2l0IGZvciBpT1MgdXNpbmcgdGhlIHB1YmxpYyBpT1MgU0RLCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCmluZGV4IDRj
MWNjNzkuLmRkY2RjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIFNl
YXJjaFBvcHVwTWVudU1hY19oCiAjZGVmaW5lIFNlYXJjaFBvcHVwTWVudU1hY19oCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNo
UG9wdXBNZW51Q29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51
Q2xpZW50OwpAQCAtMzUsOCArMzUsOCBAQCBwdWJsaWM6CiAgICAgflNlYXJjaFBvcHVwTWVudU1h
YygpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMu
bW0KaW5kZXggMmIyMjc4NC4uYWVkNTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtMjMsOSArMjMsNyBA
QAogI2luY2x1ZGUgIlBvcHVwTWVudU1hYy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU2VhcmNoUG9wdXBNZW51TWFj
OjpTZWFyY2hQb3B1cE1lbnVNYWMoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCitTZWFyY2hQb3B1
cE1lbnVNYWM6OlNlYXJjaFBvcHVwTWVudU1hYyhXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkKICAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudU1hYyhjbGllbnQpKSkK
IHsKIH0KQEAgLTM0LDEyICszMiw3IEBAIFNlYXJjaFBvcHVwTWVudU1hYzo6flNlYXJjaFBvcHVw
TWVudU1hYygpCiB7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3Ry
aW5nJiBuYW1lKQotewotICAgIHJldHVybiBbQCJjb20uYXBwbGUuV2ViS2l0LnNlYXJjaEZpZWxk
OiIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmFtZV07Ci19Ci0KLVBvcHVwTWVudSogU2VhcmNo
UG9wdXBNZW51TWFjOjpwb3B1cE1lbnUoKQorV2ViQ29yZTo6UG9wdXBNZW51KiBTZWFyY2hQb3B1
cE1lbnVNYWM6OnBvcHVwTWVudSgpCiB7CiAgICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CiB9CkBA
IC00OSwzMSArNDIsMTIgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVNYWM6OmVuYWJsZWQoKQogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNl
YXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFy
Y2g+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmF1dG9z
YXZlS2V5KG5hbWUpXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6ZSgpXSk7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBzZWFyY2hJdGVtOiBzZWFyY2hJdGVtcykKLSAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDpzZWFy
Y2hJdGVtXTsKLQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNl
dE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOworICAgIFdlYkNv
cmU6OnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyk7CiB9CiAKLXZvaWQgU2Vh
cmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudU1h
Yzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFdl
YkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewotICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VhcmNoSXRlbXMuY2xlYXIoKTsKLSAgICBm
b3IgKE5TU3RyaW5nICppdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgewotICAgICAgICBpZiAoW2l0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1z
LmFwcGVuZChpdGVtKTsKLSAgICB9CisgICAgc2VhcmNoSXRlbXMgPSBXZWJDb3JlOjpsb2FkUmVj
ZW50U2VhcmNoZXMobmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWI1NTdkOS4uZThlZjNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFw
cGxlLmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2Vu
dCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAg
ICAgICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0
b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
cGxhY2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVj
ZW50U2VhcmNoIGlzIGEgc3RydWN0CisgICAgICAgIHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmlu
ZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlv
bmFsIHRpbWUKKyAgICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWxsIHRoZXNlIG5ldyBS
ZWNlbnRTZWFyY2hlcyBhcmUgc3RvcmVkIGluIGEgcGxpc3QgaW4gd2hpY2ggdGhlIHN0cnVjdHVy
ZSBsb29rcyBsaWtlOgorICAgICAgICBSb290IHsKKyAgICAgICAgICAgICJpdGVtcyI6IHsKKyAg
ICAgICAgICAgICAgICBhdXRvc2F2ZSBuYW1lOiB7CisgICAgICAgICAgICAgICAgICAgICJzZWFy
Y2hlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgInNlYXJjaFN0cmluZyI6IHNlYXJj
aFN0cmluZywgImRhdGUiOiBkYXRlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
IChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWNlbnRTZWFyY2g+OjplbmNv
ZGUpOiBFbmNvZGUgdGhlIG5ldyBzdHJ1Y3QgUmVjZW50U2VhcmNoCisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2RlKTogRGVjb2RlIHRoZSBuZXcgc3RydWN0
IFJlY2VudFNlYXJjaAorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKTogQ2FsbCBzYXZlUmVj
ZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2EuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKTogQ2FsbCBsb2FkUmVjZW50
U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2EuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaDoKKwogMjAxNS0xMC0wOSAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0
d28gdW51c2VkIFdLRnJhbWUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IDEwNzc3N2UuLjg5ZjU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNjEsNiArMzYxLDcgQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5JbmZvJzogWyc8V2ViQ29y
ZS9QbHVnaW5EYXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UnOiBb
JzxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JzogWyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+J10sCisgICAgICAgICdXZWJDb3Jl
OjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEnOiBbJzxXZWJDb3JlL1RleHRDaGVj
a2luZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JzogWyc8V2Vi
Q29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4nXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNzFkYzNkNC4uMGY1
NWZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vh
cmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CkBAIC00NzYsNiArNDc3LDIyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXRoPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUGF0aCYgcGF0aCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmVuY29kZShBcmd1
bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlY2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQor
eworICAgIGVuY29kZXIgPDwgcmVjZW50U2VhcmNoLnN0cmluZyA8PCByZWNlbnRTZWFyY2gudGlt
ZTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFJlY2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQoreworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVjZW50U2VhcmNoLnN0cmluZykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjZW50U2VhcmNoLnRpbWUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWdpb246OlNwYW4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgUmVnaW9uOjpTcGFuJik7CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFJlZ2lvbjo6U3BhbiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDE2ZTBhZDAuLmM4M2U5
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IE1pbWVDbGFzc0luZm87CiBzdHJ1Y3QgUGFzdGVib2Fy
ZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87
CitzdHJ1Y3QgUmVjZW50U2VhcmNoOwogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVyczsK
IHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CkBA
IC00NTEsNiArNDUyLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVjZW50U2Vh
cmNoJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OlJlY2VudFNlYXJjaCYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKICNlbmRpZiAvLyBX
ZWJDb3JlQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNiM2U4YmMuLjFjZjkzMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KQEAgLTI2LDUwICsyNiwyOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5o
PgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcm
IG5hbWUpCi17Ci0gICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVs
ZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2Vh
cmNoSXRlbXMpCiB7CiAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGl0ZW1zOwotCi0gICAgaWYgKCFzZWFyY2hJdGVt
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaXRlbXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlKDAsIHNlYXJjaEl0ZW1zLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotCi0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgc2VhcmNoSXRlbSA6IHNlYXJjaEl0ZW1zKQotICAgICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwotICAgIH0KLQotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShh
dXRvc2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVu
dEFwcGxpY2F0aW9uKTsKLSAgICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoa0NGUHJlZmVy
ZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOworICAgIFdlYkNvcmU6OnNhdmVSZWNlbnRTZWFyY2hl
cyhuYW1lLCBzZWFyY2hJdGVtcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFt
ZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAgIGlm
ICghbmFtZSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNo
ZWNrLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpdGVtcyA9IGFkb3B0Q0Yo
ZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoYXV0
b3NhdmVLZXkobmFtZSkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSkp
OwotICAgIGlmICghaXRlbXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBzaXplID0gQ0ZBcnJheUdldENvdW50KGl0ZW1zLmdldCgpKTsgaSA8IHNpemU7ICsraSkg
ewotICAgICAgICBpZiAoYXV0byBpdGVtID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKSkpCi0gICAgICAgICAgICBzZWFy
Y2hJdGVtcy5hcHBlbmQoaXRlbSk7Ci0gICAgfQorICAgIHNlYXJjaEl0ZW1zID0gV2ViQ29yZTo6
bG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDUzYjdmOTMu
LjYyN2YyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcx
LDYgKzcxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CkBAIC0xMjgzLDggKzEyODQsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICAvLyBTZWFyY2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQgc2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAg
ICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UmVjZW50U2VhcmNoPiYpOworICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IFN0cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+Jik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBTcGVlY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2OGZkMDUzLi44ZmJkOTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTM3OSw4ICszNzksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAg
ICAjIFNlYXJjaCBwb3B1cCBtZW51cwotICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFt
ZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCi0gICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0
cmluZyBuYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gcmVzdWx0KQorICAgIFNhdmVSZWNlbnRTZWFy
Y2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRl
bXMpCisgICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OlJlY2VudFNlYXJjaD4gcmVzdWx0KQogCiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDY5MGFmM2UuLmFhMTFjYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAK
QEAgLTczLDEyICs3MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNG
b3JLZXlFdmVudChWZWN0b3I8V1RGOjpTdHJpbmc+JiAvKmNvbW1hbmRzTAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZl
Y3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3Bw
CmluZGV4IDRiOWJlNzMuLjg0NWYzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogICAg
IG1fYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKaW5k
ZXggMWIwNjcwNS4uOGU2ZGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAt
NDcsNyArNDcsNyBAQCBQb3B1cE1lbnUqIFdlYlNlYXJjaFBvcHVwTWVudTo6cG9wdXBNZW51KCkK
ICAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKIH0KIAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50
U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRl
bXMpLCBwYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0SXRlbXMpCit2b2lkIFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHJlc3VsdEl0
ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmgKaW5kZXggOGYxMDExZC4uYTgzOWQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJj
aFBvcHVwTWVudS5oCkBAIC0zMSw4ICszMSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdl
YlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1z
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdU
Rjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2Vh
cmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0tIAoyLjQuNyAoQXBwbGUgR2l0LTU5KQoK
</data>
<flag name="review"
          id="288076"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262998</attachid>
            <date>2015-10-13 11:27:58 -0700</date>
            <delta_ts>2015-10-14 21:03:40 -0700</delta_ts>
            <desc>Revised Patch</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>109059</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA5OWNiYTgwOWI5NzIxY2Y3MWZlNmI2ZDVmZDE2MDJmZWU1ZDQ2ODEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDkgT2N0IDIwMTUgMTQ6MjQ6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIIDEvMl0gV2Ugc2hvdWxk
IGFsc28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgot
LS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDQ2ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogICB8IDE5NyArKysrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCAgICAgICAgICB8ICAxNSArLQogLi4uL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAgfCAgMzggKysrKwogLi4uL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gfCAxMzcgKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3Bw
IHwgIDEyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmggICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmNwcCAgICAgfCAgMTIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5oICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAxNiArKwogLi4uL2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuY3BwICAgICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAyOSArKysKIC4uLi9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oIHwgICA2ICstCiAuLi4vbWFjL1dlYkNv
cmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbSAgICAgICB8ICAzOCArLS0tCiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NiArKysrKwog
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgICAgICAgICAgfCAgIDEg
KwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgICAgfCAg
MTcgKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAgICAg
IHwgICA2ICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bSAgIHwgIDMxICstLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAg
ICAgICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluICB8ICAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
YWdlUHJveHlFZmwuY3BwICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcCAgIHwgICA0ICstCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcCAgICAgICAgICB8ICAgNCArLQogLi4uL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggfCAgIDQgKy0KIDI3IGZpbGVzIGNoYW5nZWQs
IDUwMyBpbnNlcnRpb25zKCspLCAxODkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVw
TWVudUNvY29hLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUxOGEwNDIuLjY1Y2YzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OSBAQAorMjAxNS0xMC0wOCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+
CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNo
IGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4g
b3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFZl
Y3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2VudFNlYXJjaD4sIHdoZXJlIFJlY2VudFNlYXJj
aCBpcyBhIHN0cnVjdAorICAgICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBzdHJpbmcgYW5kIHRp
bWUsIGZvciByZWNlbnQgc2VhcmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1l
CisgICAgICAgIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBBZGRlZCBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGFuZCBTZWFyY2hQb3B1
cE1lbnVDb2NvYS5tbQorICAgICAgICBhbmQgc29ydCB0aGUgcHJvamVjdCBmaWxlLgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFy
Y2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eVNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TZWFyY2hQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5oOiBBZGRlZCBtZXRob2RzIGZvciBTZWFjaFBvcHVwTWVudU1hYyBpbiBXZWJL
aXQKKyAgICAgICAgYW5kIFdlYlBhZ2VQcm94eUNvY29hIGluIFdlYktpdDIgdG8gY2FsbC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVjdG9y
eSk6IFJlY2VudCBzZWFyY2hlcyB3aXRoIHRoZSBuZXcgc3RydWN0dXJlCisgICAgICAgIGFyZSBz
dG9yZWQgaW4gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hGaWVsZFJl
Y2VudFNlYXJjaGVzUGxpc3RQYXRoKTogR2V0IHRoZSBwYXRoIGZvciB0aGUgcGxpc3Qgb2YgdGhl
IHJlY2VudAorICAgICAgICBzZWFyY2hlcyBlbnRyaWVzLgorICAgICAgICAoV2ViQ29yZTo6UmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVz
UGxpc3QpOiBSZXR1cm4gdGhlCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBwbGlzdCBhcyBOU011
dGFibGVEaWN0aW9uYXJ5LgorICAgICAgICAoV2ViQ29yZTo6ZnJvbU5TRGF0ZXRvU3lzdGVtQ2xv
Y2tUaW1lKTogQ29udmVydCBmcm9tIE5TRGF0ZSB0byBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQu
CisgICAgICAgIChXZWJDb3JlOjpmcm9tU3lzdGVtQ2xvY2tUaW1ldG9OU0RhdGUpOiBDb252ZXJ0
IGZyb20gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRvIE5TRGF0ZS4KKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudUNvY29hOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSBkaWN0
aW9uYXJ5IHdoZXJlIGl0IGhhcyB0d28gcGFpcnMKKyAgICAgICAgdGhhdCB0aGUgZmlyc3Qgb25l
IGlzIHRoZSBzZWFyY2ggc3RyaW5nIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyB0aGUgdGltZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudUNvY29hOjpsb2FkUmVjZW50U2VhcmNoZXMp
OiBXZSBleHBlY3QgdGhlIHJlY2VudCBzZWFyY2ggaXRlbSBpbiB0aGUKKyAgICAgICAgcGxpc3Qg
dG8gYmUgYSB0d28tcGFpciBkaWN0aW9uYXJ5LCBhbmQgY29udmVydCB0aGUgZGljdGlvbmFyeSB0
byB0aGUgc3RydWN0IFJlY2VudFNlYXJjaC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNo
UG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6
c2F2ZVJlY2VudFNlYXJjaGVzKTogT25seSBzYXZlIHRoZSBSZWNlbnRTZWFyY2gncyBzZWFyY2gK
KyAgICAgICAgc3RyaW5nIG9uIFdpbmRvd3MgcGxhdGZvcm0sIHdoaWNoIGlzIHdoYXQgd2UgdXNl
ZCB0byBkby4KKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2Vu
dFNlYXJjaGVzKTogU2luY2Ugd2UgbmVlZCB0byBjb25zdHJ1Y3QgYQorICAgICAgICBSZWNlbnRT
ZWFyY2gsIHdlIGdldCB0aGUgc3RyaW5nIGZyb20gdGhlIGFwcCdzIHByZWZlcmVuY2VzLCBhbmQg
c2V0IHRoZSB0aW1lIHRvIGJlCisgICAgICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ6Om1pbigpLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOiBOb3cgdGhh
dCBtX3JlY2VudFNlYXJjaGVzIGFyZSBWZWN0b3I8UmVjZW50U2VhcmNoPiwKKyAgICAgICAgd2Ug
Y2Fubm90IHVzZSAtcmVtb3ZlQWxsIHdpdGggYSBzZWFyY2ggc3RyaW5nLiBVc2UgLXJlbW92ZUFs
bE1hdGNoaW5nIGluc3RlYWQgdG8gcmVtb3ZlIHRoZQorICAgICAgICBpdGVtIHRoYXQgaGFzIGl0
cyBtZW1iZXIgc2VhcmNoIHN0cmluZyBlcXVhbCB0byB0aGUgc2VhcmNoIHN0cmluZyB1c2VyIGlu
cHV0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KToKKwog
MjAxNS0xMC0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgog
CiAgICAgICAgIEZpeCBsaWNlbnNlIGFuZCBjb3B5cmlnaHRzIG9mIFdlYkNvcmUganMgYmluZGlu
ZyBidWlsdGluIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOWRjYmFlYy4uNWJhYzBjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDY1LDYgKzQ2NSw4
IEBACiAJCTBDM0YxRjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMzRjFGNTgx
MEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi87IH07CiAJCTBDNDUz
NDI3MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNDUzNDI1MTBDREJCRkEw
MDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLzsgfTsKIAkJMEM0NTM0Mjgx
MENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNDUzNDI2MTBDREJCRkEwMDg2OTE1
NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi87IH07CisJCTBFNzA1OEVFMUJDNUJDMTkw
MDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFy
Y2hQb3B1cE1lbnVDb2NvYS5tbSAqLzsgfTsKKwkJMEU3MDU4RjQxQkM1Q0VEQTAwNDVBNTA3IC8q
IFNlYXJjaFBvcHVwTWVudUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51
Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzQzA3MzE4ODQ2OTVFMDBBNUY4
Q0EgLyogU3lzdGVtTWVtb3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwM0MwNzUxODg0ODA1NTAwQTVGOENBIC8qIEluc3BlY3Rvck92ZXJs
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIy
RDRBMTVCNDc4QjIwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwOTA4N0YxNDQ0RkRCMjAwMDI4
OTE3IC8qIFNjcm9sbGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTcxNDE1MTQyMTg5RkMwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVt
ZS5jcHAgKi87IH07CkBAIC03Njg5LDYgKzc2OTEsOCBAQAogCQkwQzNGMUY1OTEwQzg4NzEyMDBE
NzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNDUzNDI2MTBDREJCRkEwMDg2
OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VhcmNoUG9wdXBN
ZW51Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBFNzA1OEYzMUJDNUND
RDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWFy
Y2hQb3B1cE1lbnVDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjAzQzA3
MzE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN5c3RlbU1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjA5OUQwNjE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDk5RDA3
MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA3MSwxMSArMTcwNzUsMTEgQEAKIAkJ
CQlDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAgLyogTlNVUkxEb3dubG9hZFNQSS5oICovLAogCQkJ
CTY1M0VGODM4MTlBMDQzQUUwMDUyMjAyQyAvKiBOU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaCAq
LywKIAkJCQkzMUIzMTNEQzFCNjk4N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggKi8s
CisJCQkJQ0VFMjdBQ0ExQkJCNTNBMjAwNzI0MDBBIC8qIHB0aHJlYWRTUEkuaCAqLywKIAkJCQlD
RTEyNTIzQzFBMTY3NkNEMDA4NjQ0ODAgLyogUXVhcnR6Q29yZVNQSS5oICovLAogCQkJCTM3MTc4
MzM5MUFBQ0RDRjcwMDA5MTBFMyAvKiBTZWN1cml0eVNQSS5oICovLAogCQkJCUNFQzMzN0FDMUE0
NjA3MUYwMDlCODUyMyAvKiBTZXJ2ZXJzU1BJLmggKi8sCiAJCQkJQTE5RDkzNDUxQTlGRUM3MjAw
QjQ2QzI0IC8qIFdlYkZpbHRlckV2YWx1YXRvclNQSS5oICovLAotCQkJCUNFRTI3QUNBMUJCQjUz
QTIwMDcyNDAwQSAvKiBwdGhyZWFkU1BJLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5NDY1LDYgKzE5NDY5LDggQEAKIAkJCQkx
QUE4NEYwMjE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5tbSAqLywKIAkJCQlG
NDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLywK
IAkJCQlGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
bW0gKi8sCisJCQkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNv
Y29hLmggKi8sCisJCQkJMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVu
dUNvY29hLm1tICovLAogCQkJCTVENTk3NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJz
aW9uLmggKi8sCiAJCQkJNUQ1OTc1QjIxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24u
bW0gKi8sCiAJCQkJN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRl
dGVjdG9yQ29jb2EuY3BwICovLApAQCAtMjE3MTgsNiArMjE3MjQsOCBAQAogCQkJCThGOTM0RDg0
MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThG
OTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKIAkJ
CQlCNTY1NzZFNDE3REE1OTlGMDBBNTZCREMgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlSW5zdHJ1
bWVudGF0aW9uLmggKi8sCisJCQkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmNwcCAqLywKKwkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVM
b2FkZXIuaCAqLywKIAkJCQlDNkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNh
bGxiYWNrLmNwcCAqLywKIAkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlv
bkNhbGxiYWNrLmggKi8sCiAJCQkJODNGMTIwNkExQjhDMTAzNjAwRDc1RjYzIC8qIEpTTm9kZUZp
bHRlckN1c3RvbS5jcHAgKi8sCkBAIC0yMTcyOSw4ICsyMTczNyw2IEBACiAJCQkJNDEyOURGODQx
QkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgg
Ki8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuaCAqLywKLQkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1
bGVMb2FkZXIuY3BwICovLAotCQkJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVs
ZUxvYWRlci5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRB
Y3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRB
Y3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcCAqLywKQEAgLTI0MzQ3LDcgKzI0MzUzLDYgQEAKIAkJCQk1MTJERDhGNjBE
OTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RkQw
RDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkM3RTFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCMzc2MEQxNUM2QzY4NDAw
NTkxMzFEIC8qIEFycmF5VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTY4NkNBMTNBQzE4
MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDM4
Niw3ICsyNDM5MSw2IEBACiAJCQkJRkQzNTkxOTAxMzhEQjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFy
YW1UaW1lbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMjAxMkIwMjY3NjAwQzFBMzU5
IC8qIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4NDEy
QjAyNkY3MDBDMUEzNTkgLyogQXVkaW9Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQzg3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDg2MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1Jlc2FtcGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODgxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvUmVz
YW1wbGVyS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDhDNDZFQzE1NDYwOEU3MDBBNTkx
MEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDI5
LDcgKzI0NDMzLDYgQEAKIAkJCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zvcndh
cmRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyog
QmFyUHJvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8q
IEJhc2VCdXR0b25JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzkxMUJCNEM0
RTgwMDEyODk4RiAvKiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0MxMjZD
QTVDNDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzMzRUU1QzUxNEZCNDk2MTAwMDIwOTVB
IC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0
NTQ3LDcgKzI0NTUwLDYgQEAKIAkJCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBh
dGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU4MDM3MTYyMUE2NkYwMEEwMEJBRjUx
OSAvKiBDbGlwUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMTMxNEZBMDlENTAwNzQ1
N0FFIC8qIENsb3NlRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxRDcyMzZEMUJCNjE3NDkw
MDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDQjEx
MThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUVCNURGMEU4MUI5QUIwMEIyNTk2NSAvKiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQyNUE0OUExODI5MkI4NDAwMjBDRkNGIC8qIENvbGxlY3Rpb25JbmRleENh
Y2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTc0LDcgKzI0NTc2LDYgQEAKIAkJCQk3OUYyRjVB
MjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwOEYxMkIwMjZGNzAwQzFBMzU5IC8qIENvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQ0JCMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUwMEIyNTk2NSAvKiBD
b250ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDU4Nyw3ICsyNDU4OCw2IEBACiAJCQkJ
MjZGMEM4QTAxQTJFQzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRlbnRFeHRl
bnNpb25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZCNjdEQzFBRTZCODJGMDBE
MDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50Rmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQwOTBGRDFBQTUxRTQ4MDA5MTE5MUEgLyogQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0M0NzFEQzEy
RjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywK
QEAgLTI0NjI1LDYgKzI0NjI1LDcgQEAKIAkJCQlFMUM0MTYxMjBGNjU2MkZEMDA5MkQyRkIgLyog
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTVEQTBG
NjU1RDZGMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTkwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29w
aWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUU2RkE3QzFCQkI0RkMzMDA4NzAwRDkgLyogQ3Jv
c3NUaHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTY5ODAzRDExMzM1NDJEMDA4OTQx
MTUgLyogQ1J1bnRpbWVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NUNBMjhCMTMwMzY1
RjgwMEU5OUFEOSAvKiBDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJBRjZFMTgwRjI0
QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ2NzYs
NiArMjQ2NzcsNyBAQAogCQkJCTlEQUM3QzU1MUFGMkNBQTIwMDQzN0M0NCAvKiBDU1NDb250ZW50
RGlzdHJpYnV0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOEZFQkREMTQzRTNFRjcw
MDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUEyMUVD
Q0QwQUJGMEZDNjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTlDQzgxODE2QkI5QUM2MDBFQzY0NUEgLyogQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkIwQzVCODE3QkJENjI5MDAz
RDM2NzcgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0
RDYwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0
NzQwLDcgKzI0NzQyLDYgQEAKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFs
dWVQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyRjA4MjQ1RTU5MDAxRTlBQkMgLyog
Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyog
Q3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQjQxQkI0QzRFODAwMTI4OThG
IC8qIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzIyNzJBRDBFODJFOEYzMDBFN0Y5NzUgLyogQ3Vyc29yTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjJDRDMyNUExMTU3RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOENCNDEzRTBFODYzM0ZEMDAzMkM0RjAgLyogRGFzaEFycmF5LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0NzY3LDEwICsyNDc2OCwxMCBAQAogCQkJCUJDNjQ2NDFDMTFEN0Y0MTYw
MDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAz
MUIzRTBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRyYW5zZmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QjhBRjRBQTBCMUNFMDJCMDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2lu
Z1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5OTEzMTYzNkU2MDAwOUE3RTAgLyog
RGF0YVRyYW5zZmVySXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OUExMzE2MzZFNjAw
MDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEEw
MDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNjEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzRUI2MzcxNTlDNTcwNDAwMDAxQkI3IC8qIERh
dGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKQEAgLTI0Nzg0LDcgKzI0Nzg1LDYgQEAKIAkJ
CQk0MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDA2REZBNjEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAyQzEyQjAyNjc2MDBD
MUEzNTkgLyogRGVsYXlEU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzg1MUJC
NEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwMkUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMzExMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzMwOURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDgwMSw3ICsyNDgwMSw2IEBACiAJCQkJ
NTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTQwMzc5RDEyNEJFQTdGMDBBRjQwRTQgLyogRGV2aWNlT3JpZW50
YXRpb25DbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5MzA5QTEzMTFGNEFFNkEwMDI1
MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQzhEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1OUE4RjFENjExQTY5NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2
aWNlT3JpZW50YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUE4NUVBNDExOUQ2OEVD
MDBERUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NDgyNSw3ICsyNDgyNCw2IEBACiAJCQkJN0VEQUFGQzkxOUEyQ0NEQzAwMzRERkQxIC8qIERpc2tD
YWNoZU1vbml0b3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAw
MTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQy
OUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOTkxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERTcwMDIzMTkyRkU4MkEw
MEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKQEAgLTI0ODU4LDcgKzI0ODU2LDYgQEAKIAkJCQkxQThGNkJDMzBE
QjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODVEMzg5QjIwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1RTcxMThEMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01BdHRySW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUxODVGQ0E3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZWNvcmRJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZCOUZFQjE5QTcyODRCMDA0MjA1NjIgLyogRE9N
QXV0b2NvbXBsZXRlRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZGQjlGRUQxOUE3
Mjg0QjAwNDIwNTYyIC8qIERPTUF1dG9jb21wbGV0ZUVycm9yRXZlbnRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM5NDZFRUYxMDdGREJBQzAwODU3MTkzIC8qIERPTUJlZm9yZUxvYWRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDg3OSw3ICsyNDg3Niw2IEBACiAJCQkJODUwMzJE
RDcwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTkwOUNEQzBBQ0M3QTdFMDBERjAxRjEgLyogRE9NQ1NTQ2hhcnNldFJ1bGVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzJERDkwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNT
U0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE0ODQ1M0YxQkI5RDA3RTAwNkE3
MkVEIC8qIElEQkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTkwOUNERDBBQ0M3QTdFMDBE
RjAxRjEgLyogRE9NQ1NTRm9udEZhY2VSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDMyRERCMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NJbXBvcnRSdWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTkwOUNERTBBQ0M3QTdFMDBERjAxRjEgLyogRE9NQ1NTSW1wb3J0UnVsZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDc0LDcgKzI1MDcwLDYgQEAKIAkJCQk4NUU3
MTFDRDBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVGMzJBRjIwQUE2M0I4NzAwRkYzMTg0IC8qIERPTUhU
TUxUZXh0QXJlYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUNFMEFDNUQ1MzUw
MDUzMjcwRiAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxODVGQ0E0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVuREJSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMUM3OTcxRDE4ODNFNTFGMDAwRjVFMUYgLyogRE9NSFRNTFRleHRB
cmVhRWxlbWVudFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTkyRUMwMEFBNTA2OTUw
MEFDMDc4NSAvKiBET01IVE1MVGl0bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3
MTFDRjBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRpdGxlRWxlbWVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKQEAgLTI1MTAwLDcgKzI1MDk1LDYgQEAKIAkJCQk4NTE4REQ3ODBBOUNGMzFC
MDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFE
MjBBQzVENTM1MDA1MzI3MEYgLyogRE9NTmFtZWROb2RlTWFwSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1M0JGNERCMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MTg1RkM5MzFCQjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXhNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MDc1MjYwQUQ2QzY2NzAwNjIwQzU3IC8qIERPTU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QjQ5OEZCMEFEQjM0MDIwMDkyNUNCQiAvKiBE
T01Ob2RlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2QzM3MEFCMEExN0UwMDAz
MDJFQSAvKiBET01Ob2RlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxMjcsOCArMjUx
MjEsOCBAQAogCQkJCTg1MzhGMDVEMEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5nZUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTM4RjA4NTBBRDcyQ0I2MDA2QTgxRDEgLyogRE9NUmFu
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NThDMzhBNzBBQThGMjA0MDBCMTg3QTQgLyogRE9N
UmVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEYxQkI0QzRFODAwMTI4OThGIC8qIElE
QkdldFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExRDYwQUM1RDUzNTAwNTMyNzBG
IC8qIERPTVJlY3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjcxQkI0Qzc2
NzAwMTI4OThGIC8qIERPTVJlcXVlc3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1RDM1
OEEwQUQ3MDczMTAwMTlBQUM3IC8qIERPTVJHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0QwRkM0RjBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQ5QTI0NkUxNUI5QkQwMDAwRDM0NTI3IC8qIERPTVNlY3VyaXR5UG9saWN5
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTUyLDcgKzI1MTQ2LDYgQEAKIAkJCQkwRjU0RENENTE4
ODBGODY3MDAzRUVEQkIgLyogRE9NVG91Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0Q3
MTg4MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjU0RENEOTE4ODBGODY3MDAzRUVEQkIgLyogRE9NVG91Y2hFdmVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MTg1RkM5QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNTREQ0RBMTg4MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENEQjE4ODBGODY3MDAzRUVEQkIgLyog
RE9NVG91Y2hMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTQ1MzQ5NzE2QTlCQjZBMDAwRjZG
RDIgLyogRE9NVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTYwLDcgKzI1
MTUzLDYgQEAKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdh
bGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERP
TVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRTkxQkJEMTJF
NTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1QzdGNDkxMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTk4OUREMDBBQ0M4QkJEMDBBMEJDNTEgLyogRE9NVUlFdmVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRUQxM0QyQTBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRl
bnNpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTkwLDYgKzI1MTgyLDcgQEAKIAkJCQkxNDAz
Qjk5NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
QzlBMEY3NTE2NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUZBMkQ3ODE1MjEzMkIzMDBDMUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTg1RkM3NTFCQjRDNEU4MDAxMjg5OEYgLyogRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0IzOEUyNzE1MUM0MjcxMDA0NjIy
RTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdEMkFE
MDQxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4OUY2MEIxMTE1N0Y2ODZFMDA3NUUxNTcgLyogRE9NV2luZG93UXVvdGEuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjUzMTksNyArMjUzMTIsNiBAQAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBB
NDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBD
Mzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NBMDBC
MEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmggaW4gSGVhZGVycyAqLywKQEAgLTI1MzQy
LDcgKzI1MzM0LDYgQEAKIAkJCQlCMkFGRkM3RTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjYwRDAwNkNENjAwRUY2
RjI2IC8qIEZvbnREZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE2RTlGQzgxM0Mx
N0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDlFQkRCNjE2QjdFRUEzMDBDQkEzRkMgLyogRm9u
dExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8q
IEZvbnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0
NDAgLyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwMSw3ICsyNTM5
Miw2IEBACiAJCQkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkMzREE2QzBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NN
YXAuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzgzMUJCNEM0RTgwMDEyODk4RiAvKiBJREJE
YXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODczQjg2QjEzNjA2NEVBMDBBNTIy
QzIgLyogR2x5cGhQYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzQzVGNTBEQTU2QjkyMDAy
MUVCNUQgLyogR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY0MEQwMEJGMjIw
MDcxQjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0NDks
NyArMjU0MzksNiBAQAogCQkJCUE4RUE3RDJFMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MQXJlYUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNUYyOEZDMUE4MjdEODQwMEMwRjMxRiAvKiBI
VE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0EyMENENjMz
MTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1
RkM5NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg3MURDMUYwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThERjNGRDIwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCMjRERThFMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJ
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU3NywyNSArMjU1NjYsNjIgQEAKIAkJCQk1
MTNGMTQ1NDBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MTg1RkM3ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNjgxQkE3M0I1QjAwMkUwNTNCIC8q
IElEQkNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjkxQkI0Q0JGODAwMTI4
OThGIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2RDdE
NzIxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTg1RkM1QjFCQjRCRTRDMDAxMjg5OEYgLyogSURCQ29ubmVjdGlv
blRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTZEN0Q3MDFCQjVGMEJEMDBBRjdDNzcg
LyogSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODVGQzdCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxRjQxQTZBMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUY0MUE2QzFCQTczQjVCMDAyRTA1M0IgLyogSURCQ3Vyc29yQmFja2VuZE9w
ZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzgxMUJCNEM0
RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNkUx
QkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGNDFBNkYxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQ2FsbGJhY2tzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUY0MUE3MTFCQTczQjVCMDAyRTA1M0IgLyogSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4MzFCQjRDNEU4MDAxMjg5
OEYgLyogSURCRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDODUxQkI0
QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTg1RkM4NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJ
bmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4OTFCQjRDNEU4MDAxMjg5OEYgLyogSURC
RGF0YWJhc2VNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODQ1M0YxQkI5RDA3RTAw
NkE3MkVEIC8qIElEQkVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4QjFCQjRDNEU4
MDAxMjg5OEYgLyogSURCRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1
RkM4RDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFGNDFBNzIxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMTA1MDFCQThDQzAzMDAzMzI5QzAgLyogSURCRmFjdG9y
eUltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzhGMUJCNEM0RTgwMDEyODk4RiAvKiBJ
REJHZXRSZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzkxMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTMxQkI0QzRFODAwMTI4
OThGIC8qIElEQkluZGV4TWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzk1MUJC
NEM0RTgwMDEyODk4RiAvKiBJREJLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzk3MUJC
NEM0RTgwMDEyODk4RiAvKiBJREJLZXlEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5
OTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4
NUZDOUIxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTg1RkM5RTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2VEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MTg1RkNBMDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmUuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxODVGQ0EyMUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RT
dG9yZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBNDFCQjRDNEU4MDAxMjg5
OEYgLyogSURCT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzEwNUIxQkE4
REI1NjAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTg1RkNBNjFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlcmF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY0MUE3OTFCQTczQjVCMDAyRTA1M0IgLyogSURCUGVuZGluZ0RlbGV0ZUNhbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTdBMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJQZW5k
aW5nT3BlbkNhbGwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3
NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFGNDFBN0MxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0E3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZWNv
cmRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBOTFCQjRDNEU4MDAxMjg5
OEYgLyogSURCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwQTU4RkExQkFDQzdGMjAw
QzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMTA1RDFC
QThEQjU2MDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
NDVCMTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxRDcyMzZEMUJCNjE3NDkwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNCQjFCQjRDQkY4MDAxMjg5OEYgLyogSURCU2VydmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNBQjFCQjRDNEU4MDAxMjg5OEYgLyogSURCU2Vy
dmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4ODY0RTcxQkJCNEI4MzAwRTU0
MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4NUZDQUQx
QkI0QzRFODAwMTI4OThGIC8qIElEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUY0MUE3NDFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUY0MUE3NjFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNhY3Rpb25C
YWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNzgxQkE3M0I1QjAw
MkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxODVGQ0IwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNzFENTdDMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVw
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNTBFRjg2RDQ3MDA5RDBDQUYgLyogSWRlbnRp
dHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENEMTExOEM4
RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLywKQEAgLTI1NjMzLDcgKzI1
NjU5LDcgQEAKIAkJCQkwNzM2N0RERjE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFMTZDNTk1MTdDRkUx
NzIwMDg1MkMwNCAvKiBJbmJhbmRXZWJWVFRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CURCMjNDMkNDMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTFFNkZBN0MxQkJCNEZDMzAwODcwMEQ5IC8qIENyb3NzVGhyZWFkVGFz
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjIxQkI0QzRFODAwMTI4OThGIC8qIEluZGV4
ZWREQi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0MjM0IC8qIElu
bGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU3Q0I1MkUxODJBM0VGQzAwNzlBNjQ3IC8q
IElubGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGNUUzMEExNTVBMDUw
MDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NjQxLDYgKzI1
NjY3LDcgQEAKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogSW5saW5lU3R5bGVTaGVl
dE93bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyog
SW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwMTA3MDExOTI1OTRERjAwOEE0
MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwQTU4RTUx
QkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzM0ODYxMjQxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTcwMSw3ICsyNTcyOCw2IEBACiAJCQkJ
MzE5ODQ4MEMxQTFFNkNFODAwQTEzMzE4IC8qIEpTQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1REYzMURCMDlEMUMxMjMwMDBCRTMyNSAvKiBKU0F0dHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEQTE1RTlFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkM3ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZl
ckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBMDEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUE2
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTcyOSw3ICsyNTc1NSw2IEBACiAJCQkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RB
VEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBMjEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTQxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTEwQTU4RTUxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjVERjMxRjQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTQ2hhcmFjdGVyRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDMDY1ODgwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xp
ZW50UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDMDY1OEEwRjNDRTJBNzAwQ0QyRDg3IC8q
IEpTQ2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3ODQsNiArMjU4MDksNyBA
QAogCQkJCTY1REYzMUY2MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFDMjI2MEQwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRp
b25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUy
MDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQy
OUE0NjMwMEI5OTE4RiAvKiBKU0RPTUNvcmVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQwRUNBRTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRTA4ODhENTExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTgwOCwxNCArMjU4MzQsMTIgQEAKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAz
OTJCRTMgLyogSlNET01XaW5kb3dDU1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERF
MjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA0NCAvKiBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVFMEU5NDQxMTMzQzg5
RjAwQjRDQjEwIC8qIEpTRE9NV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3ODY4QkEx
MzZCOTk5MjAwRDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVERjMxRkEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQURFQzc4RjgxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVDRjdBREQxMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpT
RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4OTFCQjRDNEU4MDAxMjg5
OEYgLyogSURCRGF0YWJhc2VNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODM3OEUw
OUY4NUQ0RjAwQjg1QUU0IC8qIEpTRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjcwRDZB
MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUwRkVGMzcyQjM3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI1ODMyLDcgKzI1ODU2LDYgQEAKIAkJCQk4OTg3ODVGNTEyMkUxRUFDMDAzQUFCREEg
LyogSlNGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjZEOUQyN0IxNEVBQzA4
NjAwOTBENzVFIC8qIEpTRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA5RUJEQzAx
NkI3RjM4RTAwQ0JBM0ZDIC8qIEpTRm9udExvYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4
NUZDQUIxQkI0QzRFODAwMTI4OThGIC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEQTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MThGNTAwMjE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MThGNTAwNDE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkQnV0
dG9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODcwLDcgKzI1ODkzLDYgQEAKIAkJCQlBOEQwNjRG
QzBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNDkxOEM3MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDOTI2RjgxMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNl
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0I3MUJCNEM3NjcwMDEyODk4RiAv
KiBET01SZXF1ZXN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjE1MEExOUQ2MDYw
MDdGQjhDNSAvKiBKU0hUTUxIZWFkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFB
MkYwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhlYWRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUUyQUEzMTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSFJFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI1ODg4LDcgKzI1OTEwLDYgQEAKIAkJCQlCQzQ5MUI3OTBDMDIzRUZE
MDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
NDYxNDNBMENENjg5QzgwMEZBREE3NSAvKiBKU0hUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRTJBRTVDMEExRDI2RjIwMEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODExQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0ExODBBMTlDM0Q2MDA3RkI4QzUgLyogSlNI
VE1MTWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkJFMjY3MTFBRkIzRjIwMDA1
RUEwMyAvKiBKU0hUTUxNZXRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjJB
MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI1OTY1LDYgKzI1OTg2LDcgQEAKIAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNN
ZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1
RSAvKiBKU01lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY1ODRDNzEwNDY1MkNC
MDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4
ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODY2MjlEMTA5REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNkY0MjBBMzE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRh
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDE1LDYgKzI2MDM3LDcgQEAKIAkJCQk2
NURGMzIwMjA5RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8q
IEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGRTJGMTIwQzFCNTgzODAwMjAyMzVGIC8qIEpTUmVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDk5OEFFQ0UxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjYwNjMsNyArMjYwODYs
NiBAQAogCQkJCUE4NEVCRDgzMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUZGOEY2NTE4MDc0NUQ4MDAxMzI2NzQgLyogSlNTdWJ0bGVD
cnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMDExMTA4MEFCNzc0MDUwMERCMEU2OCAvKiBK
U1NWR0FFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg4NjRFNzFCQkI0QjgzMDBFNTQw
QzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5MTI5MjEz
Q0E5NTFFMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaERlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTY1MTVFQzkyMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTYxM0NBOTU2MTAwRDIxOTE1IC8qIEpTU1ZHQWx0
R2x5cGhJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA4Miw3ICsyNjEwNCw2IEBA
CiAJCQkJQjJGQTNENEYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRTdHJpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyRkEzRDUxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTMwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0My
QzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDk2RTM5RTEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDU3MEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYwOTEsNyArMjYxMTIsNiBAQAogCQkJCUIyRkEzRDVEMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0NvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1RjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNENjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ3Vyc29yRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTEwQTU4RkExQkFDQzdGMjAwQzE5MjgyIC8qIElEQlJlcXVlc3RE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjUwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHRGVzY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDY3MEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTE2
LDcgKzI2MTM2LDYgQEAKIAkJCQlCMkZBM0Q4MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDg1MEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0ZFSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZB
M0Q4NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRU1lcmdlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTE4NUZDOTUxQkI0QzRFODAwMTI4OThGIC8qIElEQktleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjJGQTNEODkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDIyNDE4NDEwN0U3N0Y0MDA3NjZBODcgLyogSlNT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q4QjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdGRU9mZnNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYxMzMsNyArMjYxNTIsNiBAQAogCQkJCUE4M0I3OTAyMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NW
R0ZvbnRGYWNlTmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4M0I3OEZFMENDQUZG
MTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgzQjc4RkMwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNBOTFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDlCMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR0dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjdCMjgy
ODBDRUYwQzA3MDBEMzlENTQgLyogSlNTVkdHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYzMDgsMTIgKzI2MzI2LDEwIEBACiAJCQkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8q
IExhYmVsYWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTZGQTI3MTFBRDRBODMw
MDIwQjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIw
QTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNB
MDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDNEM5NkUzMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXll
ckZsdXNoU2NoZWR1bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDkxNkZGNzE5NURG
NkEwMDA1QUIzNDkgLyogTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxODVGQ0IwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTU4MDM3MTY0MUE2NkYxRDMwMEJBRjUxOSAvKiBMYXllckZyYWdt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUEzQTZBMDE5NEI1OUI2MDAxQ0JEMjQgLyogTGF5
ZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyog
TGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMyMSw3ICsyNjMzNyw2IEBA
CiAJCQkJMTQxREMwNTMxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExMjUzOEQ0MTNGOUI2MEEwMDAyNDc1NCAvKiBMYXlvdXRSZXBhaW50ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MURDMDU0MTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRTaXpl
LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzc3OUUxNDFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5MDY2MDcwQkUxNDFENDAw
OTU2OTk4IC8qIExheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA0ODE2NDgz
NDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwM0MyQjkx
QkEyM0EyNjAwRTI2MzM3IC8qIExlZ2FjeUFueS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQyNSw3
ICsyNjQ0MCw2IEBACiAJCQkJQ0UxMjUyNDExQTE2QjFCNjAwODY0NDgwIC8qIE1lZGlhUGxheWVy
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkUyQ0FGQzE5RkYwMjA3MDAxRUVCNEYgLyogTWVk
aWFQcm9kdWNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkEwQTM5REFDQzAwMjIwRkU1
IC8qIE1lZGlhUXVlcnkuaCBpbiBIZWFkZXJzICovLAotCQkJCUUzODgzODk5MUJBRDE0NUYwMEQ2
MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkMwQTM5
REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRFMTk1OTJFMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEM0E5NEEzOTEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxpc3QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjY0NDMsOCArMjY0NTcsNiBAQAogCQkJCUM5RDg1MUYwMUIzOURDNzgw
MDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Qz
QTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MTg1RkNBNjFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERl
Y29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRERDMUU3QTE4
QTk1MkYzMDAyN0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDYxRkU2ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjQ3Myw4ICsyNjQ4NSw4IEBACiAJCQkJMDcwNTg1MjQxN0ZE
QzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OUM3Q0NCMzE4QzY2M0U0MDAzMkU0MTMgLyogTWVtb2l6ZWRE
T01SZXN1bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNkQ3RDcwMUJCNUYwQkQwMEFGN0M3NyAv
KiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNC
MTZDMTgwOTc5QzNCRDAwNDY3NzQxIC8qIE1lbW9yeUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTcxRENDODEzODVFNkE0MDA3MDJERDAgLyogTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGQTA5OUU2NDkyMDA1NkU1ODEg
LyogTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QURFQ0NFMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjQ4NCw3ICsyNjQ5Niw2IEBACiAJCQkJQTc4RTUyNzAxMzQ2QkQxNzAwQUQ5QzMxIC8q
IE1ldGVyU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdERENEQTUxMzg0NTAx
QzAwMDhCNzkzIC8qIE1IVE1MQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdERENEQTcx
Mzg0NTAxQzAwMDhCNzkzIC8qIE1IVE1MUGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1
RkNCOTFCQjRDQkY4MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1M0I4OTVBRjE5REM3RUQ5MDA5Q0FBOTMgLyogTWljcm9UYXNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzN0REQ0Q5NTEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0OTIsNyArMjY1MDMsNiBAQAogCQkJCUNFMTI1
MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGMkIwMTMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNS
ZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0QTBGRkE5RTFBQUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYy
QjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjU0
MCw3ICsyNjU1MCw2IEBACiAJCQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2NzcyNjAxMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RG
QS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRjQzREQwRTY3NDAxMjAwMUMxMjg3IC8qIE5pbmVQ
aWVjZUltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5RTFCQjRDNEU4MDAxMjg5OEYg
LyogSURCS2V5UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI1MjA5Rjg0Qjcx
MDBDQTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzEwQTIyOTdCRTAw
NThEN0FEIC8qIE5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzMzMEEyMjk3
QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI2
NjI3LDcgKzI2NjM2LDYgQEAKIAkJCQk3QTY3NEJEQzBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdy
b3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMDE5QzdCNTJFMDBC
M0M1QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5RDAyMTlDN0I1
MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxNDVCMTBBMUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZCREI2MUExMTZENjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxl
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM4MjA4OTUxNDdEMzVGOTAwMTBCQzA2IC8qIFBh
Z2VSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RjM2RDNCMThGNzU4NzIwMDU0
QzAyNCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2Nzcs
NyArMjY2ODUsNiBAQAogCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjYwMUVCRjE0QjNCOUFEMDAxMkMwRkUgLyogUGxh
dGZvcm1FdmVudEZhY3RvcnlJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUE0ODcwMTRBMDUy
NTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFj
cm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUI1OEZENDE5NUE5NjREMDAyOTkwQjAgLyogUGxh
dGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFB
QjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzI5LDcg
KzI2NzM2LDYgQEAKIAkJCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0VCQzBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFQzBDRDY4MUI1MDBG
QURBNzUgLyogUHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4ODY0RTExQkJB
RjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTJBNjgyNDBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNBREQ3OTE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzQwLDkgKzI2NzQ2LDkgQEAK
IAkJCQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFGOEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFByb3h5U2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRv
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VFMjdBQ0IxQkJCNTNBMjAwNzI0MDBBIC8q
IHB0aHJlYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3
QSAvKiBQdWJsaWNTdWZmaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0Uw
MEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUUyN0FD
QjFCQkI1M0EyMDA3MjQwMEEgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUw
QTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFMTI1MjNEMUExNjc2Q0QwMDg2NDQ4MCAvKiBRdWFydHpDb3JlU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NDJBRjdBOTEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29rLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2NzYxLDYgKzI2NzY3LDkgQEAKIAkJCQlGNTVCM0RDRTEyNTFGMTJEMDAz
RUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFODRFOUUxMTc2
NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgy
N0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFk
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFNkZF
QTFCQkQxNjg0MDAwQTYwNDQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFs
dGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhD
REQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIx
QUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjY5NTMsNyArMjY5NjIsNiBAQAogCQkJCTUxNEM3NjdGMENFOTIzQTEw
MDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwQTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwQTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTFCQTRBQ0IxQkJDNUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8q
IFJldmVyYkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUIxMkIwMjZGNzAw
QzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMjcwNzIsNiArMjcwODAsNyBAQAogCQkJCUJDNkQ2RTI2MDlBRjk0MzUwMEY1OTc1OSAv
KiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0REMjEyNTFGMTJEMDAzRUYy
NjkgLyogU2VhcmNoSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjcxNzA4OTBCMzEx
ODA4MDAxNzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRTcw
NThGNDFCQzVDRURBMDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NkYzNkVCMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRDBFMEZCMEU5NzJDMzUwMDI2NURFQSAvKiBTZWN1cml0eU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFM0FBMEIxQjk4QkNBQjAwMzZBRDgxIC8qIFNl
Y3VyaXR5T3JpZ2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzIwNSw2ICsyNzIxNCw3IEBA
CiAJCQkJQkNFRjQ0NEQwRTY3NDYyODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTNFNjA1MTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZElt
YWdlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5REFDN0M1NzFBRjJDQjY0MDA0MzdDNDQgLyog
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3NzlFMTcx
QkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzVFQjY3RjBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRSZWdpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhCOTBFODIwMUJEMDBCMjU5NjUgLyog
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDE1
LDcgKzI3NDI1LDYgQEAKIAkJCQk4M0MxRDQzMTE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0xpbmV0b0hvcml6b250YWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDMyMTc4RDVB
QjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0E3RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMzE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzNDE3OEQ1QUI1
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0E4MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjc0NjYsMTQgKzI3NDc1LDEyIEBACiAJCQkJQjIyMjdBQzEwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1N5bWJvbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUM1
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJG
QzMxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTE4NUZDQTIxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4MTY2OEQ0MTI1NjAzQkYwMDZGMjVERSAvKiBTVkdUZXh0Q2h1bmtC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDODBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDQjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RjBC
RkM0MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxMDkzREMxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEIxQkI0
QzRFODAwMTI4OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxOThGN0I1MUJCRTAwM0MwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbklt
cGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI2MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc1MzAsNyArMjc1
MzcsNiBAQAogCQkJCUIyQUZGQzlBMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyQzNEQTQwMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNV
c2VyRGVmaW5lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNDIwRDAwNkMxRDAwRUY2RjI2
IC8qIFRleHRDb2RlY1VURjE2LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNCMjFCQjRDNEU4
MDAxMjg5OEYgLyogSW5kZXhlZERCLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1
RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyQjk3
Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNzYyNCw2ICsyNzYzMCw3IEBACiAJCQkJQUE0NzM5RDIxNzU3QUZF
QzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjJEOEE3
OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjNF
MjAxMTM0MzQxMjAwMDI3NDkyNiAvKiBVbmljb2RlQmlkaS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTE4ODY0RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjc4NDYsNiArMjc4NTMsNyBAQAogCQkJCUYzNDc0MkUx
MTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBM0UyNjQzMTE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNj
b3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNCNDFCQjRDNEU4MDAxMjg5OEYgLyogV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3RjhF
NjY2MTUxRDRBNEUwMEQyRDE4MSAvKiBXb3JrZXJHbG9iYWxTY29wZU5vdGlmaWNhdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9i
YWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzZFMDdBNTEzNThBOEJFMDBBQUNC
QzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODIw
OCw3ICsyODIxNiw2IEBACiAJCQkJMzdGNTdBQ0QxQTUwNzJENzAwODc2Rjk4IC8qIEFjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FD
RTFBNTA3MkRBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE5MUM5RkJFMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTQ4NDUzRTFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTkxQzlGQzIxQjY1OUE2NzAwQUZGRDU0IC8qIEFj
Y2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNUQzMURGQTExQ0Y2
MTBCMDA5RjIyQjQgLyogQWN0aXZlRE9NQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFDNERFNkUwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI4MjIzLDExICsyODIzMCw5IEBACiAJCQkJMzE2RkUxMTMwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE5ODQ4
MDIxQTFEODE4MTAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQ5RTkxMkFDMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxODVGQzk4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlQYXRoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzMzA5REQ2MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmROb2Rl
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThGNkJCQzBEQjU1Q0RDMDAxREI3OTQg
LyogQXBwbGljYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThGNkJCRTBEQjU1
Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxODVGQzdEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjRGNTRFQUMxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkMwMERCNTVDREMwMDFEQjc5
NCAvKiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEy
QUFDNTgwREMyQTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjgyODgsNyArMjgyOTMsNiBAQAogCQkJCTQ1ODMwRDREMTY3OUI0Rjgw
MEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OENGRjA1MDBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3MDM2M0UxMTgxQTFDREMwMEMwNzRBNSAvKiBBVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxODg2NEU2MUJCQjRCODMwMEU1NDBDOSAvKiBJREJT
ZXJ2ZXJPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTMxODFBMUNEQzAw
QzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
NzAzNjNFNTE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjgzMjEsNyArMjgzMjUsNiBAQAogCQkJ
CTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUQzMUNEQzE5MTk2MDIwMDAxMDA1QTMgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzc3MUJCNEM0RTgwMDEyODk4RiAvKiBJREJBbnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2NEEyRUQxOTFBRTYzNTAwMTA3MzdEIC8qIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxNEE5NEQ3MTZERkRG
OTUwMDY4REU4MiAvKiBCbG9iUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVERUYx
RjYxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yODM5Myw3ICsyODM5Niw2IEBACiAJCQkJMTREODIzOEIwQUY5MkRGNjAwMDRGMDU3IC8q
IENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQkFGMjIwODBDMDNCMUM3MDBCMEJDRjAg
LyogQ2hyb21lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0OEJGQUIxQjg1NzI5ODAwOTEy
RjM2IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4MDFC
QjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkND
MDY1N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1MDMxQjNGMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI4NTE2LDcgKzI4NTE4LDYgQEAKIAkJCQlCQzAyQTY0NjBF
MDlBQUU5MDA0QjZEMkIgLyogQ1NTRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzIzRTRFMTBEQUFDRTBGMDA5RkRDOTEgLyogQ1NTR3JhZGllbnRWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NTBGNTNERDA5RDE1RERGMDBDOUIwQzggLyogQ1NTR3JhbW1hci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkNBODFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdEQkIyODE4Q0ExOUE0MDBDMTEwNjYgLyogQ1NT
R3JpZExpbmVOYW1lc1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEM0UyNTIzMTgwNDZC
Q0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZCRjg5MDQ1MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yODYzOSwxMiArMjg2NDAsMTAgQEAKIAkJCQlBNzgxQzZBNzEzODI4
QjVEMDAxMkE2MkEgLyogRG9jdW1lbnRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Uw
NTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDk0N0ZGRDEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRl
cmVkTWFwLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzc0MUJCNEM0RTgwMDEyODk4RiAv
KiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDMjI4
MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTRBNEY0OEE5MTZCMERGQzAwMEVEQkIyOSAvKiBEb2N1bWVudFJ1bGVTZXRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFENkU3MUFDMTY2ODg5OUQwMDMyMEMxMyAvKiBEb2N1bWVudFNoYXJl
ZE9iamVjdFBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEI5MDU2MTkwRjI1NzhCRTAwOTVG
RjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
MTg1RkM4NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4MTg1RjNBMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTczODg5QTAxMTZFQTlEQzAwQURGMzEzIC8qIERvY3Vt
ZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0FFMDk3QzcxNUYwMDE5RjNE
OCAvKiBET00ubW0gaW4gU291cmNlcyAqLywKQEAgLTI4NzQ2LDcgKzI4NzQ1LDYgQEAKIAkJCQk4
NTQwNzU2QzBBRDZDQkY5MDA2MjBDNTcgLyogRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NURGMkY5QzBBQTNDQUU1MDBBRDY0QzUgLyogRE9NSFRNTE9wdGlvbnND
b2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUxODNCNDcwQUE2OTI2MTAwRjE5RkEz
IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4ODY0
RTAxQkJBRjU3MTAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg1RUNCRUY4MEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODUxODNCNDkwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxQ
cmVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQyMjZFOTYxMTYzRDczQTAwOEI4Mzk3
IC8qIERPTUhUTUxQcm9ncmVzc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI4NzY2LDcg
KzI4NzY0LDYgQEAKIAkJCQlBODE4NUYzRTA5NzY1NzY2MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QkEwOTdDNzE1RjAwMTlGM0Q4IC8q
IERPTUludGVybmFsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVGRjMxNUIwQUFGQkZDQjAwMzc0
RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUQ3MjM2QzFC
QjYxNzQ5MDA0NzhDQTMgLyogSURCUmVzdWx0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTA2NTZGRjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NTWVkaWFMaXN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzU3OTNFRDQwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUUxQUNBRjRDMEU3OTFBQUYwMDg3RDEyQiAvKiBET01NZXNzYWdlUG9y
dC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg4MTksNyArMjg4MTYsNiBAQAogCQkJCTMxMDYwMzdB
MTQzMjgxQ0QwMEFCRjRCQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5ODM5MTUxMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk4QUQwQTU5NzE0Qzg4MzU4MDAwRDgzQzUgLyogRE9NV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUUzODgzODk4MUJBRDE0NUYw
MEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTYxMUU2
MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzRjJCMzNFQzE2NUFGMTU2MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmll
d3BvcnRSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOEExOTU5MzMxNDdFQTE2RTAwRDFFQTYx
IC8qIERPTVdlYktpdE5hbWVkRmxvdy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg4MjgsNiArMjg4
MjQsNyBAQAogCQkJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTVdpbmRvd0NT
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5NTkgLyogRE9N
V2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzc0MUJCNEM0RTgw
MDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdCMzhFMjgxNTFDNDI3MzAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRv
d1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMkE1QUQ3MTZBNDg2MUEwMDk3NUEy
NSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODky
Nyw3ICsyODkyNCw2IEBACiAJCQkJMjZDMTdBM0YxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0
ZW1JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRCM0Y3NjBDNzIyMDU1MDAwNTMwREYgLyog
RmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNjAzMDBCMENDNDI1MTIwMEM4
QUMyNSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDODgx
QkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlTWV0YWRhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM1RUI2OUUwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwOEM5MjUxOTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxMzEzRjY1MTQ0M0IzNUYwMDZFMkE5MCAvKiBGaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTkxLDcgKzI4OTg3LDYgQEAKIAkJ
CQk0QThDOTZFQjBCRTY5MDMyMDA0RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDNENENjI5QTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVBMjE0ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZy
YW1lVHJlZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkNBRjFCQjRDNEU4MDAxMjg5OEYg
LyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1Q0JGRUY5
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcy
MDVBQUYxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQzgxQjg5MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTA0Niw3ICsyOTA0MSw2IEBACiAJCQkJQThDRkY3
QTQwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxBbmNob3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4NzFENDVFMEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MQXBwbGV0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0QyRjBBMTkzODU1MDBBOEVGNUYgLyogSFRNTEFyZWFF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzlEMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJLZXlSYW5nZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M1RjI4RkIxQTgyN0Q4
NDAwQzBGMzFGIC8qIEhUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFNDQ2MTNBMTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODcxREMyQTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTEJhc2VFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMjgsNyArMjkxMjIsNiBAQAogCQkJCUE0M0JGNTk4
MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVvdGVFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJFNEUwMDE1NzI4OCAvKiBIVE1MUmVzb3Vy
Y2VQcmVsb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOTQxQkI0QzRFODAwMTI4
OThGIC8qIElEQktleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyMjBBMTUyMDU3MDBC
MTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4
NzQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgxMzY5RDkwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjkxNzAsMTggKzI5MTYzLDQ3IEBACiAJCQkJNTEzRjE0NTMwQUI2
MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1
OEUwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUUx
RUNDMDBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MTg1RkM3NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUM1ODVBNjYyMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxNkQ3RDcxMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0
aW9uVG9DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2RDdENkYxQkI1RjBCRDAwQUY3
Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1
RkM3QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjQxQTY5MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjQxQTZCMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5k
T3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM3RDFCQjRDNEU4MDAxMjg5
OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzgw
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUY0MUE2RDFCQTczQjVCMDAyRTA1M0IgLyogSURCRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjQxQTcwMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDODQxQkI0QzRFODAwMTI4OThG
IC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzg2
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFCQTRBQzMxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJh
c2VNZXRhZGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTQ4NDUzRTFCQjlEMDdFMDA2QTcy
RUQgLyogSURCRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOEExQkI0QzRFODAw
MTI4OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1
RkM4QzFCQjRDNEU4MDAxMjg5OEYgLyogSURCRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTAzMTA0RjFCQThDQzAzMDAzMzI5QzAgLyogSURCRmFjdG9yeUltcGwuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE4NUZDOTAxQkI0QzRFODAwMTI4OThGIC8qIElEQkluZGV4LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxODVGQzk0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOTYxQkI0QzRFODAwMTI4OThGIC8qIElEQktleURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOTgxQkI0QzRFODAwMTI4OThGIC8qIElEQktl
eVBhdGguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOUExQkI0QzRFODAwMTI4OThGIC8q
IElEQktleVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzlEMUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJLZXlSYW5nZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOUYx
QkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxODVGQ0EzMUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVuREJSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMDMxMDVBMUJBOERCNTYwMDMzMjlDMCAvKiBJREJPcGVuREJSZXF1ZXN0
SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY0MUE3QjFCQTczQjVCMDAyRTA1M0IgLyog
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1
RkNBODFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MTBBNThGOTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwMzEwNUMxQkE4REI1NjAwMzMyOUMwIC8qIElEQlJlcXVlc3RJbXBsLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxNDVCMTA5MUJDNDhFMkUwMEU4NjIxOSAvKiBJREJSZXNv
dXJjZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFENzIzNkMxQkI2MTc0OTAw
NDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQkEx
QkI0Q0JGODAwMTI4OThGIC8qIElEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg4
NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxODVGQ0FDMUJCNEM0RTgwMDEyODk4RiAvKiBJREJUcmFuc2FjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MUY0MUE3MzFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTc1MUJBNzNCNUIwMDJF
MDUzQiAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxRjQxQTc3MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQ0FGMUJCNEM0RTgwMDEyODk4RiAvKiBJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3MUQ1N0IwRjMz
ODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzND
RjE3QTQxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjIwLDYgKzI5MjQyLDcgQEAKIAkJCQlBQTRD
M0E3NjBCMkIxNjc5MDAyMzM0QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDRUE0ODU5MDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDEwNzAwMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVU
ZXh0Qm94U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwQTU4RTQxQkFBNDBCMTAwQzE5
MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0UzNTI0
QjEyNDUwQzUyMDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMz
NDg2MTIzMTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzMwOURFOTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjU1LDcgKzI5Mjc4LDYgQEAKIAkJCQk3NTQx
MzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGMzgxMEMxQjEzNjVBNDk2MDBFRDZFMzMgLyogSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM1MEI3MzUxM0YxMzc3RDAwODgwQzQzIC8q
IEluc3RydW1lbnRpbmdBZ2VudHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOEMxQkI0
QzRFODAwMTI4OThGIC8qIElEQkZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ0NkYw
NEUxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
NzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyNzUzNTdDMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5tbSBpbiBTb3VyY2Vz
ICovLApAQCAtMjkyNzQsNyArMjkyOTYsNiBAQAogCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJD
QiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1
RUM5MTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMUE3OTVDNjE4ODhCQURDMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkNBQzFCQjRDNEU4MDAxMjg5OEYgLyogSURCVHJh
bnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE5ODQ4MEIxQTFFNkNFNDAwQTEzMzE4
IC8qIEpTQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxREEwOUQx
QzEyMzAwMEJFMzI1IC8qIEpTQXR0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJFRDZCQzBD
NkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk0
MjgsNyArMjk0NDksNiBAQAogCQkJCUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM2QTcwMzMyNUM5RDBCNkNEQ0JDNEQ3NyAv
KiBKU0V2ZW50VGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjA5MDIwMEU5MUI4RUMw
MDBDNjhCNSAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUx
ODVGQzlGMUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMzE0QUNFQjEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcyNEVEMzMxMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5k
TWluTWF4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcyRjFBREE1MUEzOTBCOUYwMDAxNEUxOCAv
KiBKU0VYVEZyYWdEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NDkxLDcgKzI5NTExLDYg
QEAKIAkJCQk5QjFBQjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQwNjRGQjBBMjNDMENDMDA1
RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY1
QUUwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxODVGQzdBMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM0OTE4QzYwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1l
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJFRDdBNTBDNkMwRjM2MDA5MjBCRkYg
LyogSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTI2
RjgwMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yOTYxNyw2ICsyOTYzNiw3IEBACiAJCQkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgy
MjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURF
RERCMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxQURFRDQ3MEU3NkI4REQwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODY2MjlEMjA5REEyQjQ4MDA5NjMzQTUgLyog
SlNNb3VzZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM2RjQyMEEyMTZCNzE2NEUwMDUy
QTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMx
RkIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI5Njc1LDYgKzI5Njk1LDcgQEAKIAkJCQk2NURGMzIwMTA5RDFDQzYwMDAwQkUzMjUgLyog
SlNSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2QzRDOTZERTFBRDQ0
ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDEyOURGODUxQkI1QjgwNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2
YXRlQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEM5NkRFMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRkUyRjExMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDk5OEFFQ0QxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc5Miw3ICsyOTgxMyw2IEBACiAJCQkJQjJG
QTNEOTQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkZBM0Q5NjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGaWx0ZXJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyN0IyODI1MENFRjBDMDcwMEQzOUQ1NCAv
KiBKU1NWR0ZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQ0JBMUJCNENC
RjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzQjc5MDQw
Q0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4M0I3OTAxMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlRm9ybWF0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwMzBDQ0FGRjE1MDAwQjA4MjUgLyog
SlNTVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5MDAsNyAr
Mjk5MjAsNiBAQAogCQkJCUE4NjYyOUQwMDlEQTJCNDgwMDk2MzNBNSAvKiBKU1VJRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQUFBNEZBRDMxNzVENUNCMzAwNzQzODczIC8qIEpTVUlSZXF1
ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYx
IC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQ0Ez
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVuREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDNzNGQjBDMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMTkxOTFFRjgwODAwN0RFMDYxIC8q
IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNUM3NzA5NDEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjk5MjUsNyArMjk5NDQsNiBAQAogCQkJCUJDMkNCRjdCMTQwRjFENTgw
MDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZF
M0ZBRDM4MTQ3MzNGNDAxMEU0MjMwNyAvKiBKU1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDIwRTQyMzA3IC8qIEpTV2ViR0xEZWJ1
Z1NoYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDODQxQkI0QzRFODAwMTI4OThG
IC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFM0ZBRDM4
MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTZFQkYwRTc2MTJBOTg2ODgwMERCMTcwQSAvKiBKU1dlYkdMRHJhd0J1ZmZlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5OTcxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xG
cmFtZWJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTQwLDcgKzI5OTU4LDYgQEAKIAkJ
CQk2Rjk5NUEzMzFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFNhbXBsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlDN0I5QTIxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xTaGFkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTA3RDMzNTUxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xT
aGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOEExQkI0
QzRFODAwMTI4OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2Rjk5NUEzNTFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFN5bmMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlDN0I5QTQxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xUZXh0dXJlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTZGOTk1QTM3MUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVHJh
bnNmb3JtRmVlZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDEyOSw2ICszMDE0Niw3IEBA
CiAJCQkJMDcwNTg1MzgxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5QzdDQ0I1MThDNkI4OTkwMDMyRTQxMyAvKiBNZW1v
aXplZERPTVJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMxNzA5NzlDM0JEMDA0
Njc3NDEgLyogTWVtb3J5Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCQTRBQ0ExQkJD
NUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NTdFREEwODEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFEQjZCMjk4MThGQjkwMjQwMDgxOTYzRSAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5REY5MDk5RTY0
OTIwMDU2RTU4MSAvKiBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMwMTgxLDEzICszMDE5OSwxMCBAQAogCQkJCTQ0M0YwNDI3MEU3NUM4RkIwMDdF
NTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
N0ZBNjQ5MEREQTNDQkEwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTNFRjM0OTE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFCQTRBQ0ExQkJDNUJEOTAw
REYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
NjkzOTcyNjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2
NzcyNjAwMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VGNDNFMDBFNjc0MTEwMDAxQzEyODcgLyogTmluZVBpZWNlSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThDNEE4MDAwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE0NUIxMDkxQkM0OEUyRTAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRp
Zmllci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTI5REY4NTFCQjVCODA3MDAzMjJBMTYgLyog
SlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODU0RkU3MzIwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzQwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VBQzEwOTFCNDgzRDdGMDAzMzQ0ODIgLyogTm9k
ZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAyMzAsNyArMzAyNDUsNiBAQAogCQkJ
CUNENUU1QjYxMUExNUYxNTYwMDBDNjA5RSAvKiBQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGMzgyMDg5MjE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZUNvbnNvbGVBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQUVEMjAzMDE2RjI0NDJCMDA3MEVDMEYgLyogUGFn
ZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwQTU4RjkxQkFDQzdGMjAw
QzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QTJBRjBC
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGMzQ3NDJEQzEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTMwMkIwQkQwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMwNTg4LDYgKzMwNjAyLDcgQEAKIAkJCQlFNDUzOTA0NTBFQUZE
NjM3MDAzNjk1QzggLyogU2Nyb2xsVmlld0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzNTM2
NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjU1QjNERDExMjUxRjEyRDAwM0VGMjY5IC8qIFNlYXJjaElucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRTcwNThFRTFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzZGMzZFQTE0Njg2MjI1MDA1RTkzQjQgLyog
U2VjdXJpdHlDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDBFMEZBMEU5NzJDMzUw
MDI2NURFQSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUzQUEw
QTFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzA5NjIsNyArMzA5NzcsNiBAQAogCQkJCUIxQUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAv
KiBUZXh0VHJhY2tMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QxRTczNDcxNjdCQzc4
RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEQ0E4Mjk2MTY3OTEwMEYwMDg3NTcxNCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbklP
Uy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzk2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJL
ZXlEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5NDk4NjgzMTk1MzQxOTQwMDcyRDJCRCAv
KiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODc3
MEYwMTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RTY1RDMyMEVBRDEyMTEwMDdFNDUzMyAvKiBUaGVtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMw
OTgxLDcgKzMwOTk1LDYgQEAKIAkJCQkxRjcyQkYwQTE4N0ZENDQ5MDAwOUJDQjMgLyogVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNkEz
MTk0QjVDMjIwMDFDQkQyNCAvKiBUaWxlQ292ZXJhZ2VNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0FBM0E2OUIxOTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVHcmlkLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxODVGQzkwMUJCNEM0RTgwMDEyODk4RiAvKiBJREJJbmRleC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OTg3NzBGMjEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNTVCM0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyogVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5OTAsNyArMzEwMDMs
NiBAQAogCQkJCUExREU3MTMyMTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENvbnN0cnVjdG9ycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hF
dmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8q
IFRyYWNrQmFzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUJBNEFDMzFCQkI1Q0Q4MDBERjNE
NkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDMzNEQzMTQ1
OUZGQUQwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhF
MEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZGQUMzMEZGMTg0RkIxNDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMTAxMiw2ICszMTAyNCw3IEBACiAJCQkJODUwMzFCNEQwQTQ0RUZDNzAw
Rjk5MkUwIC8qIFVJRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNTRBM0MwQjI0RjhD
OTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUE0NzM5RDExNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxODg2NEUwMUJCQUY1NzEwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDg2RkU5OTA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5r
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDE3NjJERjE3NjY4NkQ5MDBEODM2QTgg
LyogVXBTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1OTM5MjM3MDlBRTQzNDYwMDJD
NTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTA0NCw3ICszMTA1Nyw2IEBACiAJ
CQkJMkUzQkJGMDcxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjVBMTU0MjcxMjc5NTM0RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZEMzE2MEFFMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzlBMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlS
YW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREU4M0RCMTE4M0M0NDA2MDAzMUVBQTMgLyog
VmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUw
RTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzEwODQsNiArMzEwOTYsNyBAQAogCQkJCUNEQzY5RERCMTYzNzFGRDQwMDdDMzhERiAvKiBX
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
QzY5REQ3MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDExQTkwNDIxQkJBQjQ3QTAw
MENGMTU2IC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNDAz
NzlDMTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzNEQ5QkE1MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRy
YXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNUI0QzI0RTE1MDkyMzZDMDBBNkVGMzcgLyogV2Vi
Q29yZU5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTE0Myw3ICszMTE1Niw2IEBA
CiAJCQkJOTc2RDZDN0IxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxMDYwMzZGMTQzMjdEMkUwMEFCRjRCQSAvKiBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTgzOTE1ODBGMUU3NzY5MDBDMjM3
ODIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNkQ3RDcxMUJC
NUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5QUREODAwQ0M0MDkyMjAwMDk4QzRDIC8qIFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGRkZGOUE4MTU5RDlBNTUw
MDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MTE2OCw3ICszMTE4MCw2IEBACiAJCQkJOTdBQUJEMjYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMURFQTQ1NTFCMzlGNEQ5MDBG
NzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBG
NTgwRkE0MTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxlZEJhY2tpbmdMYXllci5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxODVGQ0IzMUJCNEM0RTgwMDEyODk4RiAvKiBXb3JrZXJHbG9iYWxTY29w
ZUluZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDgyMDMwQjEzOTVBQjZB
MDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTNGNDJCMzFFMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2
QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovLApAQCAtMzEyMDAsNiArMzEyMTEsNyBAQAogCQkJCUYzNDc0MkUwMTM0MzYzMUYwMDUzMUJD
MiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRTI2NDMw
MTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJFNDM0NjQ4MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTg1RkNCMzFCQjRDNEU4MDAxMjg5OEYgLyogV29ya2VyR2xvYmFs
U2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdGOEU2NjUxNTFE
NEE0QjAwRDJEMTgxIC8qIFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGMzZFMDdBNDEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0QzBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTIxMSw3ICszMTIy
Myw2IEBACiAJCQkJRjM0NzQyRTgxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVn
U2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZEMSAv
KiBXb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NTQwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTBB
NThFNDFCQUE0MEIxMDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBCOTA1NkY4MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDJDMTRGQTA5RDUwMDc0NTdBRSAvKiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUyMzA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5k
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBiOTVkODVjLi44MjRiNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcApAQCAtMTQ2LDggKzE0Niw4IEBAIHB1YmxpYzoKIGNsYXNzIEVtcHR5U2VhcmNoUG9wdXBN
ZW51IDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQb3B1
cE1lbnUqIHBvcHVwTWVudSgpIHsgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2Vu
dFNlYXJjaD4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JikgeyB9CiAgICAgdmlydHVhbCBi
b29sIGVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAppbmRleCBmMTk5ZmFiLi5mODA5MDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaApAQCAtMjEsMTkgKzIxLDI2
IEBACiAjaWZuZGVmIFNlYXJjaFBvcHVwTWVudV9oCiAjZGVmaW5lIFNlYXJjaFBvcHVwTWVudV9o
CiAKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUG9wdXBNZW51
OworCitzdHJ1Y3QgUmVjZW50U2VhcmNoIHsKKyAgICBTdHJpbmcgc3RyaW5nOworICAgIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZTsKK307CisKIGNsYXNzIFNlYXJj
aFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlYXJjaFBvcHVwTWVudT4gewogcHVibGlj
OgotICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHt9CisgICAgdmlydHVhbCB+U2VhcmNo
UG9wdXBNZW51KCkgeyB9CiAgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2Vh
cmNoPiYgc2VhcmNoSXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJj
aEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2Nv
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2Eu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTdjNDllCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29j
b2EuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWFyY2hQb3B1cE1l
bnVDb2NvYV9oCisjZGVmaW5lIFNlYXJjaFBvcHVwTWVudUNvY29hX2gKKworI2ltcG9ydCAiU2Vh
cmNoUG9wdXBNZW51LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQg
dm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8
UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpOworV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlY2Vu
dFNlYXJjaD4gbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKK30KKwor
I2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVudUNvY29hX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTJlODdjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tCkBAIC0wLDAgKzEs
MTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TU3RyaW5nICogY29uc3QgZGF0ZUtleSA9IEAiZGF0
ZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBpdGVtc0tleSA9IEAiaXRlbXMiOworc3RhdGlj
IE5TU3RyaW5nICogY29uc3Qgc2VhcmNoZXNLZXkgPSBAInNlYXJjaGVzIjsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHNlYXJjaFN0cmluZ0tleSA9IEAic2VhcmNoU3RyaW5nIjsKKworc3RhdGlj
IE5TU3RyaW5nICpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVjdG9yeSgpCit7
CisgICAgTlNTdHJpbmcgKmFwcE5hbWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdOworICAgIGlmICghYXBwTmFtZSkKKyAgICAgICAgYXBwTmFtZSA9IFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOworICAgIAorICAgIHJldHVybiBbW05T
SG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkv
V2ViS2l0Il0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmFwcE5hbWVdOworfQorCitz
dGF0aWMgTlNTdHJpbmcgKnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKQorewor
ICAgIHJldHVybiBbc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1N0b3JhZ2VEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJSZWNlbnRTZWFyY2hlcy5wbGlzdCJdOwor
fQorCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlYWRTZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzUGxpc3QoKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mRmlsZTpzZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzUGxpc3RQYXRoKCldKTsKK30KKworc3RhdGljIHN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCB0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUgKmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUp
OworCisgICAgcmV0dXJuIHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5
c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxT
aW5jZTE5NzApKSk7Cit9CisKK3N0YXRpYyBOU0RhdGUgKnRvTlNEYXRlRnJvbVN5c3RlbUNsb2Nr
KHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQoreworICAgIHJldHVybiBbTlNEYXRlIGRh
dGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmR1cmF0aW9uX2Nhc3Q8ZHVyYXRpb248ZG91Ymxl
Pj4odGltZS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCldOworfQorCit2b2lkIHNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+
JiBzZWFyY2hJdGVtcykKK3sKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSBy
ZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0KCk7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IGl0ZW1zRGljdGlvbmFyeSA9IFtyZWNlbnRTZWFyY2hlc1BsaXN0IG9i
amVjdEZvcktleTppdGVtc0tleV07CisgICAgLy8gVGhlIE5TTXV0YWJsZURpY3Rpb25hcnkgbWV0
aG9kIHdlIHVzZSB0byByZWFkIHRoZSBwcm9wZXJ0eSBsaXN0IGd1YXJhbnRlZXMgd2UgZ2V0IG9u
bHkKKyAgICAvLyBtdXRhYmxlIGNvbnRhaW5lcnMsIGJ1dCBpdCBkb2VzIG5vdCBndWFyYW50ZWUg
dGhlIGZpbGUgaGFzIGEgZGljdGlvbmFyeSBhcyBleHBlY3RlZC4KKyAgICBpZiAoIVtpdGVtc0Rp
Y3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAgICAgICAg
aXRlbXNEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgcmVjZW50U2VhcmNoZXNQbGlzdCA9IGFkb3B0TlMoW1tOU0RpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6aXRlbXNEaWN0aW9uYXJ5LmdldCgpLCBp
dGVtc0tleSwgbmlsXSk7CisgICAgfQorCisgICAgaWYgKHNlYXJjaEl0ZW1zLmlzRW1wdHkoKSkK
KyAgICAgICAgW2l0ZW1zRGljdGlvbmFyeSByZW1vdmVPYmplY3RGb3JLZXk6bmFtZV07CisgICAg
ZWxzZSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6
ZSgpXSk7CisgICAgICAgIGZvciAoYXV0byBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpCisgICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6c2VhcmNoSXRlbS5zdHJpbmcsIHNlYXJjaFN0cmluZ0tleSwg
dG9OU0RhdGVGcm9tU3lzdGVtQ2xvY2soc2VhcmNoSXRlbS50aW1lKSwgZGF0ZUtleSwgbmlsXSku
Z2V0KCldOworCisgICAgICAgIFtpdGVtc0RpY3Rpb25hcnkgc2V0T2JqZWN0OmFkb3B0TlMoW1tO
U0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6aXRlbXMuZ2V0KCksIHNl
YXJjaGVzS2V5LCBuaWxdKS5nZXQoKSBmb3JLZXk6bmFtZV07CisgICAgfQorCisgICAgW3JlY2Vu
dFNlYXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0
UGF0aCgpIGF0b21pY2FsbHk6Tk9dOworfQorCitWZWN0b3I8UmVjZW50U2VhcmNoPiBsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFZlY3RvcjxSZWNlbnRTZWFy
Y2g+IHNlYXJjaEl0ZW1zOworCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gc2VhcmNoSXRlbXM7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVj
ZW50U2VhcmNoZXNQbGlzdCA9IHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKTsK
KyAgICBpZiAoIXJlY2VudFNlYXJjaGVzUGxpc3QpCisgICAgICAgIHJldHVybiBzZWFyY2hJdGVt
czsKKworICAgIE5TRGljdGlvbmFyeSAqaXRlbXMgPSBbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmpl
Y3RGb3JLZXk6aXRlbXNLZXldOworICAgIGlmICghW2l0ZW1zIGlzS2luZE9mQ2xhc3M6W05TRGlj
dGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gc2VhcmNoSXRlbXM7CisKKyAgICBOU0Rp
Y3Rpb25hcnkgKm5hbWVJdGVtcyA9IFtpdGVtcyBvYmplY3RGb3JLZXk6bmFtZV07CisgICAgaWYg
KCFbbmFtZUl0ZW1zIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAg
ICByZXR1cm4gc2VhcmNoSXRlbXM7CisKKyAgICBOU0FycmF5ICpyZWNlbnRTZWFyY2hlcyA9IFtu
YW1lSXRlbXMgb2JqZWN0Rm9yS2V5OnNlYXJjaGVzS2V5XTsKKyAgICBpZiAoIVtyZWNlbnRTZWFy
Y2hlcyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBzZWFy
Y2hJdGVtczsKKyAgICAKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqaXRlbSBpbiByZWNlbnRTZWFy
Y2hlcykgeworICAgICAgICBpZiAoIVtpdGVtIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBOU1N0cmlu
ZyAqc2VhcmNoU3RyaW5nID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OnNlYXJjaFN0cmluZ0tleV07Cisg
ICAgICAgIGlmICghW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBOU0RhdGUgKmRhdGUg
PSBbaXRlbSBvYmplY3RGb3JLZXk6ZGF0ZUtleV07CisgICAgICAgIGlmICghW2RhdGUgaXNLaW5k
T2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
CisgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZCh7IFN0cmluZ3sgc2VhcmNoU3RyaW5nIH0sIHRv
U3lzdGVtQ2xvY2tUaW1lKGRhdGUpIH0pOworICAgIH0KKworICAgIHJldHVybiBzZWFyY2hJdGVt
czsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmNwcAppbmRleCA3NGMzMDVhLi43M2I2ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJp
bmcmIG5hbWUpCiB9CiAjZW5kaWYKIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYg
c2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgaWYgKHNpemUp
IHsKICAgICAgICAgaXRlbXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNpemUs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCks
IHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5zdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJy
ZW50QXBwbGljYXRpb24pOwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdp
bjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dAogI2VuZGlmCiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMp
Cit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsOCArOTAsMTAgQEAg
dm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIFZlY3RvcjxTdHIKICAgICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRDb3Vu
dChpdGVtcy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgQ0ZTdHJpbmdSZWYgaXRlbSA9IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGl0ZW1zLmdldCgpLCBpKTsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKGl0ZW0pID09
IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRl
bSk7CisgICAgICAgIGlmIChDRkdldFR5cGVJRChpdGVtKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgp
KSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgY2hvb3Npbmcgbm90IHRvIHVzZSBvciBzdG9yZSBz
ZWFyY2ggdGltZXMgb24gV2luZG93cyBhdCB0aGlzIHRpbWUsIHNvIGZvciBub3cgaXQncyBPSyB0
byB1c2UgYSAiZGlzdGFudCBwYXN0IiB0aW1lIGFzIGEgcGxhY2Vob2xkZXIuCisgICAgICAgICAg
ICBzZWFyY2hJdGVtcy5hcHBlbmQoeyBTdHJpbmd7IGl0ZW0gfSwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludDo6bWluKCkgfSk7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
aAppbmRleCAyOTlhMTMzLi4yMjJkMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCkBAIC0zMSw4ICszMSw4IEBAIHB1YmxpYzoKICAg
ICBTZWFyY2hQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFBv
cHVwTWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJ
dGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7CisgICAgdmlydHVhbCB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFy
Y2g+JiBzZWFyY2hJdGVtcyk7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmlu
ZGV4IDg5ZGMzNGMuLjIwMDg5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNlYXJjaEZpZWxkLmNwcApAQCAtMzcsMTEgKzM3LDExIEBACiAjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgpAQCAtODgsOCArODgsMTIgQEAgdm9p
ZCBSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KCkKICAgICBpZiAoZnJhbWUoKS5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsKHZhbHVlKTsKLSAgICBtX3JlY2VudFNlYXJjaGVzLmlu
c2VydCgwLCB2YWx1ZSk7CisgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVBbGxNYXRjaGluZyhb
dmFsdWVdIChjb25zdCBSZWNlbnRTZWFyY2gmIHJlY2VudFNlYXJjaCkgeworICAgICAgICByZXR1
cm4gcmVjZW50U2VhcmNoLnN0cmluZyA9PSB2YWx1ZTsKKyAgICB9KTsKKworICAgIFJlY2VudFNl
YXJjaCByZWNlbnRTZWFyY2ggPSB7IHZhbHVlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpu
b3coKSB9OworICAgIG1fcmVjZW50U2VhcmNoZXMuaW5zZXJ0KDAsIHJlY2VudFNlYXJjaCk7CiAg
ICAgd2hpbGUgKHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpID4gaW5w
dXRFbGVtZW50KCkubWF4UmVzdWx0cygpKQogICAgICAgICBtX3JlY2VudFNlYXJjaGVzLnJlbW92
ZUxhc3QoKTsKIApAQCAtMjI4LDcgKzIzMiw3IEBAIFN0cmluZyBSZW5kZXJTZWFyY2hGaWVsZDo6
aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQ+KGxpc3RJbmRleCkgPT0gKHNpemUgLSAxKSkKICAgICAgICAgcmV0dXJuIHNlYXJjaE1lbnVD
bGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fcmVjZW50U2Vh
cmNoZXNbbGlzdEluZGV4IC0gMV07CisgICAgcmV0dXJuIG1fcmVjZW50U2VhcmNoZXNbbGlzdElu
ZGV4IC0gMV0uc3RyaW5nOwogfQogCiBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1MYWJl
bCh1bnNpZ25lZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmgKaW5kZXggYjYwNTc4MS4uYmMwY2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjaW5jbHVk
ZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmgiCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKLWNsYXNzIFNlYXJjaFBvcHVwTWVudTsKIAog
Y2xhc3MgUmVuZGVyU2VhcmNoRmllbGQgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLCBwcml2YXRlIFBvcHVwTWVudUNsaWVudCB7CiBwdWJsaWM6CkBAIC04Nyw3ICs4
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2VhcmNoUG9wdXBJc1Zpc2libGU7CiAgICAg
UmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gbV9zZWFyY2hQb3B1cDsKLSAgICBWZWN0b3I8U3RyaW5n
PiBtX3JlY2VudFNlYXJjaGVzOworICAgIFZlY3RvcjxSZWNlbnRTZWFyY2g+IG1fcmVjZW50U2Vh
cmNoZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXgg
MWExN2YxMS4uZTM1Mzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1
LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBdWdtZW50IDxp
bnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1l
IGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJh
c2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0
b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2VhcmNoIGlzIGEgc3RydWN0CisgICAgICAg
IHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hl
cyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUgaW5mb3JtYXRpb24uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwOgorICAgICAgICAoU2Vh
cmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoU2VhcmNoUG9w
dXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oOgorCiAyMDE1LTA5LTE3ICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVCghbV9mcm9udGVuZFJvdXRlci0+aGFzTG9jYWxG
cm9udGVuZCgpKSB3aGVuIHJ1bm5pbmcgV2ViIEluc3BlY3RvciB0ZXN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcCBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAK
aW5kZXggNzVkYTZlZC4uNzE1ODk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCkBAIC0zNSwxMSArMzUsMTEg
QEAgUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiAgICAgcmV0dXJu
IG1fcG9wdXAuZ2V0KCk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qc2Vh
cmNoSXRlbXMqLykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNo
SXRlbXMqLykKIHsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYgLypzZWFyY2hJdGVtcyov
KQordm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypzZWFyY2hJdGVtcyovKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5oCmluZGV4IDYxOTdiN2QuLmI5ODA5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zMyw4ICsz
Myw4IEBAIHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVJT1MoV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCA2NTkyMTNiLi45NjdjZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzIgQEAKKzIwMTUtMTAtMDggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisg
ICAgICAgIEF1Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0
b3J5IHdpdGggdGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCisgICAgICAgIGluIG9yZGVy
IHRvIGFsbG93IHRpbWUtYmFzZWQgY2xlYXJpbmcgb2Ygc2VhcmNoIGhpc3RvcnkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgzODguCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBWZWN0b3I8
U3RyaW5nPiB3aXRoIFZlY3RvcjxSZWNlbnRTZWFyY2g+LCB3aGVyZSBSZWNlbnRTZWFyY2ggaXMg
YSBzdHJ1Y3QKKyAgICAgICAgdGhhdCBjb25zaXN0cyBzZWFyY2ggc3RyaW5nIGFuZCB0aW1lLCBm
b3IgcmVjZW50IHNlYXJjaGVzIGluIG9yZGVyIHRvIHN0b3JlIGFkZGl0aW9uYWwgdGltZSBpbmZv
cm1hdGlvbi4KKworICAgICAgICBBbGwgdGhlc2UgbmV3IFJlY2VudFNlYXJjaGVzIGFyZSBzdG9y
ZWQgaW4gYSBwbGlzdCBpbiB3aGljaCB0aGUgc3RydWN0dXJlIGxvb2tzIGxpa2U6CisgICAgICAg
IFJvb3QgeworICAgICAgICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgICAgIGF1dG9zYXZl
IG5hbWU6IHsKKyAgICAgICAgICAgICAgICAgICAgInNlYXJjaGVzIjogWworICAgICAgICAgICAg
ICAgICAgICAgICAgeyAic2VhcmNoU3RyaW5nIjogc2VhcmNoU3RyaW5nLCAiZGF0ZSI6IGRhdGUg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW06CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVNYWM6
OnNhdmVSZWNlbnRTZWFyY2hlcyk6IENhbGwgc2F2ZVJlY2VudFNlYXJjaGVzIGluIFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudUNvY29hLgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51TWFjOjpsb2Fk
UmVjZW50U2VhcmNoZXMpOiBDYWxsIGxvYWRSZWNlbnRTZWFyY2hlcyBpbiBXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnVDb2NvYS4KKyAgICAgICAgKGF1dG9zYXZlS2V5KTogRGVsZXRlZC4KKwogMjAx
NS0xMC0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IERvbid0IGFsbG93IHBsdWctaW5zIHRvIG92ZXJyaWRlIGltYWdlIHR5cGVzIGZvciA8ZW1iZWQ+
IGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVNYWMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudU1hYy5oCmluZGV4IDRjMWNjNzkuLmRkY2RjNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCkBA
IC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIFNlYXJjaFBvcHVwTWVudU1hY19oCiAjZGVmaW5lIFNl
YXJjaFBvcHVwTWVudU1hY19oCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwpAQCAtMzUsOCArMzUsOCBAQCBwdWJs
aWM6CiAgICAgflNlYXJjaFBvcHVwTWVudU1hYygpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQ
b3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYg
c2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KaW5kZXggMmIyMjc4NC4uYWVkNTFkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudU1hYy5tbQpAQCAtMjMsOSArMjMsNyBAQAogI2luY2x1ZGUgIlBvcHVwTWVudU1hYy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotU2VhcmNoUG9wdXBNZW51TWFjOjpTZWFyY2hQb3B1cE1lbnVNYWMoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpCitTZWFyY2hQb3B1cE1lbnVNYWM6OlNlYXJjaFBvcHVwTWVudU1hYyhX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcG9wdXAoYWRvcHRSZWYo
bmV3IFBvcHVwTWVudU1hYyhjbGllbnQpKSkKIHsKIH0KQEAgLTM0LDEyICszMiw3IEBAIFNlYXJj
aFBvcHVwTWVudU1hYzo6flNlYXJjaFBvcHVwTWVudU1hYygpCiB7CiB9CiAKLXN0YXRpYyBOU1N0
cmluZyAqYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBbQCJj
b20uYXBwbGUuV2ViS2l0LnNlYXJjaEZpZWxkOiIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmFt
ZV07Ci19Ci0KLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51TWFjOjpwb3B1cE1lbnUoKQorV2Vi
Q29yZTo6UG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVNYWM6OnBvcHVwTWVudSgpCiB7CiAgICAg
cmV0dXJuIG1fcG9wdXAuZ2V0KCk7CiB9CkBAIC00OSwzMSArNDIsMTIgQEAgYm9vbCBTZWFyY2hQ
b3B1cE1lbnVNYWM6OmVuYWJsZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJj
aFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1l
bnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChzZWFyY2hJdGVtcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6
ZSgpXSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzZWFyY2hJdGVtOiBzZWFyY2hJdGVtcykKLSAg
ICAgICAgW2l0ZW1zIGFkZE9iamVjdDpzZWFyY2hJdGVtXTsKLQotICAgIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0
b3NhdmVLZXkobmFtZSldOworICAgIFdlYkNvcmU6OnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBz
ZWFyY2hJdGVtcyk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0
ZW1zKQogewotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c2VhcmNoSXRlbXMuY2xlYXIoKTsKLSAgICBmb3IgKE5TU3RyaW5nICppdGVtIGluIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5h
bWUpXSkgewotICAgICAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVtKTsKLSAgICB9CisgICAgc2Vh
cmNoSXRlbXMgPSBXZWJDb3JlOjpsb2FkUmVjZW50U2VhcmNoZXMobmFtZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggYmU4MmMwNC4uYmUzMWE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1
LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBdWdtZW50IDxp
bnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1l
IGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAgICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJh
c2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0
b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2VhcmNoIGlzIGEgc3RydWN0CisgICAgICAg
IHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hl
cyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRpbWUKKyAgICAgICAgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgQWxsIHRoZXNlIG5ldyBSZWNlbnRTZWFyY2hlcyBhcmUgc3RvcmVkIGluIGEg
cGxpc3QgaW4gd2hpY2ggdGhlIHN0cnVjdHVyZSBsb29rcyBsaWtlOgorICAgICAgICBSb290IHsK
KyAgICAgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgICAgICAgICBhdXRvc2F2ZSBuYW1lOiB7
CisgICAgICAgICAgICAgICAgICAgICJzZWFyY2hlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsgInNlYXJjaFN0cmluZyI6IHNlYXJjaFN0cmluZywgImRhdGUiOiBkYXRlIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWNlbnRTZWFyY2g+OjplbmNvZGUpOiBFbmNvZGUgdGhlIG5ldyBzdHJ1Y3QgUmVj
ZW50U2VhcmNoCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVj
b2RlKTogRGVjb2RlIHRoZSBuZXcgc3RydWN0IFJlY2VudFNlYXJjaAorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJl
Y2VudFNlYXJjaGVzKTogQ2FsbCBzYXZlUmVjZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNo
UG9wdXBNZW51Q29jb2EuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2Vu
dFNlYXJjaGVzKTogQ2FsbCBsb2FkUmVjZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51Q29jb2EuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2Vh
cmNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRT
ZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuaDoKKwogMjAxNS0xMC0xMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBBdm9pZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBzY3JlZW4g
Ym91bmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDEw
Nzc3N2UuLjg5ZjU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CkBAIC0zNjEsNiArMzYxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAg
ICAgICdXZWJDb3JlOjpQbHVnaW5JbmZvJzogWyc8V2ViQ29yZS9QbHVnaW5EYXRhLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UnOiBbJzxXZWJDb3JlL1Bhc3RlYm9hcmQu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JzogWyc8V2ViQ29y
ZS9QYXN0ZWJvYXJkLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpSZWNlbnRTZWFyY2gnOiBbJzxX
ZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVxdWVzdERhdGEnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVu
dC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEnOiBbJzxXZWJDb3Jl
L1RleHRJbmRpY2F0b3IuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggNzFkYzNkNC4uMGY1NWZlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU1LDYgKzU1LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdD
b29yZGluYXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2Vy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CkBAIC00NzYsNiAr
NDc3LDIyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXRoPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgUGF0aCYgcGF0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1
bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlY2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQoreworICAgIGVuY29kZXIgPDwgcmVj
ZW50U2VhcmNoLnN0cmluZyA8PCByZWNlbnRTZWFyY2gudGltZTsKK30KKworYm9vbCBBcmd1bWVu
dENvZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJl
Y2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVj
ZW50U2VhcmNoLnN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVjZW50U2VhcmNoLnRpbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWdpb246OlNwYW4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwg
Y29uc3QgUmVnaW9uOjpTcGFuJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYsIFJlZ2lvbjo6U3BhbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDE2ZTBhZDAuLmM4M2U5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTc5LDYgKzc5LDcgQEAgc3Ry
dWN0IE1pbWVDbGFzc0luZm87CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87CitzdHJ1Y3QgUmVjZW50U2VhcmNo
Owogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdS
ZXN1bHQ7CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CkBAIC00NTEsNiArNDUyLDExIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVjZW50U2VhcmNoJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlJlY2VudFNlYXJjaCYpOworfTsK
KwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKICNlbmRpZiAvLyBXZWJDb3JlQXJndW1lbnRDb2RlcnNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCmluZGV4IDNiM2U4YmMuLjFjZjkzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI2LDUwICsyNiwyOSBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAorI2lt
cG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5
cGVDYXN0c0NGLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJu
IFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYg
KCFuYW1lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hl
Y2suCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGl0ZW1zOwotCi0gICAgaWYgKCFzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaXRlbXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNlYXJjaEl0ZW1zLnNp
emUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0
byYgc2VhcmNoSXRlbSA6IHNlYXJjaEl0ZW1zKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotICAg
IH0KLQotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQo
KSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKLSAgICBD
RlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoa0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b24pOworICAgIFdlYkNvcmU6OnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5n
JiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJl
Y2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAgIGlmICghbmFtZSkgewogICAgICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBpdGVtcyA9IGFkb3B0Q0YoZHluYW1pY19jZl9jYXN0PENGQXJy
YXlSZWY+KENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCks
IGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSkpOwotICAgIGlmICghaXRlbXMpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gQ0ZBcnJheUdl
dENvdW50KGl0ZW1zLmdldCgpKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoYXV0byBp
dGVtID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGl0ZW1zLmdldCgpLCBpKSkpCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoaXRlbSk7
Ci0gICAgfQorICAgIHNlYXJjaEl0ZW1zID0gV2ViQ29yZTo6bG9hZFJlY2VudFNlYXJjaGVzKG5h
bWUpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGUxNTExYjcuLjE0ZjRkYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNo
UG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRl
Lmg+CkBAIC0xMjg1LDggKzEyODYsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAvLyBTZWFy
Y2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYp
OworICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxXZWJD
b3JlOjpSZWNlbnRTZWFyY2g+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBTcGVl
Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCAxYjIwOGY2Li5mMTY1YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTM3OSw4ICszNzksOCBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAjIFNlYXJjaCBwb3B1cCBtZW51
cwotICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4gc2Vh
cmNoSXRlbXMpCi0gICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9y
PFN0cmluZz4gcmVzdWx0KQorICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSwgVmVj
dG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRlbXMpCisgICAgTG9hZFJlY2VudFNl
YXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gcmVz
dWx0KQogCiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
YWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwCmluZGV4IDNjNTc0ZDIuLjFlOTJmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTczLDEyICs3MywxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChWZWN0b3I8V1RG
OjpTdHJpbmc+JiAvKmNvbW1hbmRzTAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRT
ZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDRiOWJlNzMuLjg0NWYz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmluZEFjY2Vzc2li
aWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogICAgIG1fYWNjZXNzaWJpbGl0eVBsdWdJ
RCA9IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpS
ZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+
JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwg
VmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMWIwNjcwNS4uOGU2ZGYzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWFyY2hQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNDcsNyArNDcsNyBAQCBQb3B1cE1l
bnUqIFdlYlNlYXJjaFBvcHVwTWVudTo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1cC5n
ZXQoKTsKIH0KIAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykKK3ZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMp
CiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01OSw3ICs1
OSw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7
CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0SXRlbXMpCit2b2lkIFdl
YlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHJlc3VsdEl0ZW1zKQogewogICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKaW5k
ZXggOGYxMDExZC4uYTgzOWQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCkBAIC0zMSw4
ICszMSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNlYXJjaFBvcHVwTWVudT4gY3Jl
YXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0tIAoyLjQu
NyAoQXBwbGUgR2l0LTU5KQoK
</data>
<flag name="review"
          id="288214"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263136</attachid>
            <date>2015-10-14 21:03:40 -0700</date>
            <delta_ts>2015-10-14 22:19:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-We-should-also-store-the-time-information-for-recent.patch</filename>
            <type>text/plain</type>
            <size>108924</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBlZWJmYjlhYjNkMThkYWRjY2U0NzA4Y2VkZmNkYzhhOGVkZjkyMzczIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDkgT2N0IDIwMTUgMTQ6MjQ6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIIDEvMl0gV2Ugc2hvdWxk
IGFsc28gc3RvcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gZm9yIHJlY2VudAogc2VhcmNoZXMuCgot
LS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDQ2ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogICB8IDE5NyArKysrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCAgICAgICAgICB8ICAxNSArLQogLi4uL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAgfCAgMzggKysrKwogLi4uL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gfCAxMzcgKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3Bw
IHwgIDEyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmggICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmNwcCAgICAgfCAgMTIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5oICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAxNiArKwogLi4uL2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuY3BwICAgICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAyOSArKysKIC4uLi9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oIHwgICA2ICstCiAuLi4vbWFjL1dlYkNv
cmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbSAgICAgICB8ICAzOCArLS0tCiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NiArKysrKwog
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgICAgICAgICAgfCAgIDEg
KwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgICAgfCAg
MTcgKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAgICAg
IHwgICA2ICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bSAgIHwgIDMxICstLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAg
ICAgICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluICB8ICAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
YWdlUHJveHlFZmwuY3BwICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcCAgIHwgICA0ICstCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcCAgICAgICAgICB8ICAgNCArLQogLi4uL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggfCAgIDQgKy0KIDI3IGZpbGVzIGNoYW5nZWQs
IDUwMyBpbnNlcnRpb25zKCspLCAxODkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVw
TWVudUNvY29hLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3YzdlMzkuLmM0ZWM2MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OSBAQAorMjAxNS0xMC0wOCAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+
CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNo
IGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRlZCwKKyAgICAgICAgaW4g
b3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFyY2ggaGlzdG9yeS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODM4OC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNlIFZlY3Rv
cjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2VudFNlYXJjaD4sIHdoZXJlIFJlY2VudFNlYXJjaCBp
cyBhIHN0cnVjdAorICAgICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBzdHJpbmcgYW5kIHRpbWUs
IGZvciByZWNlbnQgc2VhcmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRkaXRpb25hbCB0aW1lCisg
ICAgICAgIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGRlZCBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGFuZCBTZWFyY2hQb3B1cE1l
bnVDb2NvYS5tbQorICAgICAgICBhbmQgc29ydCB0aGUgcHJvamVjdCBmaWxlLgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTZWFyY2hQ
b3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVNl
YXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
ZWFyY2hQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1l
bnVDb2NvYS5oOiBBZGRlZCBtZXRob2RzIGZvciBTZWFjaFBvcHVwTWVudU1hYyBpbiBXZWJLaXQK
KyAgICAgICAgYW5kIFdlYlBhZ2VQcm94eUNvY29hIGluIFdlYktpdDIgdG8gY2FsbC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVjdG9yeSk6
IFJlY2VudCBzZWFyY2hlcyB3aXRoIHRoZSBuZXcgc3RydWN0dXJlCisgICAgICAgIGFyZSBzdG9y
ZWQgaW4gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzUGxpc3RQYXRoKTogR2V0IHRoZSBwYXRoIGZvciB0aGUgcGxpc3Qgb2YgdGhlIHJl
Y2VudAorICAgICAgICBzZWFyY2hlcyBlbnRyaWVzLgorICAgICAgICAoV2ViQ29yZTo6UmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxp
c3QpOiBSZXR1cm4gdGhlCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBwbGlzdCBhcyBOU011dGFi
bGVEaWN0aW9uYXJ5LgorICAgICAgICAoV2ViQ29yZTo6ZnJvbU5TRGF0ZXRvU3lzdGVtQ2xvY2tU
aW1lKTogQ29udmVydCBmcm9tIE5TRGF0ZSB0byBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQuCisg
ICAgICAgIChXZWJDb3JlOjpmcm9tU3lzdGVtQ2xvY2tUaW1ldG9OU0RhdGUpOiBDb252ZXJ0IGZy
b20gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRvIE5TRGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudUNvY29hOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBBZGQgYSBkaWN0aW9u
YXJ5IHdoZXJlIGl0IGhhcyB0d28gcGFpcnMKKyAgICAgICAgdGhhdCB0aGUgZmlyc3Qgb25lIGlz
IHRoZSBzZWFyY2ggc3RyaW5nIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyB0aGUgdGltZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudUNvY29hOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBX
ZSBleHBlY3QgdGhlIHJlY2VudCBzZWFyY2ggaXRlbSBpbiB0aGUKKyAgICAgICAgcGxpc3QgdG8g
YmUgYSB0d28tcGFpciBkaWN0aW9uYXJ5LCBhbmQgY29udmVydCB0aGUgZGljdGlvbmFyeSB0byB0
aGUgc3RydWN0IFJlY2VudFNlYXJjaC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6c2F2
ZVJlY2VudFNlYXJjaGVzKTogT25seSBzYXZlIHRoZSBSZWNlbnRTZWFyY2gncyBzZWFyY2gKKyAg
ICAgICAgc3RyaW5nIG9uIFdpbmRvd3MgcGxhdGZvcm0sIHdoaWNoIGlzIHdoYXQgd2UgdXNlZCB0
byBkby4KKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNl
YXJjaGVzKTogU2luY2Ugd2UgbmVlZCB0byBjb25zdHJ1Y3QgYQorICAgICAgICBSZWNlbnRTZWFy
Y2gsIHdlIGdldCB0aGUgc3RyaW5nIGZyb20gdGhlIGFwcCdzIHByZWZlcmVuY2VzLCBhbmQgc2V0
IHRoZSB0aW1lIHRvIGJlCisgICAgICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ6Om1pbigpLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOiBOb3cgdGhhdCBt
X3JlY2VudFNlYXJjaGVzIGFyZSBWZWN0b3I8UmVjZW50U2VhcmNoPiwKKyAgICAgICAgd2UgY2Fu
bm90IHVzZSAtcmVtb3ZlQWxsIHdpdGggYSBzZWFyY2ggc3RyaW5nLiBVc2UgLXJlbW92ZUFsbE1h
dGNoaW5nIGluc3RlYWQgdG8gcmVtb3ZlIHRoZQorICAgICAgICBpdGVtIHRoYXQgaGFzIGl0cyBt
ZW1iZXIgc2VhcmNoIHN0cmluZyBlcXVhbCB0byB0aGUgc2VhcmNoIHN0cmluZyB1c2VyIGlucHV0
cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KToKKwogMjAx
NS0xMC0xNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNb3ZlIHNvbWUgRXZlbnRIYW5kbGVyIGluaXRpYWxpemF0aW9uIHRvIHRoZSBoZWFkZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAwMjc3ZmI4Li42ZGZlYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NjUsNiArNDY1LDggQEAKIAkJMEMzRjFGNUIxMEM4
ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzNGMUY1ODEwQzg4NzEyMDBENzJDRTEgLyog
V2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLzsgfTsKIAkJMEM0NTM0MjcxMENEQkJGQTAwODY5MTU3
IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xV
bmlmb3JtTG9jYXRpb24uY3BwICovOyB9OwogCQkwQzQ1MzQyODEwQ0RCQkZBMDA4NjkxNTcgLyog
SlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb24uaCAqLzsgfTsKKwkJMEU3MDU4RUUxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBv
cHVwTWVudUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1t
ICovOyB9OworCQkwRTcwNThGNDFCQzVDRURBMDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29j
b2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFNzA1
OEYzMUJDNUNDRDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDNDMDc0MTg4NDY5NUUw
MEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMDNDMDczMTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjAz
QzA3NTE4ODQ4MDU1MDBBNUY4Q0EgLyogSW5zcGVjdG9yT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjA5MDg3RjE0NDRGREIyMDAwMjg5MTcgLyogU2Nyb2xsYmFyVGhl
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
NzE0MTUxNDIxODlGQzAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLzsgfTsKQEAgLTc2
ODgsNiArNzY5MCw4IEBACiAJCTBDM0YxRjU5MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZv
cm1Mb2NhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xVbmlmb3JtTG9jYXRp
b24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzQ1MzQyNTEwQ0RCQkZBMDA4
NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlm
b3JtTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFVu
aWZvcm1Mb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRTcwNThFRDFC
QzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJj
aFBvcHVwTWVudUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDNDMDczMTg4NDY5NUUwMEE1RjhDQSAv
KiBTeXN0ZW1NZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVt
TWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDk5RDA2MTdCOTY4QTEw
MEZGODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8q
IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3MDY5LDExICsxNzA3MywxMSBAQAogCQkJCUNFMTI1MjU0MUExQkVDMEUw
MDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggKi8sCiAJCQkJNjUzRUY4MzgxOUEwNDNBRTAw
NTIyMDJDIC8qIE5TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oICovLAogCQkJCTMxQjMxM0RDMUI2
OTg3REIwMEYyQUFCQyAvKiBOU1VSTFJlcXVlc3RTUEkuaCAqLywKKwkJCQlDRUUyN0FDQTFCQkI1
M0EyMDA3MjQwMEEgLyogcHRocmVhZFNQSS5oICovLAogCQkJCUNFMTI1MjNDMUExNjc2Q0QwMDg2
NDQ4MCAvKiBRdWFydHpDb3JlU1BJLmggKi8sCiAJCQkJMzcxNzgzMzkxQUFDRENGNzAwMDkxMEUz
IC8qIFNlY3VyaXR5U1BJLmggKi8sCiAJCQkJQ0VDMzM3QUMxQTQ2MDcxRjAwOUI4NTIzIC8qIFNl
cnZlcnNTUEkuaCAqLywKIAkJCQlBMTlEOTM0NTFBOUZFQzcyMDBCNDZDMjQgLyogV2ViRmlsdGVy
RXZhbHVhdG9yU1BJLmggKi8sCi0JCQkJQ0VFMjdBQ0ExQkJCNTNBMjAwNzI0MDBBIC8qIHB0aHJl
YWRTUEkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTk0NjMsNiArMTk0NjcsOCBAQAogCQkJCTFBQTg0RjAyMTQzQkE3QkQwMDUx
RDE1MyAvKiBTY3JvbGxDb250cm9sbGVyLm1tICovLAogCQkJCUY0Nzg3NTUyMTk5ODNBRkYwMDI0
QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oICovLAogCQkJCUY0Nzg3NTUzMTk5ODNB
RkYwMDI0QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbSAqLywKKwkJCQkwRTcwNThG
MzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAqLywKKwkJCQkwRTcw
NThFRDFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8sCiAJCQkJ
NUQ1OTc1QjExOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLywKIAkJCQk1RDU5
NzVCMjE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSAqLywKIAkJCQk3Q0M1NjRC
OTE4QkFDNzIwMDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHAgKi8s
CkBAIC0yMTcxNSw2ICsyMTcyMSw4IEBACiAJCQkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8q
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJCQkJOEY5MzREODMxMTg5RjFFRTAwNTA4
RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovLAogCQkJCUI1NjU3NkU0MTdEQTU5OUYw
MEE1NkJEQyAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCAqLywKKwkJ
CQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovLAorCQkJ
CUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oICovLAogCQkJCUM2
RjQyMEEwMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwICovLAogCQkJ
CUM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJ
CQk4M0YxMjA2QTFCOEMxMDM2MDBENzVGNjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLywK
QEAgLTIxNzI2LDggKzIxNzM0LDYgQEAKIAkJCQk0MTI5REY4NDFCQjVCN0Y3MDAzMjJBMTYgLyog
SlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlFMUMzNkQzMjBF
QjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwICovLAogCQkJCUUx
QzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oICovLAot
CQkJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi8sCi0J
CQkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8sCiAJCQkJ
QkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5jcHAgKi8sCiAJCQkJ
QkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5oICovLAogCQkJCTQx
RjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICovLApA
QCAtMjQzNDQsNyArMjQzNTAsNiBAQAogCQkJCTUxMkREOEY2MEQ5MUU2QUYwMDBGODlFRSAvKiBB
cmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGRDBEOTFFNkFGMDAwRjg5RUUgLyog
QXJjaGl2ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZDMEQ5MUU2QUYwMDBG
ODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzdFMUJC
NEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMkREOEY4MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUIzNzYwRDE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5j
QXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MzgzLDcgKzI0Mzg4LDYgQEAKIAkJ
CQlGRDM1OTE5MDEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAyMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Qcm9jZXNzaW5n
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg0MTJCMDI2RjcwMEMxQTM1OSAvKiBB
dWRpb1Byb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODcxQkI0QzRFODAwMTI4
OThGIC8qIElEQkRhdGFiYXNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
ODYxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvUmVzYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjA4ODEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEOEM0NkVDMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ0MjYsNyArMjQ0MzAsNiBAQAogCQkJ
CUJDQThDQTYwMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzlFNjFDQTEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOTExQkI0QzRFODAwMTI4OThGIC8qIElEQklu
ZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQzEyNkNBNUM0MDBCNjNFOEQgLyogQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVFMEM2NUMxNjQzQzQy
QzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdp
dGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1NDQsNyArMjQ1NDcsNiBAQAog
CQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTgwMzcxNjIxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5N0FBQkQxMzE0RkEwOUQ1MDA3NDU3QUUgLyogQ2xvc2VFdmVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTFENzIzNkQxQkI2MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3Vs
dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBD
b2RlR2VuZXJhdG9yLnBtIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REYwRTgxQjlBQjAwQjI1
OTY1IC8qIENvbGxhcHNlZEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDI1QTQ5
QTE4MjkyQjg0MDAyMENGQ0YgLyogQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCBpbiBIZWFkZXJzICov
LApAQCAtMjQ1NzEsNyArMjQ1NzMsNiBAQAogCQkJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAv
KiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4RjEyQjAyNkY3
MDBDMUEzNTkgLyogQ29uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDOTdBRjMwOEVBOTA4ODAw
QUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQkIxQkI0Q0JGODAw
MTI4OThGIC8qIElEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUMwOTc3RDND
MDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTE0NzA4
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM1RUI5ODEwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRhLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0NTg0LDcgKzI0NTg1LDYgQEAKIAkJCQkyNkYwQzhBMDFBMkVDM0JFMDAy
Nzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQky
NjIzOTEzNjFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRkI2N0RDMUFFNkI4MkYwMEQwNkM1QSAvKiBDb250ZW50RXh0
ZW5zaW9uU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDNzUxQkI0QzRFODAw
MTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE0OTc4NkYxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExNDA5MEZEMUFBNTFFNDgwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QzQ3MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ2MjIsNiArMjQ2MjIs
NyBAQAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNURBMEY2NTVENkYwMDkyRDJGQiAvKiBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQz
NDY1OTBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxRTZGQTdDMUJCQjRGQzMwMDg3MDBEOSAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxNjk4MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1Q0EyOEIxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNkUxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0
b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDY3Myw2ICsyNDY3NCw3IEBACiAJCQkJ
OURBQzdDNTUxQUYyQ0FBMjAwNDM3QzQ0IC8qIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4RkVCREQxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3Nz
ZmFkZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMg
LyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3NzlFMTQxQkIy
MTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTRBOUNDODE4MTZCQjlBQzYwMEVDNjQ1QSAvKiBDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCBp
biBIZWFkZXJzICovLAogCQkJCUZCQjBDNUI4MTdCQkQ2MjkwMDNEMzY3NyAvKiBDU1NGaWx0ZXJJ
bWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjRENjBDQjQyOThBMDA1RjJCNjIg
LyogQ1NTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MzcsNyArMjQ3MzksNiBAQAog
CQkJCUU0OUJEOUZBMTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MTg1RkNCNDFCQjRDNEU4MDAxMjg5OEYgLyogV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3MkFEMEU4MkU4RjMw
MEU3Rjk3NSAvKiBDdXJzb3JMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkNEMzI1QTExNTdF
NTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0I0MTNF
MEU4NjMzRkQwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3NjQs
MTAgKzI0NzY1LDEwIEBACiAJCQkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRE
T01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5OTJF
MCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCOEFGNEFBMEIxQ0UwMkIw
MDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2
RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRBMDA3ODMxQjgyMEVD
ODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTczMkIw
QjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREI2MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NTNFQjYzNzE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ3ODEsNyArMjQ3ODIsNiBAQAogCQkJCTQxQTNENThGMTAxQzE1MkQw
MDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MDZERkE2MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE2MDJDMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheURTUEtl
cm5lbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDODUxQkI0QzRFODAwMTI4OThGIC8qIElE
QkRhdGFiYXNlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAyRTEyQjAyNjc2
MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzMTEyQjAy
Njc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
RERGMDk5RTY0OTIwMDU2RTU4MSAvKiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0Nzk4LDcgKzI0Nzk4LDYgQEAKIAkJCQk1OUE4RjFEODExQTY5NTIwMDAx
QUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
NDAzNzlEMTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDOEQxQkI0QzRFODAw
MTI4OThGIC8qIElEQkZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QThGMUQ2MTFBNjk1
MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbkRhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU5QTg1RUE0MTE5RDY4RUMwMERFRjFFRiAvKiBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0ODIyLDcgKzI0ODIxLDYgQEAK
IAkJCQk3RURBQUZDOTE5QTJDQ0RDMDAzNERGRDEgLyogRGlza0NhY2hlTW9uaXRvckNvY29hLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNDNjE5MkVDQzgzMDA5ODRC
NzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
MTg1RkM5OTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOUVDQzgxOTJFQ0M4MzAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQ4NTUsNyArMjQ4NTMsNiBAQAogCQkJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBE
T01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUQzODlCMjBBOTkxQTdG
MDAyODIxNDUgLyogRE9NQXR0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOEQwQUM1RDUz
NTAwNTMyNzBGIC8qIERPTUF0dHJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZD
QTcxQkI0QzRFODAwMTI4OThGIC8qIElEQlJlY29yZElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTc2RkI5RkVCMTlBNzI4NEIwMDQyMDU2MiAvKiBET01BdXRvY29tcGxldGVFcnJvckV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZCOUZFRDE5QTcyODRCMDA0MjA1NjIgLyogRE9N
QXV0b2NvbXBsZXRlRXJyb3JFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0
NkVFRjEwN0ZEQkFDMDA4NTcxOTMgLyogRE9NQmVmb3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI0ODc2LDcgKzI0ODczLDYgQEAKIAkJCQk4NTAzMkRENzBBQThDOUJFMDA3RDNCN0Qg
LyogRE9NQ1NTQ2hhcnNldFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0RDMEFDQzdB
N0UwMERGMDFGMSAvKiBET01DU1NDaGFyc2V0UnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTAzMkREOTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTRm9udEZhY2VSdWxlLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0REMEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NGb250
RmFjZVJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzJEREIwQUE4QzlCRTAw
N0QzQjdEIC8qIERPTUNTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTA5Q0RF
MEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NJbXBvcnRSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjUwNzEsNyArMjUwNjcsNiBAQAogCQkJCTg1RTcxMUNEMEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NUYzMkFGMjBBQTYzQjg3MDBGRjMxODQgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQ0UwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQTQxQkI0
QzRFODAwMTI4OThGIC8qIElEQk9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
Qzc5NzFEMTg4M0U1MUYwMDBGNUUxRiAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50UHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODU5OTJFQzAwQUE1MDY5NTAwQUMwNzg1IC8qIERPTUhUTUxU
aXRsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUNGMEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01IVE1MVGl0bGVFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjUw
OTcsNyArMjUwOTIsNiBAQAogCQkJCTg1MThERDc4MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1l
ZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUQyMEFDNUQ1MzUwMDUzMjcwRiAv
KiBET01OYW1lZE5vZGVNYXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUzQkY0REIw
QUJCNkI1NTAwODY0N0JCIC8qIERPTU5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzkz
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJJbmRleE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTQwNzUyNjBBRDZDNjY3MDA2MjBDNTcgLyogRE9NTm9kZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODVCNDk4RkIwQURCMzQwMjAwOTI1Q0JCIC8qIERPTU5vZGVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDMzcwQUIwQTE3RTAwMDMwMkVBIC8qIERPTU5vZGVJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTEyNCw4ICsyNTExOCw4IEBACiAJCQkJODUzOEYw
NUQwQUQ3MjJGMTAwNkE4MUQxIC8qIERPTVJhbmdlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1MzhGMDg1MEFENzJDQjYwMDZBODFEMSAvKiBET01SYW5nZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1OEMzOEE3MEFBOEYyMDQwMEIxODdBNCAvKiBET01SZWN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTg1RkM4RjFCQjRDNEU4MDAxMjg5OEYgLyogSURCR2V0UmVzdWx0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUU3MTFENjBBQzVENTM1MDA1MzI3MEYgLyogRE9NUmVjdEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkNCNzFCQjRDNzY3MDAxMjg5OEYgLyogRE9NUmVx
dWVzdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTVEMzU4QTBBRDcwNzMxMDAxOUFBQzcg
LyogRE9NUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDBGQzRGMERCRDcyMEIwMEIy
RjYzMCAvKiBET01SR0JDb2xvckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlBMjQ2
RTE1QjlCRDAwMDBEMzQ1MjcgLyogRE9NU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLApA
QCAtMjUxNDksNyArMjUxNDMsNiBAQAogCQkJCTBGNTREQ0Q1MTg4MEY4NjcwMDNFRURCQiAvKiBE
T01Ub3VjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRDcxODgwRjg2NzAwM0VFREJCIC8q
IERPTVRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0Q5MTg4MEY4NjcwMDNF
RURCQiAvKiBET01Ub3VjaEV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVG
QzlCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1NERDREExODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTREQ0RCMTg4MEY4NjcwMDNFRURCQiAvKiBET01Ub3VjaExpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxNDUzNDk3MTZBOUJCNkEwMDBGNkZEMiAvKiBET01UcmFuc2l0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxNTcsNyArMjUxNTAsNiBAQAogCQkJCUJDMUEz
N0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtlckludGVybmFs
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFi
bGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVDN0Y0OTEwQUFGNzlEQzAw
NDAxNEREIC8qIERPTVVJRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTg5REQwMEFDQzhC
QkQwMEEwQkM1MSAvKiBET01VSUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
RDEzRDJBMENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjUxODcsNiArMjUxNzksNyBAQAogCQkJCTE0MDNCOTk3MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUZDOUEwRjc1MTY0MDk0Q0YwMDNE
NkI4RCAvKiBET01XaW5kb3dDU1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkEyRDc4MTUyMTMy
QjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QjM4RTI3MTUxQzQyNzEwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0QyQUQwNDE0QjgyM0E2MDA5M0RGMzIg
LyogRE9NV2luZG93UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5RjYwQjExMTU3RjY4
NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTMxNiw3
ICsyNTMwOSw2IEBACiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVM
YXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBG
bG9hdENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlBNTI4RTg0MTdEN0Y1MkYwMEFB
OTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDNzc5RTE3MUJC
MjI3Q0EwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkU2OTk4NzIxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NjkwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTI3Q0EwMEIwRjJCMDkwMEYxN0M3QiAvKiBG
bG9hdFBvaW50M0QuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzMzksNyArMjUzMzEsNiBAQAogCQkJ
CUIyQUZGQzdFMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkMzREE2NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udERlc2NyaXB0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3RjggLyogRm9u
dEZlYXR1cmVTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRTgxQkJEMTJERjAw
MEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQwOUVCREI2MTZCN0VFQTMwMENCQTNGQyAvKiBGb250TG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODQ1NjgwODEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI1MzIwRDZCMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1E
YXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI1Mzk4LDcgKzI1Mzg5LDYgQEAKIAkJCQkwODZCQkQw
RjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZD
MEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVE
NEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTE4NUZDODMxQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ0Niw3ICsyNTQzNiw2IEBACiAJCQkJ
QThFQTdEMkUwQTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxBcmVhRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0M1RjI4RkMxQTgyN0Q4NDAwQzBGMzFGIC8qIEhUTUxBdHRhY2htZW50RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQTIwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxB
dWRpb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzk3MUJCNEM0RTgwMDEyODk4
RiAvKiBJREJLZXlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMxRjBBMTUyMDU3MDBC
MTJBNjggLyogSFRNTEJhc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOERGM0ZEMjA5
N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEJhc2VGb250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1NTc0LDI1ICsyNTU2Myw2MiBAQAogCQkJCTUxM0YxNDU0MEFCNjM0QzQwMDA5
NERERiAvKiBJY29uTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUxRUNDMTBDOTFDOTA0
MDBEQzI1NUIgLyogSWNvblJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDVCQUMyQjAxMzYw
QkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzc4MUJC
NEM0RTgwMDEyODk4RiAvKiBJREJBbnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkE0QUNDMUJC
QzVCREQwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1
ODVBNjYzMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUY0MUE2ODFCQTczQjVCMDAyRTA1M0IgLyogSURCQ2FsbGJhY2tzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTg1RkNCOTFCQjRDQkY4MDAxMjg5OEYgLyogSURCQ29ubmVjdGlv
blRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTZEN0Q3MjFCQjVGMEJEMDBBRjdDNzcg
LyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODVGQzVCMUJCNEJFNEMwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxNkQ3RDcwMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDN0IxQkI0QzRFODAwMTI4
OThGIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNDFBNkExQkE3M0I1QjAw
MkUwNTNCIC8qIElEQkN1cnNvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTZD
MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE4NUZDN0UxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldpdGhWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDODExQkI0QzRFODAwMTI4OThGIC8qIElEQkRh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE2RTFCQTczQjVCMDAyRTA1M0IgLyog
SURCRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE2RjFCQTczQjVC
MDAyRTA1M0IgLyogSURCRGF0YWJhc2VDYWxsYmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
RjQxQTcxMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODVGQzgzMUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZUVy
cm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM4NTFCQjRDNEU4MDAxMjg5OEYgLyogSURC
RGF0YWJhc2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzg3MUJCNEM0RTgw
MDEyODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
QkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxODVGQzg5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZU1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTQ4NDUzRjFCQjlEMDdFMDA2QTcyRUQgLyogSURCRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzhCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJFdmVu
dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzhEMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE3MjFCQTczQjVCMDAy
RTA1M0IgLyogSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMDMxMDUwMUJBOENDMDMwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTE4NUZDOEYxQkI0QzRFODAwMTI4OThGIC8qIElEQkdldFJlc3VsdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE4NUZDOTExQkI0QzRFODAwMTI4OThGIC8qIElEQkluZGV4LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTg1RkM5MzFCQjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXhNZXRh
ZGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTUxQkI0QzRFODAwMTI4OThGIC8qIElE
QktleS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDOTcxQkI0QzRFODAwMTI4OThGIC8qIElE
QktleURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzk5MUJCNEM0RTgwMDEyODk4RiAv
KiBJREJLZXlQYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg1RkM5QjFCQjRDNEU4MDAxMjg5
OEYgLyogSURCS2V5UmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQzlFMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJLZXlSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0Ew
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTE4NUZDQTIxQkI0QzRFODAwMTI4OThGIC8qIElEQk9iamVjdFN0b3JlTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODVGQ0E0MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVuREJSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzMTA1QjFCQThEQjU2MDAzMzI5QzAgLyogSURC
T3BlbkRCUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODVGQ0E2MUJCNEM0RTgw
MDEyODk4RiAvKiBJREJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTc5MUJB
NzNCNUIwMDJFMDUzQiAvKiBJREJQZW5kaW5nRGVsZXRlQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGNDFBN0ExQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTE2RDdENzIxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE3QzFCQTczQjVCMDAy
RTA1M0IgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTE4NUZDQTcxQkI0QzRFODAwMTI4OThGIC8qIElEQlJlY29yZElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODVGQ0E5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVz
dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDMxMDVEMUJBOERCNTYwMDMzMjlDMCAvKiBJ
REJSZXF1ZXN0SW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0NUIxMEExQkM0OEUyRTAwRTg2
MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFENzIz
NkQxQkI2MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxODVGQ0JCMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxODVGQ0FCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTg4NjRFNzFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3Bl
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RkNBRDFCQjRDNEU4MDAxMjg5OEYgLyog
SURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQxQTc0MUJBNzNCNUIwMDJF
MDUzQiAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjQx
QTc2MUJBNzNCNUIwMDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUY0MUE3ODFCQTczQjVCMDAyRTA1M0IgLyogSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NUZDQjAxQkI0QzRFODAw
MTI4OThGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3
MUQ1N0MwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5RTkxMUM1MEVGODZENDcwMDlEMENBRiAvKiBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDMDU0Q0QxMTE4QzhFNDAwQ0UyNjM2IC8qIElETFBh
cnNlci5wbSBpbiBIZWFkZXJzICovLApAQCAtMjU2MzAsNyArMjU2NTYsNyBAQAogCQkJCTA3MzY3
RERGMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUxNkM1OTUxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFu
ZFdlYlZUVFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREIyM0MyQ0MwQTUwOEQyOTAw
MjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUU2
RkE3QzFCQkI0RkMzMDA4NzAwRDkgLyogQ3Jvc3NUaHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTg1RkNCMjFCQjRDNEU4MDAxMjg5OEYgLyogSW5kZXhlZERCLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lQm94LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZs
b3dCb3guaCBpbiBIZWFkZXJzICovLApAQCAtMjU2MzgsNiArMjU2NjQsNyBAQAogCQkJCUFBNEMz
QTc3MEIyQjE2NzkwMDIzMzRBMiAvKiBJbmxpbmVTdHlsZVNoZWV0T3duZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJv
eFN0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBBNThFNTFCQUE0MEIxMDBDMTkyODIgLyog
SW5Qcm9jZXNzSURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UzNTI0RDEyNDUwQzY2
MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzQ4NjEyNDE1RkRF
MjFFMDA3QTFDQzkgLyogSW5wdXRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
REVBMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1Njk4LDcgKzI1NzI1LDYgQEAKIAkJCQkzMTk4NDgwQzFBMUU2Q0U4MDBB
MTMzMTggLyogSlNBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxREIw
OUQxQzEyMzAwMEJFMzI1IC8qIEpTQXR0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFOUUx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQzc4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJBbnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
RjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEQTE1RUEwMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTYxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzI2LDcgKzI1NzUyLDYgQEAK
IAkJCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBNDEyQjAzRUUxMDAzQTU4M0EgLyogSlND
aGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTBBNThFNTFCQUE0MEIx
MDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURG
MzFGNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0MwNjU4ODBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0MwNjU4QTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTc4MSw2ICsyNTgwNiw3IEBACiAJCQkJNjVERjMxRjYwOUQx
Q0M2MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMy
MjYwRDBEQjY5RjE5MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpT
RE9NQ29yZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDBFQ0FFN0UxNkI4QjY3MjAw
QzM2MTAzIC8qIEpTRE9NRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMDg4OEQ1MTE0ODg0
OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODA1LDE0
ICsyNTgzMSwxMiBAQAogCQkJCUZDOUUwRTREMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTVdpbmRv
d0NTUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpT
RE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JGQjUzRDBEQ0QyOUNGMDAx
OUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRUEx
QkJEMTY4NDAwMEE2MDQ0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01X
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyog
SlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhG
ODE4RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRUNGN0FERDEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTUxODVGQzg5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEU4Mzc4RTA5Rjg1RDRGMDBCODVBRTQgLyog
SlNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENkEwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTBGRUYzNzJCMzdDNTNFQUMx
QzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MjksNyArMjU4
NTMsNiBAQAogCQkJCTg5ODc4NUY1MTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5j
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNkQ5RDI3QjE0RUFDMDg2MDA5MEQ3NUUgLyogSlNGb2N1
c0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDlFQkRDMDE2QjdGMzhFMDBDQkEzRkMgLyog
SlNGb250TG9hZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNBQjFCQjRDNEU4MDAxMjg5
OEYgLyogSURCU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQUMx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTR2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEY1
MDAyMTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
OEY1MDA0MTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWRCdXR0b24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjU4NjcsNyArMjU4OTAsNiBAQAogCQkJCUE4RDA2NEZDMEEyM0MwQ0MwMDVFNzIwMyAv
KiBKU0hUTUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0OTE4QzcwQkZFQTA1
MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5
MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTE4NUZDQjcxQkI0Qzc2NzAwMTI4OThGIC8qIERPTVJlcXVlc3RTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdCMTUwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTEhl
YWRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUEyRjBBMUNEQUI0MDBCNDJCMjUg
LyogSlNIVE1MSGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQTMxMEEx
Q0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4
ODUsNyArMjU5MDcsNiBAQAogCQkJCUJDNDkxQjc5MEMwMjNFRkQwMDlENjMxNiAvKiBKU0hUTUxN
YXJxdWVlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjE0M0EwQ0Q2ODlDODAwRkFE
QTc1IC8qIEpTSFRNTE1lZGlhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFFNUMw
QTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1MTg1RkM4MTFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU3QTE4MEExOUMzRDYwMDdGQjhDNSAvKiBKU0hUTUxNZXRhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdCQkUyNjcxMUFGQjNGMjAwMDVFQTAzIC8qIEpTSFRNTE1ldGVy
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFCMkEwQTFDRTYzQjAwQjQyQjI1IC8q
IEpTSFRNTE1vZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5NjIsNiArMjU5ODMsNyBA
QAogCQkJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJF
RTMgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJC
NDgwMDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RjQyMEEz
MTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1REYzMUZDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU011dGF0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjYwMTIsNiArMjYwMzQsNyBAQAogCQkJCTY1REYzMjAyMDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkM0Qzk2REYx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVBy
aXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNEM5NkRGMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0ZFMkYxMjBDMUI1ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OTk4QUVDRTEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA2MCw3ICsyNjA4Myw2IEBACiAJCQkJQTg0RUJEODMw
Q0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxRkY4RjY1MTgwNzQ1RDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTUxODg2NEU3MUJCQjRCODMwMEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTI0RDkxMjkyMTNDQTk1MUUwMEQyMTkxNSAvKiBK
U1NWR0FsdEdseXBoRGVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNUVDOTIwRDk3
MjNGRjAwNjNENDlBIC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNEQ5MTI5NjEzQ0E5NTYxMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaEl0ZW1FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2MDc5LDcgKzI2MTAxLDYgQEAKIAkJCQlCMkZBM0Q0RjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNENTEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmlt
YXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRD
IC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0OTZFMzlFMTM5ODEz
NkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q1NTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA4OCw3ICsyNjEwOSw2
IEBACiAJCQkJQjJGQTNENUQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ29sb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRDYzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0RlZnNFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2NTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEZXNjRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjcwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxMTMsNyArMjYxMzMsNiBAQAogCQkJ
CUIyRkEzRDgzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEODUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVJ
bWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDg3MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR0ZFTWVyZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM5NTFC
QjRDNEU4MDAxMjg5OEYgLyogSURCS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q4OTBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRU1lcmdlTm9kZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0MjI0MTg0MTA3RTc3RjQwMDc2NkE4NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDhCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0ZFT2Zmc2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjEzMCw3ICsyNjE0OSw2IEBA
CiAJCQkJQTgzQjc5MDIwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VOYW1lRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgzQjc4RkUwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZH
Rm9udEZhY2VTcmNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODNCNzhGQzBDQ0FGRjE1
MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZVVyaUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxODVGQ0E5MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q5OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
R0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyN0IyODI4MENFRjBDMDcwMEQzOUQ1NCAv
KiBKU1NWR0dseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMwNSwxMiArMjYzMjMs
MTAgQEAKIAkJCQk0NTBDRUJGMTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTQ1NkZBMjcxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyog
TGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0EwMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0Qzk2RTMxQUQ0NEFCRjAw
MzY1QTUwIC8qIExhdW5jaFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTE3QjU2
MjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjkxN0I1NjMxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OTE2RkY3MTk1REY2QTAwMDVBQjM0OSAvKiBMYXll
ckZsdXNoVGhyb3R0bGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4NUZDQjAxQkI0QzRF
ODAwMTI4OThGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTgwMzcxNjQxQTY2RjFEMzAwQkFGNTE5IC8qIExheWVyRnJhZ21lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBQTNBNkEwMTk0QjU5QjYwMDFDQkQyNCAvKiBMYXllclBvb2wuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2MzE4LDcgKzI2MzM0LDYgQEAKIAkJCQkxNDFEQzA1MzE2NDgz
NEI5MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTM4RDQx
M0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQxREMwNTQxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCBpbiBIZWFkZXJzICovLAot
CQkJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAvKiBMYXlv
dXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAzQzJCOTFCQTIzQTI2MDBFMjYzMzcgLyog
TGVnYWN5QW55LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDIyLDcgKzI2NDM3LDYgQEAKIAkJCQlD
RTEyNTI0MTFBMTZCMUI2MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUyRTJDQUZDMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVByb2R1Y2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RTE5NTkyQTBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQzBBMzlEQUNDMDAyMjBGRTUgLyogTWVk
aWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkUwQTM5REFDQzAw
MjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQTk0QTM5MTIy
REFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQ0
MCw4ICsyNjQ1NCw2IEBACiAJCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vz
c2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRF
NDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUIzMTgxOEY1RUQw
MEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVG
Q0E2MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJ
CUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RDOEI1QTcxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEREMxRTdBMThBOTUyRjMwMDI3QTlENCAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjFGRTY4MTc5
NEFBREIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NDcwLDggKzI2NDgyLDggQEAKIAkJCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUyOTE3RkRFMDJD
MDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5QzdDQ0IzMThDNjYzRTQwMDMyRTQxMyAvKiBNZW1vaXplZERPTVJlc3VsdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTE2RDdENzAxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub1Nl
cnZlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMxODA5NzlDM0JEMDA0Njc3
NDEgLyogTWVtb3J5Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkE0QUNCMUJCQzVCRDkw
MERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
NzFEQ0M4MTM4NUU2QTQwMDcwMkREMCAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5REZBMDk5RTY0OTIwMDU2RTU4MSAvKiBNZXJnZUlkZW50aWNhbEVs
ZW1lbnRzQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBREVDQ0UwRTc2QUQ4QjAwNEEx
QTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDgxLDcgKzI2NDkz
LDYgQEAKIAkJCQlBNzhFNTI3MDEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0RBNTEzODQ1MDFDMDAwOEI3OTMgLyogTUhUTUxB
cmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0RBNzEzODQ1MDFDMDAwOEI3OTMgLyog
TUhUTUxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0I5MUJCNENCRjgwMDEyODk4
RiAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQjg5NUFG
MTlEQzdFRDkwMDlDQUE5MyAvKiBNaWNyb1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RERD
RDk1MTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjQ4OSw3ICsyNjUwMCw2IEBACiAJCQkJQ0UxMjUyNDkxQTE2QzNCQzAwODY0NDgw
IC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDExMTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMzE4MjA1
NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQxMjlERjg2MUJCNUI4MEMwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTUxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZG
QTlFMUFBRjVFN0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM3LDcgKzI2NTQ3LDYgQEAKIAkJ
CQkyNjkzOTcyMjFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjY3NzI2MDExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0VGNDNERDBFNjc0MDEyMDAxQzEyODcgLyogTmluZVBpZWNlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUxODVGQzlFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTE1QjUyMDlGODRCNzEwMENBNEZDMSAvKiBOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczMTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzMwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVG
aWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjY2MjQsNyArMjY2MzMsNiBAQAog
CQkJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENUM5RDAwMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDIxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VP
dmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE0NUIxMEExQkM0OEUyRTAw
RTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJE
QjYxQTExNkQ2MDM3RTAwQkIzMzk0IC8qIFBhZ2VSdWxlQ29sbGVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGMzgyMDg5NTE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZVJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTVGMzZEM0IxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjY3NCw3ICsyNjY4Miw2IEBACiAJCQkJ
QkM1Qzc2MkIxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2NjAxRUJGMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlP
Uy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUJBNEFDNDFCQkI1Q0Q4
MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3
QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxQjU4RkQ0MTk1QTk2NEQwMDI5OTBCMCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY3MjYsNyArMjY3MzMsNiBAQAogCQkJCUI3
MUZFNkRGMTEwOTFDQjMwMERBRUY3NyAvKiBQcmludENvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4RUE3RUJDMEExOTQ1RDAwMEE4RUY1RiAvKiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NDYxM0VDMENENjgxQjUwMEZBREE3NSAvKiBQcm9ncmVzc0V2
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg4NjRFMTFCQkFGNTc0MDBFNTQwQzkgLyogVW5p
cXVlSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTVFNjUzMTM0QkJCRUMwMEQ4
RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkE2
ODI0MEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQ0FERDc5MTg4MEQ5MUMwMEQ4QjcxRCAvKiBQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjY3MzcsOSArMjY3NDMsOSBAQAogCQkJCTUxQTA1MjU2MTA1ODg3
NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUY4RTExQTEyNTY1OTI2MDAyMzBGRjcgLyogUHJveHlTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRUUyN0FDQjFCQkI1M0EyMDA3MjQwMEEgLyogcHRocmVhZFNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDA4MUZGMDAxNkIwQTJEMzAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VS
TE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNFRTI3QUNCMUJCQjUzQTIwMDcyNDAwQSAv
KiBwdGhyZWFkU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxMjUyM0QxQTE2NzZD
RDAwODY0NDgwIC8qIFF1YXJ0ekNvcmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MkFGN0E5
MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2suaCBpbiBIZWFkZXJzICovLApAQCAtMjY3NTgs
NiArMjY3NjQsOSBAQAogCQkJCUY1NUIzRENFMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8qIFJh
c3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODREODI3QzExRDMzM0VEMDA5NzI5OTAg
LyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFNkZFOTFC
QkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA0NCAv
KiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk1
MCw3ICsyNjk1OSw2IEBACiAJCQkJNTE0Qzc2N0YwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBNTEyQjAyNkY3MDBDMUEz
NTkgLyogUmV2ZXJiLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBNzEyQjAyNkY3MDBDMUEz
NTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUJB
NEFDQjFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBOTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzA2OSw2ICsyNzA3
Nyw3IEBACiAJCQkJQkM2RDZFMjYwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1NUIzREQyMTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCNzE3MDg5MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFy
Y2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBFNzA1OEY0MUJDNUNFREEwMDQ1QTUw
NyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIx
NDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNEMEUwRkIwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUUzQUEwQjFCOThCQ0FCMDAzNkFEODEgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3MjAyLDYgKzI3MjExLDcgQEAKIAkJCQlCQ0VGNDQ0RDBFNjc0
NjI4MDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5
M0U2MDUxNTFBOUExODAwMDY2RjA2IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlEQUM3QzU3MUFGMkNCNjQwMDQzN0M0NCAvKiBTdHlsZUNvbnRlbnRBbGlnbm1l
bnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyog
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdGMEU4
MUQ0QTcwMEIyNTk2NSAvKiBTdHlsZURhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThDNEE3RkQwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNUVCOEI5MEU4MjAxQkQwMEIyNTk2NSAvKiBTdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjc0MTIsNyArMjc0MjIsNiBAQAogCQkJ
CTgzQzFENDMxMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJl
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzIxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1Bh
dGhTZWdMaW5ldG9SZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTdEMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
ODVGQzdCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzQzFENDMzMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDM0MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRo
U2VnTGluZXRvVmVydGljYWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTgxMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ2Mywx
NCArMjc0NzIsMTIgQEAKIAkJCQlCMjIyN0FDMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3ltYm9s
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQzUwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1Rlc3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEYwQkZDMzEyNTVDNTNDMDAwNzUxODUg
LyogU1ZHVGV4dENodW5rLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkNBMjFCQjRDNEU4MDAx
Mjg5OEYgLyogSURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgx
NjY4RDQxMjU2MDNCRjAwNkYyNURFIC8qIFNWR1RleHRDaHVua0J1aWxkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QUM4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUZXh0Q29udGVudEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdU
ZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJGQzQxMjU1QzUzQzAwMDc1MTg1
IC8qIFNWR1RleHRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QzJGN0ExMjM5MDA4
MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODEwOTNEQzEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTg1RkM4QjFCQjRDNEU4MDAxMjg5OEYgLyogSURC
RXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODE2NjhEQTEyNTYwM0Q1MDA2
RjI1REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3
QjUxQkJFMDAzQzAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW1wbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDgwRTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNl
bGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzUyNyw3ICsyNzUzNCw2IEBACiAJCQkJQjJBRkZD
OUEwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBNDAwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY1VzZXJEZWZpbmVkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkMzREE0MjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjVVRGMTYu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQ0IyMUJCNEM0RTgwMDEyODk4RiAvKiBJbmRleGVk
REIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0
Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJCOTdDQTEzMTM4OTQzMDA4QkVGNEIg
LyogVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODRC
NDEyMzcxMTgwMDAwQzYxNjEgLyogVGV4dERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3
NjIwLDYgKzI3NjI2LDcgQEAKIAkJCQlBQTQ3MzlEMjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1
ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMkQ4QTc5MTQ5OTdDQ0YwMEVDRUYzRSAv
KiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2
IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg4NjRFMTFCQkFGNTc0MDBF
NTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZDRkE1
MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDg2
RkU5ODA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQxNzYyRTAxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzg0Miw2ICsyNzg0OSw3IEBACiAJCQkJRjM0NzQyRTExMzQzNjMxRjAwNTMxQkMyIC8q
IFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzRTI2NDMxMTQ3NDg5
OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQz
NDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxODVGQ0I0MUJCNEM0RTgwMDEyODk4RiAvKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdGOEU2NjYxNTFENEE0RTAwRDJEMTgx
IC8qIFdvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUYzNkUwN0E1MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjA0LDcgKzI4MjEyLDYgQEAKIAkJ
CQkzN0Y1N0FDRDFBNTA3MkQ3MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjU3QUNFMUE1MDcyREEwMDg3NkY5OCAv
KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTkxQzlGQkUx
QjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxNDg0NTNFMUJCOUQwN0UwMDZBNzJFRCAvKiBJREJFcnJvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVt
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1RDMxREZBMTFDRjYxMEIwMDlGMjJCNCAvKiBBY3Rp
dmVET01DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUM0REU2RTBFQTc1QzY1MDAy
M0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgyMTksMTEg
KzI4MjI2LDkgQEAKIAkJCQkzMTZGRTExMzBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4NDgwMjFBMUQ4MTgxMDBBMTMzMTgg
LyogQW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEyQUMwRUZBQzkw
NjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZD
OTgxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMDlERDYwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBOEY2QkJDMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJFMERCNTVDREMwMDFEQjc5NCAvKiBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDN0QxQkI0QzRF
ODAwMTI4OThGIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
NEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJBQUM1ODBEQzJBM0IxMDBBMjBE
OUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODI4
NCw3ICsyODI4OSw2IEBACiAJCQkJNDU4MzBENEQxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3Jv
bGxDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGMDUwMEExNTRGMDkwMDBB
NDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTEx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE4ODY0RTYxQkJCNEI4MzAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0U1MTgxQTFDREMwMEMw
NzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2
RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0yODMxNyw3ICsyODMyMSw2IEBACiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAw
MUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAw
NzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYw
MjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTE4NUZDNzcxQkI0QzRFODAwMTI4OThGIC8qIElEQkFueS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMTY0QTJFRDE5MUFFNjM1MDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0QTk0RDcxNkRGREY5NTAwNjhERTgyIC8qIEJsb2JS
ZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFGNjEyMUIwRUZDMDA3MjZEQjIg
LyogQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4Mzg5LDcgKzI4Mzky
LDYgQEAKIAkJCQkxNEQ4MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUFCQUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4MzQ4QkZBQjFCODU3Mjk4MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzgwMUJCNEM0RTgwMDEyODk4RiAvKiBJ
REJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0MwNjU3RDBGM0NFMUI3MDBDRDJE
ODcgLyogQ2xpZW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0MwNjU4MDBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFC
M0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjg1MTIsNyArMjg1MTQsNiBAQAogCQkJCUJDMDJBNjQ2MEUwOUFBRTkwMDRCNkQyQiAvKiBD
U1NGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjNFNEUxMERBQUNFMEYw
MDlGREM5MSAvKiBDU1NHcmFkaWVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MEY1
M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTUxODVGQ0E4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEN0RCQjI4MThDQTE5QTQwMEMxMTA2NiAvKiBDU1NHcmlkTGluZU5hbWVzVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzRTI1MjMxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkJGODkwNDUxNjlF
OUYxRjAwNTJEODZFIC8qIENTU0dyb3VwaW5nUnVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4
NjM1LDEyICsyODYzNiwxMCBAQAogCQkJCUE3ODFDNkE3MTM4MjhCNUQwMDEyQTYyQSAvKiBEb2N1
bWVudE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
OTQ3RkZEMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE4NUZDNzQxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEMyMjgwRTExRDRBNTk3MDBENUE3RDMg
LyogRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE0RjQ4QTkxNkIwREZD
MDAwRURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ2
RTcxQUMxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwQjkwNTYxOTBGMjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODVGQzg2MUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgx
ODVGM0EwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMxQTM3QUUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTS5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMjg3NDIsNyArMjg3NDEsNiBAQAogCQkJCTg1NDA3NTZDMEFENkNCRjkwMDYy
MEM1NyAvKiBET01IVE1MT3B0aW9uRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1REYy
RjlDMEFBM0NBRTUwMEFENjRDNSAvKiBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NTE4M0I0NzBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTFBhcmFncmFw
aEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTg4NjRFMDFCQkFGNTcxMDBFNTQwQzkg
LyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVFQ0JFRjgwQUE3
NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxQYXJhbUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NTE4M0I0OTBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTFByZUVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBNDIyNkU5NjExNjNENzNBMDA4QjgzOTcgLyogRE9NSFRNTFByb2dyZXNz
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg3NjIsNyArMjg3NjAsNiBAQAogCQkJCUE4
MTg1RjNFMDk3NjU3NjYwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzFBMzdCQTA5N0M3MTVGMDAxOUYzRDggLyogRE9NSW50ZXJuYWwubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NUZGMzE1QjBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRF
dmVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxRDcyMzZDMUJCNjE3NDkwMDQ3OENBMyAvKiBJ
REJSZXN1bHREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDY1NkZGMEFBQjQ3NjMwMDJE
MTVDMCAvKiBET01NZWRpYUxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NTc5M0VENDBEMENF
ODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFB
Q0FGNEMwRTc5MUFBRjAwODdEMTJCIC8qIERPTU1lc3NhZ2VQb3J0Lm1tIGluIFNvdXJjZXMgKi8s
CkBAIC0yODgxNSw3ICsyODgxMiw2IEBACiAJCQkJMzEwNjAzN0ExNDMyODFDRDAwQUJGNEJBIC8q
IERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4MzkxNTEw
RjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCThBRDBBNTk3MTRDODgzNTgwMDBEODNDNSAvKiBET01XZWJLaXRDU1NSZWdpb25SdWxlLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNjExRTYyMEUxQzRFMTQwMEY2QTU3OSAv
KiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIz
M0VDMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4QTE5NTkzMzE0N0VBMTZFMDBEMUVBNjEgLyogRE9NV2ViS2l0TmFtZWRG
bG93Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODgyNCw2ICsyODgyMCw3IEBACiAJCQkJMTQwM0I5
OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NV2luZG93Q1NTLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDNzQxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0IzOEUyODE1MUM0Mjcz
MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0QyQUQwMzE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQUEyQTVBRDcxNkE0ODYxQTAwOTc1QTI1IC8qIERPTVdpbmRvd1NwZWVj
aFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4OTIzLDcgKzI4OTIwLDYgQEAKIAkJ
CQkyNkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxNEIzRjc2MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE2MDMwMEIwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1Q
T1NJWC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4ODFCQjRDNEU4MDAxMjg5OEYgLyog
SURCRGF0YWJhc2VNZXRhZGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjY5RTBFODFE
QUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4QzkyNTE5
MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEzMTNGNjUxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjg5ODcsNyArMjg5ODMsNiBAQAogCQkJCTRBOEM5NkVCMEJFNjkwMzIw
MDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM0Q0Q2
MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxODVGQ0FGMUJCNEM0RTgwMDEyODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDQkZFRjkwOTc0RjYwNzAwMURBQzI1IC8q
IEZyYW1lVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzIwNUFBRjEyMzkyOENBMDBCMTcz
ODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDODFC
ODkwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI5MDQyLDcgKzI5MDM3LDYgQEAKIAkJCQlBOENGRjdBNDBBMTU2OTc4MDAwQTQyMzQg
LyogSFRNTEFuY2hvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MUQ0NUUwQTEy
N0NCQzAwQjEyQTY4IC8qIEhUTUxBcHBsZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4RUE3RDJGMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE4NUZDOUQxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzVGMjhGQjFBODI3RDg0MDBDMEYzMUYgLyogSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxM0ExMENENjMzMTAw
MEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFE
QzJBMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MQmFzZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yOTEyNCw3ICsyOTExOCw2IEBACiAJCQkJQTQzQkY1OTgxMTQ5MjkwQTAwQzY0M0NBIC8q
IEhUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTUwQTE1
Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThEMjIzRkQxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1MTg1RkM5NDFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4NzFEQzIyMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3NDEyMjg4M0U5MDBCODFGRjgg
LyogSFRNTFNjcmlwdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlEOTA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTE2NiwxOCArMjkxNTksNDcgQEAKIAkJCQk1MTNGMTQ1MzBBQjYzNEM0MDAwOTREREYgLyogSWNv
bkxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU4RTBCMDUzQTY2MDAyQ0U2NEYg
LyogSWNvbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzc3MUJCNEM0RTgw
MDEyODk4RiAvKiBJREJBbnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFD
NTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTE2RDdENzExQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTZEN0Q2RjFCQjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzdBMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFBNjkxQkE3M0I1QjAw
MkUwNTNCIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFB
NkIxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkN1cnNvckJhY2tlbmRPcGVyYXRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxODVGQzdEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRo
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDODAxQkI0QzRFODAwMTI4OThGIC8q
IElEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjQxQTZEMUJBNzNCNUIwMDJF
MDUzQiAvKiBJREJEYXRhYmFzZUJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFB
NzAxQkE3M0I1QjAwMkUwNTNCIC8qIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTg1RkM4NDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDODYxQkI0QzRFODAwMTI4OThGIC8q
IElEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUJBNEFDMzFC
QkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxODVGQzg4MUJCNEM0RTgwMDEyODk4RiAvKiBJREJEYXRhYmFzZU1ldGFkYXRhLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxNDg0NTNFMUJCOUQwN0UwMDZBNzJFRCAvKiBJREJFcnJvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM4QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCRXZlbnRE
aXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQzhDMUJCNEM0RTgwMDEyODk4
RiAvKiBJREJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDMxMDRGMUJBOENDMDMw
MDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM5
MDFCQjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4
NUZDOTQxQkI0QzRFODAwMTI4OThGIC8qIElEQktleS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTg1RkM5NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MTg1RkM5ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTg1RkM5QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDOUQxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdl
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkM5RjFCQjRDNEU4MDAxMjg5OEYgLyog
SURCT2JqZWN0U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQTMxQkI0QzRFODAw
MTI4OThGIC8qIElEQk9wZW5EQlJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwMzEw
NUExQkE4REI1NjAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRjQxQTdCMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODVGQ0E4MUJCNEM0RTgwMDEyODk4
RiAvKiBJREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEE1OEY5MUJBQ0M3RjIw
MEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTAzMTA1
QzFCQThEQjU2MDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTE0NUIxMDkxQkM0OEUyRTAwRTg2MjE5IC8qIElEQlJlc291cmNlSWRlbnRpZmllci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUQ3MjM2QzFCQjYxNzQ5MDA0NzhDQTMgLyogSURCUmVzdWx0
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RkNCQTFCQjRDQkY4MDAxMjg5OEYgLyog
SURCU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODg2NEU2MUJCQjRCODMwMEU1NDBD
OSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NUZDQUMx
QkI0QzRFODAwMTI4OThGIC8qIElEQlRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjQxQTczMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFBNzUxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0
aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGNDFBNzcxQkE3
M0I1QjAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE4NUZDQUYxQkI0QzRFODAwMTI4OThGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTcxRDU3QjBGMzM4MTkwMDBGOUNFNEUgLyogSWRl
bnRpZmllclJlcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NGMTdBNDE1QjAwNjNGMDAyNzZE
MzkgLyogSWRUYXJnZXRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NGMTdBNjE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjkyMTYsNiArMjkyMzgsNyBAQAogCQkJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRB
MiAvKiBJbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4
NTkwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUMwMTA3MDAxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTBBNThFNDFCQUE0MEIxMDBDMTkyODIgLyogSW5Qcm9jZXNzSURC
U2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RTM1MjRCMTI0NTBDNTIwMEJBRjVEOSAv
KiBJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzM0ODYxMjMxNUZERTIxRTAwN0Ex
Q0M5IC8qIElucHV0VHlwZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5REU5MDk5
RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjkyNTEsNyArMjkyNzQsNiBAQAogCQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQw
MCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODEw
QzFCMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4QzFCQjRDNEU4MDAxMjg5OEYgLyogSURC
RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDQ2RjA0RTE3Qjk2RkJEMDA1NjQ3RjAg
LyogSW50UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjAwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0MwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI3MCw3ICsy
OTI5Miw2IEBACiAJCQkJMDcwNTg1MDIxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBh
YmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFQzkxMkIwM0Y1MDAwM0E1ODNB
IC8qIEpTQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTc5NUM2MTg4OEJB
REMwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxODVGQ0FDMUJCNEM0RTgwMDEyODk4RiAvKiBJREJUcmFuc2FjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0MDBBMTMzMTggLyogSlNBbmltYXRpb25FdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFEQTA5RDFDMTIzMDAwQkUzMjUgLyogSlNB
dHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkVENkJDMEM2QkQyRjAwMDkyMEJGRiAvKiBK
U0F0dHJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTQyNCw3ICsyOTQ0NSw2IEBACiAJ
CQkJRTBGRUYzNzJCNDdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzZBNzAzMzI1QzlEMEI2Q0RDQkM0RDc3IC8qIEpTRXZlbnRUYXJnZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MDkwMjAwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRU
YXJnZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOUYxQkI0QzRFODAwMTI4
OThGIC8qIElEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMTRBQ0VCMTA4
OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NzI0RUQzMzExQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzJGMUFEQTUxQTM5MEI5RjAwMDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjk0ODcsNyArMjk1MDcsNiBAQAogCQkJCTlCMUFCMDdDMTY0
OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4RDA2NEZCMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3Jt
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQwNjVBRTBBMjQ0NkNEMDA1RTcyMDMg
LyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZD
N0ExQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzQ5MThDNjBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMkVEN0E1MEM2QzBGMzYwMDkyMEJGRiAvKiBKU0hUTUxGcmFtZUVsZW1l
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MjZGODAwQzA1NTI0NzAwODI3NzZC
IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NjEzLDYg
KzI5NjMyLDcgQEAKIAkJCQk0MTBCN0U3MjEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBREVEREIwRTc2QkQ5MzAwNEExQTVF
IC8qIEpTTWVzc2FnZVBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBREVENDcwRTc2QjhE
RDAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4NjYyOUQyMDlEQTJCNDgwMDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzZGNDIwQTIxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25D
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFGQjA5RDFDQzYwMDAwQkUzMjUg
LyogSlNNdXRhdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk2NzEsNiArMjk2OTEs
NyBAQAogCQkJCTY1REYzMjAxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1JhbmdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZDNEM5NkRFMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTI5REY4NTFC
QjVCODA3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Qzk2REUxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGRTJGMTEwQzFCNTgzNzAw
MjAyMzVGIC8qIEpTUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk4QUVDRDEzRjlENkM5
MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI5Nzg4LDcgKzI5ODA5LDYgQEAKIAkJCQlCMkZBM0Q5NDBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzRDk2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZpbHRlckVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI3QjI4MjUwQ0VGMEMwNzAwRDM5RDU0IC8qIEpTU1ZHRm9udEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDQkExQkI0Q0JGODAwMTI4OThGIC8qIElEQlNl
cnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwNDBDQ0FGRjE1MDAwQjA4MjUgLyog
SlNTVkdGb250RmFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzQjc5MDEwQ0NB
RkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4M0I3OTAzMENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlTmFtZUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTg5Niw3ICsyOTkxNiw2IEBACiAJCQkJQTg2
NjI5RDAwOURBMkI0ODAwOTYzM0E1IC8qIEpTVUlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBQUE0RkFEMzE3NUQ1Q0IzMDA3NDM4NzMgLyogSlNVSVJlcXVlc3RFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzczRkIxMTE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhh
bmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDQTMxQkI0QzRFODAwMTI4OThGIC8q
IElEQk9wZW5EQlJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMEMxOTFFRjVB
ODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzczRkIxOTE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDND
QTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTky
MSw3ICsyOTk0MCw2IEBACiAJCQkJQkMyQ0JGN0IxNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xD
b250ZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDEwRTQy
MzA3IC8qIEpTV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
RTNGQUQzODE0NzMzRjQwMjBFNDIzMDcgLyogSlNXZWJHTERlYnVnU2hhZGVycy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk1MTg1RkM4NDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA3IC8q
IEpTV2ViR0xEZXB0aFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCRjBFNzYxMkE5
ODY4ODAwREIxNzBBIC8qIEpTV2ViR0xEcmF3QnVmZmVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUM3Qjk5NzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjk5MzYsNyArMjk5NTQsNiBAQAogCQkJCTZGOTk1QTMzMUE3MDgzMzcw
MEE3MzVGNCAvKiBKU1dlYkdMU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QjlB
MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTFNoYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMDdEMzM1NTE1MkI2MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1h
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTg1RkM4QTFCQjRDNEU4MDAxMjg5OEYgLyogSURC
RXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZGOTk1QTM1MUE3MDgzMzcw
MEE3MzVGNCAvKiBKU1dlYkdMU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3QjlBNDEw
NDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NkY5OTVBMzcxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMwMTI1LDYgKzMwMTQyLDcgQEAKIAkJCQkwNzA1ODUzODE3RkUw
NDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTlDN0NDQjUxOEM2Qjg5OTAwMzJFNDEzIC8qIE1lbW9pemVkRE9NUmVzdWx0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDQjE2QzE3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUJBNEFDQTFCQkM1QkQ5MDBERjNENkQgLyogTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1N0VEQTA4MTM4NUNC
OTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQURCNkIyOTgxOEZCOTAyNDAwODE5NjNFIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERjkwOTlFNjQ5MjAwNTZFNTgxIC8qIE1lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAxNzcsMTMg
KzMwMTk1LDEwIEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0
ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NCQTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
M0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1MUJBNEFDQTFCQkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURC
QmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2OTM5NzI2MUE0QTVGQkQwMEU4
MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY3NzI2MDAxQTVCM0FEOTAwM0My
NEREIC8qIE5GQVRvREZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY0M0UwMEU2NzQxMTAw
MDFDMTI4NyAvKiBOaW5lUGllY2VJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgw
MDA5RDU2MzI3MDAwM0FDOEQgLyogTm9kZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTQ1QjEw
OTFCQzQ4RTJFMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxMjlERjg1MUJCNUI4MDcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJp
dmF0ZUNvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTczMjBBMjI5N0JF
MDA1OEQ3QUQgLyogTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTRGRTczNDBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDRUFDMTA5MUI0ODNEN0YwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMDIyNiw3ICszMDI0MSw2IEBACiAJCQkJQ0Q1RTVCNjExQTE1RjE1NjAw
MEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODIw
ODkyMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29uc29sZUNsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1MTBBNThGOTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVz
dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8q
IFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNDc0MkRDMTM0MzYyRjAw
MDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzAy
QjBCRDBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzA1ODQsNiArMzA1OTgsNyBAQAogCQkJCUU0NTM5MDQ1MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3Jv
bGxWaWV3SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1MzY3NkIwOUFFRDg4QjAwRDM1Q0Q2
IC8qIFNjcm9sbFZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0REMTEyNTFGMTJE
MDAzRUYyNjkgLyogU2VhcmNoSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBFNzA1
OEVFMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMEUwRkEwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5
T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTNBQTBBMUI5OEJDQUIwMDM2QUQ4MSAv
KiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDk1OCw3ICszMDk3
Myw2IEBACiAJCQkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIFRleHRUcmFja0xvYWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDQTgyOTYxNjc5MTAw
RjAwODc1NzE0IC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE4NUZDOTYxQkI0QzRFODAwMTI4OThGIC8qIElEQktleURhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjk0OTg2ODMxOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9u
TWFya3VwTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4NzcwRjAxMjQyQzUzNTAwMjIyNkJB
IC8qIFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNjVEMzIwRUFEMTIxMTAwN0U0
NTMzIC8qIFRoZW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA5NzcsNyArMzA5OTEsNiBAQAog
CQkJCTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRs
ZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8q
IFRpbGVDb3ZlcmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUEzQTY5QjE5NEE2NEU3
MDAxQ0JEMjQgLyogVGlsZUdyaWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZDOTAxQkI0
QzRFODAwMTI4OThGIC8qIElEQkluZGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODc3MEYy
MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1
NUIzRERCMTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTc1NTNDRkU5MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDk4Niw3ICszMDk5OSw2IEBACiAJCQkJQTFERTcxMzIx
ODYxMzIyMjAwNzM0MTkyIC8qIFRvdWNoQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExREU3MTJEMTg2MTJBQzEwMDczNDE5MiAvKiBUb3VjaEV2ZW50cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNzAzMzREOTE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUxQkE0QUMzMUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RDMxNDU5RkZBRDAwOEQ4RDQ1IC8qIFRy
YWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwQzExNzE1Q0UyNjAwNjU4RDk4
IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkZBQzMwRkYxODRGQjE0
NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMDA4
LDYgKzMxMDIwLDcgQEAKIAkJCQk4NTAzMUI0RDBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzM1NEEzQzBCMjRGOEM5MDAzRjZERUEgLyogVUlFdmVu
dFdpdGhLZXlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTQ3MzlEMTE3NTdBRkVDMDBF
NzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4ODY0RTAx
QkJBRjU3MTAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUQwODZGRTk5MDlENTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMTc2MkRGMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxMDQwLDcgKzMxMDUzLDYgQEAKIAkJCQkyRTNCQkYwNzExNjJEQTEx
MDBCOTQwOUEgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUExNTQyNzEyNzk1MzRE
MDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQz
MTYwQUUxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTE4NUZDOUExQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERTgzREIxMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyogVmlk
ZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTA4MCw2ICszMTA5Miw3
IEBACiAJCQkJQ0RDNjlEREIxNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDNjlERDcxNjMyMDI2QzAwN0Mz
OERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0g
aW4gU291cmNlcyAqLywKKwkJCQk0MTFBOTA0MjFCQkFCNDdBMDAwQ0YxNTYgLyogV2ViQ29yZUpT
QnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0MDM3OUMxMjRCRUE3RjAwQUY0MEU0
IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM0RDlCQTUw
QjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUM1QjRDMjRFMTUwOTIzNkMwMEE2RUYzNyAvKiBXZWJDb3JlTlNVUkxFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKQEAgLTMxMTM5LDcgKzMxMTUyLDYgQEAKIAkJCQk5NzZENkM3QjEyMkI4
QTNEMDAxRkQxRjcgLyogV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEwNjAzNkYxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRy
aXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE2RDdENzExQkI1RjBCRDAwQUY3Qzc3IC8qIElE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QUE2MUNGRjE0NEQ1
OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZGRkY5QTgxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENT
U1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTY0LDcgKzMxMTc2LDYgQEAK
IAkJCQk5N0FBQkQyNjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxREVBNDU1MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1C
YWNrZHJvcExheWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2OTM5MTAwRkI1
QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xheWVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUZD
QjMxQkI0QzRFODAwMTI4OThGIC8qIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y0MkIzMUUxODgx
MTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTE5Niw2ICsz
MTIwNyw3IEBACiAJCQkJRjM0NzQyRTAxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFMjY0MzAxNDc0ODk5MTAwNUE4NTg4IC8q
IFdvcmtlckV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NDgwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
ODVGQ0IzMUJCNEM0RTgwMDEyODk4RiAvKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0Y4RTY2NTE1MUQ0QTRCMDBEMkQxODEgLyogV29y
a2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNkUw
N0E0MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJFNDM0NjRDMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMjA3LDcgKzMxMjE5LDYgQEAKIAkJCQlGMzQ3NDJF
ODEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdENkIzNEEwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlclNjcmlwdExvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY1NDBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxMEE1OEU0MUJBQTQwQjEwMEMxOTI4
MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEI5MDU2Rjgw
RjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTdBQUJEMkMxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTIzMDk5RTY0OTIwMDU2
RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGI5NWQ4NWMuLjgyNGI3
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xNDYsOCArMTQ2
LDggQEAgcHVibGljOgogY2xhc3MgRW1wdHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2VhcmNo
UG9wdXBNZW51IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkg
eyByZXR1cm4gbV9wb3B1cC5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZl
Y3RvcjxTdHJpbmc+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVj
dG9yPFJlY2VudFNlYXJjaD4mKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBv
cHVwTWVudS5oCmluZGV4IGYxOTlmYWIuLjU1MWE4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NlYXJjaFBvcHVwTWVudS5oCkBAIC0yMSwxOSArMjEsMjYgQEAKICNpZm5kZWYgU2VhcmNo
UG9wdXBNZW51X2gKICNkZWZpbmUgU2VhcmNoUG9wdXBNZW51X2gKIAotI2luY2x1ZGUgIlBvcHVw
TWVudS5oIgorI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQb3B1cE1lbnU7CisKK3N0cnVjdCBSZWNlbnRT
ZWFyY2ggeworICAgIFN0cmluZyBzdHJpbmc7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCB0aW1lOworfTsKKwogY2xhc3MgU2VhcmNoUG9wdXBNZW51IDogcHVibGlj
IFJlZkNvdW50ZWQ8U2VhcmNoUG9wdXBNZW51PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+U2Vh
cmNoUG9wdXBNZW51KCkge30KKyAgICB2aXJ0dWFsIH5TZWFyY2hQb3B1cE1lbnUoKSB7IH0KICAg
ICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBW
ZWN0b3I8UmVjZW50U2VhcmNoPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpID0g
MDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjc5
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFy
Y2hQb3B1cE1lbnVDb2NvYS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNlYXJjaFBvcHVwTWVudUNvY29hX2gKKyNkZWZpbmUgU2VhcmNoUG9wdXBNZW51Q29jb2FfaAor
CisjaW1wb3J0ICJTZWFyY2hQb3B1cE1lbnUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
RUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+Jik7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVj
ZW50U2VhcmNoPiBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworfQor
CisjZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51Q29jb2FfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2I3MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KQEAgLTAsMCAr
MSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNlYXJj
aFBvcHVwTWVudUNvY29hLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkYXRlS2V5ID0gQCJk
YXRlIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGl0ZW1zS2V5ID0gQCJpdGVtcyI7CitzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBzZWFyY2hlc0tleSA9IEAic2VhcmNoZXMiOworc3RhdGljIE5T
U3RyaW5nICogY29uc3Qgc2VhcmNoU3RyaW5nS2V5ID0gQCJzZWFyY2hTdHJpbmciOworCitzdGF0
aWMgTlNTdHJpbmcgKnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNTdG9yYWdlRGlyZWN0b3J5KCkK
K3sKKyAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CisgICAgaWYgKCFhcHBOYW1lKQorICAgICAgICBhcHBOYW1lID0gW1tOU1By
b2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CisgICAgCisgICAgcmV0dXJuIFtb
TlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFy
eS9XZWJLaXQiXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YXBwTmFtZV07Cit9CisK
K3N0YXRpYyBOU1N0cmluZyAqc2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpCit7
CisgICAgcmV0dXJuIFtzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzU3RvcmFnZURpcmVjdG9yeSgp
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlJlY2VudFNlYXJjaGVzLnBsaXN0Il07
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVhZFNlYXJjaEZp
ZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZGaWxlOnNlYXJjaEZpZWxkUmVj
ZW50U2VhcmNoZXNQbGlzdFBhdGgoKV0pOworfQorCitzdGF0aWMgc3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKK3sKKyAgICBBU1NFUlQoZGF0
ZSk7CisKKyAgICByZXR1cm4gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8
c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZh
bFNpbmNlMTk3MCkpKTsKK30KKworc3RhdGljIE5TRGF0ZSAqdG9OU0RhdGVGcm9tU3lzdGVtQ2xv
Y2soc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit7CisgICAgcmV0dXJuIFtOU0RhdGUg
ZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZHVyYXRpb25fY2FzdDxkdXJhdGlvbjxkb3Vi
bGU+Pih0aW1lLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKV07Cit9CisKK3ZvaWQgc2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJj
aD4mIHNlYXJjaEl0ZW1zKQoreworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmVjZW50U2VhcmNoZXNQbGlzdCA9
IHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKTsKKyAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gaXRlbXNEaWN0aW9uYXJ5ID0gW3JlY2VudFNlYXJjaGVzUGxpc3Qg
b2JqZWN0Rm9yS2V5Oml0ZW1zS2V5XTsKKyAgICAvLyBUaGUgTlNNdXRhYmxlRGljdGlvbmFyeSBt
ZXRob2Qgd2UgdXNlIHRvIHJlYWQgdGhlIHByb3BlcnR5IGxpc3QgZ3VhcmFudGVlcyB3ZSBnZXQg
b25seQorICAgIC8vIG11dGFibGUgY29udGFpbmVycywgYnV0IGl0IGRvZXMgbm90IGd1YXJhbnRl
ZSB0aGUgZmlsZSBoYXMgYSBkaWN0aW9uYXJ5IGFzIGV4cGVjdGVkLgorICAgIGlmICghW2l0ZW1z
RGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAg
ICBpdGVtc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0pOworICAgICAgICByZWNlbnRTZWFyY2hlc1BsaXN0ID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czppdGVtc0RpY3Rpb25hcnkuZ2V0KCks
IGl0ZW1zS2V5LCBuaWxdKTsKKyAgICB9CisKKyAgICBpZiAoc2VhcmNoSXRlbXMuaXNFbXB0eSgp
KQorICAgICAgICBbaXRlbXNEaWN0aW9uYXJ5IHJlbW92ZU9iamVjdEZvcktleTpuYW1lXTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzZWFyY2hJdGVtcy5z
aXplKCldKTsKKyAgICAgICAgZm9yIChhdXRvJiBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpCisg
ICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6c2VhcmNoSXRlbS5zdHJpbmcsIHNlYXJjaFN0cmluZ0tl
eSwgdG9OU0RhdGVGcm9tU3lzdGVtQ2xvY2soc2VhcmNoSXRlbS50aW1lKSwgZGF0ZUtleSwgbmls
XSkuZ2V0KCldOworCisgICAgICAgIFtpdGVtc0RpY3Rpb25hcnkgc2V0T2JqZWN0OmFkb3B0TlMo
W1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6aXRlbXMuZ2V0KCks
IHNlYXJjaGVzS2V5LCBuaWxdKS5nZXQoKSBmb3JLZXk6bmFtZV07CisgICAgfQorCisgICAgW3Jl
Y2VudFNlYXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1Bs
aXN0UGF0aCgpIGF0b21pY2FsbHk6Tk9dOworfQorCitWZWN0b3I8UmVjZW50U2VhcmNoPiBsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFZlY3RvcjxSZWNlbnRT
ZWFyY2g+IHNlYXJjaEl0ZW1zOworCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gc2VhcmNoSXRlbXM7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
cmVjZW50U2VhcmNoZXNQbGlzdCA9IHJlYWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3Qo
KTsKKyAgICBpZiAoIXJlY2VudFNlYXJjaGVzUGxpc3QpCisgICAgICAgIHJldHVybiBzZWFyY2hJ
dGVtczsKKworICAgIE5TRGljdGlvbmFyeSAqaXRlbXMgPSBbcmVjZW50U2VhcmNoZXNQbGlzdCBv
YmplY3RGb3JLZXk6aXRlbXNLZXldOworICAgIGlmICghW2l0ZW1zIGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gc2VhcmNoSXRlbXM7CisKKyAgICBO
U0RpY3Rpb25hcnkgKm5hbWVJdGVtcyA9IFtpdGVtcyBvYmplY3RGb3JLZXk6bmFtZV07CisgICAg
aWYgKCFbbmFtZUl0ZW1zIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gc2VhcmNoSXRlbXM7CisKKyAgICBOU0FycmF5ICpyZWNlbnRTZWFyY2hlcyA9
IFtuYW1lSXRlbXMgb2JqZWN0Rm9yS2V5OnNlYXJjaGVzS2V5XTsKKyAgICBpZiAoIVtyZWNlbnRT
ZWFyY2hlcyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBz
ZWFyY2hJdGVtczsKKyAgICAKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqaXRlbSBpbiByZWNlbnRT
ZWFyY2hlcykgeworICAgICAgICBpZiAoIVtpdGVtIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFy
eSBjbGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBOU1N0
cmluZyAqc2VhcmNoU3RyaW5nID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OnNlYXJjaFN0cmluZ0tleV07
CisgICAgICAgIGlmICghW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBOU0RhdGUgKmRh
dGUgPSBbaXRlbSBvYmplY3RGb3JLZXk6ZGF0ZUtleV07CisgICAgICAgIGlmICghW2RhdGUgaXNL
aW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgCisgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZCh7IFN0cmluZ3sgc2VhcmNoU3RyaW5nIH0s
IHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUpIH0pOworICAgIH0KKworICAgIHJldHVybiBzZWFyY2hJ
dGVtczsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNo
UG9wdXBNZW51V2luLmNwcAppbmRleCA3NGMzMDVhLi43M2I2ODRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBT
dHJpbmcmIG5hbWUpCiB9CiAjZW5kaWYKIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNo
PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgaWYgKHNp
emUpIHsKICAgICAgICAgaXRlbXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNp
emUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0
KCksIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5zdHJpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZh
bHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXND
dXJyZW50QXBwbGljYXRpb24pOwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVu
dVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdAogI2VuZGlmCiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewog
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsOCArOTAsMTAg
QEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHIKICAgICBzaXplX3Qgc2l6ZSA9IENGQXJyYXlHZXRD
b3VudChpdGVtcy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgaXRlbSA9IChDRlN0cmluZ1JlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGl0ZW1zLmdldCgpLCBpKTsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKGl0ZW0p
ID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQo
aXRlbSk7CisgICAgICAgIGlmIChDRkdldFR5cGVJRChpdGVtKSA9PSBDRlN0cmluZ0dldFR5cGVJ
RCgpKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgY2hvb3Npbmcgbm90IHRvIHVzZSBvciBzdG9y
ZSBzZWFyY2ggdGltZXMgb24gV2luZG93cyBhdCB0aGlzIHRpbWUsIHNvIGZvciBub3cgaXQncyBP
SyB0byB1c2UgYSAiZGlzdGFudCBwYXN0IiB0aW1lIGFzIGEgcGxhY2Vob2xkZXIuCisgICAgICAg
ICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoeyBTdHJpbmd7IGl0ZW0gfSwgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludDo6bWluKCkgfSk7CisgICAgICAgIH0KICAgICB9CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaAppbmRleCAyOTlhMTMzLi5lNTA2MGI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzEsOCArMzEsOCBAQCBwdWJsaWM6
CiAgICAgU2VhcmNoUG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVh
bCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2Vh
cmNoSXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1
YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpOwog
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCA4OWRjMzRjLi4yMDA4OWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAK
QEAgLTM3LDExICszNywxMSBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCIKQEAgLTg4LDggKzg4LDEyIEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6
OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKGZyYW1lKCkucGFnZSgpLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlY2VudFNlYXJjaGVzLnJlbW92
ZUFsbCh2YWx1ZSk7Ci0gICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnQoMCwgdmFsdWUpOworICAg
IG1fcmVjZW50U2VhcmNoZXMucmVtb3ZlQWxsTWF0Y2hpbmcoW3ZhbHVlXSAoY29uc3QgUmVjZW50
U2VhcmNoJiByZWNlbnRTZWFyY2gpIHsKKyAgICAgICAgcmV0dXJuIHJlY2VudFNlYXJjaC5zdHJp
bmcgPT0gdmFsdWU7CisgICAgfSk7CisKKyAgICBSZWNlbnRTZWFyY2ggcmVjZW50U2VhcmNoID0g
eyB2YWx1ZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgfTsKKyAgICBtX3JlY2Vu
dFNlYXJjaGVzLmluc2VydCgwLCByZWNlbnRTZWFyY2gpOwogICAgIHdoaWxlIChzdGF0aWNfY2Fz
dDxpbnQ+KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKSA+IGlucHV0RWxlbWVudCgpLm1heFJlc3Vs
dHMoKSkKICAgICAgICAgbV9yZWNlbnRTZWFyY2hlcy5yZW1vdmVMYXN0KCk7CiAKQEAgLTIyOCw3
ICsyMzIsNyBAQCBTdHJpbmcgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1UZXh0KHVuc2lnbmVkIGxp
c3RJbmRleCkgY29uc3QKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsaXN0SW5kZXgpID09IChz
aXplIC0gMSkpCiAgICAgICAgIHJldHVybiBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1Rl
eHQoKTsKICNlbmRpZgotICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFd
OworICAgIHJldHVybiBtX3JlY2VudFNlYXJjaGVzW2xpc3RJbmRleCAtIDFdLnN0cmluZzsKIH0K
IAogU3RyaW5nIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtTGFiZWwodW5zaWduZWQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGI2MDU3
ODEuLmJjMGNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgorI2luY2x1ZGUgIlNl
YXJjaFBvcHVwTWVudS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbnB1
dEVsZW1lbnQ7Ci1jbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKIGNsYXNzIFJlbmRlclNlYXJjaEZp
ZWxkIGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSwgcHJpdmF0ZSBQ
b3B1cE1lbnVDbGllbnQgewogcHVibGljOgpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlOwogICAgIFJlZlB0cjxTZWFyY2hQb3B1cE1l
bnU+IG1fc2VhcmNoUG9wdXA7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9yZWNlbnRTZWFyY2hlczsK
KyAgICBWZWN0b3I8UmVjZW50U2VhcmNoPiBtX3JlY2VudFNlYXJjaGVzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDFhMTdmMTEuLjc1NzVmNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0xMC0wOCAgWmh1byBMaSAgPHph
Y2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1zZWFyY2g+4oCZ
cyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5IHdhcyBhZGRl
ZCwKKyAgICAgICAgaW4gb3JkZXIgdG8gYWxsb3cgdGltZS1iYXNlZCBjbGVhcmluZyBvZiBzZWFy
Y2ggaGlzdG9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODM4OC4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBSZXBsYWNlIFZlY3RvcjxTdHJpbmc+IHdpdGggVmVjdG9yPFJlY2VudFNlYXJjaD4sIHdoZXJl
IFJlY2VudFNlYXJjaCBpcyBhIHN0cnVjdAorICAgICAgICB0aGF0IGNvbnNpc3RzIHNlYXJjaCBz
dHJpbmcgYW5kIHRpbWUsIGZvciByZWNlbnQgc2VhcmNoZXMgaW4gb3JkZXIgdG8gc3RvcmUgYWRk
aXRpb25hbCB0aW1lIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6bG9hZFJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoK
KwogMjAxNS0wOS0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBB
U1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKSkgd2hlbiBydW5uaW5n
IFdlYiBJbnNwZWN0b3IgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNv
cmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDc1ZGE2ZWQuLjcxNTg5NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNo
UG9wdXBNZW51SU9TLmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIFBvcHVwTWVudSogU2VhcmNoUG9w
dXBNZW51SU9TOjpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12
b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKnNlYXJjaEl0ZW1zKi8pCit2b2lkIFNlYXJj
aFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCiB7CiB9CiAKLXZvaWQg
U2VhcmNoUG9wdXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiwgVmVjdG9yPFN0cmluZz4mIC8qc2VhcmNoSXRlbXMqLykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51
SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlY2Vu
dFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAppbmRleCA2MTk3Yjdk
Li5hZDE0NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaApAQCAtMzMsOCArMzMsOCBAQCBwdWJsaWM6CiAgICAgU2Vh
cmNoUG9wdXBNZW51SU9TKFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBs
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2I2NWU3Yi4uMzg5MmM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxl
LmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBz
ZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLAorICAgICAg
ICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJjaCBoaXN0b3J5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mzg4
LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlcGxhY2Ug
VmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUgUmVjZW50U2Vh
cmNoIGlzIGEgc3RydWN0CisgICAgICAgIHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0cmluZyBhbmQg
dGltZSwgZm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRlciB0byBzdG9yZSBhZGRpdGlvbmFsIHRp
bWUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWxsIHRoZXNlIG5ldyBSZWNlbnRTZWFyY2hlcyBh
cmUgc3RvcmVkIGluIGEgcGxpc3QgaW4gd2hpY2ggdGhlIHN0cnVjdHVyZSBsb29rcyBsaWtlOgor
ICAgICAgICBSb290IHsKKyAgICAgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgICAgICAgICBh
dXRvc2F2ZSBuYW1lOiB7CisgICAgICAgICAgICAgICAgICAgICJzZWFyY2hlcyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHsgInNlYXJjaFN0cmluZyI6IHNlYXJjaFN0cmluZywgImRhdGUi
OiBkYXRlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tOgorICAgICAgICAoU2VhcmNoUG9wdXBN
ZW51TWFjOjpzYXZlUmVjZW50U2VhcmNoZXMpOiBDYWxsIHNhdmVSZWNlbnRTZWFyY2hlcyBpbiBX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVDb2NvYS4KKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudU1h
Yzo6bG9hZFJlY2VudFNlYXJjaGVzKTogQ2FsbCBsb2FkUmVjZW50U2VhcmNoZXMgaW4gV2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51Q29jb2EuCisgICAgICAgIChhdXRvc2F2ZUtleSk6IERlbGV0ZWQu
CisKIDIwMTUtMTAtMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBTcGxpdCBUeXBlc2V0dGluZ0ZlYXR1cmVzIGludG8ga2VybmluZyBhbmQgbGln
YXR1cmVzIGJvb2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVNYWMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudU1hYy5oCmluZGV4IDRjMWNjNzkuLjg5NzFjNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5o
CkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIFNlYXJjaFBvcHVwTWVudU1hY19oCiAjZGVmaW5l
IFNlYXJjaFBvcHVwTWVudU1hY19oCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVu
dS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwpAQCAtMzUsOCArMzUsOCBAQCBw
dWJsaWM6CiAgICAgflNlYXJjaFBvcHVwTWVudU1hYygpOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1l
bnVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1l
bnVNYWMubW0KaW5kZXggMmIyMjc4NC4uYWVkNTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQpAQCAtMjMsOSAr
MjMsNyBAQAogI2luY2x1ZGUgIlBvcHVwTWVudU1hYy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU2VhcmNoUG9wdXBN
ZW51TWFjOjpTZWFyY2hQb3B1cE1lbnVNYWMoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCitTZWFy
Y2hQb3B1cE1lbnVNYWM6OlNlYXJjaFBvcHVwTWVudU1hYyhXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudU1hYyhjbGll
bnQpKSkKIHsKIH0KQEAgLTM0LDEyICszMiw3IEBAIFNlYXJjaFBvcHVwTWVudU1hYzo6flNlYXJj
aFBvcHVwTWVudU1hYygpCiB7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqYXV0b3NhdmVLZXkoY29u
c3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBbQCJjb20uYXBwbGUuV2ViS2l0LnNlYXJj
aEZpZWxkOiIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmFtZV07Ci19Ci0KLVBvcHVwTWVudSog
U2VhcmNoUG9wdXBNZW51TWFjOjpwb3B1cE1lbnUoKQorV2ViQ29yZTo6UG9wdXBNZW51KiBTZWFy
Y2hQb3B1cE1lbnVNYWM6OnBvcHVwTWVudSgpCiB7CiAgICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7
CiB9CkBAIC00OSwzMSArNDIsMTIgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVNYWM6OmVuYWJsZWQo
KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNl
bnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKLSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChzZWFyY2hJdGVtcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5
OmF1dG9zYXZlS2V5KG5hbWUpXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6c2VhcmNoSXRlbXMuc2l6ZSgpXSk7Ci0gICAgZm9yIChjb25z
dCBhdXRvJiBzZWFyY2hJdGVtOiBzZWFyY2hJdGVtcykKLSAgICAgICAgW2l0ZW1zIGFkZE9iamVj
dDpzZWFyY2hJdGVtXTsKLQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHNldE9iamVjdDppdGVtcy5nZXQoKSBmb3JLZXk6YXV0b3NhdmVLZXkobmFtZSldOworICAg
IFdlYkNvcmU6OnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyk7CiB9CiAKLXZv
aWQgU2VhcmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVw
TWVudU1hYzo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVj
dG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewotICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VhcmNoSXRlbXMuY2xlYXIoKTsK
LSAgICBmb3IgKE5TU3RyaW5nICppdGVtIGluIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGFycmF5Rm9yS2V5OmF1dG9zYXZlS2V5KG5hbWUpXSkgewotICAgICAgICBpZiAo
W2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAgIHNlYXJj
aEl0ZW1zLmFwcGVuZChpdGVtKTsKLSAgICB9CisgICAgc2VhcmNoSXRlbXMgPSBXZWJDb3JlOjps
b2FkUmVjZW50U2VhcmNoZXMobmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTk5MDY3Yi4uYjYzZWEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTEwLTA4ICBaaHVvIExpICA8emFj
aGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlz
IHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVk
LAorICAgICAgICBpbiBvcmRlciB0byBhbGxvdyB0aW1lLWJhc2VkIGNsZWFyaW5nIG9mIHNlYXJj
aCBoaXN0b3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4Mzg4LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IFJlcGxhY2UgVmVjdG9yPFN0cmluZz4gd2l0aCBWZWN0b3I8UmVjZW50U2VhcmNoPiwgd2hlcmUg
UmVjZW50U2VhcmNoIGlzIGEgc3RydWN0CisgICAgICAgIHRoYXQgY29uc2lzdHMgc2VhcmNoIHN0
cmluZyBhbmQgdGltZSwgZm9yIHJlY2VudCBzZWFyY2hlcyBpbiBvcmRlciB0byBzdG9yZSBhZGRp
dGlvbmFsIHRpbWUKKyAgICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWxsIHRoZXNlIG5l
dyBSZWNlbnRTZWFyY2hlcyBhcmUgc3RvcmVkIGluIGEgcGxpc3QgaW4gd2hpY2ggdGhlIHN0cnVj
dHVyZSBsb29rcyBsaWtlOgorICAgICAgICBSb290IHsKKyAgICAgICAgICAgICJpdGVtcyI6IHsK
KyAgICAgICAgICAgICAgICBhdXRvc2F2ZSBuYW1lOiB7CisgICAgICAgICAgICAgICAgICAgICJz
ZWFyY2hlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgInNlYXJjaFN0cmluZyI6IHNl
YXJjaFN0cmluZywgImRhdGUiOiBkYXRlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4K
KyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWNlbnRTZWFyY2g+Ojpl
bmNvZGUpOiBFbmNvZGUgdGhlIG5ldyBzdHJ1Y3QgUmVjZW50U2VhcmNoCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2RlKTogRGVjb2RlIHRoZSBuZXcgc3Ry
dWN0IFJlY2VudFNlYXJjaAorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKTogQ2FsbCBzYXZl
UmVjZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2EuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKTogQ2FsbCBsb2FkUmVj
ZW50U2VhcmNoZXMgaW4gV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Q29jb2EuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaDoKKwogMjAxNS0xMC0x
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
cGFnZXMgd2l0aCB1bnNjYWxhYmxlIHZpZXdwb3J0cyBzaG91bGRuJ3QgaGF2ZSBhIHNpbmdsZSB0
YXAgZGVsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
MTA3Nzc3ZS4uODlmNTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTM2MSw2ICszNjEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAg
ICAgICAgJ1dlYkNvcmU6OlBsdWdpbkluZm8nOiBbJzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSc6IFsnPFdlYkNvcmUvUGFzdGVib2Fy
ZC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQnOiBbJzxXZWJD
b3JlL1Bhc3RlYm9hcmQuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlJlY2VudFNlYXJjaCc6IFsn
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YSc6IFsnPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xp
ZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNv
cmUvVGV4dEluZGljYXRvci5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBkZDZlNTc3Li42YzljMjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTUsNiArNTUs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2Nyb2xsaW5nQ29uc3RyYWludHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNr
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KQEAgLTQ3Niw2
ICs0NzcsMjIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhdGg+OjpkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBQYXRoJiBwYXRoKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFy
Z3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgUmVjZW50U2VhcmNoJiByZWNlbnRTZWFyY2gpCit7CisgICAgZW5jb2RlciA8PCBy
ZWNlbnRTZWFyY2guc3RyaW5nIDw8IHJlY2VudFNlYXJjaC50aW1lOworfQorCitib29sIEFyZ3Vt
ZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
UmVjZW50U2VhcmNoJiByZWNlbnRTZWFyY2gpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZWNlbnRTZWFyY2guc3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZWNlbnRTZWFyY2gudGltZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZ2lvbjo6U3Bhbj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIm
LCBjb25zdCBSZWdpb246OlNwYW4mKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgUmVnaW9uOjpTcGFuJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMTZlMGFkMC4uYzgzZTk5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzksNiArNzksNyBAQCBz
dHJ1Y3QgTWltZUNsYXNzSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK3N0cnVjdCBSZWNlbnRTZWFy
Y2g7CiBzdHJ1Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2lu
Z1Jlc3VsdDsKIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsKQEAgLTQ1MSw2ICs0NTIsMTEgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZWNlbnRTZWFyY2gmKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVjZW50U2VhcmNoJik7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1bWVudENvZGVy
c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggM2IzZThiYy4uMWNmOTMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjYsNTAgKzI2LDI5
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCisj
aW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKCJjb20uYXBwbGUuV2ViS2l0LnNlYXJjaEZpZWxkOiIgKyBuYW1lKS5jcmVhdGVD
RlN0cmluZygpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKICAgICBp
ZiAoIW5hbWUpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBj
aGVjay4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRk11dGFibGVB
cnJheVJlZj4gaXRlbXM7Ci0KLSAgICBpZiAoIXNlYXJjaEl0ZW1zLmlzRW1wdHkoKSkgewotICAg
ICAgICBpdGVtcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2VhcmNoSXRlbXMu
c2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzZWFyY2hJdGVtIDogc2VhcmNoSXRlbXMpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0g
ICAgfQotCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdl
dCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwotICAg
IENGUHJlZmVyZW5jZXNBcHBTeW5jaHJvbml6ZShrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNh
dGlvbik7CisgICAgV2ViQ29yZTo6c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1z
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6
UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGl0ZW1zID0gYWRvcHRDRihkeW5hbWljX2NmX2Nhc3Q8Q0ZB
cnJheVJlZj4oQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQo
KSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKSk7Ci0gICAgaWYgKCFpdGVtcykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBDRkFycmF5
R2V0Q291bnQoaXRlbXMuZ2V0KCkpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChhdXRv
IGl0ZW0gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoaXRlbXMuZ2V0KCksIGkpKSkKLSAgICAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZChpdGVt
KTsKLSAgICB9CisgICAgc2VhcmNoSXRlbXMgPSBXZWJDb3JlOjpsb2FkUmVjZW50U2VhcmNoZXMo
bmFtZSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjdiNzM0NjEuLjEyN2I5YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vh
cmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0
YXRlLmg+CkBAIC0xMjgxLDggKzEyODIsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAvLyBT
ZWFyY2ggcG9wdXAgcmVzdWx0cwotICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHNhdmVSZWNlbnRT
ZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYpOworICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxX
ZWJDb3JlOjpSZWNlbnRTZWFyY2g+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBT
cGVlY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhZmJkMGMwLi5lOTFlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTM3OCw4ICszNzgsOCBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAjIFNlYXJjaCBwb3B1cCBt
ZW51cwotICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4g
c2VhcmNoSXRlbXMpCi0gICAgTG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVj
dG9yPFN0cmluZz4gcmVzdWx0KQorICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSwg
VmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRlbXMpCisgICAgTG9hZFJlY2Vu
dFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4g
cmVzdWx0KQogCiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyBzdWdn
ZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCmluZGV4IDNjNTc0ZDIuLjFlOTJmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTczLDEyICs3MywxMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChWZWN0b3I8
V1RGOjpTdHJpbmc+JiAvKmNvbW1hbmRzTAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNl
bnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDRiOWJlNzMuLjg0
NWYzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmluZEFjY2Vz
c2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogICAgIG1fYWNjZXNzaWJpbGl0eVBs
dWdJRCA9IHBsdWdJRDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpSZWNlbnRTZWFyY2g+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJp
bmc+JikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5n
JiwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMWIwNjcwNS4uOGU2ZGYz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNDcsNyArNDcsNyBAQCBQb3B1
cE1lbnUqIFdlYlNlYXJjaFBvcHVwTWVudTo6cG9wdXBNZW51KCkKICAgICByZXR1cm4gbV9wb3B1
cC5nZXQoKTsKIH0KIAotdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJ
dGVtcykKK3ZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRl
bXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01OSw3
ICs1OSw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpLCBwYWdlLT5wYWdlSUQo
KSk7CiB9CiAKLXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0SXRlbXMpCit2b2lk
IFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHJlc3VsdEl0ZW1zKQogewogICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgK
aW5kZXggOGYxMDExZC4uNzU1MTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCkBAIC0z
MSw4ICszMSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNlYXJjaFBvcHVwTWVudT4g
Y3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8
V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlbmFi
bGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0tIAoyLjQuNyAoQXBwbGUgR2l0LTU5KQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>