<?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>203707</bug_id>
          
          <creation_ts>2019-10-31 17:24:02 -0700</creation_ts>
          <short_desc>[Clipboard API] Add some infrastructure to resolve ClipboardItems into pasteboard data for writing</short_desc>
          <delta_ts>2019-11-10 16:24:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1586168</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-31 17:24:02 -0700</bug_when>
    <thetext>Work towards supporting ClipboardItem.write().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586277</commentid>
    <comment_count>1</comment_count>
      <attachid>382551</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-31 21:46:00 -0700</bug_when>
    <thetext>Created attachment 382551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586279</commentid>
    <comment_count>2</comment_count>
      <attachid>382552</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-31 21:55:36 -0700</bug_when>
    <thetext>Created attachment 382552
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586343</commentid>
    <comment_count>3</comment_count>
      <attachid>382576</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-01 07:20:57 -0700</bug_when>
    <thetext>Created attachment 382576
Unified source build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586347</commentid>
    <comment_count>4</comment_count>
      <attachid>382577</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-01 07:26:53 -0700</bug_when>
    <thetext>Created attachment 382577
Another build fix in MediaStreamTrack.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586348</commentid>
    <comment_count>5</comment_count>
      <attachid>382578</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-01 07:36:33 -0700</bug_when>
    <thetext>Created attachment 382578
Another build fix in MediaStreamTrack.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587566</commentid>
    <comment_count>6</comment_count>
      <attachid>382578</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 15:28:42 -0800</bug_when>
    <thetext>Comment on attachment 382578
Another build fix in MediaStreamTrack.cpp

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

&gt; Source/WebCore/ChangeLog:42
&gt; +        ClipboardItemDataCollector and ClipboardItem carry out these steps in parallel, so that for each pair of

&quot;in parallel&quot; is misleading because we don&apos;t have multiple threads here. Maybe asynchronously?

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:98
&gt; +void ClipboardItemBindingsDataSource::collectDataForWriting(ClipboardItemDataCollector&amp; collector)

Having dependency to ClipboardItemDataCollector is weird here.
I think this function should take a lambda which takes the result instead.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:105
&gt; +                collector-&gt;cancelDataCollection();

It&apos;s somewhat unclear why we&apos;d have to clear other data collection.
I think it&apos;s better to have more descriptive helper function like didReceiveBadItem() or didFailToResolveItem().

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.cpp:68
&gt; +            ++m_pendingLoadResultCount;

This manual incrementing &amp; decrementing seems super fragile.
If we made the change to make collectDataForWriting take a lambda,
we can increment &amp; decrement the count in that single lambda.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:69
&gt; +            return PtrHash&lt;ClipboardItem*&gt;::hash(key.item.get()) + key.type.hash();

Please use DefaultHash&lt;&gt;::hash(std::pair&lt;&gt;(key.item, key.type)).

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:90
&gt; +    class ClipboardItemBlobLoader : public RefCounted&lt;ClipboardItemBlobLoader&gt;, public FileReaderLoaderClient {

This class should be defined in the cpp file.
You only need a decoration here.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:102
&gt; +        ClipboardItemBlobLoader(ClipboardItemDataCollector&amp; collector, const LoadResultKey&amp; loadResultKey, FileReaderLoader::ReadType readType)

Again, this loader should probably just take a lambda instead of having interdependency.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:124
&gt; +        RefPtr&lt;ClipboardItemBlobLoader&gt; loader;

It&apos;s very strange that m_loadResults contains loader.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:136
&gt; +    HashMap&lt;LoadResultKey, LoadResult, LoadResultKeyHash, LoadResultKeyHashTrait&gt; m_loadResults;

This map seems completely unnecessary. We can just keep accumulating results in a list
then we can iterate them all to assign all the results in takePasteboardItemsFromResults.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588539</commentid>
    <comment_count>7</comment_count>
      <attachid>382578</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-07 18:38:38 -0800</bug_when>
    <thetext>Comment on attachment 382578
Another build fix in MediaStreamTrack.cpp

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

&gt;&gt; Source/WebCore/ChangeLog:42
&gt;&gt; +        ClipboardItemDataCollector and ClipboardItem carry out these steps in parallel, so that for each pair of
&gt; 
&gt; &quot;in parallel&quot; is misleading because we don&apos;t have multiple threads here. Maybe asynchronously?

Good point — changed the wording accordingly.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:98
&gt;&gt; +void ClipboardItemBindingsDataSource::collectDataForWriting(ClipboardItemDataCollector&amp; collector)
&gt; 
&gt; Having dependency to ClipboardItemDataCollector is weird here.
&gt; I think this function should take a lambda which takes the result instead.

Refactored so that collectDataForWriting() takes completion handlers.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:105
&gt;&gt; +                collector-&gt;cancelDataCollection();
&gt; 
&gt; It&apos;s somewhat unclear why we&apos;d have to clear other data collection.
&gt; I think it&apos;s better to have more descriptive helper function like didReceiveBadItem() or didFailToResolveItem().

Good point — I find didFailToResolveItem() to be a better name as well.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.cpp:68
&gt;&gt; +            ++m_pendingLoadResultCount;
&gt; 
&gt; This manual incrementing &amp; decrementing seems super fragile.
&gt; If we made the change to make collectDataForWriting take a lambda,
&gt; we can increment &amp; decrement the count in that single lambda.

Done.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:69
&gt;&gt; +            return PtrHash&lt;ClipboardItem*&gt;::hash(key.item.get()) + key.type.hash();
&gt; 
&gt; Please use DefaultHash&lt;&gt;::hash(std::pair&lt;&gt;(key.item, key.type)).

Removed this custom hashable key altogether.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:90
&gt;&gt; +    class ClipboardItemBlobLoader : public RefCounted&lt;ClipboardItemBlobLoader&gt;, public FileReaderLoaderClient {
&gt; 
&gt; This class should be defined in the cpp file.
&gt; You only need a decoration here.

Removed ClipboardItemBlobLoader.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:102
&gt;&gt; +        ClipboardItemBlobLoader(ClipboardItemDataCollector&amp; collector, const LoadResultKey&amp; loadResultKey, FileReaderLoader::ReadType readType)
&gt; 
&gt; Again, this loader should probably just take a lambda instead of having interdependency.

Removed ClipboardItemBlobLoader.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:124
&gt;&gt; +        RefPtr&lt;ClipboardItemBlobLoader&gt; loader;
&gt; 
&gt; It&apos;s very strange that m_loadResults contains loader.

Refactored this to avoid having a separate wrapper class around the loader.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemDataCollector.h:136
&gt;&gt; +    HashMap&lt;LoadResultKey, LoadResult, LoadResultKeyHash, LoadResultKeyHashTrait&gt; m_loadResults;
&gt; 
&gt; This map seems completely unnecessary. We can just keep accumulating results in a list
&gt; then we can iterate them all to assign all the results in takePasteboardItemsFromResults.

Removed this map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588549</commentid>
    <comment_count>8</comment_count>
      <attachid>383102</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-07 18:56:25 -0800</bug_when>
    <thetext>Created attachment 383102
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588554</commentid>
    <comment_count>9</comment_count>
      <attachid>383105</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-07 19:05:11 -0800</bug_when>
    <thetext>Created attachment 383105
FIX WPE/GTK builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588559</commentid>
    <comment_count>10</comment_count>
      <attachid>383105</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 19:34:31 -0800</bug_when>
    <thetext>Comment on attachment 383105
FIX WPE/GTK builds

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

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:224
&gt; +    // All clipboard types have been loaded; proceed to convert the loaded data into PasteboardCustomData.

Instead of having this comment, why don&apos;t we just rename canFinishCollectingDataForWriting to didFinishLoadingAllTypes?

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:243
&gt; +            // We&apos;ve already extracted data from this loader.

Having a single callback which iterates over all FileReaderLoader
whenever one type finishes loading seems awfully inefficient &amp; cumbersome.

We don&apos;t we create a struct like ClipboardItemType or something for each type,
and then have each one of those objects be a FileReaderLoaderClient.

The struct can then have a String &amp; Ref&lt;SharedBuffer&gt; as members or a single variant member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588560</commentid>
    <comment_count>11</comment_count>
      <attachid>383105</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-07 19:45:00 -0800</bug_when>
    <thetext>Comment on attachment 383105
FIX WPE/GTK builds

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

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:224
&gt;&gt; +    // All clipboard types have been loaded; proceed to convert the loaded data into PasteboardCustomData.
&gt; 
&gt; Instead of having this comment, why don&apos;t we just rename canFinishCollectingDataForWriting to didFinishLoadingAllTypes?

The name didFinishLoadingAllTypes sounds too much like a delegate or client hook, so I think we should avoid that. How about `bool finishedLoadingAllTypes() const`.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:243
&gt;&gt; +            // We&apos;ve already extracted data from this loader.
&gt; 
&gt; Having a single callback which iterates over all FileReaderLoader
&gt; whenever one type finishes loading seems awfully inefficient &amp; cumbersome.
&gt; 
&gt; We don&apos;t we create a struct like ClipboardItemType or something for each type,
&gt; and then have each one of those objects be a FileReaderLoaderClient.
&gt; 
&gt; The struct can then have a String &amp; Ref&lt;SharedBuffer&gt; as members or a single variant member.

This was what I did in my original patch, for this exact reason; I moved away from this to address your concerns about the resulting code being too complicated.

I&apos;ll bring it back as `ClipboardItemType`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588561</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 19:52:19 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #11)
&gt; Comment on attachment 383105 [details]
&gt; FIX WPE/GTK builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383105&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:224
&gt; &gt;&gt; +    // All clipboard types have been loaded; proceed to convert the loaded data into PasteboardCustomData.
&gt; &gt; 
&gt; &gt; Instead of having this comment, why don&apos;t we just rename canFinishCollectingDataForWriting to didFinishLoadingAllTypes?
&gt; 
&gt; The name didFinishLoadingAllTypes sounds too much like a delegate or client
&gt; hook, so I think we should avoid that. How about `bool
&gt; finishedLoadingAllTypes() const`.

Sounds good.

&gt; &gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:243
&gt; &gt;&gt; +            // We&apos;ve already extracted data from this loader.
&gt; &gt; 
&gt; &gt; Having a single callback which iterates over all FileReaderLoader
&gt; &gt; whenever one type finishes loading seems awfully inefficient &amp; cumbersome.
&gt; &gt; 
&gt; &gt; We don&apos;t we create a struct like ClipboardItemType or something for each type,
&gt; &gt; and then have each one of those objects be a FileReaderLoaderClient.
&gt; &gt; 
&gt; &gt; The struct can then have a String &amp; Ref&lt;SharedBuffer&gt; as members or a single variant member.
&gt; 
&gt; This was what I did in my original patch, for this exact reason; I moved
&gt; away from this to address your concerns about the resulting code being too
&gt; complicated.

Hm... maybe we&apos;re talking about each other. What I&apos;m saying is that each type can have its own loader. But when it finishes loading, it doesn&apos;t need to look itself in a map, etc... Just hold onto that data, and notify ClipboardItem that it has completed loading all types. ClipboardItem can then notify Clipboard when it has gathered all types. All of this could be done via a completion handler instead of looking up a hash map &amp; storing data in a central location, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588695</commentid>
    <comment_count>13</comment_count>
      <attachid>383138</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-08 10:05:36 -0800</bug_when>
    <thetext>Created attachment 383138
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588698</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-08 10:06:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/57025262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588974</commentid>
    <comment_count>15</comment_count>
      <attachid>383138</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-08 22:58:05 -0800</bug_when>
    <thetext>Comment on attachment 383138
v3

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

Very nice!

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:118
&gt; +            if (!--m_numberOfPendingClipboardTypes)

Hm... are we sure this completion handler can&apos;t be called after m_itemTypeLoaders.clear() had ran?
Given this keeps item alive in lambda, there might be a race condition here.
Perhaps we might want to either assert or check that item is still in m_itemTypeLoaders.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:182
&gt; +    if (!clipboard) {

Can we add a static helper which gets RefPtr&lt;document&gt; so that we can consolidate these sanity checks into one?

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.h:56
&gt; +        static Ref&lt;ClipboardItemType&gt; create(const String&amp; type, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

If this object takes a completion hander, I would call it ClipboardItemTypeLoader or something.

&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.h:89
&gt; +    Vector&lt;Ref&lt;ClipboardItemType&gt;&gt; m_itemTypeLoaders;

Especially because this variable is called m_itemTypeLoaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589118</commentid>
    <comment_count>16</comment_count>
      <attachid>383138</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-10 14:24:12 -0800</bug_when>
    <thetext>Comment on attachment 383138
v3

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

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:118
&gt;&gt; +            if (!--m_numberOfPendingClipboardTypes)
&gt; 
&gt; Hm... are we sure this completion handler can&apos;t be called after m_itemTypeLoaders.clear() had ran?
&gt; Given this keeps item alive in lambda, there might be a race condition here.
&gt; Perhaps we might want to either assert or check that item is still in m_itemTypeLoaders.

I /think/ this is safe, because the only thing that hangs on to the item loader is ClipboardItemBindingsDataSource (the Ref to m_item is for the ClipboardItem, rather than the ClipboardItemTypeLoader).

More assertions sounds like a good idea — I added these two:
- Assert m_numberOfPendingClipboardTypes before decrementing it.
- Assert that m_itemTypeLoaders contains the itemTypeLoader above when settling the promise.

I’ll also be writing a layout test in the next patch to exercise this scenario (i.e. calling Clipboard.write(), and then calling it again before the previous write() has finished).

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:182
&gt;&gt; +    if (!clipboard) {
&gt; 
&gt; Can we add a static helper which gets RefPtr&lt;document&gt; so that we can consolidate these sanity checks into one?

👍🏻 Added a new helper, and used it here.

&gt;&gt; Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.h:56
&gt;&gt; +        static Ref&lt;ClipboardItemType&gt; create(const String&amp; type, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; 
&gt; If this object takes a completion hander, I would call it ClipboardItemTypeLoader or something.

Sounds good — renamed to ClipboardItemTypeLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589119</commentid>
    <comment_count>17</comment_count>
      <attachid>383249</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-10 14:42:05 -0800</bug_when>
    <thetext>Created attachment 383249
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589122</commentid>
    <comment_count>18</comment_count>
      <attachid>383249</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-10 15:13:03 -0800</bug_when>
    <thetext>Comment on attachment 383249
Patch for landing

Rejecting attachment 383249 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/WebCore-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -IPAL -IForwardingHeaders -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/libxslt -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/libxml2 -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/webrtc -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/webrtc -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/webrtc/sdk/objc/Framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/webrtc/sdk/objc/Framework/Headers -I/Volumes/Data/EWS/WebKit/Source/WebCore -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wno-unknown-warning-option -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/WebCorePrefix-hesoptuqnbqggaewbsnjerkudzpe/WebCorePrefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource29.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource29.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource29.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource29.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource23.o /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource23.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
nt-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wno-unknown-warning-option -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/WebCorePrefix-hesoptuqnbqggaewbsnjerkudzpe/WebCorePrefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource29.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource29.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource29.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource29.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource23.o /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource23.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: https://webkit-queues.webkit.org/results/13236428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589123</commentid>
    <comment_count>19</comment_count>
      <attachid>383250</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-10 15:33:28 -0800</bug_when>
    <thetext>Created attachment 383250
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589127</commentid>
    <comment_count>20</comment_count>
      <attachid>383250</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-10 16:16:54 -0800</bug_when>
    <thetext>Comment on attachment 383250
Patch for landing

Clearing flags on attachment: 383250

Committed r252315: &lt;https://trac.webkit.org/changeset/252315&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382551</attachid>
            <date>2019-10-31 21:46:00 -0700</date>
            <delta_ts>2019-10-31 21:55:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203707-20191031214559.patch</filename>
            <type>text/plain</type>
            <size>34780</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZiMDU4MjI0YjNkY2I0
MGUzYjgwMjUyZTc4NmZiZDAyYjExYThkNC4uYTExOTBhM2M3NDk5MzBmMWVmNmYzZDAxZTUzMTdh
NTRjYTEzYWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxOS0xMC0zMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gQWRkIGEgaGVscGVyIGNsYXNzIHRvIHJlc29sdmUgQ2xpcGJvYXJkSXRlbXMgaW50byBw
YXN0ZWJvYXJkIGRhdGEgZm9yIHdyaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBuZXcgaGVscGVyIGNsYXNzIHRoYXQgd2ls
bCBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIHRvIGFnZ3JlZ2F0ZSBkYXRhIHZlbmRlZCBieSBD
bGlwYm9hcmRJdGVtcworICAgICAgICB3aGVuIHdyaXRpbmcgaXRlbXMgdG8gdGhlIHBsYXRmb3Jt
IHBhc3RlYm9hcmQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzOyBubyBuZXcgdGVzdHMsIHNp
bmNlIHRoZXJlIGlzIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29s
bGVjdERhdGFGb3JXcml0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZp
cnR1YWwgYGNvbGxlY3REYXRhRm9yV3JpdGluZ2AgbWV0aG9kLCB3aGljaCBpcyB1c2VkIHdoZW4g
d3JpdGluZyBDbGlwYm9hcmRJdGVtIGRhdGEgdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQuIFRo
aXMgYWxsb3dzIENsaXBib2FyZEl0ZW1zIHRvIGFzeW5jaHJvbm91c2x5IGRlbGl2ZXIgZGF0YSB0
byBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciBhZnRlcgorICAgICAgICByZXNvbHZpbmcgcHJv
bWlzZXMgdG8gc3RyaW5ncyBvciBibG9icywgb3IgYWx0ZXJuYXRlbHksIGNhbmNlbCBhbGwgZGF0
YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcDogQWRkZWQuCisK
KyAgICAgICAgSW50cm9kdWNlIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLCB3aGljaCBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFzc2FnaW5nIGEgbGlzdCBvZiBDbGlwYm9hcmRJdGVtcyBpbnRvIGEg
bGlzdCBvZgorICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBvYmplY3RzIHdoZW4gd3JpdGlu
ZyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gRWFjaCBDbGlwYm9hcmRJdGVtIGNyZWF0ZWQg
dmlhIGJpbmRpbmdzCisgICAgICAgIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiAodHlwZSwgcHJvbWlz
ZSkgcGFpcnMsIHdoZXJlIGVhY2ggcHJvbWlzZSBtYXkgcmVzb2x2ZSB0byBlaXRoZXIgYSBzdHJp
bmcgb3IgYSBibG9iLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNvbnZlcnQgdGhpcyBpbnRvIFBh
c3RlYm9hcmRDdXN0b21EYXRhcywgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
c2V0IHVwIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgY29ycmVzcG9uZGluZyB0byBlYWNoIGNsaXBi
b2FyZCBpdGVtCisgICAgICAgICAgICBmb3IgZWFjaCBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAg
ICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5IHRvIHJlc29sdmUgdGhlIHByb21pc2UKKyAgICAgICAgICAgICAgICAgICAg
aWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBzdHJpbmc6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVyIHRoZSB0eXBlCisgICAg
ICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgYmxvYjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWQgdGhlIGJsb2IgZGF0YSBhcyBlaXRoZXIgdGV4dCBvciBh
biBBcnJheUJ1ZmZlciAoZGVwZW5kaW5nIG9uIHRoZSB0eXBlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0b20g
ZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJvbWlzZSBy
ZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiB1bnN1cHBvcnRlZCB2YWx1ZSwgYmFpbCBmcm9tIHRo
ZXNlIHN0ZXBzCisKKyAgICAgICAgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IgYW5kIENsaXBi
b2FyZEl0ZW0gY2Fycnkgb3V0IHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVsLCBzbyB0aGF0IGZvciBl
YWNoIHBhaXIgb2YKKyAgICAgICAgKGNsaXBib2FyZCBpdGVtLCB0eXBlKSwgd2UgdHJ5IHRvIHJl
c29sdmUgdGhlIHByb21pc2UgYW5kIHRoZW4gbG9hZCB0aGUgcmVzdWx0aW5nIGJsb2IgaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtRGF0
YUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERhdGFDb2xsZWN0aW9uKToKKworICAgICAgICBD
YWxsZWQgYnkgQ2xpcGJvYXJkIHRvIGJlZ2luIGNvbGxlY3RpbmcgZGF0YSBmcm9tIHRoZSBsaXN0
IG9mIGNsaXBib2FyZCBpdGVtcyB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpjYW5jZWxEYXRhQ29s
bGVjdGlvbik6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byBjYW5jZWwgYWxsIGRhdGEgY29s
bGVjdGlvbi4gVGhpcyBjbGVhcnMgb3V0IHN0YXRlIGluIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yIChpbmNsdWRpbmcgYW55CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIENsaXBib2Fy
ZEl0ZW1zKSwgc3RvcHMgYWxsIGFjdGl2ZSBGaWxlUmVhZGVyTG9hZGVycywgYW5kIGludm9rZXMg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciwKKyAgICAgICAgcGFzc2luZyBpbiBgZmFsc2VgIGZvciB0
aGUgc3VjY2VzcyBwYXJhbWV0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IpOgorCisgICAgICAgIFRoZXNlIHR3byBtZXRo
b2RzIGFyZSBpbnZva2VkIGJ5IENsaXBib2FyZEl0ZW0ncyBkYXRhIHNvdXJjZXMgd2hlbiByZXNv
bHZpbmcgY2xpcGJvYXJkIGRhdGEgcHJvbWlzZXMgdG8gZWl0aGVyCisgICAgICAgIHN0cmluZ3Mg
b3IgYmxvYnMuIEluIHRoZSBjYXNlIG9mIGEgc3RyaW5nLCB3ZSBzaW1wbHkgdXBkYXRlIHRoZSBj
b3JyZXNwb25kaW5nIGxvYWQgcmVzdWx0IGFuZCBjb25zaWRlciB0aGUgbG9hZAorICAgICAgICBm
b3IgdGhhdCAoaXRlbSwgdHlwZSkgcGFpciBmaW5pc2hlZC4gSW4gdGhlIGNhc2Ugb2YgYSBibG9i
LCB3ZSBuZWVkIHRvIGNvbnRpbnVlIHRoZSBsb2FkIGJ5IGNyZWF0aW5nIGEKKyAgICAgICAgRmls
ZVJlYWRlckxvYWRlciBhbmQgd2FpdGluZyBmb3IgaXQgdG8gZWl0aGVyIGZpbmlzaCBvciBmYWls
LgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGVjcmVt
ZW50UGVuZGluZ0xvYWRDb3VudCk6CisKKyAgICAgICAgV2hlbiBiZWdpbm5pbmcgdG8gY29sbGVj
dCBjbGlwYm9hcmQgZGF0YSBmb3Igd3JpdGluZywgdGhlIG1fcGVuZGluZ0xvYWRSZXN1bHRDb3Vu
dCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZgorICAgICAgICAoaXRlbSwgdHlwZSkgcGFpcnMgdGhh
dCBuZWVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5pc2ggbG9hZGluZyBhbmQgZGVsaXZlciBlaXRoZXIg
c3RyaW5ncyBvciBidWZmZXJzIGJlZm9yZSB3ZSBjYW4KKyAgICAgICAgcHJvY2VlZCB3aXRoIHdy
aXRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIEV2ZXJ5IHRpbWUg
b25lIHN1Y2ggcGFpciBmaW5pc2hlcywgd2UgZGVjcmVtZW50CisgICAgICAgIHRoaXMgY291bnQs
IHN1Y2ggdGhhdCB3aGVuIGl0IHJlYWNoZXMgMCAoYXNzdW1pbmcgdGhhdCBsb2FkaW5nIHdhc24n
dCBjdXQgc2hvcnQgZHVlIHRvIGZhaWx1cmVzKSwgd2UgdGhlbgorICAgICAgICBhc3NlbWJsZSB0
aGlzIGFnZ3JlZ2F0ZWQgZGF0YSBpbnRvIGEgZmluYWwgcmVzdWx0IHVzaW5nIGB0YWtlUGFzdGVi
b2FyZEl0ZW1zRnJvbVJlc3VsdHNgIGFuZCBpbnZva2UgdGhlCisgICAgICAgIGNvbXBsZXRpb24g
aGFuZGxlci4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OnRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cyk6CisKKyAgICAgICAgQ2xlYXJzIG91dCBh
bGwgaW50ZXJuYWwgc3RhdGUsIGFuZCB1c2VzIGl0IHRvIHNldCB1cCBhIGxpc3Qgb2YgUGFzdGVi
b2FyZEN1c3RvbURhdGFzLiBJbnZva2VkIG9ubHkgYWZ0ZXIgdGhlCisgICAgICAgIGxvYWQgaGFz
IGNvbXBsZXRlbHkgZmluaXNoZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpkaWRGaW5pc2hMb2FkaW5nQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGYWlsKToKKworICAgICAgICBBZGQgYSBo
ZWxwZXIgY2xhc3MsIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyLCB0aGF0IHdyYXBzIGEgRmlsZVJl
YWRlckxvYWRlciBhbmQgYWN0cyBhcyBpdHMgY2xpZW50LiBVcG9uCisgICAgICAgIGZpbmlzaGlu
ZyBvciBmYWlsaW5nLCBpdCBub3RpZmllcyBpdHMgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
CisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xs
ZWN0b3I6Omhhc1BlbmRpbmdMb2FkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2g6Omhhc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9h
ZFJlc3VsdEtleUhhc2hUcmFpdDo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2hUcmFpdDo6aXNFbXB0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpMb2Fk
UmVzdWx0S2V5SGFzaFRyYWl0Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoVHJhaXQ6
OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICBBZGQgdHdvIG1vcmUgcHJpdmF0ZSBoZWxwZXIg
Y2xhc3NlcyB0byBmYWNpbGl0YXRlIHRoaXMgbG9hZGluZyBwcm9jZXNzOiBMb2FkUmVzdWx0IGFu
ZCBMb2FkUmVzdWx0S2V5LiBBCisgICAgICAgIExvYWRSZXN1bHQgcmVwcmVzZW50cyB0aGUgc3Rh
dGUgb2YgYW4gYXR0ZW1wdCB0byBsb2FkIGRhdGEgZm9yIGEgcGFydGljdWxhciB0eXBlLCBmcm9t
IGEgcGFydGljdWxhciBpdGVtOyB3aGVuCisgICAgICAgIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9h
cmQsIGVhY2ggcGFpciBvZiAoY2xpcGJvYXJkIGl0ZW0sIHR5cGUpIGlzIHJlcHJlc2VudGVkIGJ5
IGEgTG9hZFJlc3VsdCB3aGljaCBjb250YWlucworICAgICAgICB0aGUgZmluYWwgbG9hZGVkIHN0
cmluZyBvciBTaGFyZWRCdWZmZXIsIGlmIGFueS4KKworICAgICAgICBXZSBtYXAgZWFjaCBjbGlw
Ym9hcmQgaXRlbSBhbmQgdHlwZSB0byBpdHMgTG9hZFJlc3VsdCB1c2luZyB0aGUgTG9hZFJlc3Vs
dEtleSwgd2hpY2ggaXMgYSBoYXNoYWJsZQorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUg
aXRlbSt0eXBlIHBhaXJpbmcuIEJ5IGRvaW5nIHRoaXMsIHdlIGF2b2lkIHNlYXJjaGluZyBsaW5l
YXJseSB0aHJvdWdoIGV2ZXJ5IHBlbmRpbmcKKyAgICAgICAgTG9hZFJlc3VsdCB3aGVuZXZlciBh
IGdpdmVuIGl0ZW0gYW5kIHR5cGUgZmluaXNoIHJlc29sdmluZyBpdHMgZGF0YSBvciBsb2FkaW5n
IGEgYmxvYi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpyZWFkVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6
Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRSZXN1
bHRLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcik6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAgIEZvciB0
aGUgdGltZSBiZWluZywgbGVhdmUgdGhpcyB1bmltcGxlbWVudGVkOyBhIGZ1dHVyZSBwYXRjaCB3
aWxsIGFkZCBzdXBwb3J0IGZvciB3cml0aW5nIENsaXBib2FyZEl0ZW1zIHRoYXQKKyAgICAgICAg
Y2FtZSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBhcyBvcHBvc2VkIHRvIHRob3NlIGNy
ZWF0ZWQgYnkgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTkt
MTAtMzEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEFkZCBleHBhbnNpb24gY29udGV4dCB0byBMaW5lOjpSdW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5k
ZXggMDg2NmRlOTJlNDI4YjZiZmJlZDM1ZjU0NTNiZmQ2YTQ3YTQzNjYzOC4uMGNiNDIwOTA0Y2Jm
Yjc4ZmNmMGU2NDhjOGEyM2ZlNTQ0OWIzMjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTkyLDYg
KzkyLDExIEBAIHZvaWQgQ2xpcGJvYXJkSXRlbTo6Z2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2RhdGFTb3VyY2UtPmdldFR5
cGUodHlwZSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKK3ZvaWQgQ2xpcGJvYXJkSXRlbTo6Y29s
bGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0b3Ip
Cit7CisgICAgbV9kYXRhU291cmNlLT5jb2xsZWN0RGF0YUZvcldyaXRpbmcoY29sbGVjdG9yKTsK
K30KKwogTmF2aWdhdG9yKiBDbGlwYm9hcmRJdGVtOjpuYXZpZ2F0b3IoKQogewogICAgIHJldHVy
biBtX25hdmlnYXRvci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaAppbmRleCA0OWQyNTQ3OWU1Y2E2MjA0M2Yw
N2U4NjA1MjUzYzk2MzY5ODQ4NDEyLi4yZmVkOWZjNzI3MDdkZDJlMmUwOWQ1OGFiYzViNDk1OTAx
MDZlOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIENsaXBib2FyZDsKK2NsYXNzIENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOwogY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2U7CiBjbGFzcyBEZWZl
cnJlZFByb21pc2U7CiBjbGFzcyBET01Qcm9taXNlOwpAQCAtNTksNiArNjAsOCBAQCBwdWJsaWM6
CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICB2b2lkIGdldFR5cGUoY29u
c3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKKyAgICB2b2lkIGNvbGxlY3RE
YXRhRm9yV3JpdGluZyhDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYpOworCiAgICAgUHJlc2Vu
dGF0aW9uU3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlbnRh
dGlvblN0eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdhdG9yKCk7CiAgICAgQ2xpcGJvYXJk
KiBjbGlwYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKaW5kZXggZTcyNjA1MTE0NDhkOWNiNDhiNTRmYmJiZTQ0NGY5NTg2ZmJmOWM4MC4u
YzZiMTVlOWIzNjlmYzJiMDg2OWQ0NzM4ZGQ5YmE5YjljZmZhY2Y2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5jbHVk
ZSAiQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgpAQCAtOTQsNCArOTUsMzUgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
OjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9KTsKIH0K
IAordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldy
aXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImIGNvbGxlY3RvcikKK3sKKyAgICBmb3Ig
KGF1dG8gdHlwZUFuZEl0ZW0gOiBtX2l0ZW1Qcm9taXNlcykgeworICAgICAgICBhdXRvIHByb21p
c2UgPSB0eXBlQW5kSXRlbS52YWx1ZTsKKyAgICAgICAgcHJvbWlzZS0+d2hlblNldHRsZWQoW3By
b3RlY3RlZEl0ZW0gPSBtYWtlUmVmUHRyKG1faXRlbSksIHByb21pc2UsIHR5cGUgPSB0eXBlQW5k
SXRlbS5rZXksIGNvbGxlY3RvciA9IG1ha2VSZWZQdHIoY29sbGVjdG9yKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHByb21pc2UtPnJlc3VsdCgpOworICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBjb2xsZWN0b3ItPmNhbmNlbERhdGFD
b2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgcmVzdWx0LmdldFN0cmluZyhw
cm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKKyAgICAgICAgICAgIGlmICghc3RyaW5n
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5oYW5kbGVTdHJpbmcoKnBy
b3RlY3RlZEl0ZW0sIHR5cGUsIHN0cmluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc09iamVjdCgpKSB7CisgICAg
ICAgICAgICAgICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF1dG8qIGJs
b2IgPSBKU0Jsb2I6OnRvV3JhcHBlZChyZXN1bHQuZ2V0T2JqZWN0KCktPnZtKCksIHJlc3VsdC5n
ZXRPYmplY3QoKSkpCisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5oYW5kbGVCbG9iKCpwcm90
ZWN0ZWRJdGVtLCB0eXBlLCAqYmxvYik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworICAgICAgICB9KTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCA2ZmQ4ZGRhNTc2YjdiNTJiMDgyMzAxOTZmZTk0OTQw
NGMxNDc0OGI0Li5mNThmMGYyNTIyODIwNDI2NjNhN2Y3MjE2NDJiZDFjODljYjIwNDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3I7CiBjbGFzcyBET01Qcm9taXNlOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKQEAgLTQwLDYg
KzQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYpIGZpbmFsOwogCiAgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxT
dHJpbmcsIFJlZlB0cjxET01Qcm9taXNlPj4+IG1faXRlbVByb21pc2VzOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjllNDU1ZTgwNTcx
MjIwOWIzZGUzYWQ5OTBjMTU2NjVmMjgyOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
Y3BwCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCisKKyNpbmNsdWRlICJCbG9i
LmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgor
I2luY2x1ZGUgIlBhc3RlYm9hcmRDdXN0b21EYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0Il9z
IHx8IHR5cGUgPT0gInRleHQvcGxhaW4iX3MgfHwgdHlwZSA9PSAidGV4dC9odG1sIl9zKQorICAg
ICAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4dDsKKyAgICByZXR1cm4gRmls
ZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXI7Cit9CisKK0NsaXBib2FyZEl0ZW1EYXRh
Q29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvcihDbGlwYm9hcmQmIGNsaXBib2Fy
ZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxDbGlwYm9hcmRJdGVtPj4mIGl0ZW1zLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiwgVmVjdG9yPFBhc3RlYm9h
cmRDdXN0b21EYXRhPiYmLCBib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IDogbV9jbGlwYm9hcmQobWFrZVdlYWtQdHIoY2xpcGJvYXJkKSkKKyAgICAsIG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX2l0ZW1zKGl0ZW1z
Lm1hcChbJl0gKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIG1ha2VSZWYoKml0ZW0pOyB9KSkKK3sKK30K
KworQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6On5DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cigpCit7CisgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKK30KKwordm9pZCBDbGlwYm9hcmRJ
dGVtRGF0YUNvbGxlY3Rvcjo6c3RhcnREYXRhQ29sbGVjdGlvbigpCit7CisgICAgQVNTRVJUKG1f
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIEFTU0VSVCghbV9wZW5kaW5nTG9hZFJlc3VsdENvdW50
KTsKKworICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpIHsKKyAgICAgICAgZm9yIChhdXRv
IHR5cGUgOiBpdGVtLT50eXBlcygpKSB7CisgICAgICAgICAgICBpZiAodHlwZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICBjYW5jZWxEYXRhQ29sbGVjdGlvbigpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrbV9wZW5kaW5nTG9hZFJl
c3VsdENvdW50OworICAgICAgICAgICAgbV9sb2FkUmVzdWx0cy5zZXQoeyBpdGVtLnB0cigpLCB0
eXBlIH0sIExvYWRSZXN1bHQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBtX2l0ZW1zKQorICAgICAgICBpdGVtLT5jb2xsZWN0RGF0YUZvcldyaXRpbmcoKnRo
aXMpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpjYW5jZWxEYXRhQ29s
bGVjdGlvbigpCit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBs
ZXRpb25IYW5kbGVyLCB7IH0pOworICAgIG1fcGVuZGluZ0xvYWRSZXN1bHRDb3VudCA9IDA7CisK
KyAgICBmb3IgKGF1dG8mIGxvYWRSZXN1bHQgOiBtX2xvYWRSZXN1bHRzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGxvYWRlciA9IGxvYWRSZXN1bHQubG9hZGVyKQorICAgICAgICAgICAg
bG9hZGVyLT5sb2FkZXIoKS5jYW5jZWwoKTsKKyAgICB9CisKKyAgICBtX2l0ZW1zLmNsZWFyKCk7
CisgICAgbV9sb2FkUmVzdWx0cy5jbGVhcigpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCp0aGlz
LCB7IH0sIGZhbHNlKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6aGFu
ZGxlU3RyaW5nKENsaXBib2FyZEl0ZW0mIGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKQoreworICAgIGF1dG8gbWF0Y2hpbmdSZXN1bHQgPSBmaW5kTG9hZFJlc3Vs
dCh7ICZpdGVtLCB0eXBlIH0pOworICAgIGlmICghbWF0Y2hpbmdSZXN1bHQpIHsKKyAgICAgICAg
Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1h
dGNoaW5nUmVzdWx0LT5kYXRhID0geyBkYXRhIH07CisgICAgZGVjcmVtZW50UGVuZGluZ0xvYWRD
b3VudCgpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpoYW5kbGVCbG9i
KENsaXBib2FyZEl0ZW0mIGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEJsb2I+JiYgYmxv
YikKK3sKKyAgICBhdXRvIG1hdGNoaW5nUmVzdWx0ID0gZmluZExvYWRSZXN1bHQoeyAmaXRlbSwg
dHlwZSB9KTsKKyAgICBpZiAoIW1hdGNoaW5nUmVzdWx0KSB7CisgICAgICAgIGNhbmNlbERhdGFD
b2xsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0gbV9jbGlwYm9hcmQgPyBtX2NsaXBib2FyZC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IHsKKyAgICAgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1hdGNoaW5nUmVzdWx0LT5sb2FkZXIgPSBDbGlwYm9hcmRJdGVtQmxvYkxvYWRl
cjo6Y3JlYXRlKCp0aGlzLCB7ICZpdGVtLCB0eXBlIH0sIHJlYWRUeXBlRm9yTUlNRVR5cGUodHlw
ZSkpOworICAgIG1hdGNoaW5nUmVzdWx0LT5sb2FkZXItPmxvYWRlcigpLnN0YXJ0KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGJsb2IpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yOjpkZWNyZW1lbnRQZW5kaW5nTG9hZENvdW50KCkKK3sKKyAgICBpZiAoIW1fY29tcGxldGlv
bkhhbmRsZXIgfHwgIW1fcGVuZGluZ0xvYWRSZXN1bHRDb3VudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCEtLW1fcGVuZGluZ0xvYWRSZXN1bHRDb3VudCkKKyAgICAgICAgc3RkOjpleGNo
YW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKCp0aGlzLCB0YWtlUGFzdGVib2FyZEl0ZW1z
RnJvbVJlc3VsdHMoKSwgdHJ1ZSk7Cit9CisKK1ZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4g
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OnRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0
cygpCit7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQpOworCisgICAgYXV0
byBpdGVtcyA9IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtcywgeyB9KTsKKyAgICBhdXRvIGxvYWRSZXN1
bHRzID0gc3RkOjpleGNoYW5nZShtX2xvYWRSZXN1bHRzLCB7IH0pOworCisgICAgaWYgKCFtX2Ns
aXBib2FyZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVm
UHRyKG1fY2xpcGJvYXJkLT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50
KCkpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+IGN1c3RvbURhdGFSZXN1bHRzOworICAgIGZvciAoYXV0
byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURh
dGE7CisgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRlbS0+dHlwZXMoKSkgeworICAgICAgICAg
ICAgYXV0byBkYXRhID0gbG9hZFJlc3VsdHMuZ2V0KHsgaXRlbS5wdHIoKSwgdHlwZSB9KS5kYXRh
OworICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAm
JiAhIVdURjo6Z2V0PFN0cmluZz4oZGF0YSkpCisgICAgICAgICAgICAgICAgY3VzdG9tRGF0YS53
cml0ZVN0cmluZyh0eXBlLCBXVEY6OmdldDxTdHJpbmc+KGRhdGEpKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+KGRhdGEp
ICYmIFdURjo6Z2V0PFJlZlB0cjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgICAg
ICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCAqV1RGOjpnZXQ8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpKTsKKyAgICAgICAgfQorICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihkb2N1
bWVudC0+b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKSk7CisgICAgICAgIGN1c3RvbURh
dGFSZXN1bHRzLmFwcGVuZChXVEZNb3ZlKGN1c3RvbURhdGEpKTsKKyAgICB9CisgICAgcmV0dXJu
IGN1c3RvbURhdGFSZXN1bHRzOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9y
OjpkaWRGaW5pc2hMb2FkaW5nQmxvYihDbGlwYm9hcmRJdGVtQmxvYkxvYWRlciYgYmxvYkxvYWRl
cikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGZpbmRMb2FkUmVzdWx0KGJsb2JMb2FkZXIubG9hZFJl
c3VsdEtleSgpKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBjYW5jZWxEYXRhQ29sbGVj
dGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgbG9hZGVyID0gYmxv
YkxvYWRlci5sb2FkZXIoKTsKKyAgICBpZiAoYmxvYkxvYWRlci5yZWFkVHlwZSgpID09IEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc1RleHQpCisgICAgICAgIHJlc3VsdC0+ZGF0YSA9IHsgbG9hZGVy
LnN0cmluZ1Jlc3VsdCgpIH07CisgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IGxvYWRl
ci5hcnJheUJ1ZmZlclJlc3VsdCgpKQorICAgICAgICByZXN1bHQtPmRhdGEgPSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgfTsKKworICAgIGRlY3JlbWVudFBlbmRpbmdM
b2FkQ291bnQoKTsKK30KKworT3B0aW9uYWw8Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6Okxv
YWRSZXN1bHQmPiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZmluZExvYWRSZXN1bHQoY29u
c3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9sb2FkUmVzdWx0cy5maW5kKGxvYWRSZXN1bHRLZXkpOworICAgIHJldHVybiBpdGVyYXRvciA9
PSBtX2xvYWRSZXN1bHRzLmVuZCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Q2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHQmPiB7IGl0ZXJhdG9yLT52YWx1ZSB9OworfQor
Cit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtQmxvYkxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZygpCit7CisgICAgbV9jb2xsZWN0b3IuZGlkRmluaXNoTG9hZGlu
Z0Jsb2IoKnRoaXMpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlw
Ym9hcmRJdGVtQmxvYkxvYWRlcjo6ZGlkRmFpbChpbnQpCit7CisgICAgbV9jb2xsZWN0b3IuY2Fu
Y2VsRGF0YUNvbGxlY3Rpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAxNWRlZDA0MzYyMTlh
MjY4ZDEwZDk5YTQxM2I3MDFkNTNlMTVhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgK
QEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkZpbGVSZWFkZXJMb2FkZXIuaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgQ2xpcGJvYXJkOworY2xh
c3MgQ2xpcGJvYXJkSXRlbTsKK2NsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOworCitjbGFzcyBD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciA6IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0
ZW1EYXRhQ29sbGVjdG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVt
RGF0YUNvbGxlY3Rvcj4gY3JlYXRlKENsaXBib2FyZCYgY2xpcGJvYXJkLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENsaXBib2FyZEl0ZW0+PiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYs
IGJvb2wgc3VjY2VlZGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKGNsaXBib2FyZCwg
aXRlbXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgfkNsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yKCk7CisKKyAgICB2b2lkIGhhbmRsZVN0cmluZyhDbGlwYm9h
cmRJdGVtJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGhh
bmRsZUJsb2IoQ2xpcGJvYXJkSXRlbSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEJsb2I+JiYp
OworICAgIHZvaWQgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKworICAgIHZvaWQgc3RhcnREYXRh
Q29sbGVjdGlvbigpOworICAgIGJvb2wgaGFzUGVuZGluZ0xvYWRzKCkgY29uc3QgeyByZXR1cm4g
bV9wZW5kaW5nTG9hZFJlc3VsdENvdW50OyB9CisKK3ByaXZhdGU6CisgICAgc3RydWN0IExvYWRS
ZXN1bHRLZXkgeworICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkSXRlbT4gaXRlbTsKKyAgICAgICAg
U3RyaW5nIHR5cGU7CisgICAgfTsKKworICAgIHN0cnVjdCBMb2FkUmVzdWx0S2V5SGFzaCB7Cisg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExvYWRSZXN1bHRLZXkmIGtleSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFB0ckhhc2g8Q2xpcGJvYXJkSXRlbSo+OjpoYXNo
KGtleS5pdGVtLmdldCgpKSArIGtleS50eXBlLmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IExvYWRSZXN1bHRLZXkmIGEsIGNvbnN0IExvYWRSZXN1
bHRLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhLml0ZW0gPT0gYi5pdGVt
ICYmIGEudHlwZSA9PSBiLnR5cGU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisK
KyAgICBzdHJ1Y3QgTG9hZFJlc3VsdEtleUhhc2hUcmFpdCA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxMb2FkUmVzdWx0S2V5PiB7CisgICAgICAgIHN0YXRpYyBMb2FkUmVzdWx0S2V5IGVtcHR5VmFs
dWUoKSB7IHJldHVybiB7IG51bGxwdHIsIGVtcHR5U3RyaW5nKCkgfTsgfQorICAgICAgICBzdGF0
aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgTG9hZFJlc3VsdEtleSYgdmFsdWUpIHsgcmV0dXJu
ICF2YWx1ZS5pdGVtICYmIHZhbHVlLnR5cGUgPT0gZW1wdHlTdHJpbmcoKTsgfQorCisgICAgICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShMb2FkUmVzdWx0S2V5JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QpIExvYWRSZXN1bHRLZXkoKTsgfQorICAgICAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBMb2FkUmVzdWx0S2V5JiB2YWx1ZSkgeyByZXR1cm4g
IXZhbHVlLml0ZW0gJiYgIXZhbHVlLnR5cGU7IH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIH07CisKKyAgICBjbGFz
cyBDbGlwYm9hcmRJdGVtQmxvYkxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0
ZW1CbG9iTG9hZGVyPiwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcj4gY3JlYXRlKENs
aXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0b3IsIGNvbnN0IExvYWRSZXN1bHRLZXkm
IGxvYWRSZXN1bHRLZXksIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGlwYm9hcmRJdGVtQmxv
YkxvYWRlcihjb2xsZWN0b3IsIGxvYWRSZXN1bHRLZXksIHJlYWRUeXBlKSk7CisgICAgICAgIH0K
KworICAgICAgICBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhZFR5cGU7IH0KKyAgICAgICAgRmlsZVJlYWRlckxvYWRlciYgbG9hZGVyKCkg
eyByZXR1cm4gKm1fbG9hZGVyOyB9CisgICAgICAgIGNvbnN0IExvYWRSZXN1bHRLZXkmIGxvYWRS
ZXN1bHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRSZXN1bHRLZXk7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyKENsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yJiBjb2xsZWN0b3IsIGNvbnN0IExvYWRSZXN1bHRLZXkmIGxvYWRSZXN1bHRLZXksIEZp
bGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKQorICAgICAgICAgICAgOiBtX2NvbGxl
Y3Rvcihjb2xsZWN0b3IpCisgICAgICAgICAgICAsIG1fbG9hZFJlc3VsdEtleShsb2FkUmVzdWx0
S2V5KQorICAgICAgICAgICAgLCBtX3JlYWRUeXBlKHJlYWRUeXBlKQorICAgICAgICAgICAgLCBt
X2xvYWRlcihtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KHJlYWRUeXBlLCB0aGlzKSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBmaW5h
bCB7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSgpIGZpbmFsIHsgfQorICAgICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRGYWlsKGludCkg
ZmluYWw7CisKKyAgICAgICAgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImIG1fY29sbGVjdG9y
OworICAgICAgICBMb2FkUmVzdWx0S2V5IG1fbG9hZFJlc3VsdEtleTsKKyAgICAgICAgRmlsZVJl
YWRlckxvYWRlcjo6UmVhZFR5cGUgbV9yZWFkVHlwZTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworICAgIH07CisKKyAgICB1c2luZyBCdWZmZXJP
clN0cmluZyA9IFZhcmlhbnQ8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZz47CisgICAgc3Ry
dWN0IExvYWRSZXN1bHQgeworICAgICAgICBCdWZmZXJPclN0cmluZyBkYXRhOworICAgICAgICBS
ZWZQdHI8Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI+IGxvYWRlcjsKKyAgICB9OworCisgICAgQ2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3IoQ2xpcGJvYXJkJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxD
bGlwYm9hcmRJdGVtPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENsaXBib2FyZEl0ZW1EYXRh
Q29sbGVjdG9yJiwgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYmLCBib29sIHN1Y2NlZWRl
ZCk+JiYpOworCisgICAgT3B0aW9uYWw8TG9hZFJlc3VsdCY+IGZpbmRMb2FkUmVzdWx0KGNvbnN0
IExvYWRSZXN1bHRLZXkmKTsKKyAgICB2b2lkIGRlY3JlbWVudFBlbmRpbmdMb2FkQ291bnQoKTsK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdCbG9iKENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyJik7
CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZ0Jsb2IoKTsKKyAgICBWZWN0b3I8UGFzdGVib2FyZEN1
c3RvbURhdGE+IHRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cygpOworCisgICAgV2Vha1B0
cjxDbGlwYm9hcmQ+IG1fY2xpcGJvYXJkOworICAgIEhhc2hNYXA8TG9hZFJlc3VsdEtleSwgTG9h
ZFJlc3VsdCwgTG9hZFJlc3VsdEtleUhhc2gsIExvYWRSZXN1bHRLZXlIYXNoVHJhaXQ+IG1fbG9h
ZFJlc3VsdHM7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3RvciYsIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiwgYm9vbCBzdWNjZWVkZWQp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFZlY3RvcjxSZWY8Q2xpcGJvYXJkSXRlbT4+IG1f
aXRlbXM7CisgICAgdWludDY0X3QgbV9wZW5kaW5nTG9hZFJlc3VsdENvdW50IHsgMCB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgK
aW5kZXggOTJhNmQxZmQzZWU2OTViZTc1NjRkNTllZDQxY2Q3NjZhNzliNDA4MC4uYzk1MzA3ZjE4
ZTc2ZWM5MDEyNDU1OGIxNDkyYTA2NThkZTJkZjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0
YVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RGVmZXJyZWRQcm9taXNlOwogY2xhc3MgQ2xpcGJvYXJkSXRlbTsKK2NsYXNzIENsaXBib2FyZEl0
ZW1EYXRhQ29sbGVjdG9yOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiBwdWJs
aWM6CkBAIC00Niw2ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGUoY29uc3QgU3Ry
aW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImKSA9IDA7CiAKIHBy
b3RlY3RlZDoKICAgICBDbGlwYm9hcmRJdGVtJiBtX2l0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAppbmRleCA4ODRkNDc2MDkzMzA5MWMx
ZmE0MzIzMzc5NGRmODc3MDE4NTFjMzY2Li4yOTllZjFiMjNiODA4ZjY2NjgxY2E3YzFiZThkYWFm
NzU4OTFiYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0
YVNvdXJjZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgog
I2luY2x1ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJDbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
UGFzdGVib2FyZEl0ZW1JbmZvLmgiCiAKQEAgLTU0LDQgKzU1LDExIEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbVBhc3RlYm9hcmREYXRhU291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PERlZmVycmVkCiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogfQog
Cit2b2lkIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JX
cml0aW5nKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0b3IpCit7CisgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCB3cml0aW5n
IHBsYXRmb3JtLWJhY2tlZCBDbGlwYm9hcmRJdGVtcworICAgIC8vIGJhY2sgdG8gdGhlIHBhc3Rl
Ym9hcmQgdXNpbmcgQ2xpcGJvYXJkLndyaXRlKCkuCisgICAgY29sbGVjdG9yLmNhbmNlbERhdGFD
b2xsZWN0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKaW5kZXggYjI2MzI4YmU1Y2EwOWNm
NzUyY2Q1OTRmNzgwZTIyOWI2ODRkNWFjNC4uZmYxMzRlNGQzNWM2NTAyYWM3MDA1Y2ZmMGE3NDE0
ODY4NTU4MDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRh
U291cmNlLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWZWN0b3I8
U3RyaW5nPiB0eXBlcygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJp
bmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRh
Rm9yV3JpdGluZyhDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYpIGZpbmFsOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gbV90eXBlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZlOGNlNzRhNWJhOWMz
ZDZhNWFhZGMxMjRiOGY4YmI0ZmE2ODM3OTEuLjFlYzYxNGNhZDQyMzJlNjVkMGZiNzliYjIwNmU4
ZmZkN2Y3YWE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zNiw2ICszNiw3IEBAIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAK
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCitNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5j
cHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNv
dXJjZS5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL05hdmlnYXRvckNsaXBib2FyZC5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDZjY2U1NThkOGRlNTAyM2Y0NjdjMTI4YzNjMDU0MTBjOTJiMzQwZDEuLmEyNmRiOTE4
OTZlMDZjZmFkOWQ5ZWJlZmNmMmYxZTU4Zjk4NmNiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5MjIsNiArNDkyMiw3IEBA
CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4g
Q29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0
MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CiAJCUY0RDA3
NTU4MjM0RDgyMkQwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0N0EyMzQ2NTM1RTAw
MzlBNzlEIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggKi87IH07CiAJCUY0RDA3NTU5MjM0
RDgyMzMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkM0NDgwMjM0NjU0
N0EwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCAqLzsgfTsK
KwkJRjREMDc1NTYyMzREODIyMzAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEUzMEQz
RjIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCAqLzsgfTsK
IAkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQy
MTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURDMjEzRjNGNUYw
MDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRB
dHRyaWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5h
Z2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTUz
MzksNiArMTUzNDAsOCBAQAogCQlGNEUxOTY1RjIxRjI2RTRFMDAyODUwNzggLyogVW5kb0l0ZW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5kb0l0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEUxOTY2MTIxRjI3RDNDMDAyODUwNzggLyogQ3VzdG9tVW5kb1N0ZXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tVW5kb1N0ZXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFMTk2NjIyMUYyN0QzRDAwMjg1MDc4IC8qIEN1c3Rv
bVVuZG9TdGVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3Rv
bVVuZG9TdGVwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRFMzBEM0YyMzQ0
NDc0ODAwNzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0RTMwRDQwMjM0NDQ3NDgwMDc2REY2QSAvKiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RURBMjEzRjNGNUYwMDRFQTk4
RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250QXR0cmlidXRl
Q2hhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VERjIxM0Y0MzRB
MDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjRFNTdFRTAyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA2OSw2ICsyNzA3Miw4IEBACiAJCQkJ
RjQ0MEU3NzcyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaWRsICovLAogCQkJCUY0
NkM0NDdEMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcCAqLywKIAkJCQlGNDZDNDQ3QzIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oICovLAorCQkJCUY0RTMwRDQwMjM0NDQ3NDgwMDc2REY2QSAvKiBD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5jcHAgKi8sCisJCQkJRjRFMzBEM0YyMzQ0NDc0ODAw
NzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmggKi8sCiAJCQkJRjQ2QzQ0N0Ey
MzQ2NTM1RTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggKi8sCiAJCQkJRjQ2
QzQ0ODEyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZS5jcHAgKi8sCiAJCQkJRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1Q
YXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovLApAQCAtMjkwNTMsNiArMjkwNTgsNyBAQAogCQkJCTg1
MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY0NkM0NDdFMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNEQwNzU1NjIzNEQ4MjIzMDA4
ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0RDA3NTU4MjM0RDgyMkQwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBib2FyZEl0
ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI5MkRGNEIxNUZF
RDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMy
MTQ0LDYgKzMyMTUwLDcgQEAKIAkJCQlCQzVFQjY3QjBFODFEM0JFMDBCMjU5NjUgLyogU3R5bGVC
b3hEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I5Njg3QjE5RjhBQjgzMDA0RUY3QUYgLyog
U3R5bGVCdWlsZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzVEMzYzNzE5RkY2
MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
NEFCQUMwNDIzNkFFOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEFCQUJGMzIzNjhCOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0NDREMEU2NzQ2MjgwMDFDMTI4NyAvKiBTdHls
ZUNhY2hlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAxRTBBNDFDM0MwQjgzMDBGMzRE
MTAgLyogU3R5bGVDaGFuZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzIzNDcsNyArMzIzNTQsNiBA
QAogCQkJCTA4NTRCMDIzMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FBMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2NyaXB0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1NldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QUJBQzA0MjM2QUU5NTkwMEZBNDM0
NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZEMDEw
MERBRjMzNTUwMEY1RjU1QyAvKiBTVkdTTUlMRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382552</attachid>
            <date>2019-10-31 21:55:36 -0700</date>
            <delta_ts>2019-11-01 07:20:56 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-203707-20191031215535.patch</filename>
            <type>text/plain</type>
            <size>35519</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkNjY3NjZiYzY3NGNj
NzVjZDQ5YjNlMTc2NTZkZDMxYTcyZWYxYS4uMTY0YmU4NTFlNDEzZTM2ZTRhMjQyMTM3MGM1OTA0
Y2YyNGYwZjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxOS0xMC0zMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gQWRkIGEgaGVscGVyIGNsYXNzIHRvIHJlc29sdmUgQ2xpcGJvYXJkSXRlbXMgaW50byBw
YXN0ZWJvYXJkIGRhdGEgZm9yIHdyaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBuZXcgaGVscGVyIGNsYXNzIHRoYXQgd2ls
bCBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIHRvIGFnZ3JlZ2F0ZSBkYXRhIHZlbmRlZCBieSBD
bGlwYm9hcmRJdGVtcworICAgICAgICB3aGVuIHdyaXRpbmcgaXRlbXMgdG8gdGhlIHBsYXRmb3Jt
IHBhc3RlYm9hcmQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzOyBubyBuZXcgdGVzdHMsIHNp
bmNlIHRoZXJlIGlzIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29s
bGVjdERhdGFGb3JXcml0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZp
cnR1YWwgYGNvbGxlY3REYXRhRm9yV3JpdGluZ2AgbWV0aG9kLCB3aGljaCBpcyB1c2VkIHdoZW4g
d3JpdGluZyBDbGlwYm9hcmRJdGVtIGRhdGEgdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQuIFRo
aXMgYWxsb3dzIENsaXBib2FyZEl0ZW1zIHRvIGFzeW5jaHJvbm91c2x5IGRlbGl2ZXIgZGF0YSB0
byBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciBhZnRlcgorICAgICAgICByZXNvbHZpbmcgcHJv
bWlzZXMgdG8gc3RyaW5ncyBvciBibG9icywgb3IgYWx0ZXJuYXRlbHksIGNhbmNlbCBhbGwgZGF0
YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcDogQWRkZWQuCisK
KyAgICAgICAgSW50cm9kdWNlIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLCB3aGljaCBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFzc2FnaW5nIGEgbGlzdCBvZiBDbGlwYm9hcmRJdGVtcyBpbnRvIGEg
bGlzdCBvZgorICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBvYmplY3RzIHdoZW4gd3JpdGlu
ZyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gRWFjaCBDbGlwYm9hcmRJdGVtIGNyZWF0ZWQg
dmlhIGJpbmRpbmdzCisgICAgICAgIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiAodHlwZSwgcHJvbWlz
ZSkgcGFpcnMsIHdoZXJlIGVhY2ggcHJvbWlzZSBtYXkgcmVzb2x2ZSB0byBlaXRoZXIgYSBzdHJp
bmcgb3IgYSBibG9iLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNvbnZlcnQgdGhpcyBpbnRvIFBh
c3RlYm9hcmRDdXN0b21EYXRhcywgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
c2V0IHVwIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgY29ycmVzcG9uZGluZyB0byBlYWNoIGNsaXBi
b2FyZCBpdGVtCisgICAgICAgICAgICBmb3IgZWFjaCBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAg
ICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5IHRvIHJlc29sdmUgdGhlIHByb21pc2UKKyAgICAgICAgICAgICAgICAgICAg
aWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBzdHJpbmc6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVyIHRoZSB0eXBlCisgICAg
ICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgYmxvYjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWQgdGhlIGJsb2IgZGF0YSBhcyBlaXRoZXIgdGV4dCBvciBh
biBBcnJheUJ1ZmZlciAoZGVwZW5kaW5nIG9uIHRoZSB0eXBlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0b20g
ZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJvbWlzZSBy
ZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiB1bnN1cHBvcnRlZCB2YWx1ZSwgYmFpbCBmcm9tIHRo
ZXNlIHN0ZXBzCisKKyAgICAgICAgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IgYW5kIENsaXBi
b2FyZEl0ZW0gY2Fycnkgb3V0IHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVsLCBzbyB0aGF0IGZvciBl
YWNoIHBhaXIgb2YKKyAgICAgICAgKGNsaXBib2FyZCBpdGVtLCB0eXBlKSwgd2UgdHJ5IHRvIHJl
c29sdmUgdGhlIHByb21pc2UgYW5kIHRoZW4gbG9hZCB0aGUgcmVzdWx0aW5nIGJsb2IgaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtRGF0
YUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERhdGFDb2xsZWN0aW9uKToKKworICAgICAgICBD
YWxsZWQgYnkgQ2xpcGJvYXJkIHRvIGJlZ2luIGNvbGxlY3RpbmcgZGF0YSBmcm9tIHRoZSBsaXN0
IG9mIGNsaXBib2FyZCBpdGVtcyB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpjYW5jZWxEYXRhQ29s
bGVjdGlvbik6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byBjYW5jZWwgYWxsIGRhdGEgY29s
bGVjdGlvbi4gVGhpcyBjbGVhcnMgb3V0IHN0YXRlIGluIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yIChpbmNsdWRpbmcgYW55CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIENsaXBib2Fy
ZEl0ZW1zKSwgc3RvcHMgYWxsIGFjdGl2ZSBGaWxlUmVhZGVyTG9hZGVycywgYW5kIGludm9rZXMg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciwKKyAgICAgICAgcGFzc2luZyBpbiBgZmFsc2VgIGZvciB0
aGUgc3VjY2VzcyBwYXJhbWV0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IpOgorCisgICAgICAgIFRoZXNlIHR3byBtZXRo
b2RzIGFyZSBpbnZva2VkIGJ5IENsaXBib2FyZEl0ZW0ncyBkYXRhIHNvdXJjZXMgd2hlbiByZXNv
bHZpbmcgY2xpcGJvYXJkIGRhdGEgcHJvbWlzZXMgdG8gZWl0aGVyCisgICAgICAgIHN0cmluZ3Mg
b3IgYmxvYnMuIEluIHRoZSBjYXNlIG9mIGEgc3RyaW5nLCB3ZSBzaW1wbHkgdXBkYXRlIHRoZSBj
b3JyZXNwb25kaW5nIGxvYWQgcmVzdWx0IGFuZCBjb25zaWRlciB0aGUgbG9hZAorICAgICAgICBm
b3IgdGhhdCAoaXRlbSwgdHlwZSkgcGFpciBmaW5pc2hlZC4gSW4gdGhlIGNhc2Ugb2YgYSBibG9i
LCB3ZSBuZWVkIHRvIGNvbnRpbnVlIHRoZSBsb2FkIGJ5IGNyZWF0aW5nIGEKKyAgICAgICAgRmls
ZVJlYWRlckxvYWRlciBhbmQgd2FpdGluZyBmb3IgaXQgdG8gZWl0aGVyIGZpbmlzaCBvciBmYWls
LgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGVjcmVt
ZW50UGVuZGluZ0xvYWRDb3VudCk6CisKKyAgICAgICAgV2hlbiBiZWdpbm5pbmcgdG8gY29sbGVj
dCBjbGlwYm9hcmQgZGF0YSBmb3Igd3JpdGluZywgdGhlIG1fcGVuZGluZ0xvYWRSZXN1bHRDb3Vu
dCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZgorICAgICAgICAoaXRlbSwgdHlwZSkgcGFpcnMgdGhh
dCBuZWVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5pc2ggbG9hZGluZyBhbmQgZGVsaXZlciBlaXRoZXIg
c3RyaW5ncyBvciBidWZmZXJzIGJlZm9yZSB3ZSBjYW4KKyAgICAgICAgcHJvY2VlZCB3aXRoIHdy
aXRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIEV2ZXJ5IHRpbWUg
b25lIHN1Y2ggcGFpciBmaW5pc2hlcywgd2UgZGVjcmVtZW50CisgICAgICAgIHRoaXMgY291bnQs
IHN1Y2ggdGhhdCB3aGVuIGl0IHJlYWNoZXMgMCAoYXNzdW1pbmcgdGhhdCBsb2FkaW5nIHdhc24n
dCBjdXQgc2hvcnQgZHVlIHRvIGZhaWx1cmVzKSwgd2UgdGhlbgorICAgICAgICBhc3NlbWJsZSB0
aGlzIGFnZ3JlZ2F0ZWQgZGF0YSBpbnRvIGEgZmluYWwgcmVzdWx0IHVzaW5nIGB0YWtlUGFzdGVi
b2FyZEl0ZW1zRnJvbVJlc3VsdHNgIGFuZCBpbnZva2UgdGhlCisgICAgICAgIGNvbXBsZXRpb24g
aGFuZGxlci4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OnRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cyk6CisKKyAgICAgICAgQ2xlYXJzIG91dCBh
bGwgaW50ZXJuYWwgc3RhdGUsIGFuZCB1c2VzIGl0IHRvIHNldCB1cCBhIGxpc3Qgb2YgUGFzdGVi
b2FyZEN1c3RvbURhdGFzLiBJbnZva2VkIG9ubHkgYWZ0ZXIgdGhlCisgICAgICAgIGxvYWQgaGFz
IGNvbXBsZXRlbHkgZmluaXNoZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpkaWRGaW5pc2hMb2FkaW5nQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGYWlsKToKKworICAgICAgICBBZGQgYSBo
ZWxwZXIgY2xhc3MsIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyLCB0aGF0IHdyYXBzIGEgRmlsZVJl
YWRlckxvYWRlciBhbmQgYWN0cyBhcyBpdHMgY2xpZW50LiBVcG9uCisgICAgICAgIGZpbmlzaGlu
ZyBvciBmYWlsaW5nLCBpdCBub3RpZmllcyBpdHMgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
CisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xs
ZWN0b3I6Omhhc1BlbmRpbmdMb2FkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2g6Omhhc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9h
ZFJlc3VsdEtleUhhc2hUcmFpdDo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2hUcmFpdDo6aXNFbXB0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpMb2Fk
UmVzdWx0S2V5SGFzaFRyYWl0Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoVHJhaXQ6
OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICBBZGQgdHdvIG1vcmUgcHJpdmF0ZSBoZWxwZXIg
Y2xhc3NlcyB0byBmYWNpbGl0YXRlIHRoaXMgbG9hZGluZyBwcm9jZXNzOiBMb2FkUmVzdWx0IGFu
ZCBMb2FkUmVzdWx0S2V5LiBBCisgICAgICAgIExvYWRSZXN1bHQgcmVwcmVzZW50cyB0aGUgc3Rh
dGUgb2YgYW4gYXR0ZW1wdCB0byBsb2FkIGRhdGEgZm9yIGEgcGFydGljdWxhciB0eXBlLCBmcm9t
IGEgcGFydGljdWxhciBpdGVtOyB3aGVuCisgICAgICAgIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9h
cmQsIGVhY2ggcGFpciBvZiAoY2xpcGJvYXJkIGl0ZW0sIHR5cGUpIGlzIHJlcHJlc2VudGVkIGJ5
IGEgTG9hZFJlc3VsdCB3aGljaCBjb250YWlucworICAgICAgICB0aGUgZmluYWwgbG9hZGVkIHN0
cmluZyBvciBTaGFyZWRCdWZmZXIsIGlmIGFueS4KKworICAgICAgICBXZSBtYXAgZWFjaCBjbGlw
Ym9hcmQgaXRlbSBhbmQgdHlwZSB0byBpdHMgTG9hZFJlc3VsdCB1c2luZyB0aGUgTG9hZFJlc3Vs
dEtleSwgd2hpY2ggaXMgYSBoYXNoYWJsZQorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUg
aXRlbSt0eXBlIHBhaXJpbmcuIEJ5IGRvaW5nIHRoaXMsIHdlIGF2b2lkIHNlYXJjaGluZyBsaW5l
YXJseSB0aHJvdWdoIGV2ZXJ5IHBlbmRpbmcKKyAgICAgICAgTG9hZFJlc3VsdCB3aGVuZXZlciBh
IGdpdmVuIGl0ZW0gYW5kIHR5cGUgZmluaXNoIHJlc29sdmluZyBpdHMgZGF0YSBvciBsb2FkaW5n
IGEgYmxvYi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpyZWFkVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6
Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRSZXN1
bHRLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcik6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAgIEZvciB0
aGUgdGltZSBiZWluZywgbGVhdmUgdGhpcyB1bmltcGxlbWVudGVkOyBhIGZ1dHVyZSBwYXRjaCB3
aWxsIGFkZCBzdXBwb3J0IGZvciB3cml0aW5nIENsaXBib2FyZEl0ZW1zIHRoYXQKKyAgICAgICAg
Y2FtZSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBhcyBvcHBvc2VkIHRvIHRob3NlIGNy
ZWF0ZWQgYnkgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTkt
MTAtMzEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAg
ICAgW1dpbkNhaXJvXVtDbGFuZ10gVW5yZXZpZXdlZCBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAK
aW5kZXggMDg2NmRlOTJlNDI4YjZiZmJlZDM1ZjU0NTNiZmQ2YTQ3YTQzNjYzOC4uMGNiNDIwOTA0
Y2JmYjc4ZmNmMGU2NDhjOGEyM2ZlNTQ0OWIzMjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTky
LDYgKzkyLDExIEBAIHZvaWQgQ2xpcGJvYXJkSXRlbTo6Z2V0VHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2RhdGFTb3VyY2UtPmdl
dFR5cGUodHlwZSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKK3ZvaWQgQ2xpcGJvYXJkSXRlbTo6
Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0
b3IpCit7CisgICAgbV9kYXRhU291cmNlLT5jb2xsZWN0RGF0YUZvcldyaXRpbmcoY29sbGVjdG9y
KTsKK30KKwogTmF2aWdhdG9yKiBDbGlwYm9hcmRJdGVtOjpuYXZpZ2F0b3IoKQogewogICAgIHJl
dHVybiBtX25hdmlnYXRvci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaAppbmRleCA0OWQyNTQ3OWU1Y2E2MjA0
M2YwN2U4NjA1MjUzYzk2MzY5ODQ4NDEyLi4yZmVkOWZjNzI3MDdkZDJlMmUwOWQ1OGFiYzViNDk1
OTAxMDZlOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIENsaXBib2FyZDsKK2NsYXNzIENsaXBib2FyZEl0
ZW1EYXRhQ29sbGVjdG9yOwogY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2U7CiBjbGFzcyBE
ZWZlcnJlZFByb21pc2U7CiBjbGFzcyBET01Qcm9taXNlOwpAQCAtNTksNiArNjAsOCBAQCBwdWJs
aWM6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAgICB2b2lkIGdldFR5cGUo
Y29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKKyAgICB2b2lkIGNvbGxl
Y3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYpOworCiAgICAgUHJl
c2VudGF0aW9uU3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNl
bnRhdGlvblN0eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdhdG9yKCk7CiAgICAgQ2xpcGJv
YXJkKiBjbGlwYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKaW5kZXggZTcyNjA1MTE0NDhkOWNiNDhiNTRmYmJiZTQ0NGY5NTg2ZmJmOWM4
MC4uYzZiMTVlOWIzNjlmYzJiMDg2OWQ0NzM4ZGQ5YmE5YjljZmZhY2Y2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCisjaW5j
bHVkZSAiQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIK
ICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgpAQCAtOTQsNCArOTUsMzUgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9KTsK
IH0KIAordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZv
cldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImIGNvbGxlY3RvcikKK3sKKyAgICBm
b3IgKGF1dG8gdHlwZUFuZEl0ZW0gOiBtX2l0ZW1Qcm9taXNlcykgeworICAgICAgICBhdXRvIHBy
b21pc2UgPSB0eXBlQW5kSXRlbS52YWx1ZTsKKyAgICAgICAgcHJvbWlzZS0+d2hlblNldHRsZWQo
W3Byb3RlY3RlZEl0ZW0gPSBtYWtlUmVmUHRyKG1faXRlbSksIHByb21pc2UsIHR5cGUgPSB0eXBl
QW5kSXRlbS5rZXksIGNvbGxlY3RvciA9IG1ha2VSZWZQdHIoY29sbGVjdG9yKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHByb21pc2UtPnJlc3VsdCgpOworICAgICAg
ICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBjb2xsZWN0b3ItPmNhbmNlbERh
dGFDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgcmVzdWx0LmdldFN0cmlu
Zyhwcm9taXNlLT5nbG9iYWxPYmplY3QoKSwgc3RyaW5nKTsKKyAgICAgICAgICAgIGlmICghc3Ry
aW5nLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5oYW5kbGVTdHJpbmco
KnByb3RlY3RlZEl0ZW0sIHR5cGUsIHN0cmluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc09iamVjdCgpKSB7Cisg
ICAgICAgICAgICAgICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF1dG8q
IGJsb2IgPSBKU0Jsb2I6OnRvV3JhcHBlZChyZXN1bHQuZ2V0T2JqZWN0KCktPnZtKCksIHJlc3Vs
dC5nZXRPYmplY3QoKSkpCisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5oYW5kbGVCbG9iKCpw
cm90ZWN0ZWRJdGVtLCB0eXBlLCAqYmxvYik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworICAgICAgICB9KTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCA2ZmQ4ZGRhNTc2YjdiNTJiMDgyMzAxOTZmZTk0
OTQwNGMxNDc0OGI0Li5mNThmMGYyNTIyODIwNDI2NjNhN2Y3MjE2NDJiZDFjODljYjIwNDkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2xpcGJvYXJkSXRlbURh
dGFDb2xsZWN0b3I7CiBjbGFzcyBET01Qcm9taXNlOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKQEAgLTQw
LDYgKzQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3RvciYpIGZpbmFsOwogCiAgICAgVmVjdG9yPEtleVZhbHVlUGFp
cjxTdHJpbmcsIFJlZlB0cjxET01Qcm9taXNlPj4+IG1faXRlbVByb21pc2VzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1EYXRhQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWY2NWNhZTUz
YTU2ODU5NDk3NjA3MWIxYWM0MzlkNzFlYzlmMzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3IuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCisKKyNpbmNsdWRlICJC
bG9iLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBG
aWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZUZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSAidGV4dC91cmktbGlzdCJfcyB8fCB0eXBlID09
ICJ0ZXh0L3BsYWluIl9zIHx8IHR5cGUgPT0gInRleHQvaHRtbCJfcykKKyAgICAgICAgcmV0dXJu
IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc1RleHQ7CisgICAgcmV0dXJuIEZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRBc0FycmF5QnVmZmVyOworfQorCitDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IoQ2xpcGJvYXJkJiBjbGlwYm9hcmQsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBpdGVtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYsIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YT4mJiwgYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1fY2xpcGJv
YXJkKG1ha2VXZWFrUHRyKGNsaXBib2FyZCkpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9pdGVtcyhpdGVtcy5tYXAoWyZdIChh
dXRvJiBpdGVtKSB7IHJldHVybiBtYWtlUmVmKCppdGVtKTsgfSkpCit7Cit9CisKK0NsaXBib2Fy
ZEl0ZW1EYXRhQ29sbGVjdG9yOjp+Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IoKQoreworICAg
IGNhbmNlbERhdGFDb2xsZWN0aW9uKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xs
ZWN0b3I6OnN0YXJ0RGF0YUNvbGxlY3Rpb24oKQoreworICAgIEFTU0VSVChtX2NvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0xvYWRSZXN1bHRDb3VudCk7CisKKyAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBtX2l0ZW1zKSB7CisgICAgICAgIGZvciAoYXV0byB0eXBlIDogaXRl
bS0+dHlwZXMoKSkgeworICAgICAgICAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK21fcGVuZGluZ0xvYWRSZXN1bHRDb3VudDsK
KyAgICAgICAgICAgIG1fbG9hZFJlc3VsdHMuc2V0KHsgaXRlbS5wdHIoKSwgdHlwZSB9LCBMb2Fk
UmVzdWx0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChhdXRvJiBpdGVtIDogbV9p
dGVtcykKKyAgICAgICAgaXRlbS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKCp0aGlzKTsKK30KKwor
dm9pZCBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKQor
eworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxl
ciwgeyB9KTsKKyAgICBtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQgPSAwOworCisgICAgZm9yIChh
dXRvJiBsb2FkUmVzdWx0IDogbV9sb2FkUmVzdWx0cy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
YXV0byBsb2FkZXIgPSBsb2FkUmVzdWx0LmxvYWRlcikKKyAgICAgICAgICAgIGxvYWRlci0+bG9h
ZGVyKCkuY2FuY2VsKCk7CisgICAgfQorCisgICAgbV9pdGVtcy5jbGVhcigpOworICAgIG1fbG9h
ZFJlc3VsdHMuY2xlYXIoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigqdGhpcywgeyB9LCBmYWxz
ZSk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZVN0cmluZyhD
bGlwYm9hcmRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSkKK3sKKyAgICBhdXRvIG1hdGNoaW5nUmVzdWx0ID0gZmluZExvYWRSZXN1bHQoeyAmaXRlbSwg
dHlwZSB9KTsKKyAgICBpZiAoIW1hdGNoaW5nUmVzdWx0KSB7CisgICAgICAgIGNhbmNlbERhdGFD
b2xsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYXRjaGluZ1Jlc3Vs
dC0+ZGF0YSA9IHsgZGF0YSB9OworICAgIGRlY3JlbWVudFBlbmRpbmdMb2FkQ291bnQoKTsKK30K
Kwordm9pZCBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6aGFuZGxlQmxvYihDbGlwYm9hcmRJ
dGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxCbG9iPiYmIGJsb2IpCit7CisgICAg
YXV0byBtYXRjaGluZ1Jlc3VsdCA9IGZpbmRMb2FkUmVzdWx0KHsgJml0ZW0sIHR5cGUgfSk7Cisg
ICAgaWYgKCFtYXRjaGluZ1Jlc3VsdCkgeworICAgICAgICBjYW5jZWxEYXRhQ29sbGVjdGlvbigp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IG1fY2xpcGJvYXJkID8gbV9jbGlwYm9hcmQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA6IG51bGxwdHI7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CisgICAgICAg
IGNhbmNlbERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
YXRjaGluZ1Jlc3VsdC0+bG9hZGVyID0gQ2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmNyZWF0ZSgq
dGhpcywgeyAmaXRlbSwgdHlwZSB9LCByZWFkVHlwZUZvck1JTUVUeXBlKHR5cGUpKTsKKyAgICBt
YXRjaGluZ1Jlc3VsdC0+bG9hZGVyLT5sb2FkZXIoKS5zdGFydChzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBibG9iKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGVjcmVt
ZW50UGVuZGluZ0xvYWRDb3VudCgpCit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyIHx8
ICFtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
LS1tX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQpCisgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9jb21w
bGV0aW9uSGFuZGxlciwgeyB9KSgqdGhpcywgdGFrZVBhc3RlYm9hcmRJdGVtc0Zyb21SZXN1bHRz
KCksIHRydWUpOworfQorCitWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+IENsaXBib2FyZEl0
ZW1EYXRhQ29sbGVjdG9yOjp0YWtlUGFzdGVib2FyZEl0ZW1zRnJvbVJlc3VsdHMoKQoreworICAg
IEFTU0VSVCghbV9wZW5kaW5nTG9hZFJlc3VsdENvdW50KTsKKworICAgIGF1dG8gaXRlbXMgPSBz
dGQ6OmV4Y2hhbmdlKG1faXRlbXMsIHsgfSk7CisgICAgYXV0byBsb2FkUmVzdWx0cyA9IHN0ZDo6
ZXhjaGFuZ2UobV9sb2FkUmVzdWx0cywgeyB9KTsKKworICAgIGlmICghbV9jbGlwYm9hcmQpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX2NsaXBi
b2FyZC0+ZnJhbWUoKSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFBhc3RlYm9h
cmRDdXN0b21EYXRhPiBjdXN0b21EYXRhUmVzdWx0czsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBp
dGVtcykgeworICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOworICAgICAg
ICBmb3IgKGF1dG8gdHlwZSA6IGl0ZW0tPnR5cGVzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0
YSA9IGxvYWRSZXN1bHRzLmdldCh7IGl0ZW0ucHRyKCksIHR5cGUgfSkuZGF0YTsKKyAgICAgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFXVEY6Omdl
dDxTdHJpbmc+KGRhdGEpKQorICAgICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmco
dHlwZSwgV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSk7CisgICAgICAgICAgICBlbHNlIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxTaGFyZWRCdWZmZXI+PihkYXRhKSAmJiBXVEY6Omdl
dDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgICAgICAgICAgY3VzdG9tRGF0
YS53cml0ZURhdGEodHlwZSwgKldURjo6Z2V0PFJlZlB0cjxTaGFyZWRCdWZmZXI+PihkYXRhKSk7
CisgICAgICAgIH0KKyAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oZG9jdW1lbnQtPm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCkpOworICAgICAgICBjdXN0b21EYXRhUmVzdWx0cy5h
cHBlbmQoV1RGTW92ZShjdXN0b21EYXRhKSk7CisgICAgfQorICAgIHJldHVybiBjdXN0b21EYXRh
UmVzdWx0czsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGlkRmluaXNo
TG9hZGluZ0Jsb2IoQ2xpcGJvYXJkSXRlbUJsb2JMb2FkZXImIGJsb2JMb2FkZXIpCit7CisgICAg
YXV0byByZXN1bHQgPSBmaW5kTG9hZFJlc3VsdChibG9iTG9hZGVyLmxvYWRSZXN1bHRLZXkoKSk7
CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxvYWRlciA9IGJsb2JMb2FkZXIubG9h
ZGVyKCk7CisgICAgaWYgKGJsb2JMb2FkZXIucmVhZFR5cGUoKSA9PSBGaWxlUmVhZGVyTG9hZGVy
OjpSZWFkQXNUZXh0KQorICAgICAgICByZXN1bHQtPmRhdGEgPSB7IGxvYWRlci5zdHJpbmdSZXN1
bHQoKSB9OworICAgIGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSBsb2FkZXIuYXJyYXlCdWZm
ZXJSZXN1bHQoKSkKKyAgICAgICAgcmVzdWx0LT5kYXRhID0geyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpIH07CisKKyAgICBkZWNyZW1lbnRQZW5kaW5nTG9hZENvdW50KCk7
Cit9CisKK09wdGlvbmFsPENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpMb2FkUmVzdWx0Jj4g
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmZpbmRMb2FkUmVzdWx0KGNvbnN0IExvYWRSZXN1
bHRLZXkmIGxvYWRSZXN1bHRLZXkpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fbG9hZFJlc3Vs
dHMuZmluZChsb2FkUmVzdWx0S2V5KTsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0gbV9sb2FkUmVz
dWx0cy5lbmQoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPENsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yOjpMb2FkUmVzdWx0Jj4geyBpdGVyYXRvci0+dmFsdWUgfTsKK30KKwordm9pZCBDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoKQoreworICAgIG1fY29sbGVjdG9yLmRpZEZpbmlzaExvYWRpbmdCbG9iKCp0aGlz
KTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJs
b2JMb2FkZXI6OmRpZEZhaWwoaW50KQoreworICAgIG1fY29sbGVjdG9yLmNhbmNlbERhdGFDb2xs
ZWN0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtRGF0YUNvbGxlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMTVkZWQwNDM2MjE5YTI2OGQxMGQ5OWE0
MTNiNzAxZDUzZTE1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oCkBAIC0wLDAgKzEs
MTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWxlUmVhZGVy
TG9hZGVyLmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQmxvYjsKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIENsaXBib2Fy
ZEl0ZW07CitjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKKworY2xhc3MgQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3Rvcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I+IGNyZWF0ZShDbGlwYm9hcmQmIGNsaXBib2FyZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxDbGlw
Ym9hcmRJdGVtPj4mIGl0ZW1zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yJiwgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYmLCBib29sIHN1Y2Nl
ZWRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvcihjbGlwYm9hcmQsIGl0ZW1zLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIH5DbGlwYm9hcmRJdGVtRGF0
YUNvbGxlY3RvcigpOworCisgICAgdm9pZCBoYW5kbGVTdHJpbmcoQ2xpcGJvYXJkSXRlbSYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBoYW5kbGVCbG9iKENs
aXBib2FyZEl0ZW0mLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxCbG9iPiYmKTsKKyAgICB2b2lk
IGNhbmNlbERhdGFDb2xsZWN0aW9uKCk7CisKKyAgICB2b2lkIHN0YXJ0RGF0YUNvbGxlY3Rpb24o
KTsKKyAgICBib29sIGhhc1BlbmRpbmdMb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0xv
YWRSZXN1bHRDb3VudDsgfQorCitwcml2YXRlOgorICAgIHN0cnVjdCBMb2FkUmVzdWx0S2V5IHsK
KyAgICAgICAgUmVmUHRyPENsaXBib2FyZEl0ZW0+IGl0ZW07CisgICAgICAgIFN0cmluZyB0eXBl
OworICAgIH07CisKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdEtleUhhc2ggeworICAgICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBMb2FkUmVzdWx0S2V5JiBrZXkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBQdHJIYXNoPENsaXBib2FyZEl0ZW0qPjo6aGFzaChrZXkuaXRlbS5n
ZXQoKSkgKyBrZXkudHlwZS5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBMb2FkUmVzdWx0S2V5JiBhLCBjb25zdCBMb2FkUmVzdWx0S2V5JiBiKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYS5pdGVtID09IGIuaXRlbSAmJiBhLnR5cGUg
PT0gYi50eXBlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgc3RydWN0
IExvYWRSZXN1bHRLZXlIYXNoVHJhaXQgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8TG9hZFJlc3Vs
dEtleT4geworICAgICAgICBzdGF0aWMgTG9hZFJlc3VsdEtleSBlbXB0eVZhbHVlKCkgeyByZXR1
cm4geyBudWxscHRyLCBlbXB0eVN0cmluZygpIH07IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNF
bXB0eVZhbHVlKGNvbnN0IExvYWRSZXN1bHRLZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaXRl
bSAmJiB2YWx1ZS50eXBlID09IGVtcHR5U3RyaW5nKCk7IH0KKworICAgICAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoTG9hZFJlc3VsdEtleSYgc2xvdCkgeyBuZXcgKE5vdE51
bGwsICZzbG90KSBMb2FkUmVzdWx0S2V5KCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgTG9hZFJlc3VsdEtleSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZS5pdGVt
ICYmICF2YWx1ZS50eXBlOyB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0lz
RW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICB9OworCisgICAgY2xhc3MgQ2xpcGJvYXJk
SXRlbUJsb2JMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtQmxvYkxvYWRl
cj4sIHB1YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI+IGNyZWF0ZShDbGlwYm9hcmRJdGVt
RGF0YUNvbGxlY3RvciYgY29sbGVjdG9yLCBjb25zdCBMb2FkUmVzdWx0S2V5JiBsb2FkUmVzdWx0
S2V5LCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJvYXJkSXRlbUJsb2JMb2FkZXIoY29s
bGVjdG9yLCBsb2FkUmVzdWx0S2V5LCByZWFkVHlwZSkpOworICAgICAgICB9CisKKyAgICAgICAg
RmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
YWRUeXBlOyB9CisgICAgICAgIEZpbGVSZWFkZXJMb2FkZXImIGxvYWRlcigpIHsgcmV0dXJuICpt
X2xvYWRlcjsgfQorICAgICAgICBjb25zdCBMb2FkUmVzdWx0S2V5JiBsb2FkUmVzdWx0S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2FkUmVzdWx0S2V5OyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcihDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYgY29s
bGVjdG9yLCBjb25zdCBMb2FkUmVzdWx0S2V5JiBsb2FkUmVzdWx0S2V5LCBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkVHlwZSByZWFkVHlwZSkKKyAgICAgICAgICAgIDogbV9jb2xsZWN0b3IoY29sbGVj
dG9yKQorICAgICAgICAgICAgLCBtX2xvYWRSZXN1bHRLZXkobG9hZFJlc3VsdEtleSkKKyAgICAg
ICAgICAgICwgbV9yZWFkVHlwZShyZWFkVHlwZSkKKyAgICAgICAgICAgICwgbV9sb2FkZXIobWFr
ZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihyZWFkVHlwZSwgdGhpcykpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkRmFpbChpbnQpIGZpbmFsOworCisg
ICAgICAgIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBtX2NvbGxlY3RvcjsKKyAgICAgICAg
TG9hZFJlc3VsdEtleSBtX2xvYWRSZXN1bHRLZXk7CisgICAgICAgIEZpbGVSZWFkZXJMb2FkZXI6
OlJlYWRUeXBlIG1fcmVhZFR5cGU7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlUmVhZGVy
TG9hZGVyPiBtX2xvYWRlcjsKKyAgICB9OworCisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBW
YXJpYW50PFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBTdHJpbmc+OworICAgIHN0cnVjdCBMb2FkUmVz
dWx0IHsKKyAgICAgICAgQnVmZmVyT3JTdHJpbmcgZGF0YTsKKyAgICAgICAgUmVmUHRyPENsaXBi
b2FyZEl0ZW1CbG9iTG9hZGVyPiBsb2FkZXI7CisgICAgfTsKKworICAgIENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yKENsaXBib2FyZCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRl
bT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYs
IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiwgYm9vbCBzdWNjZWVkZWQpPiYmKTsKKwor
ICAgIE9wdGlvbmFsPExvYWRSZXN1bHQmPiBmaW5kTG9hZFJlc3VsdChjb25zdCBMb2FkUmVzdWx0
S2V5Jik7CisgICAgdm9pZCBkZWNyZW1lbnRQZW5kaW5nTG9hZENvdW50KCk7CisgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nQmxvYihDbGlwYm9hcmRJdGVtQmxvYkxvYWRlciYpOworICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmdCbG9iKCk7CisgICAgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiB0
YWtlUGFzdGVib2FyZEl0ZW1zRnJvbVJlc3VsdHMoKTsKKworICAgIFdlYWtQdHI8Q2xpcGJvYXJk
PiBtX2NsaXBib2FyZDsKKyAgICBIYXNoTWFwPExvYWRSZXN1bHRLZXksIExvYWRSZXN1bHQsIExv
YWRSZXN1bHRLZXlIYXNoLCBMb2FkUmVzdWx0S2V5SGFzaFRyYWl0PiBtX2xvYWRSZXN1bHRzOwor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImLCBW
ZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3VjY2VlZGVkKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKKyAgICBWZWN0b3I8UmVmPENsaXBib2FyZEl0ZW0+PiBtX2l0ZW1zOworICAg
IHVpbnQ2NF90IG1fcGVuZGluZ0xvYWRSZXN1bHRDb3VudCB7IDAgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCmluZGV4IDkyYTZk
MWZkM2VlNjk1YmU3NTY0ZDU5ZWQ0MWNkNzY2YTc5YjQwODAuLmM5NTMwN2YxOGU3NmVjOTAxMjQ1
NThiMTQ5MmEwNjU4ZGUyZGY4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaApA
QCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlZmVycmVkUHJv
bWlzZTsKIGNsYXNzIENsaXBib2FyZEl0ZW07CitjbGFzcyBDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3RvcjsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogcHVibGljOgpAQCAtNDYs
NiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdERhdGFGb3JX
cml0aW5nKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgQ2xpcGJvYXJkSXRlbSYgbV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1Q
YXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKaW5kZXggODg0ZDQ3NjA5MzMwOTFjMWZhNDMyMzM3OTRk
Zjg3NzAxODUxYzM2Ni4uMjk5ZWYxYjIzYjgwOGY2NjY4MWNhN2MxYmU4ZGFhZjc1ODkxYmI0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJD
bGlwYm9hcmRJdGVtLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCIK
ICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRJ
dGVtSW5mby5oIgogCkBAIC01NCw0ICs1NSwxMSBAQCB2b2lkIENsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZTo6Z2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZAog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKIH0KIAordm9pZCBDbGlw
Ym9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3RvciYgY29sbGVjdG9yKQoreworICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgd3JpdGluZyBwbGF0Zm9ybS1i
YWNrZWQgQ2xpcGJvYXJkSXRlbXMKKyAgICAvLyBiYWNrIHRvIHRoZSBwYXN0ZWJvYXJkIHVzaW5n
IENsaXBib2FyZC53cml0ZSgpLgorICAgIGNvbGxlY3Rvci5jYW5jZWxEYXRhQ29sbGVjdGlvbigp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oCmluZGV4IGIyNjMyOGJlNWNhMDljZjc1MmNkNTk0Zjc4
MGUyMjliNjg0ZDVhYzQuLmZmMTM0ZTRkMzVjNjUwMmFjNzAwNWNmZjBhNzQxNDg2ODU1ODA0MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oCkBA
IC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlw
ZXMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmco
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImKSBmaW5hbDsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IG1fdHlwZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA5ZTQzN2YwZTBjOGY4Y2JmOWIwMzA2ZjQ1
MmMwMWU4Y2NiM2NiYmNlLi5jMWE3MTlmN2VmNjRhZWE2MWQ5MmIyNmVjMDRkNWU3MjFjZTYzOWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMzYsNiArMzYsNyBAQCBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuY3BwCiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9OYXZpZ2F0b3JDbGlwYm9hcmQuY3BwCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NDli
MDlkODM2NDBkNDk0ZjJhYjM4MGRmYmE1YjIxYjliYjJjMjNmLi44M2NmZTM0YTM0ODVmN2ExNjIx
ZGFmZmE2NjNiZTU2YWExYjY4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTIzLDYgKzQ5MjMsNyBAQAogCQlGNEJGQjk4
NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzIGluIENvcHkgU2NyaXB0
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgzODk4NDFFMURERjJCMDA3
NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovOyB9OwogCQlGNEQwNzU1ODIzNEQ4MjJE
MDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkM0NDdBMjM0NjUzNUUwMDM5QTc5RCAvKiBD
bGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNEQwNzU1OTIzNEQ4MjMzMDA4ODFF
NzMgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ4MDIzNDY1NDdBMDAzOUE3OUQg
LyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggKi87IH07CisJCUY0RDA3NTU2
MjM0RDgyMjMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFMzBEM0YyMzQ0NDc0ODAw
NzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmggKi87IH07CiAJCUY0RDQzRDY2
MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDQzRDY0MjE4ODAyRTYwMEVD
RUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1N0VEQzIxM0YzRjVGMDA0RUE5OEUgLyog
Rm9udEF0dHJpYnV0ZUNoYW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hh
bmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0RTU3RUUxMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREYy
MTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MzQyLDYgKzE1MzQz
LDggQEAKIAkJRjRFMTk2NUYyMUYyNkU0RTAwMjg1MDc4IC8qIFVuZG9JdGVtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVuZG9JdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjRFMTk2NjEyMUYyN0QzQzAwMjg1MDc4IC8qIEN1c3RvbVVuZG9TdGVwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbVVuZG9TdGVwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RTE5NjYyMjFGMjdEM0QwMDI4NTA3OCAvKiBDdXN0b21VbmRvU3RlcC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21VbmRvU3RlcC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0RTMwRDNGMjM0NDQ3NDgwMDc2REY2
QSAvKiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEUz
MEQ0MDIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0
dHJpYnV0ZUNoYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8q
IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RUUw
MjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjcwNzQsNiArMjcwNzcsOCBAQAogCQkJCUY0NDBFNzc3MjMz
RDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmlkbCAqLywKIAkJCQlGNDZDNDQ3RDIzNDY1
NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgKi8sCiAJ
CQkJRjQ2QzQ0N0MyMzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaCAqLywKKwkJCQlGNEUzMEQ0MDIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3IuY3BwICovLAorCQkJCUY0RTMwRDNGMjM0NDQ3NDgwMDc2REY2QSAvKiBD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oICovLAogCQkJCUY0NkM0NDdBMjM0NjUzNUUwMDM5
QTc5RCAvKiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oICovLAogCQkJCUY0NkM0NDgxMjM0NjU0
N0EwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwICovLAog
CQkJCUY0NkM0NDgwMjM0NjU0N0EwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuaCAqLywKQEAgLTI5MDU4LDYgKzI5MDYzLDcgQEAKIAkJCQk4NTAzMUI0MDBBNDRF
RkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NDBF
NzdCMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNDZDNDQ3RTIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjREMDc1NTYyMzREODIyMzAwODgxRTczIC8qIENs
aXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQwNzU1ODIz
NEQ4MjJEMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY0RDA3NTU5MjM0RDgyMzMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQz
MyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDU3Nyw3ICszMDU4
Myw2IEBACiAJCQkJQkNFMUM0M0MwRDk4MzBEMzAwM0IwMkYyIC8qIEpTTG9jYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzQTgwNjIwMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFD
b250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QUJBQzA2MjM2QjAxNkQwMEZBNDM0
NSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1OTc0MURCMUI3RDE0MDEw
MDIwMUM5MiAvKiBKU01lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTU3MzlC
QkIxQjQyMDEyRDAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzIxNDgsOCArMzIxNTMsMTAgQEAKIAkJCQk0MTRCODIw
NTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVFQjZBMzBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1RUI2N0IwRTgxRDNCRTAwQjI1OTY1IC8qIFN0eWxlQm94RGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTRBQkFDMDYyMzZCMDE2RDAwRkE0MzQ1IC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1RDM2MzcxOUZGNjE5
MzAwNEM5M0FCIC8qIFN0eWxlQnVpbGRlckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRB
QkFDMDQyMzZBRTk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRBQkFCRjMyMzY4Qjk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VGNDQ0RDBFNjc0NjI4MDAxQzEyODcgLyogU3R5bGVD
YWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwMUUwQTQxQzNDMEI4MzAwRjM0RDEw
IC8qIFN0eWxlQ2hhbmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMzUzLDcgKzMyMzYwLDYgQEAK
IAkJCQkwODU0QjAyMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBQTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NjcmlwdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUE2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
ZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEFCQUMwNDIzNkFFOTU5MDBGQTQzNDUg
LyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGRDAxMDBE
QUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QUE5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBQUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382576</attachid>
            <date>2019-11-01 07:20:57 -0700</date>
            <delta_ts>2019-11-01 07:26:51 -0700</delta_ts>
            <desc>Unified source build fix</desc>
            <filename>bug-203707-20191101072057.patch</filename>
            <type>text/plain</type>
            <size>36166</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkNjY3NjZiYzY3NGNj
NzVjZDQ5YjNlMTc2NTZkZDMxYTcyZWYxYS4uNmZmNmJlMTgyNmY4ZWM4NzEwZWQzNjkxODY4ZWE2
NzViZTU2ZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxOS0xMS0wMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gQWRkIGEgaGVscGVyIGNsYXNzIHRvIHJlc29sdmUgQ2xpcGJvYXJkSXRlbXMgaW50byBw
YXN0ZWJvYXJkIGRhdGEgZm9yIHdyaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBuZXcgaGVscGVyIGNsYXNzIHRoYXQgd2ls
bCBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIHRvIGFnZ3JlZ2F0ZSBkYXRhIHZlbmRlZCBieSBD
bGlwYm9hcmRJdGVtcworICAgICAgICB3aGVuIHdyaXRpbmcgaXRlbXMgdG8gdGhlIHBsYXRmb3Jt
IHBhc3RlYm9hcmQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzOyBubyBuZXcgdGVzdHMsIHNp
bmNlIHRoZXJlIGlzIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29s
bGVjdERhdGFGb3JXcml0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZp
cnR1YWwgYGNvbGxlY3REYXRhRm9yV3JpdGluZ2AgbWV0aG9kLCB3aGljaCBpcyB1c2VkIHdoZW4g
d3JpdGluZyBDbGlwYm9hcmRJdGVtIGRhdGEgdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQuIFRo
aXMgYWxsb3dzIENsaXBib2FyZEl0ZW1zIHRvIGFzeW5jaHJvbm91c2x5IGRlbGl2ZXIgZGF0YSB0
byBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciBhZnRlcgorICAgICAgICByZXNvbHZpbmcgcHJv
bWlzZXMgdG8gc3RyaW5ncyBvciBibG9icywgb3IgYWx0ZXJuYXRlbHksIGNhbmNlbCBhbGwgZGF0
YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcDogQWRkZWQuCisK
KyAgICAgICAgSW50cm9kdWNlIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLCB3aGljaCBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFzc2FnaW5nIGEgbGlzdCBvZiBDbGlwYm9hcmRJdGVtcyBpbnRvIGEg
bGlzdCBvZgorICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBvYmplY3RzIHdoZW4gd3JpdGlu
ZyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gRWFjaCBDbGlwYm9hcmRJdGVtIGNyZWF0ZWQg
dmlhIGJpbmRpbmdzCisgICAgICAgIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiAodHlwZSwgcHJvbWlz
ZSkgcGFpcnMsIHdoZXJlIGVhY2ggcHJvbWlzZSBtYXkgcmVzb2x2ZSB0byBlaXRoZXIgYSBzdHJp
bmcgb3IgYSBibG9iLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNvbnZlcnQgdGhpcyBpbnRvIFBh
c3RlYm9hcmRDdXN0b21EYXRhcywgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
c2V0IHVwIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgY29ycmVzcG9uZGluZyB0byBlYWNoIGNsaXBi
b2FyZCBpdGVtCisgICAgICAgICAgICBmb3IgZWFjaCBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAg
ICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5IHRvIHJlc29sdmUgdGhlIHByb21pc2UKKyAgICAgICAgICAgICAgICAgICAg
aWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBzdHJpbmc6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVyIHRoZSB0eXBlCisgICAg
ICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgYmxvYjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWQgdGhlIGJsb2IgZGF0YSBhcyBlaXRoZXIgdGV4dCBvciBh
biBBcnJheUJ1ZmZlciAoZGVwZW5kaW5nIG9uIHRoZSB0eXBlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0b20g
ZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJvbWlzZSBy
ZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiB1bnN1cHBvcnRlZCB2YWx1ZSwgYmFpbCBmcm9tIHRo
ZXNlIHN0ZXBzCisKKyAgICAgICAgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IgYW5kIENsaXBi
b2FyZEl0ZW0gY2Fycnkgb3V0IHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVsLCBzbyB0aGF0IGZvciBl
YWNoIHBhaXIgb2YKKyAgICAgICAgKGNsaXBib2FyZCBpdGVtLCB0eXBlKSwgd2UgdHJ5IHRvIHJl
c29sdmUgdGhlIHByb21pc2UgYW5kIHRoZW4gbG9hZCB0aGUgcmVzdWx0aW5nIGJsb2IgaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtRGF0
YUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERhdGFDb2xsZWN0aW9uKToKKworICAgICAgICBD
YWxsZWQgYnkgQ2xpcGJvYXJkIHRvIGJlZ2luIGNvbGxlY3RpbmcgZGF0YSBmcm9tIHRoZSBsaXN0
IG9mIGNsaXBib2FyZCBpdGVtcyB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpjYW5jZWxEYXRhQ29s
bGVjdGlvbik6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byBjYW5jZWwgYWxsIGRhdGEgY29s
bGVjdGlvbi4gVGhpcyBjbGVhcnMgb3V0IHN0YXRlIGluIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yIChpbmNsdWRpbmcgYW55CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIENsaXBib2Fy
ZEl0ZW1zKSwgc3RvcHMgYWxsIGFjdGl2ZSBGaWxlUmVhZGVyTG9hZGVycywgYW5kIGludm9rZXMg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciwKKyAgICAgICAgcGFzc2luZyBpbiBgZmFsc2VgIGZvciB0
aGUgc3VjY2VzcyBwYXJhbWV0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IpOgorCisgICAgICAgIFRoZXNlIHR3byBtZXRo
b2RzIGFyZSBpbnZva2VkIGJ5IENsaXBib2FyZEl0ZW0ncyBkYXRhIHNvdXJjZXMgd2hlbiByZXNv
bHZpbmcgY2xpcGJvYXJkIGRhdGEgcHJvbWlzZXMgdG8gZWl0aGVyCisgICAgICAgIHN0cmluZ3Mg
b3IgYmxvYnMuIEluIHRoZSBjYXNlIG9mIGEgc3RyaW5nLCB3ZSBzaW1wbHkgdXBkYXRlIHRoZSBj
b3JyZXNwb25kaW5nIGxvYWQgcmVzdWx0IGFuZCBjb25zaWRlciB0aGUgbG9hZAorICAgICAgICBm
b3IgdGhhdCAoaXRlbSwgdHlwZSkgcGFpciBmaW5pc2hlZC4gSW4gdGhlIGNhc2Ugb2YgYSBibG9i
LCB3ZSBuZWVkIHRvIGNvbnRpbnVlIHRoZSBsb2FkIGJ5IGNyZWF0aW5nIGEKKyAgICAgICAgRmls
ZVJlYWRlckxvYWRlciBhbmQgd2FpdGluZyBmb3IgaXQgdG8gZWl0aGVyIGZpbmlzaCBvciBmYWls
LgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGVjcmVt
ZW50UGVuZGluZ0xvYWRDb3VudCk6CisKKyAgICAgICAgV2hlbiBiZWdpbm5pbmcgdG8gY29sbGVj
dCBjbGlwYm9hcmQgZGF0YSBmb3Igd3JpdGluZywgdGhlIG1fcGVuZGluZ0xvYWRSZXN1bHRDb3Vu
dCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZgorICAgICAgICAoaXRlbSwgdHlwZSkgcGFpcnMgdGhh
dCBuZWVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5pc2ggbG9hZGluZyBhbmQgZGVsaXZlciBlaXRoZXIg
c3RyaW5ncyBvciBidWZmZXJzIGJlZm9yZSB3ZSBjYW4KKyAgICAgICAgcHJvY2VlZCB3aXRoIHdy
aXRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIEV2ZXJ5IHRpbWUg
b25lIHN1Y2ggcGFpciBmaW5pc2hlcywgd2UgZGVjcmVtZW50CisgICAgICAgIHRoaXMgY291bnQs
IHN1Y2ggdGhhdCB3aGVuIGl0IHJlYWNoZXMgMCAoYXNzdW1pbmcgdGhhdCBsb2FkaW5nIHdhc24n
dCBjdXQgc2hvcnQgZHVlIHRvIGZhaWx1cmVzKSwgd2UgdGhlbgorICAgICAgICBhc3NlbWJsZSB0
aGlzIGFnZ3JlZ2F0ZWQgZGF0YSBpbnRvIGEgZmluYWwgcmVzdWx0IHVzaW5nIGB0YWtlUGFzdGVi
b2FyZEl0ZW1zRnJvbVJlc3VsdHNgIGFuZCBpbnZva2UgdGhlCisgICAgICAgIGNvbXBsZXRpb24g
aGFuZGxlci4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OnRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cyk6CisKKyAgICAgICAgQ2xlYXJzIG91dCBh
bGwgaW50ZXJuYWwgc3RhdGUsIGFuZCB1c2VzIGl0IHRvIHNldCB1cCBhIGxpc3Qgb2YgUGFzdGVi
b2FyZEN1c3RvbURhdGFzLiBJbnZva2VkIG9ubHkgYWZ0ZXIgdGhlCisgICAgICAgIGxvYWQgaGFz
IGNvbXBsZXRlbHkgZmluaXNoZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpkaWRGaW5pc2hMb2FkaW5nQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGYWlsKToKKworICAgICAgICBBZGQgYSBo
ZWxwZXIgY2xhc3MsIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyLCB0aGF0IHdyYXBzIGEgRmlsZVJl
YWRlckxvYWRlciBhbmQgYWN0cyBhcyBpdHMgY2xpZW50LiBVcG9uCisgICAgICAgIGZpbmlzaGlu
ZyBvciBmYWlsaW5nLCBpdCBub3RpZmllcyBpdHMgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
CisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xs
ZWN0b3I6Omhhc1BlbmRpbmdMb2FkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2g6Omhhc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9h
ZFJlc3VsdEtleUhhc2hUcmFpdDo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2hUcmFpdDo6aXNFbXB0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpMb2Fk
UmVzdWx0S2V5SGFzaFRyYWl0Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoVHJhaXQ6
OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICBBZGQgdHdvIG1vcmUgcHJpdmF0ZSBoZWxwZXIg
Y2xhc3NlcyB0byBmYWNpbGl0YXRlIHRoaXMgbG9hZGluZyBwcm9jZXNzOiBMb2FkUmVzdWx0IGFu
ZCBMb2FkUmVzdWx0S2V5LiBBCisgICAgICAgIExvYWRSZXN1bHQgcmVwcmVzZW50cyB0aGUgc3Rh
dGUgb2YgYW4gYXR0ZW1wdCB0byBsb2FkIGRhdGEgZm9yIGEgcGFydGljdWxhciB0eXBlLCBmcm9t
IGEgcGFydGljdWxhciBpdGVtOyB3aGVuCisgICAgICAgIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9h
cmQsIGVhY2ggcGFpciBvZiAoY2xpcGJvYXJkIGl0ZW0sIHR5cGUpIGlzIHJlcHJlc2VudGVkIGJ5
IGEgTG9hZFJlc3VsdCB3aGljaCBjb250YWlucworICAgICAgICB0aGUgZmluYWwgbG9hZGVkIHN0
cmluZyBvciBTaGFyZWRCdWZmZXIsIGlmIGFueS4KKworICAgICAgICBXZSBtYXAgZWFjaCBjbGlw
Ym9hcmQgaXRlbSBhbmQgdHlwZSB0byBpdHMgTG9hZFJlc3VsdCB1c2luZyB0aGUgTG9hZFJlc3Vs
dEtleSwgd2hpY2ggaXMgYSBoYXNoYWJsZQorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUg
aXRlbSt0eXBlIHBhaXJpbmcuIEJ5IGRvaW5nIHRoaXMsIHdlIGF2b2lkIHNlYXJjaGluZyBsaW5l
YXJseSB0aHJvdWdoIGV2ZXJ5IHBlbmRpbmcKKyAgICAgICAgTG9hZFJlc3VsdCB3aGVuZXZlciBh
IGdpdmVuIGl0ZW0gYW5kIHR5cGUgZmluaXNoIHJlc29sdmluZyBpdHMgZGF0YSBvciBsb2FkaW5n
IGEgYmxvYi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpyZWFkVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6
Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRSZXN1
bHRLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcik6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAgIEZvciB0
aGUgdGltZSBiZWluZywgbGVhdmUgdGhpcyB1bmltcGxlbWVudGVkOyBhIGZ1dHVyZSBwYXRjaCB3
aWxsIGFkZCBzdXBwb3J0IGZvciB3cml0aW5nIENsaXBib2FyZEl0ZW1zIHRoYXQKKyAgICAgICAg
Y2FtZSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBhcyBvcHBvc2VkIHRvIHRob3NlIGNy
ZWF0ZWQgYnkgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorCisgICAgICAgIEJ1aWxkIGZpeCBkdWUg
dG8gdW5pZmllZCBzb3VyY2VzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEwLTMxICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11b
Q2xhbmddIFVucmV2aWV3ZWQgYnVpbGQgZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCmluZGV4IDA4NjZkZTky
ZTQyOGI2YmZiZWQzNWY1NDUzYmZkNmE0N2E0MzY2MzguLjBjYjQyMDkwNGNiZmI3OGZjZjBlNjQ4
YzhhMjNmZTU0NDliMzI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCkBAIC05Miw2ICs5MiwxMSBAQCB2
b2lkIENsaXBib2FyZEl0ZW06OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9kYXRhU291cmNlLT5nZXRUeXBlKHR5cGUsIFdU
Rk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9y
V3JpdGluZyhDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYgY29sbGVjdG9yKQoreworICAgIG1f
ZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKGNvbGxlY3Rvcik7Cit9CisKIE5hdmln
YXRvciogQ2xpcGJvYXJkSXRlbTo6bmF2aWdhdG9yKCkKIHsKICAgICByZXR1cm4gbV9uYXZpZ2F0
b3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggNDlkMjU0NzllNWNhNjIwNDNmMDdlODYwNTI1M2M5
NjM2OTg0ODQxMi4uMmZlZDlmYzcyNzA3ZGQyZTJlMDlkNThhYmM1YjQ5NTkwMTA2ZTk2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW0uaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEJsb2I7CiBjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjsKIGNsYXNzIENsaXBib2FyZEl0ZW1EYXRhU291cmNlOwogY2xhc3MgRGVmZXJyZWRQcm9taXNl
OwogY2xhc3MgRE9NUHJvbWlzZTsKQEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRp
bmcoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImKTsKKwogICAgIFByZXNlbnRhdGlvblN0eWxl
IHByZXNlbnRhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TdHlsZTsg
fTsKICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvcigpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmlu
ZGV4IGU3MjYwNTExNDQ4ZDljYjQ4YjU0ZmJiYmU0NDRmOTU4NmZiZjljODAuLmM2YjE1ZTliMzY5
ZmMyYjA4NjlkNDczOGRkOWJhOWI5Y2ZmYWNmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgorI2luY2x1ZGUgIkNsaXBib2Fy
ZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKQEAgLTk0LDQg
Kzk1LDM1IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFByCiAgICAgfSk7CiB9CiAKK3ZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0b3IpCit7CisgICAgZm9yIChhdXRvIHR5cGVB
bmRJdGVtIDogbV9pdGVtUHJvbWlzZXMpIHsKKyAgICAgICAgYXV0byBwcm9taXNlID0gdHlwZUFu
ZEl0ZW0udmFsdWU7CisgICAgICAgIHByb21pc2UtPndoZW5TZXR0bGVkKFtwcm90ZWN0ZWRJdGVt
ID0gbWFrZVJlZlB0cihtX2l0ZW0pLCBwcm9taXNlLCB0eXBlID0gdHlwZUFuZEl0ZW0ua2V5LCBj
b2xsZWN0b3IgPSBtYWtlUmVmUHRyKGNvbGxlY3RvcildICgpIG11dGFibGUgeworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBwcm9taXNlLT5yZXN1bHQoKTsKKyAgICAgICAgICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
U3RyaW5nIHN0cmluZzsKKyAgICAgICAgICAgIHJlc3VsdC5nZXRTdHJpbmcocHJvbWlzZS0+Z2xv
YmFsT2JqZWN0KCksIHN0cmluZyk7CisgICAgICAgICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkg
eworICAgICAgICAgICAgICAgIGNvbGxlY3Rvci0+aGFuZGxlU3RyaW5nKCpwcm90ZWN0ZWRJdGVt
LCB0eXBlLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAg
IGNvbGxlY3Rvci0+Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdXRvKiBibG9iID0gSlNCbG9i
Ojp0b1dyYXBwZWQocmVzdWx0LmdldE9iamVjdCgpLT52bSgpLCByZXN1bHQuZ2V0T2JqZWN0KCkp
KQorICAgICAgICAgICAgICAgIGNvbGxlY3Rvci0+aGFuZGxlQmxvYigqcHJvdGVjdGVkSXRlbSwg
dHlwZSwgKmJsb2IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbGxlY3Rv
ci0+Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmgKaW5kZXggNmZkOGRkYTU3NmI3YjUyYjA4MjMwMTk2ZmU5NDk0MDRjMTQ3NDhiNC4u
ZjU4ZjBmMjUyMjgyMDQyNjYzYTdmNzIxNjQyYmQxYzg5Y2IyMDQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMjksNiArMjksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOwog
Y2xhc3MgRE9NUHJvbWlzZTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CkBAIC00MCw2ICs0MSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikg
ZmluYWw7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3ImKSBmaW5hbDsKIAogICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQ
dHI8RE9NUHJvbWlzZT4+PiBtX2l0ZW1Qcm9taXNlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtRGF0YUNvbGxlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVmNjVjYWU1M2E1Njg1OTQ5NzYwNzFi
MWFjNDM5ZDcxZWM5ZjM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcApAQCAtMCww
ICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIgorCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEN1c3Rv
bURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGUgcmVhZFR5cGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MgfHwgdHlwZSA9PSAidGV4dC9wbGFpbiJf
cyB8fCB0eXBlID09ICJ0ZXh0L2h0bWwiX3MpCisgICAgICAgIHJldHVybiBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNUZXh0OworICAgIHJldHVybiBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlcjsKK30KKworQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yKENsaXBib2FyZCYgY2xpcGJvYXJkLCBjb25zdCBWZWN0b3I8UmVmUHRyPENs
aXBib2FyZEl0ZW0+PiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3Vj
Y2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2NsaXBib2FyZChtYWtlV2Vha1B0
cihjbGlwYm9hcmQpKQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAsIG1faXRlbXMoaXRlbXMubWFwKFsmXSAoYXV0byYgaXRlbSkgeyBy
ZXR1cm4gbWFrZVJlZigqaXRlbSk7IH0pKQoreworfQorCitDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3Rvcjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKCkKK3sKKyAgICBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERh
dGFDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAg
QVNTRVJUKCFtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQpOworCisgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9pdGVtcykgeworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZW0tPnR5cGVzKCkpIHsK
KyAgICAgICAgICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNhbmNl
bERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKyttX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQ7CisgICAgICAgICAgICBt
X2xvYWRSZXN1bHRzLnNldCh7IGl0ZW0ucHRyKCksIHR5cGUgfSwgTG9hZFJlc3VsdCgpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpCisgICAgICAg
IGl0ZW0tPmNvbGxlY3REYXRhRm9yV3JpdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmNhbmNlbERhdGFDb2xsZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1f
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAg
bV9wZW5kaW5nTG9hZFJlc3VsdENvdW50ID0gMDsKKworICAgIGZvciAoYXV0byYgbG9hZFJlc3Vs
dCA6IG1fbG9hZFJlc3VsdHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0g
bG9hZFJlc3VsdC5sb2FkZXIpCisgICAgICAgICAgICBsb2FkZXItPmxvYWRlcigpLmNhbmNlbCgp
OworICAgIH0KKworICAgIG1faXRlbXMuY2xlYXIoKTsKKyAgICBtX2xvYWRSZXN1bHRzLmNsZWFy
KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKnRoaXMsIHsgfSwgZmFsc2UpOworfQorCit2b2lk
IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgYXV0
byBtYXRjaGluZ1Jlc3VsdCA9IGZpbmRMb2FkUmVzdWx0KHsgJml0ZW0sIHR5cGUgfSk7CisgICAg
aWYgKCFtYXRjaGluZ1Jlc3VsdCkgeworICAgICAgICBjYW5jZWxEYXRhQ29sbGVjdGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWF0Y2hpbmdSZXN1bHQtPmRhdGEgPSB7IGRh
dGEgfTsKKyAgICBkZWNyZW1lbnRQZW5kaW5nTG9hZENvdW50KCk7Cit9CisKK3ZvaWQgQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8QmxvYj4mJiBibG9iKQoreworICAgIGF1dG8gbWF0Y2hpbmdS
ZXN1bHQgPSBmaW5kTG9hZFJlc3VsdCh7ICZpdGVtLCB0eXBlIH0pOworICAgIGlmICghbWF0Y2hp
bmdSZXN1bHQpIHsKKyAgICAgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2NsaXBi
b2FyZCA/IG1fY2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgOiBudWxscHRyOwor
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWF0Y2hpbmdSZXN1bHQt
PmxvYWRlciA9IENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUoKnRoaXMsIHsgJml0ZW0s
IHR5cGUgfSwgcmVhZFR5cGVGb3JNSU1FVHlwZSh0eXBlKSk7CisgICAgbWF0Y2hpbmdSZXN1bHQt
PmxvYWRlci0+bG9hZGVyKCkuc3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYik7Cit9
CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmRlY3JlbWVudFBlbmRpbmdMb2Fk
Q291bnQoKQoreworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlciB8fCAhbV9wZW5kaW5nTG9h
ZFJlc3VsdENvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIS0tbV9wZW5kaW5nTG9h
ZFJlc3VsdENvdW50KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIs
IHsgfSkoKnRoaXMsIHRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cygpLCB0cnVlKTsKK30K
KworVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6dGFrZVBhc3RlYm9hcmRJdGVtc0Zyb21SZXN1bHRzKCkKK3sKKyAgICBBU1NFUlQoIW1fcGVu
ZGluZ0xvYWRSZXN1bHRDb3VudCk7CisKKyAgICBhdXRvIGl0ZW1zID0gc3RkOjpleGNoYW5nZSht
X2l0ZW1zLCB7IH0pOworICAgIGF1dG8gbG9hZFJlc3VsdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fbG9h
ZFJlc3VsdHMsIHsgfSk7CisKKyAgICBpZiAoIW1fY2xpcGJvYXJkKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9jbGlwYm9hcmQtPmZyYW1lKCkp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4g
Y3VzdG9tRGF0YVJlc3VsdHM7CisgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKKyAgICAgICAgZm9yIChhdXRvIHR5
cGUgOiBpdGVtLT50eXBlcygpKSB7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBsb2FkUmVzdWx0
cy5nZXQoeyBpdGVtLnB0cigpLCB0eXBlIH0pLmRhdGE7CisgICAgICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhV1RGOjpnZXQ8U3RyaW5nPihkYXRh
KSkKKyAgICAgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIFdURjo6Z2V0
PFN0cmluZz4oZGF0YSkpOworICAgICAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5
cGUsICpXVEY6OmdldDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkpOworICAgICAgICB9Cisg
ICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGRvY3VtZW50LT5vcmlnaW5JZGVudGlmaWVyRm9y
UGFzdGVib2FyZCgpKTsKKyAgICAgICAgY3VzdG9tRGF0YVJlc3VsdHMuYXBwZW5kKFdURk1vdmUo
Y3VzdG9tRGF0YSkpOworICAgIH0KKyAgICByZXR1cm4gY3VzdG9tRGF0YVJlc3VsdHM7Cit9CisK
K3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmRpZEZpbmlzaExvYWRpbmdCbG9iKENs
aXBib2FyZEl0ZW1CbG9iTG9hZGVyJiBibG9iTG9hZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0g
ZmluZExvYWRSZXN1bHQoYmxvYkxvYWRlci5sb2FkUmVzdWx0S2V5KCkpOworICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgIGNhbmNlbERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvJiBsb2FkZXIgPSBibG9iTG9hZGVyLmxvYWRlcigpOworICAgIGlm
IChibG9iTG9hZGVyLnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4dCkK
KyAgICAgICAgcmVzdWx0LT5kYXRhID0geyBsb2FkZXIuc3RyaW5nUmVzdWx0KCkgfTsKKyAgICBl
bHNlIGlmIChhdXRvIGFycmF5QnVmZmVyID0gbG9hZGVyLmFycmF5QnVmZmVyUmVzdWx0KCkpCisg
ICAgICAgIHJlc3VsdC0+ZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKSB9OworCisgICAgZGVjcmVtZW50UGVuZGluZ0xvYWRDb3VudCgpOworfQorCitPcHRpb25h
bDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdCY+IENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpmaW5kTG9hZFJlc3VsdChjb25zdCBMb2FkUmVzdWx0S2V5JiBsb2FkUmVz
dWx0S2V5KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2xvYWRSZXN1bHRzLmZpbmQobG9hZFJl
c3VsdEtleSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yID09IG1fbG9hZFJlc3VsdHMuZW5kKCkgPyBX
VEY6Om51bGxvcHQgOiBPcHRpb25hbDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJl
c3VsdCY+IHsgaXRlcmF0b3ItPnZhbHVlIH07Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sK
KyAgICBtX2NvbGxlY3Rvci5kaWRGaW5pc2hMb2FkaW5nQmxvYigqdGhpcyk7Cit9CisKK3ZvaWQg
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRG
YWlsKGludCkKK3sKKyAgICBtX2NvbGxlY3Rvci5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDE1ZGVkMDQzNjIxOWEyNjhkMTBkOTlhNDEzYjcwMWQ1M2UxNWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgorI2lu
Y2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJsb2I7CitjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBDbGlwYm9hcmRJdGVtOworY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGE7CisKK2NsYXNzIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yPiBjcmVhdGUoQ2xp
cGJvYXJkJiBjbGlwYm9hcmQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBp
dGVtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYs
IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiwgYm9vbCBzdWNjZWVkZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3IoY2xpcGJvYXJkLCBpdGVtcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB+Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IoKTsK
KworICAgIHZvaWQgaGFuZGxlU3RyaW5nKENsaXBib2FyZEl0ZW0mLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlQmxvYihDbGlwYm9hcmRJdGVtJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8QmxvYj4mJik7CisgICAgdm9pZCBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworCisgICAgdm9pZCBzdGFydERhdGFDb2xsZWN0aW9uKCk7CisgICAgYm9vbCBo
YXNQZW5kaW5nTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQ7
IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdEtleSB7CisgICAgICAgIFJlZlB0
cjxDbGlwYm9hcmRJdGVtPiBpdGVtOworICAgICAgICBTdHJpbmcgdHlwZTsKKyAgICB9OworCisg
ICAgc3RydWN0IExvYWRSZXN1bHRLZXlIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgTG9hZFJlc3VsdEtleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gUHRySGFzaDxDbGlwYm9hcmRJdGVtKj46Omhhc2goa2V5Lml0ZW0uZ2V0KCkpICsga2V5LnR5
cGUuaGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
TG9hZFJlc3VsdEtleSYgYSwgY29uc3QgTG9hZFJlc3VsdEtleSYgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGEuaXRlbSA9PSBiLml0ZW0gJiYgYS50eXBlID09IGIudHlwZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKKworICAgIHN0cnVjdCBMb2FkUmVzdWx0S2V5
SGFzaFRyYWl0IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPExvYWRSZXN1bHRLZXk+IHsKKyAgICAg
ICAgc3RhdGljIExvYWRSZXN1bHRLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgbnVsbHB0ciwg
ZW1wdHlTdHJpbmcoKSB9OyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25z
dCBMb2FkUmVzdWx0S2V5JiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlLml0ZW0gJiYgdmFsdWUudHlw
ZSA9PSBlbXB0eVN0cmluZygpOyB9CisKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKExvYWRSZXN1bHRLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgTG9h
ZFJlc3VsdEtleSgpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IExvYWRSZXN1bHRLZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaXRlbSAmJiAhdmFsdWUudHlw
ZTsgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5j
dGlvbiA9IHRydWU7CisgICAgfTsKKworICAgIGNsYXNzIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI+LCBwdWJsaWMgRmls
ZVJlYWRlckxvYWRlckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW1CbG9iTG9hZGVyPiBjcmVhdGUoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Im
IGNvbGxlY3RvciwgY29uc3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSwgRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyKGNvbGxlY3RvciwgbG9hZFJl
c3VsdEtleSwgcmVhZFR5cGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIEZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQorICAg
ICAgICBGaWxlUmVhZGVyTG9hZGVyJiBsb2FkZXIoKSB7IHJldHVybiAqbV9sb2FkZXI7IH0KKyAg
ICAgICAgY29uc3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZFJlc3VsdEtleTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpcGJvYXJkSXRl
bUJsb2JMb2FkZXIoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImIGNvbGxlY3RvciwgY29uc3Qg
TG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUg
cmVhZFR5cGUpCisgICAgICAgICAgICA6IG1fY29sbGVjdG9yKGNvbGxlY3RvcikKKyAgICAgICAg
ICAgICwgbV9sb2FkUmVzdWx0S2V5KGxvYWRSZXN1bHRLZXkpCisgICAgICAgICAgICAsIG1fcmVh
ZFR5cGUocmVhZFR5cGUpCisgICAgICAgICAgICAsIG1fbG9hZGVyKG1ha2VVbmlxdWU8RmlsZVJl
YWRlckxvYWRlcj4ocmVhZFR5cGUsIHRoaXMpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGRpZFN0YXJ0TG9hZGluZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOworICAgICAgICB2b2lkIGRpZEZhaWwoaW50KSBmaW5hbDsKKworICAgICAgICBDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYgbV9jb2xsZWN0b3I7CisgICAgICAgIExvYWRSZXN1bHRLZXkg
bV9sb2FkUmVzdWx0S2V5OworICAgICAgICBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSBtX3Jl
YWRUeXBlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9sb2Fk
ZXI7CisgICAgfTsKKworICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gVmFyaWFudDxSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgU3RyaW5nPjsKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdCB7CisgICAgICAg
IEJ1ZmZlck9yU3RyaW5nIGRhdGE7CisgICAgICAgIFJlZlB0cjxDbGlwYm9hcmRJdGVtQmxvYkxv
YWRlcj4gbG9hZGVyOworICAgIH07CisKKyAgICBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvcihD
bGlwYm9hcmQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPENsaXBib2FyZEl0ZW0+PiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3VjY2VlZGVkKT4mJik7CisKKyAgICBPcHRpb25hbDxM
b2FkUmVzdWx0Jj4gZmluZExvYWRSZXN1bHQoY29uc3QgTG9hZFJlc3VsdEtleSYpOworICAgIHZv
aWQgZGVjcmVtZW50UGVuZGluZ0xvYWRDb3VudCgpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Z0Jsb2IoQ2xpcGJvYXJkSXRlbUJsb2JMb2FkZXImKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5n
QmxvYigpOworICAgIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gdGFrZVBhc3RlYm9hcmRJ
dGVtc0Zyb21SZXN1bHRzKCk7CisKKyAgICBXZWFrUHRyPENsaXBib2FyZD4gbV9jbGlwYm9hcmQ7
CisgICAgSGFzaE1hcDxMb2FkUmVzdWx0S2V5LCBMb2FkUmVzdWx0LCBMb2FkUmVzdWx0S2V5SGFz
aCwgTG9hZFJlc3VsdEtleUhhc2hUcmFpdD4gbV9sb2FkUmVzdWx0czsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiwgVmVjdG9yPFBhc3RlYm9h
cmRDdXN0b21EYXRhPiYmLCBib29sIHN1Y2NlZWRlZCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtPj4gbV9pdGVtczsKKyAgICB1aW50NjRfdCBtX3Bl
bmRpbmdMb2FkUmVzdWx0Q291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAppbmRleCA5MmE2ZDFmZDNlZTY5NWJlNzU2
NGQ1OWVkNDFjZDc2NmE3OWI0MDgwLi5jOTUzMDdmMThlNzZlYzkwMTI0NTU4YjE0OTJhMDY1OGRl
MmRmODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBD
bGlwYm9hcmRJdGVtOworY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I7CiAKIGNsYXNz
IENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKIHB1YmxpYzoKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENsaXBib2FyZEl0
ZW0mIG1faXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFT
b3VyY2UuY3BwCmluZGV4IDg4NGQ0NzYwOTMzMDkxYzFmYTQzMjMzNzk0ZGY4NzcwMTg1MWMzNjYu
LjI5OWVmMWIyM2I4MDhmNjY2ODFjYTdjMWJlOGRhYWY3NTg5MWJiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5o
IgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKIApA
QCAtNTQsNCArNTUsMTEgQEAgdm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6
OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWQKICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiB9CiAKK3ZvaWQgQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3ImIGNvbGxlY3RvcikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiBU
aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBib2Fy
ZEl0ZW1zCisgICAgLy8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQud3Jp
dGUoKS4KKyAgICBjb2xsZWN0b3IuY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuaAppbmRleCBiMjYzMjhiZTVjYTA5Y2Y3NTJjZDU5NGY3ODBlMjI5YjY4NGQ1YWM0
Li5mZjEzNGU0ZDM1YzY1MDJhYzcwMDVjZmYwYTc0MTQ4Njg1NTgwNDBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaApAQCAtNDAsNiArNDAsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yJikgZmluYWw7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3R5cGVzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCmluZGV4IDQ0YmZhOWIxNmVlZjgyMzM2OTk1NzE3Y2I0NmExODE4MTcxYTQ5
ZDQuLjllZTc1NmM0OGE3ODA0Njk2ZDBiMDdiOTM1OGUyYzNmYmQ2OWM0N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTT3ZlcmNvbnN0cmFp
bmVkRXJyb3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDllNDM3
ZjBlMGM4ZjhjYmY5YjAzMDZmNDUyYzAxZThjY2IzY2JiY2UuLmMxYTcxOWY3ZWY2NGFlYTYxZDky
YjI2ZWMwNGQ1ZTcyMWNlNjM5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zNiw2ICszNiw3IEBAIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbS5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCitNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL05hdmlnYXRvckNsaXBi
b2FyZC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDk0OWIwOWQ4MzY0MGQ0OTRmMmFiMzgwZGZiYTViMjFiOWJiMmMyM2Yu
LjgzY2ZlMzRhMzQ4NWY3YTE2MjFkYWZmYTY2M2JlNTZhYTFiNjg2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5MjMsNiAr
NDkyMyw3IEBACiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0
aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi87IH07
CiAJCUY0RDA3NTU4MjM0RDgyMkQwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0N0Ey
MzQ2NTM1RTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggKi87IH07CiAJCUY0
RDA3NTU5MjM0RDgyMzMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkM0
NDgwMjM0NjU0N0EwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2Uu
aCAqLzsgfTsKKwkJRjREMDc1NTYyMzREODIyMzAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1EYXRh
Q29sbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEUzMEQzRjIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
aCAqLzsgfTsKIAkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjRENDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURD
MjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThF
IC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVO
U0ZvbnRNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFn
ZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTUzNDIsNiArMTUzNDMsOCBAQAogCQlGNEUxOTY1RjIxRjI2RTRFMDAyODUwNzggLyog
VW5kb0l0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5kb0l0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEUxOTY2MTIxRjI3RDNDMDAyODUwNzggLyogQ3VzdG9tVW5k
b1N0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tVW5kb1N0ZXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFMTk2NjIyMUYyN0QzRDAwMjg1MDc4
IC8qIEN1c3RvbVVuZG9TdGVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEN1c3RvbVVuZG9TdGVwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRF
MzBEM0YyMzQ0NDc0ODAwNzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0RTMwRDQwMjM0NDQ3NDgwMDc2REY2QSAvKiBDbGlwYm9hcmRJdGVt
RGF0YUNvbGxlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RURBMjEzRjNG
NUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250
QXR0cmlidXRlQ2hhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VE
RjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRFNTdFRTAyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5h
Z2VyRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJF
eHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA3NCw2ICsyNzA3Nyw4
IEBACiAJCQkJRjQ0MEU3NzcyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaWRsICov
LAogCQkJCUY0NkM0NDdEMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcCAqLywKIAkJCQlGNDZDNDQ3QzIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oICovLAorCQkJCUY0RTMwRDQwMjM0NDQ3NDgwMDc2
REY2QSAvKiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5jcHAgKi8sCisJCQkJRjRFMzBEM0Yy
MzQ0NDc0ODAwNzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmggKi8sCiAJCQkJ
RjQ2QzQ0N0EyMzQ2NTM1RTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggKi8s
CiAJCQkJRjQ2QzQ0ODEyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJk
RGF0YVNvdXJjZS5jcHAgKi8sCiAJCQkJRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBi
b2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovLApAQCAtMjkwNTgsNiArMjkwNjMsNyBA
QAogCQkJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0u
aCBpbiBIZWFkZXJzICovLAogCQkJCUY0NkM0NDdFMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNEQwNzU1NjIz
NEQ4MjIzMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0RDA3NTU4MjM0RDgyMkQwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtRGF0YVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENs
aXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI5
MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTMwNTc3LDcgKzMwNTgzLDYgQEAKIAkJCQlCQ0UxQzQzQzBEOTgzMEQzMDAzQjAyRjIg
LyogSlNMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODA2MjAxRTAzQjU4NTAwOEEx
RjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREFCNkQyRTE3QzgxNEVF
MDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRB
QkFDMDYyMzZCMDE2RDAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTU5NzQxREIxQjdEMTQwMTAwMjAxQzkyIC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNTczOUJCQjFCNDIwMTJEMDBEMjU4QzEgLyogSlNNZWRpYURldmljZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMjNBMTI2MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjE0OCw4ICszMjE1
MywxMCBAQAogCQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJh
Y2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY3QjBFODFEM0JFMDBCMjU5
NjUgLyogU3R5bGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEFCQUMwNjIzNkIwMTZE
MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I5Njg3QjE5
RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MzVEMzYzNzE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFNEFCQUMwNDIzNkFFOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVy
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFCQUJGMzIzNjhCOTU5MDBGQTQzNDUg
LyogU3R5bGVCdWlsZGVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0NDREMEU2NzQ2
MjgwMDFDMTI4NyAvKiBTdHlsZUNhY2hlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAx
RTBBNDFDM0MwQjgzMDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MzIzNTMsNyArMzIzNjAsNiBAQAogCQkJCTA4NTRCMDIzMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdS
b290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBMzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTYwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QUJB
QzA0MjM2QUU5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0QUZEMDEwMERBRjMzNTUwMEY1RjU1QyAvKiBTVkdTTUlMRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
U3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382577</attachid>
            <date>2019-11-01 07:26:53 -0700</date>
            <delta_ts>2019-11-01 07:36:31 -0700</delta_ts>
            <desc>Another build fix in MediaStreamTrack.cpp</desc>
            <filename>bug-203707-20191101072652.patch</filename>
            <type>text/plain</type>
            <size>36192</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkNjY3NjZiYzY3NGNj
NzVjZDQ5YjNlMTc2NTZkZDMxYTcyZWYxYS4uNmZmNmJlMTgyNmY4ZWM4NzEwZWQzNjkxODY4ZWE2
NzViZTU2ZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxOS0xMS0wMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gQWRkIGEgaGVscGVyIGNsYXNzIHRvIHJlc29sdmUgQ2xpcGJvYXJkSXRlbXMgaW50byBw
YXN0ZWJvYXJkIGRhdGEgZm9yIHdyaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBuZXcgaGVscGVyIGNsYXNzIHRoYXQgd2ls
bCBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIHRvIGFnZ3JlZ2F0ZSBkYXRhIHZlbmRlZCBieSBD
bGlwYm9hcmRJdGVtcworICAgICAgICB3aGVuIHdyaXRpbmcgaXRlbXMgdG8gdGhlIHBsYXRmb3Jt
IHBhc3RlYm9hcmQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzOyBubyBuZXcgdGVzdHMsIHNp
bmNlIHRoZXJlIGlzIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29s
bGVjdERhdGFGb3JXcml0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZp
cnR1YWwgYGNvbGxlY3REYXRhRm9yV3JpdGluZ2AgbWV0aG9kLCB3aGljaCBpcyB1c2VkIHdoZW4g
d3JpdGluZyBDbGlwYm9hcmRJdGVtIGRhdGEgdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQuIFRo
aXMgYWxsb3dzIENsaXBib2FyZEl0ZW1zIHRvIGFzeW5jaHJvbm91c2x5IGRlbGl2ZXIgZGF0YSB0
byBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciBhZnRlcgorICAgICAgICByZXNvbHZpbmcgcHJv
bWlzZXMgdG8gc3RyaW5ncyBvciBibG9icywgb3IgYWx0ZXJuYXRlbHksIGNhbmNlbCBhbGwgZGF0
YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcDogQWRkZWQuCisK
KyAgICAgICAgSW50cm9kdWNlIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLCB3aGljaCBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFzc2FnaW5nIGEgbGlzdCBvZiBDbGlwYm9hcmRJdGVtcyBpbnRvIGEg
bGlzdCBvZgorICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBvYmplY3RzIHdoZW4gd3JpdGlu
ZyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gRWFjaCBDbGlwYm9hcmRJdGVtIGNyZWF0ZWQg
dmlhIGJpbmRpbmdzCisgICAgICAgIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiAodHlwZSwgcHJvbWlz
ZSkgcGFpcnMsIHdoZXJlIGVhY2ggcHJvbWlzZSBtYXkgcmVzb2x2ZSB0byBlaXRoZXIgYSBzdHJp
bmcgb3IgYSBibG9iLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNvbnZlcnQgdGhpcyBpbnRvIFBh
c3RlYm9hcmRDdXN0b21EYXRhcywgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
c2V0IHVwIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgY29ycmVzcG9uZGluZyB0byBlYWNoIGNsaXBi
b2FyZCBpdGVtCisgICAgICAgICAgICBmb3IgZWFjaCBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAg
ICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5IHRvIHJlc29sdmUgdGhlIHByb21pc2UKKyAgICAgICAgICAgICAgICAgICAg
aWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBzdHJpbmc6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVyIHRoZSB0eXBlCisgICAg
ICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgYmxvYjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWQgdGhlIGJsb2IgZGF0YSBhcyBlaXRoZXIgdGV4dCBvciBh
biBBcnJheUJ1ZmZlciAoZGVwZW5kaW5nIG9uIHRoZSB0eXBlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0b20g
ZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJvbWlzZSBy
ZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiB1bnN1cHBvcnRlZCB2YWx1ZSwgYmFpbCBmcm9tIHRo
ZXNlIHN0ZXBzCisKKyAgICAgICAgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IgYW5kIENsaXBi
b2FyZEl0ZW0gY2Fycnkgb3V0IHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVsLCBzbyB0aGF0IGZvciBl
YWNoIHBhaXIgb2YKKyAgICAgICAgKGNsaXBib2FyZCBpdGVtLCB0eXBlKSwgd2UgdHJ5IHRvIHJl
c29sdmUgdGhlIHByb21pc2UgYW5kIHRoZW4gbG9hZCB0aGUgcmVzdWx0aW5nIGJsb2IgaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtRGF0
YUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERhdGFDb2xsZWN0aW9uKToKKworICAgICAgICBD
YWxsZWQgYnkgQ2xpcGJvYXJkIHRvIGJlZ2luIGNvbGxlY3RpbmcgZGF0YSBmcm9tIHRoZSBsaXN0
IG9mIGNsaXBib2FyZCBpdGVtcyB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpjYW5jZWxEYXRhQ29s
bGVjdGlvbik6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byBjYW5jZWwgYWxsIGRhdGEgY29s
bGVjdGlvbi4gVGhpcyBjbGVhcnMgb3V0IHN0YXRlIGluIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yIChpbmNsdWRpbmcgYW55CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIENsaXBib2Fy
ZEl0ZW1zKSwgc3RvcHMgYWxsIGFjdGl2ZSBGaWxlUmVhZGVyTG9hZGVycywgYW5kIGludm9rZXMg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciwKKyAgICAgICAgcGFzc2luZyBpbiBgZmFsc2VgIGZvciB0
aGUgc3VjY2VzcyBwYXJhbWV0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IpOgorCisgICAgICAgIFRoZXNlIHR3byBtZXRo
b2RzIGFyZSBpbnZva2VkIGJ5IENsaXBib2FyZEl0ZW0ncyBkYXRhIHNvdXJjZXMgd2hlbiByZXNv
bHZpbmcgY2xpcGJvYXJkIGRhdGEgcHJvbWlzZXMgdG8gZWl0aGVyCisgICAgICAgIHN0cmluZ3Mg
b3IgYmxvYnMuIEluIHRoZSBjYXNlIG9mIGEgc3RyaW5nLCB3ZSBzaW1wbHkgdXBkYXRlIHRoZSBj
b3JyZXNwb25kaW5nIGxvYWQgcmVzdWx0IGFuZCBjb25zaWRlciB0aGUgbG9hZAorICAgICAgICBm
b3IgdGhhdCAoaXRlbSwgdHlwZSkgcGFpciBmaW5pc2hlZC4gSW4gdGhlIGNhc2Ugb2YgYSBibG9i
LCB3ZSBuZWVkIHRvIGNvbnRpbnVlIHRoZSBsb2FkIGJ5IGNyZWF0aW5nIGEKKyAgICAgICAgRmls
ZVJlYWRlckxvYWRlciBhbmQgd2FpdGluZyBmb3IgaXQgdG8gZWl0aGVyIGZpbmlzaCBvciBmYWls
LgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGVjcmVt
ZW50UGVuZGluZ0xvYWRDb3VudCk6CisKKyAgICAgICAgV2hlbiBiZWdpbm5pbmcgdG8gY29sbGVj
dCBjbGlwYm9hcmQgZGF0YSBmb3Igd3JpdGluZywgdGhlIG1fcGVuZGluZ0xvYWRSZXN1bHRDb3Vu
dCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZgorICAgICAgICAoaXRlbSwgdHlwZSkgcGFpcnMgdGhh
dCBuZWVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5pc2ggbG9hZGluZyBhbmQgZGVsaXZlciBlaXRoZXIg
c3RyaW5ncyBvciBidWZmZXJzIGJlZm9yZSB3ZSBjYW4KKyAgICAgICAgcHJvY2VlZCB3aXRoIHdy
aXRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIEV2ZXJ5IHRpbWUg
b25lIHN1Y2ggcGFpciBmaW5pc2hlcywgd2UgZGVjcmVtZW50CisgICAgICAgIHRoaXMgY291bnQs
IHN1Y2ggdGhhdCB3aGVuIGl0IHJlYWNoZXMgMCAoYXNzdW1pbmcgdGhhdCBsb2FkaW5nIHdhc24n
dCBjdXQgc2hvcnQgZHVlIHRvIGZhaWx1cmVzKSwgd2UgdGhlbgorICAgICAgICBhc3NlbWJsZSB0
aGlzIGFnZ3JlZ2F0ZWQgZGF0YSBpbnRvIGEgZmluYWwgcmVzdWx0IHVzaW5nIGB0YWtlUGFzdGVi
b2FyZEl0ZW1zRnJvbVJlc3VsdHNgIGFuZCBpbnZva2UgdGhlCisgICAgICAgIGNvbXBsZXRpb24g
aGFuZGxlci4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OnRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cyk6CisKKyAgICAgICAgQ2xlYXJzIG91dCBh
bGwgaW50ZXJuYWwgc3RhdGUsIGFuZCB1c2VzIGl0IHRvIHNldCB1cCBhIGxpc3Qgb2YgUGFzdGVi
b2FyZEN1c3RvbURhdGFzLiBJbnZva2VkIG9ubHkgYWZ0ZXIgdGhlCisgICAgICAgIGxvYWQgaGFz
IGNvbXBsZXRlbHkgZmluaXNoZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpkaWRGaW5pc2hMb2FkaW5nQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGYWlsKToKKworICAgICAgICBBZGQgYSBo
ZWxwZXIgY2xhc3MsIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyLCB0aGF0IHdyYXBzIGEgRmlsZVJl
YWRlckxvYWRlciBhbmQgYWN0cyBhcyBpdHMgY2xpZW50LiBVcG9uCisgICAgICAgIGZpbmlzaGlu
ZyBvciBmYWlsaW5nLCBpdCBub3RpZmllcyBpdHMgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
CisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xs
ZWN0b3I6Omhhc1BlbmRpbmdMb2FkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2g6Omhhc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9h
ZFJlc3VsdEtleUhhc2hUcmFpdDo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2hUcmFpdDo6aXNFbXB0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpMb2Fk
UmVzdWx0S2V5SGFzaFRyYWl0Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoVHJhaXQ6
OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICBBZGQgdHdvIG1vcmUgcHJpdmF0ZSBoZWxwZXIg
Y2xhc3NlcyB0byBmYWNpbGl0YXRlIHRoaXMgbG9hZGluZyBwcm9jZXNzOiBMb2FkUmVzdWx0IGFu
ZCBMb2FkUmVzdWx0S2V5LiBBCisgICAgICAgIExvYWRSZXN1bHQgcmVwcmVzZW50cyB0aGUgc3Rh
dGUgb2YgYW4gYXR0ZW1wdCB0byBsb2FkIGRhdGEgZm9yIGEgcGFydGljdWxhciB0eXBlLCBmcm9t
IGEgcGFydGljdWxhciBpdGVtOyB3aGVuCisgICAgICAgIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9h
cmQsIGVhY2ggcGFpciBvZiAoY2xpcGJvYXJkIGl0ZW0sIHR5cGUpIGlzIHJlcHJlc2VudGVkIGJ5
IGEgTG9hZFJlc3VsdCB3aGljaCBjb250YWlucworICAgICAgICB0aGUgZmluYWwgbG9hZGVkIHN0
cmluZyBvciBTaGFyZWRCdWZmZXIsIGlmIGFueS4KKworICAgICAgICBXZSBtYXAgZWFjaCBjbGlw
Ym9hcmQgaXRlbSBhbmQgdHlwZSB0byBpdHMgTG9hZFJlc3VsdCB1c2luZyB0aGUgTG9hZFJlc3Vs
dEtleSwgd2hpY2ggaXMgYSBoYXNoYWJsZQorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUg
aXRlbSt0eXBlIHBhaXJpbmcuIEJ5IGRvaW5nIHRoaXMsIHdlIGF2b2lkIHNlYXJjaGluZyBsaW5l
YXJseSB0aHJvdWdoIGV2ZXJ5IHBlbmRpbmcKKyAgICAgICAgTG9hZFJlc3VsdCB3aGVuZXZlciBh
IGdpdmVuIGl0ZW0gYW5kIHR5cGUgZmluaXNoIHJlc29sdmluZyBpdHMgZGF0YSBvciBsb2FkaW5n
IGEgYmxvYi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpyZWFkVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6
Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRSZXN1
bHRLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcik6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAgIEZvciB0
aGUgdGltZSBiZWluZywgbGVhdmUgdGhpcyB1bmltcGxlbWVudGVkOyBhIGZ1dHVyZSBwYXRjaCB3
aWxsIGFkZCBzdXBwb3J0IGZvciB3cml0aW5nIENsaXBib2FyZEl0ZW1zIHRoYXQKKyAgICAgICAg
Y2FtZSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBhcyBvcHBvc2VkIHRvIHRob3NlIGNy
ZWF0ZWQgYnkgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorCisgICAgICAgIEJ1aWxkIGZpeCBkdWUg
dG8gdW5pZmllZCBzb3VyY2VzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEwLTMxICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11b
Q2xhbmddIFVucmV2aWV3ZWQgYnVpbGQgZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCmluZGV4IDA4NjZkZTky
ZTQyOGI2YmZiZWQzNWY1NDUzYmZkNmE0N2E0MzY2MzguLjBjYjQyMDkwNGNiZmI3OGZjZjBlNjQ4
YzhhMjNmZTU0NDliMzI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCkBAIC05Miw2ICs5MiwxMSBAQCB2
b2lkIENsaXBib2FyZEl0ZW06OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9kYXRhU291cmNlLT5nZXRUeXBlKHR5cGUsIFdU
Rk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9y
V3JpdGluZyhDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYgY29sbGVjdG9yKQoreworICAgIG1f
ZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKGNvbGxlY3Rvcik7Cit9CisKIE5hdmln
YXRvciogQ2xpcGJvYXJkSXRlbTo6bmF2aWdhdG9yKCkKIHsKICAgICByZXR1cm4gbV9uYXZpZ2F0
b3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggNDlkMjU0NzllNWNhNjIwNDNmMDdlODYwNTI1M2M5
NjM2OTg0ODQxMi4uMmZlZDlmYzcyNzA3ZGQyZTJlMDlkNThhYmM1YjQ5NTkwMTA2ZTk2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW0uaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEJsb2I7CiBjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjsKIGNsYXNzIENsaXBib2FyZEl0ZW1EYXRhU291cmNlOwogY2xhc3MgRGVmZXJyZWRQcm9taXNl
OwogY2xhc3MgRE9NUHJvbWlzZTsKQEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRp
bmcoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImKTsKKwogICAgIFByZXNlbnRhdGlvblN0eWxl
IHByZXNlbnRhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TdHlsZTsg
fTsKICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvcigpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmlu
ZGV4IGU3MjYwNTExNDQ4ZDljYjQ4YjU0ZmJiYmU0NDRmOTU4NmZiZjljODAuLmM2YjE1ZTliMzY5
ZmMyYjA4NjlkNDczOGRkOWJhOWI5Y2ZmYWNmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgorI2luY2x1ZGUgIkNsaXBib2Fy
ZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKQEAgLTk0LDQg
Kzk1LDM1IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFByCiAgICAgfSk7CiB9CiAKK3ZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0b3IpCit7CisgICAgZm9yIChhdXRvIHR5cGVB
bmRJdGVtIDogbV9pdGVtUHJvbWlzZXMpIHsKKyAgICAgICAgYXV0byBwcm9taXNlID0gdHlwZUFu
ZEl0ZW0udmFsdWU7CisgICAgICAgIHByb21pc2UtPndoZW5TZXR0bGVkKFtwcm90ZWN0ZWRJdGVt
ID0gbWFrZVJlZlB0cihtX2l0ZW0pLCBwcm9taXNlLCB0eXBlID0gdHlwZUFuZEl0ZW0ua2V5LCBj
b2xsZWN0b3IgPSBtYWtlUmVmUHRyKGNvbGxlY3RvcildICgpIG11dGFibGUgeworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBwcm9taXNlLT5yZXN1bHQoKTsKKyAgICAgICAgICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
U3RyaW5nIHN0cmluZzsKKyAgICAgICAgICAgIHJlc3VsdC5nZXRTdHJpbmcocHJvbWlzZS0+Z2xv
YmFsT2JqZWN0KCksIHN0cmluZyk7CisgICAgICAgICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkg
eworICAgICAgICAgICAgICAgIGNvbGxlY3Rvci0+aGFuZGxlU3RyaW5nKCpwcm90ZWN0ZWRJdGVt
LCB0eXBlLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAg
IGNvbGxlY3Rvci0+Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdXRvKiBibG9iID0gSlNCbG9i
Ojp0b1dyYXBwZWQocmVzdWx0LmdldE9iamVjdCgpLT52bSgpLCByZXN1bHQuZ2V0T2JqZWN0KCkp
KQorICAgICAgICAgICAgICAgIGNvbGxlY3Rvci0+aGFuZGxlQmxvYigqcHJvdGVjdGVkSXRlbSwg
dHlwZSwgKmJsb2IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbGxlY3Rv
ci0+Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmgKaW5kZXggNmZkOGRkYTU3NmI3YjUyYjA4MjMwMTk2ZmU5NDk0MDRjMTQ3NDhiNC4u
ZjU4ZjBmMjUyMjgyMDQyNjYzYTdmNzIxNjQyYmQxYzg5Y2IyMDQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMjksNiArMjksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOwog
Y2xhc3MgRE9NUHJvbWlzZTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CkBAIC00MCw2ICs0MSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikg
ZmluYWw7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3ImKSBmaW5hbDsKIAogICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQ
dHI8RE9NUHJvbWlzZT4+PiBtX2l0ZW1Qcm9taXNlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtRGF0YUNvbGxlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVmNjVjYWU1M2E1Njg1OTQ5NzYwNzFi
MWFjNDM5ZDcxZWM5ZjM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcApAQCAtMCww
ICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIgorCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEN1c3Rv
bURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGUgcmVhZFR5cGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MgfHwgdHlwZSA9PSAidGV4dC9wbGFpbiJf
cyB8fCB0eXBlID09ICJ0ZXh0L2h0bWwiX3MpCisgICAgICAgIHJldHVybiBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNUZXh0OworICAgIHJldHVybiBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlcjsKK30KKworQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yKENsaXBib2FyZCYgY2xpcGJvYXJkLCBjb25zdCBWZWN0b3I8UmVmUHRyPENs
aXBib2FyZEl0ZW0+PiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3Vj
Y2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2NsaXBib2FyZChtYWtlV2Vha1B0
cihjbGlwYm9hcmQpKQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAsIG1faXRlbXMoaXRlbXMubWFwKFsmXSAoYXV0byYgaXRlbSkgeyBy
ZXR1cm4gbWFrZVJlZigqaXRlbSk7IH0pKQoreworfQorCitDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3Rvcjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKCkKK3sKKyAgICBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERh
dGFDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAg
QVNTRVJUKCFtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQpOworCisgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9pdGVtcykgeworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZW0tPnR5cGVzKCkpIHsK
KyAgICAgICAgICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNhbmNl
bERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKyttX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQ7CisgICAgICAgICAgICBt
X2xvYWRSZXN1bHRzLnNldCh7IGl0ZW0ucHRyKCksIHR5cGUgfSwgTG9hZFJlc3VsdCgpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpCisgICAgICAg
IGl0ZW0tPmNvbGxlY3REYXRhRm9yV3JpdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmNhbmNlbERhdGFDb2xsZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1f
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAg
bV9wZW5kaW5nTG9hZFJlc3VsdENvdW50ID0gMDsKKworICAgIGZvciAoYXV0byYgbG9hZFJlc3Vs
dCA6IG1fbG9hZFJlc3VsdHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0g
bG9hZFJlc3VsdC5sb2FkZXIpCisgICAgICAgICAgICBsb2FkZXItPmxvYWRlcigpLmNhbmNlbCgp
OworICAgIH0KKworICAgIG1faXRlbXMuY2xlYXIoKTsKKyAgICBtX2xvYWRSZXN1bHRzLmNsZWFy
KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKnRoaXMsIHsgfSwgZmFsc2UpOworfQorCit2b2lk
IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgYXV0
byBtYXRjaGluZ1Jlc3VsdCA9IGZpbmRMb2FkUmVzdWx0KHsgJml0ZW0sIHR5cGUgfSk7CisgICAg
aWYgKCFtYXRjaGluZ1Jlc3VsdCkgeworICAgICAgICBjYW5jZWxEYXRhQ29sbGVjdGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWF0Y2hpbmdSZXN1bHQtPmRhdGEgPSB7IGRh
dGEgfTsKKyAgICBkZWNyZW1lbnRQZW5kaW5nTG9hZENvdW50KCk7Cit9CisKK3ZvaWQgQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8QmxvYj4mJiBibG9iKQoreworICAgIGF1dG8gbWF0Y2hpbmdS
ZXN1bHQgPSBmaW5kTG9hZFJlc3VsdCh7ICZpdGVtLCB0eXBlIH0pOworICAgIGlmICghbWF0Y2hp
bmdSZXN1bHQpIHsKKyAgICAgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2NsaXBi
b2FyZCA/IG1fY2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgOiBudWxscHRyOwor
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWF0Y2hpbmdSZXN1bHQt
PmxvYWRlciA9IENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUoKnRoaXMsIHsgJml0ZW0s
IHR5cGUgfSwgcmVhZFR5cGVGb3JNSU1FVHlwZSh0eXBlKSk7CisgICAgbWF0Y2hpbmdSZXN1bHQt
PmxvYWRlci0+bG9hZGVyKCkuc3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYik7Cit9
CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmRlY3JlbWVudFBlbmRpbmdMb2Fk
Q291bnQoKQoreworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlciB8fCAhbV9wZW5kaW5nTG9h
ZFJlc3VsdENvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIS0tbV9wZW5kaW5nTG9h
ZFJlc3VsdENvdW50KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIs
IHsgfSkoKnRoaXMsIHRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cygpLCB0cnVlKTsKK30K
KworVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6dGFrZVBhc3RlYm9hcmRJdGVtc0Zyb21SZXN1bHRzKCkKK3sKKyAgICBBU1NFUlQoIW1fcGVu
ZGluZ0xvYWRSZXN1bHRDb3VudCk7CisKKyAgICBhdXRvIGl0ZW1zID0gc3RkOjpleGNoYW5nZSht
X2l0ZW1zLCB7IH0pOworICAgIGF1dG8gbG9hZFJlc3VsdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fbG9h
ZFJlc3VsdHMsIHsgfSk7CisKKyAgICBpZiAoIW1fY2xpcGJvYXJkKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9jbGlwYm9hcmQtPmZyYW1lKCkp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4g
Y3VzdG9tRGF0YVJlc3VsdHM7CisgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKKyAgICAgICAgZm9yIChhdXRvIHR5
cGUgOiBpdGVtLT50eXBlcygpKSB7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBsb2FkUmVzdWx0
cy5nZXQoeyBpdGVtLnB0cigpLCB0eXBlIH0pLmRhdGE7CisgICAgICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhV1RGOjpnZXQ8U3RyaW5nPihkYXRh
KSkKKyAgICAgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIFdURjo6Z2V0
PFN0cmluZz4oZGF0YSkpOworICAgICAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5
cGUsICpXVEY6OmdldDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkpOworICAgICAgICB9Cisg
ICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGRvY3VtZW50LT5vcmlnaW5JZGVudGlmaWVyRm9y
UGFzdGVib2FyZCgpKTsKKyAgICAgICAgY3VzdG9tRGF0YVJlc3VsdHMuYXBwZW5kKFdURk1vdmUo
Y3VzdG9tRGF0YSkpOworICAgIH0KKyAgICByZXR1cm4gY3VzdG9tRGF0YVJlc3VsdHM7Cit9CisK
K3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmRpZEZpbmlzaExvYWRpbmdCbG9iKENs
aXBib2FyZEl0ZW1CbG9iTG9hZGVyJiBibG9iTG9hZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0g
ZmluZExvYWRSZXN1bHQoYmxvYkxvYWRlci5sb2FkUmVzdWx0S2V5KCkpOworICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgIGNhbmNlbERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvJiBsb2FkZXIgPSBibG9iTG9hZGVyLmxvYWRlcigpOworICAgIGlm
IChibG9iTG9hZGVyLnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4dCkK
KyAgICAgICAgcmVzdWx0LT5kYXRhID0geyBsb2FkZXIuc3RyaW5nUmVzdWx0KCkgfTsKKyAgICBl
bHNlIGlmIChhdXRvIGFycmF5QnVmZmVyID0gbG9hZGVyLmFycmF5QnVmZmVyUmVzdWx0KCkpCisg
ICAgICAgIHJlc3VsdC0+ZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKSB9OworCisgICAgZGVjcmVtZW50UGVuZGluZ0xvYWRDb3VudCgpOworfQorCitPcHRpb25h
bDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdCY+IENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpmaW5kTG9hZFJlc3VsdChjb25zdCBMb2FkUmVzdWx0S2V5JiBsb2FkUmVz
dWx0S2V5KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2xvYWRSZXN1bHRzLmZpbmQobG9hZFJl
c3VsdEtleSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yID09IG1fbG9hZFJlc3VsdHMuZW5kKCkgPyBX
VEY6Om51bGxvcHQgOiBPcHRpb25hbDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJl
c3VsdCY+IHsgaXRlcmF0b3ItPnZhbHVlIH07Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sK
KyAgICBtX2NvbGxlY3Rvci5kaWRGaW5pc2hMb2FkaW5nQmxvYigqdGhpcyk7Cit9CisKK3ZvaWQg
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRG
YWlsKGludCkKK3sKKyAgICBtX2NvbGxlY3Rvci5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDE1ZGVkMDQzNjIxOWEyNjhkMTBkOTlhNDEzYjcwMWQ1M2UxNWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgorI2lu
Y2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJsb2I7CitjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBDbGlwYm9hcmRJdGVtOworY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGE7CisKK2NsYXNzIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yPiBjcmVhdGUoQ2xp
cGJvYXJkJiBjbGlwYm9hcmQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBp
dGVtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYs
IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiwgYm9vbCBzdWNjZWVkZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3IoY2xpcGJvYXJkLCBpdGVtcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB+Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IoKTsK
KworICAgIHZvaWQgaGFuZGxlU3RyaW5nKENsaXBib2FyZEl0ZW0mLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlQmxvYihDbGlwYm9hcmRJdGVtJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8QmxvYj4mJik7CisgICAgdm9pZCBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworCisgICAgdm9pZCBzdGFydERhdGFDb2xsZWN0aW9uKCk7CisgICAgYm9vbCBo
YXNQZW5kaW5nTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQ7
IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdEtleSB7CisgICAgICAgIFJlZlB0
cjxDbGlwYm9hcmRJdGVtPiBpdGVtOworICAgICAgICBTdHJpbmcgdHlwZTsKKyAgICB9OworCisg
ICAgc3RydWN0IExvYWRSZXN1bHRLZXlIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgTG9hZFJlc3VsdEtleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gUHRySGFzaDxDbGlwYm9hcmRJdGVtKj46Omhhc2goa2V5Lml0ZW0uZ2V0KCkpICsga2V5LnR5
cGUuaGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
TG9hZFJlc3VsdEtleSYgYSwgY29uc3QgTG9hZFJlc3VsdEtleSYgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGEuaXRlbSA9PSBiLml0ZW0gJiYgYS50eXBlID09IGIudHlwZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKKworICAgIHN0cnVjdCBMb2FkUmVzdWx0S2V5
SGFzaFRyYWl0IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPExvYWRSZXN1bHRLZXk+IHsKKyAgICAg
ICAgc3RhdGljIExvYWRSZXN1bHRLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgbnVsbHB0ciwg
ZW1wdHlTdHJpbmcoKSB9OyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25z
dCBMb2FkUmVzdWx0S2V5JiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlLml0ZW0gJiYgdmFsdWUudHlw
ZSA9PSBlbXB0eVN0cmluZygpOyB9CisKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKExvYWRSZXN1bHRLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgTG9h
ZFJlc3VsdEtleSgpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IExvYWRSZXN1bHRLZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaXRlbSAmJiAhdmFsdWUudHlw
ZTsgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5j
dGlvbiA9IHRydWU7CisgICAgfTsKKworICAgIGNsYXNzIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI+LCBwdWJsaWMgRmls
ZVJlYWRlckxvYWRlckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW1CbG9iTG9hZGVyPiBjcmVhdGUoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Im
IGNvbGxlY3RvciwgY29uc3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSwgRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyKGNvbGxlY3RvciwgbG9hZFJl
c3VsdEtleSwgcmVhZFR5cGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIEZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQorICAg
ICAgICBGaWxlUmVhZGVyTG9hZGVyJiBsb2FkZXIoKSB7IHJldHVybiAqbV9sb2FkZXI7IH0KKyAg
ICAgICAgY29uc3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZFJlc3VsdEtleTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpcGJvYXJkSXRl
bUJsb2JMb2FkZXIoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImIGNvbGxlY3RvciwgY29uc3Qg
TG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUg
cmVhZFR5cGUpCisgICAgICAgICAgICA6IG1fY29sbGVjdG9yKGNvbGxlY3RvcikKKyAgICAgICAg
ICAgICwgbV9sb2FkUmVzdWx0S2V5KGxvYWRSZXN1bHRLZXkpCisgICAgICAgICAgICAsIG1fcmVh
ZFR5cGUocmVhZFR5cGUpCisgICAgICAgICAgICAsIG1fbG9hZGVyKG1ha2VVbmlxdWU8RmlsZVJl
YWRlckxvYWRlcj4ocmVhZFR5cGUsIHRoaXMpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGRpZFN0YXJ0TG9hZGluZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOworICAgICAgICB2b2lkIGRpZEZhaWwoaW50KSBmaW5hbDsKKworICAgICAgICBDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYgbV9jb2xsZWN0b3I7CisgICAgICAgIExvYWRSZXN1bHRLZXkg
bV9sb2FkUmVzdWx0S2V5OworICAgICAgICBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSBtX3Jl
YWRUeXBlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9sb2Fk
ZXI7CisgICAgfTsKKworICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gVmFyaWFudDxSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgU3RyaW5nPjsKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdCB7CisgICAgICAg
IEJ1ZmZlck9yU3RyaW5nIGRhdGE7CisgICAgICAgIFJlZlB0cjxDbGlwYm9hcmRJdGVtQmxvYkxv
YWRlcj4gbG9hZGVyOworICAgIH07CisKKyAgICBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvcihD
bGlwYm9hcmQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPENsaXBib2FyZEl0ZW0+PiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3VjY2VlZGVkKT4mJik7CisKKyAgICBPcHRpb25hbDxM
b2FkUmVzdWx0Jj4gZmluZExvYWRSZXN1bHQoY29uc3QgTG9hZFJlc3VsdEtleSYpOworICAgIHZv
aWQgZGVjcmVtZW50UGVuZGluZ0xvYWRDb3VudCgpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Z0Jsb2IoQ2xpcGJvYXJkSXRlbUJsb2JMb2FkZXImKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5n
QmxvYigpOworICAgIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gdGFrZVBhc3RlYm9hcmRJ
dGVtc0Zyb21SZXN1bHRzKCk7CisKKyAgICBXZWFrUHRyPENsaXBib2FyZD4gbV9jbGlwYm9hcmQ7
CisgICAgSGFzaE1hcDxMb2FkUmVzdWx0S2V5LCBMb2FkUmVzdWx0LCBMb2FkUmVzdWx0S2V5SGFz
aCwgTG9hZFJlc3VsdEtleUhhc2hUcmFpdD4gbV9sb2FkUmVzdWx0czsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiwgVmVjdG9yPFBhc3RlYm9h
cmRDdXN0b21EYXRhPiYmLCBib29sIHN1Y2NlZWRlZCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtPj4gbV9pdGVtczsKKyAgICB1aW50NjRfdCBtX3Bl
bmRpbmdMb2FkUmVzdWx0Q291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAppbmRleCA5MmE2ZDFmZDNlZTY5NWJlNzU2
NGQ1OWVkNDFjZDc2NmE3OWI0MDgwLi5jOTUzMDdmMThlNzZlYzkwMTI0NTU4YjE0OTJhMDY1OGRl
MmRmODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBD
bGlwYm9hcmRJdGVtOworY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I7CiAKIGNsYXNz
IENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKIHB1YmxpYzoKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENsaXBib2FyZEl0
ZW0mIG1faXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFT
b3VyY2UuY3BwCmluZGV4IDg4NGQ0NzYwOTMzMDkxYzFmYTQzMjMzNzk0ZGY4NzcwMTg1MWMzNjYu
LjI5OWVmMWIyM2I4MDhmNjY2ODFjYTdjMWJlOGRhYWY3NTg5MWJiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5o
IgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKIApA
QCAtNTQsNCArNTUsMTEgQEAgdm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6
OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWQKICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiB9CiAKK3ZvaWQgQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3ImIGNvbGxlY3RvcikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiBU
aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBib2Fy
ZEl0ZW1zCisgICAgLy8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQud3Jp
dGUoKS4KKyAgICBjb2xsZWN0b3IuY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuaAppbmRleCBiMjYzMjhiZTVjYTA5Y2Y3NTJjZDU5NGY3ODBlMjI5YjY4NGQ1YWM0
Li5mZjEzNGU0ZDM1YzY1MDJhYzcwMDVjZmYwYTc0MTQ4Njg1NTgwNDBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaApAQCAtNDAsNiArNDAsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yJikgZmluYWw7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3R5cGVzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCmluZGV4IDQ0YmZhOWIxNmVlZjgyMzM2OTk1NzE3Y2I0NmExODE4MTcxYTQ5
ZDQuLjM3NDExMTMxZDdkYmIzMWJmMzA3YjE4NWI3NzE0Yzc5Nzg4ZTE2MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CiAjaW5jbHVkZSAiSlNPdmVyY29uc3RyYWluZWRFcnJvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggOWU0MzdmMGUwYzhmOGNiZjliMDMwNmY0NTJjMDFlOGNjYjNj
YmJjZS4uYzFhNzE5ZjdlZjY0YWVhNjFkOTJiMjZlYzA0ZDVlNzIxY2U2MzlhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTM2LDYgKzM2LDcgQEAgbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKK01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcAogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvTmF2aWdhdG9yQ2xpcGJvYXJkLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTQ5YjA5ZDgzNjQwZDQ5
NGYyYWIzODBkZmJhNWIyMWI5YmIyYzIzZi4uODNjZmUzNGEzNDg1ZjdhMTYyMWRhZmZhNjYzYmU1
NmFhMWI2ODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDkyMyw2ICs0OTIzLDcgQEAKIAkJRjRCRkI5ODYxRTFEREY5QjAw
ODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVk
aXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKIAkJRjREMDc1NTgyMzREODIyRDAwODgxRTczIC8q
IENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ3QTIzNDY1MzVFMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRl
bURhdGFTb3VyY2UuaCAqLzsgfTsKIAkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBi
b2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2Fy
ZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovOyB9OworCQlGNEQwNzU1NjIzNEQ4MjIzMDA4
ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTMwRDNGMjM0NDQ3NDgwMDc2REY2QSAvKiBD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oICovOyB9OwogCQlGNEQ0M0Q2NjIxODgwMzhCMDBF
Q0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRFNTdFREMyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1
dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1N0VFMTIx
M0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3RURGMjEzRjQzNEEwMDRF
QTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTM0Miw2ICsxNTM0Myw4IEBACiAJCUY0
RTE5NjVGMjFGMjZFNEUwMDI4NTA3OCAvKiBVbmRvSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVbmRvSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjYxMjFG
MjdEM0MwMDI4NTA3OCAvKiBDdXN0b21VbmRvU3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDdXN0b21VbmRvU3RlcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEUxOTY2MjIxRjI3RDNEMDAyODUwNzggLyogQ3VzdG9tVW5kb1N0ZXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tVW5kb1N0ZXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNEUzMEQzRjIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRFMzBENDAyMzQ0NDc0
ODAwNzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNG
b250TWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4
dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0
RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI3MDc0LDYgKzI3MDc3LDggQEAKIAkJCQlGNDQwRTc3NzIzM0Q5NEQ3MDA2M0Y5
QUIgLyogQ2xpcGJvYXJkSXRlbS5pZGwgKi8sCiAJCQkJRjQ2QzQ0N0QyMzQ2NTQ1NDAwMzlBNzlE
IC8qIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwICovLAogCQkJCUY0NkM0NDdD
MjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggKi8s
CisJCQkJRjRFMzBENDAyMzQ0NDc0ODAwNzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yLmNwcCAqLywKKwkJCQlGNEUzMEQzRjIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3IuaCAqLywKIAkJCQlGNDZDNDQ3QTIzNDY1MzVFMDAzOUE3OUQgLyogQ2xp
cGJvYXJkSXRlbURhdGFTb3VyY2UuaCAqLywKIAkJCQlGNDZDNDQ4MTIzNDY1NDdBMDAzOUE3OUQg
LyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcCAqLywKIAkJCQlGNDZDNDQ4
MDIzNDY1NDdBMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgg
Ki8sCkBAIC0yOTA1OCw2ICsyOTA2Myw3IEBACiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUw
IC8qIENsaXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQwRTc3QjIzM0Q5NEQ3
MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ2QzQ0N0Uy
MzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0RDA3NTU2MjM0RDgyMjMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVt
RGF0YUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjREMDc1NTgyMzREODIyRDAwODgx
RTczIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQw
NzU1OTIzNEQ4MjMzMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBh
dGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzA1NzcsNyArMzA1ODMsNiBAQAogCQkJ
CUJDRTFDNDNDMEQ5ODMwRDMwMDNCMDJGMiAvKiBKU0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0E4MDYyMDFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25nUmFuZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQUI2RDJFMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEFCQUMwNjIzNkIwMTZEMDBGQTQzNDUgLyogU3R5bGVC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNTk3NDFEQjFCN0QxNDAxMDAyMDFDOTIgLyog
SlNNZWRpYURldmljZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTE1NzM5QkJCMUI0MjAxMkQw
MEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQyM0ExMjYx
M0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMyMTQ4LDggKzMyMTUzLDEwIEBACiAJCQkJNDE0QjgyMDUxRDZERjBFNTAw
NzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMw
RTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNUVCNjdCMEU4MUQzQkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0QUJBQzA2MjM2QjAxNkQwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNUQzNjM3MTlGRjYxOTMwMDRDOTNBQiAv
KiBTdHlsZUJ1aWxkZXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QUJBQzA0MjM2QUU5
NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QUJBQkYzMjM2OEI5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFRjQ0NEQwRTY3NDYyODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFFMEE0MUMzQzBCODMwMEYzNEQxMCAvKiBTdHlsZUNo
YW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjM1Myw3ICszMjM2MCw2IEBACiAJCQkJMDg1NEIw
MjMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Jvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTRBQkFDMDQyMzZBRTk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVp
bGRlckdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVG
NTVDIC8qIFNWR1NNSUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382578</attachid>
            <date>2019-11-01 07:36:33 -0700</date>
            <delta_ts>2019-11-07 18:56:24 -0800</delta_ts>
            <desc>Another build fix in MediaStreamTrack.cpp</desc>
            <filename>bug-203707-20191101073632.patch</filename>
            <type>text/plain</type>
            <size>36399</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkNjY3NjZiYzY3NGNj
NzVjZDQ5YjNlMTc2NTZkZDMxYTcyZWYxYS4uNmZmNmJlMTgyNmY4ZWM4NzEwZWQzNjkxODY4ZWE2
NzViZTU2ZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxOS0xMS0wMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gQWRkIGEgaGVscGVyIGNsYXNzIHRvIHJlc29sdmUgQ2xpcGJvYXJkSXRlbXMgaW50byBw
YXN0ZWJvYXJkIGRhdGEgZm9yIHdyaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgYSBuZXcgaGVscGVyIGNsYXNzIHRoYXQgd2ls
bCBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIHRvIGFnZ3JlZ2F0ZSBkYXRhIHZlbmRlZCBieSBD
bGlwYm9hcmRJdGVtcworICAgICAgICB3aGVuIHdyaXRpbmcgaXRlbXMgdG8gdGhlIHBsYXRmb3Jt
IHBhc3RlYm9hcmQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzOyBubyBuZXcgdGVzdHMsIHNp
bmNlIHRoZXJlIGlzIG5vCisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29s
bGVjdERhdGFGb3JXcml0aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZp
cnR1YWwgYGNvbGxlY3REYXRhRm9yV3JpdGluZ2AgbWV0aG9kLCB3aGljaCBpcyB1c2VkIHdoZW4g
d3JpdGluZyBDbGlwYm9hcmRJdGVtIGRhdGEgdG8gdGhlCisgICAgICAgIHBhc3RlYm9hcmQuIFRo
aXMgYWxsb3dzIENsaXBib2FyZEl0ZW1zIHRvIGFzeW5jaHJvbm91c2x5IGRlbGl2ZXIgZGF0YSB0
byBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciBhZnRlcgorICAgICAgICByZXNvbHZpbmcgcHJv
bWlzZXMgdG8gc3RyaW5ncyBvciBibG9icywgb3IgYWx0ZXJuYXRlbHksIGNhbmNlbCBhbGwgZGF0
YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcDogQWRkZWQuCisK
KyAgICAgICAgSW50cm9kdWNlIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLCB3aGljaCBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFzc2FnaW5nIGEgbGlzdCBvZiBDbGlwYm9hcmRJdGVtcyBpbnRvIGEg
bGlzdCBvZgorICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBvYmplY3RzIHdoZW4gd3JpdGlu
ZyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gRWFjaCBDbGlwYm9hcmRJdGVtIGNyZWF0ZWQg
dmlhIGJpbmRpbmdzCisgICAgICAgIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiAodHlwZSwgcHJvbWlz
ZSkgcGFpcnMsIHdoZXJlIGVhY2ggcHJvbWlzZSBtYXkgcmVzb2x2ZSB0byBlaXRoZXIgYSBzdHJp
bmcgb3IgYSBibG9iLgorCisgICAgICAgIEluIG9yZGVyIHRvIGNvbnZlcnQgdGhpcyBpbnRvIFBh
c3RlYm9hcmRDdXN0b21EYXRhcywgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICAg
c2V0IHVwIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgY29ycmVzcG9uZGluZyB0byBlYWNoIGNsaXBi
b2FyZCBpdGVtCisgICAgICAgICAgICBmb3IgZWFjaCBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAg
ICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5IHRvIHJlc29sdmUgdGhlIHByb21pc2UKKyAgICAgICAgICAgICAgICAgICAg
aWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBzdHJpbmc6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVyIHRoZSB0eXBlCisgICAg
ICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgYmxvYjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWQgdGhlIGJsb2IgZGF0YSBhcyBlaXRoZXIgdGV4dCBvciBh
biBBcnJheUJ1ZmZlciAoZGVwZW5kaW5nIG9uIHRoZSB0eXBlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0b20g
ZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJvbWlzZSBy
ZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiB1bnN1cHBvcnRlZCB2YWx1ZSwgYmFpbCBmcm9tIHRo
ZXNlIHN0ZXBzCisKKyAgICAgICAgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IgYW5kIENsaXBi
b2FyZEl0ZW0gY2Fycnkgb3V0IHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVsLCBzbyB0aGF0IGZvciBl
YWNoIHBhaXIgb2YKKyAgICAgICAgKGNsaXBib2FyZCBpdGVtLCB0eXBlKSwgd2UgdHJ5IHRvIHJl
c29sdmUgdGhlIHByb21pc2UgYW5kIHRoZW4gbG9hZCB0aGUgcmVzdWx0aW5nIGJsb2IgaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpDbGlwYm9hcmRJdGVtRGF0
YUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERhdGFDb2xsZWN0aW9uKToKKworICAgICAgICBD
YWxsZWQgYnkgQ2xpcGJvYXJkIHRvIGJlZ2luIGNvbGxlY3RpbmcgZGF0YSBmcm9tIHRoZSBsaXN0
IG9mIGNsaXBib2FyZCBpdGVtcyB3aGVuIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpjYW5jZWxEYXRhQ29s
bGVjdGlvbik6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byBjYW5jZWwgYWxsIGRhdGEgY29s
bGVjdGlvbi4gVGhpcyBjbGVhcnMgb3V0IHN0YXRlIGluIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVj
dG9yIChpbmNsdWRpbmcgYW55CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIENsaXBib2Fy
ZEl0ZW1zKSwgc3RvcHMgYWxsIGFjdGl2ZSBGaWxlUmVhZGVyTG9hZGVycywgYW5kIGludm9rZXMg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciwKKyAgICAgICAgcGFzc2luZyBpbiBgZmFsc2VgIGZvciB0
aGUgc3VjY2VzcyBwYXJhbWV0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IpOgorCisgICAgICAgIFRoZXNlIHR3byBtZXRo
b2RzIGFyZSBpbnZva2VkIGJ5IENsaXBib2FyZEl0ZW0ncyBkYXRhIHNvdXJjZXMgd2hlbiByZXNv
bHZpbmcgY2xpcGJvYXJkIGRhdGEgcHJvbWlzZXMgdG8gZWl0aGVyCisgICAgICAgIHN0cmluZ3Mg
b3IgYmxvYnMuIEluIHRoZSBjYXNlIG9mIGEgc3RyaW5nLCB3ZSBzaW1wbHkgdXBkYXRlIHRoZSBj
b3JyZXNwb25kaW5nIGxvYWQgcmVzdWx0IGFuZCBjb25zaWRlciB0aGUgbG9hZAorICAgICAgICBm
b3IgdGhhdCAoaXRlbSwgdHlwZSkgcGFpciBmaW5pc2hlZC4gSW4gdGhlIGNhc2Ugb2YgYSBibG9i
LCB3ZSBuZWVkIHRvIGNvbnRpbnVlIHRoZSBsb2FkIGJ5IGNyZWF0aW5nIGEKKyAgICAgICAgRmls
ZVJlYWRlckxvYWRlciBhbmQgd2FpdGluZyBmb3IgaXQgdG8gZWl0aGVyIGZpbmlzaCBvciBmYWls
LgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6ZGVjcmVt
ZW50UGVuZGluZ0xvYWRDb3VudCk6CisKKyAgICAgICAgV2hlbiBiZWdpbm5pbmcgdG8gY29sbGVj
dCBjbGlwYm9hcmQgZGF0YSBmb3Igd3JpdGluZywgdGhlIG1fcGVuZGluZ0xvYWRSZXN1bHRDb3Vu
dCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZgorICAgICAgICAoaXRlbSwgdHlwZSkgcGFpcnMgdGhh
dCBuZWVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5pc2ggbG9hZGluZyBhbmQgZGVsaXZlciBlaXRoZXIg
c3RyaW5ncyBvciBidWZmZXJzIGJlZm9yZSB3ZSBjYW4KKyAgICAgICAgcHJvY2VlZCB3aXRoIHdy
aXRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIEV2ZXJ5IHRpbWUg
b25lIHN1Y2ggcGFpciBmaW5pc2hlcywgd2UgZGVjcmVtZW50CisgICAgICAgIHRoaXMgY291bnQs
IHN1Y2ggdGhhdCB3aGVuIGl0IHJlYWNoZXMgMCAoYXNzdW1pbmcgdGhhdCBsb2FkaW5nIHdhc24n
dCBjdXQgc2hvcnQgZHVlIHRvIGZhaWx1cmVzKSwgd2UgdGhlbgorICAgICAgICBhc3NlbWJsZSB0
aGlzIGFnZ3JlZ2F0ZWQgZGF0YSBpbnRvIGEgZmluYWwgcmVzdWx0IHVzaW5nIGB0YWtlUGFzdGVi
b2FyZEl0ZW1zRnJvbVJlc3VsdHNgIGFuZCBpbnZva2UgdGhlCisgICAgICAgIGNvbXBsZXRpb24g
aGFuZGxlci4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OnRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cyk6CisKKyAgICAgICAgQ2xlYXJzIG91dCBh
bGwgaW50ZXJuYWwgc3RhdGUsIGFuZCB1c2VzIGl0IHRvIHNldCB1cCBhIGxpc3Qgb2YgUGFzdGVi
b2FyZEN1c3RvbURhdGFzLiBJbnZva2VkIG9ubHkgYWZ0ZXIgdGhlCisgICAgICAgIGxvYWQgaGFz
IGNvbXBsZXRlbHkgZmluaXNoZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpkaWRGaW5pc2hMb2FkaW5nQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGYWlsKToKKworICAgICAgICBBZGQgYSBo
ZWxwZXIgY2xhc3MsIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyLCB0aGF0IHdyYXBzIGEgRmlsZVJl
YWRlckxvYWRlciBhbmQgYWN0cyBhcyBpdHMgY2xpZW50LiBVcG9uCisgICAgICAgIGZpbmlzaGlu
ZyBvciBmYWlsaW5nLCBpdCBub3RpZmllcyBpdHMgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
CisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNv
bGxlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29s
bGVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xs
ZWN0b3I6Omhhc1BlbmRpbmdMb2FkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2g6Omhhc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9h
ZFJlc3VsdEtleUhhc2hUcmFpdDo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdEtleUhhc2hUcmFpdDo6aXNFbXB0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpMb2Fk
UmVzdWx0S2V5SGFzaFRyYWl0Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkxvYWRSZXN1bHRLZXlIYXNoVHJhaXQ6
OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICBBZGQgdHdvIG1vcmUgcHJpdmF0ZSBoZWxwZXIg
Y2xhc3NlcyB0byBmYWNpbGl0YXRlIHRoaXMgbG9hZGluZyBwcm9jZXNzOiBMb2FkUmVzdWx0IGFu
ZCBMb2FkUmVzdWx0S2V5LiBBCisgICAgICAgIExvYWRSZXN1bHQgcmVwcmVzZW50cyB0aGUgc3Rh
dGUgb2YgYW4gYXR0ZW1wdCB0byBsb2FkIGRhdGEgZm9yIGEgcGFydGljdWxhciB0eXBlLCBmcm9t
IGEgcGFydGljdWxhciBpdGVtOyB3aGVuCisgICAgICAgIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9h
cmQsIGVhY2ggcGFpciBvZiAoY2xpcGJvYXJkIGl0ZW0sIHR5cGUpIGlzIHJlcHJlc2VudGVkIGJ5
IGEgTG9hZFJlc3VsdCB3aGljaCBjb250YWlucworICAgICAgICB0aGUgZmluYWwgbG9hZGVkIHN0
cmluZyBvciBTaGFyZWRCdWZmZXIsIGlmIGFueS4KKworICAgICAgICBXZSBtYXAgZWFjaCBjbGlw
Ym9hcmQgaXRlbSBhbmQgdHlwZSB0byBpdHMgTG9hZFJlc3VsdCB1c2luZyB0aGUgTG9hZFJlc3Vs
dEtleSwgd2hpY2ggaXMgYSBoYXNoYWJsZQorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUg
aXRlbSt0eXBlIHBhaXJpbmcuIEJ5IGRvaW5nIHRoaXMsIHdlIGF2b2lkIHNlYXJjaGluZyBsaW5l
YXJseSB0aHJvdWdoIGV2ZXJ5IHBlbmRpbmcKKyAgICAgICAgTG9hZFJlc3VsdCB3aGVuZXZlciBh
IGdpdmVuIGl0ZW0gYW5kIHR5cGUgZmluaXNoIHJlc29sdmluZyBpdHMgZGF0YSBvciBsb2FkaW5n
IGEgYmxvYi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6
OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpyZWFkVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6
Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI6OmxvYWRSZXN1
bHRLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpDbGlwYm9hcmRJdGVtQmxvYkxvYWRlcik6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAgIEZvciB0
aGUgdGltZSBiZWluZywgbGVhdmUgdGhpcyB1bmltcGxlbWVudGVkOyBhIGZ1dHVyZSBwYXRjaCB3
aWxsIGFkZCBzdXBwb3J0IGZvciB3cml0aW5nIENsaXBib2FyZEl0ZW1zIHRoYXQKKyAgICAgICAg
Y2FtZSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBhcyBvcHBvc2VkIHRvIHRob3NlIGNy
ZWF0ZWQgYnkgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorCisgICAgICAgIEJ1aWxkIGZpeCBkdWUg
dG8gdW5pZmllZCBzb3VyY2VzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEwLTMxICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11b
Q2xhbmddIFVucmV2aWV3ZWQgYnVpbGQgZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCmluZGV4IDA4NjZkZTky
ZTQyOGI2YmZiZWQzNWY1NDUzYmZkNmE0N2E0MzY2MzguLjBjYjQyMDkwNGNiZmI3OGZjZjBlNjQ4
YzhhMjNmZTU0NDliMzI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCkBAIC05Miw2ICs5MiwxMSBAQCB2
b2lkIENsaXBib2FyZEl0ZW06OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9kYXRhU291cmNlLT5nZXRUeXBlKHR5cGUsIFdU
Rk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9y
V3JpdGluZyhDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYgY29sbGVjdG9yKQoreworICAgIG1f
ZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKGNvbGxlY3Rvcik7Cit9CisKIE5hdmln
YXRvciogQ2xpcGJvYXJkSXRlbTo6bmF2aWdhdG9yKCkKIHsKICAgICByZXR1cm4gbV9uYXZpZ2F0
b3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggNDlkMjU0NzllNWNhNjIwNDNmMDdlODYwNTI1M2M5
NjM2OTg0ODQxMi4uMmZlZDlmYzcyNzA3ZGQyZTJlMDlkNThhYmM1YjQ5NTkwMTA2ZTk2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW0uaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEJsb2I7CiBjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjsKIGNsYXNzIENsaXBib2FyZEl0ZW1EYXRhU291cmNlOwogY2xhc3MgRGVmZXJyZWRQcm9taXNl
OwogY2xhc3MgRE9NUHJvbWlzZTsKQEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRp
bmcoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImKTsKKwogICAgIFByZXNlbnRhdGlvblN0eWxl
IHByZXNlbnRhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TdHlsZTsg
fTsKICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvcigpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmlu
ZGV4IGU3MjYwNTExNDQ4ZDljYjQ4YjU0ZmJiYmU0NDRmOTU4NmZiZjljODAuLmM2YjE1ZTliMzY5
ZmMyYjA4NjlkNDczOGRkOWJhOWI5Y2ZmYWNmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgorI2luY2x1ZGUgIkNsaXBib2Fy
ZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKQEAgLTk0LDQg
Kzk1LDM1IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Z2V0VHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFByCiAgICAgfSk7CiB9CiAKK3ZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiBjb2xsZWN0b3IpCit7CisgICAgZm9yIChhdXRvIHR5cGVB
bmRJdGVtIDogbV9pdGVtUHJvbWlzZXMpIHsKKyAgICAgICAgYXV0byBwcm9taXNlID0gdHlwZUFu
ZEl0ZW0udmFsdWU7CisgICAgICAgIHByb21pc2UtPndoZW5TZXR0bGVkKFtwcm90ZWN0ZWRJdGVt
ID0gbWFrZVJlZlB0cihtX2l0ZW0pLCBwcm9taXNlLCB0eXBlID0gdHlwZUFuZEl0ZW0ua2V5LCBj
b2xsZWN0b3IgPSBtYWtlUmVmUHRyKGNvbGxlY3RvcildICgpIG11dGFibGUgeworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBwcm9taXNlLT5yZXN1bHQoKTsKKyAgICAgICAgICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgY29sbGVjdG9yLT5jYW5jZWxEYXRhQ29sbGVjdGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
U3RyaW5nIHN0cmluZzsKKyAgICAgICAgICAgIHJlc3VsdC5nZXRTdHJpbmcocHJvbWlzZS0+Z2xv
YmFsT2JqZWN0KCksIHN0cmluZyk7CisgICAgICAgICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkg
eworICAgICAgICAgICAgICAgIGNvbGxlY3Rvci0+aGFuZGxlU3RyaW5nKCpwcm90ZWN0ZWRJdGVt
LCB0eXBlLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAg
IGNvbGxlY3Rvci0+Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdXRvKiBibG9iID0gSlNCbG9i
Ojp0b1dyYXBwZWQocmVzdWx0LmdldE9iamVjdCgpLT52bSgpLCByZXN1bHQuZ2V0T2JqZWN0KCkp
KQorICAgICAgICAgICAgICAgIGNvbGxlY3Rvci0+aGFuZGxlQmxvYigqcHJvdGVjdGVkSXRlbSwg
dHlwZSwgKmJsb2IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbGxlY3Rv
ci0+Y2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmgKaW5kZXggNmZkOGRkYTU3NmI3YjUyYjA4MjMwMTk2ZmU5NDk0MDRjMTQ3NDhiNC4u
ZjU4ZjBmMjUyMjgyMDQyNjYzYTdmNzIxNjQyYmQxYzg5Y2IyMDQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMjksNiArMjksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOwog
Y2xhc3MgRE9NUHJvbWlzZTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CkBAIC00MCw2ICs0MSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikg
ZmluYWw7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3ImKSBmaW5hbDsKIAogICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQ
dHI8RE9NUHJvbWlzZT4+PiBtX2l0ZW1Qcm9taXNlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtRGF0YUNvbGxlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVmNjVjYWU1M2E1Njg1OTQ5NzYwNzFi
MWFjNDM5ZDcxZWM5ZjM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcApAQCAtMCww
ICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
bGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIgorCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEN1c3Rv
bURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGUgcmVhZFR5cGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MgfHwgdHlwZSA9PSAidGV4dC9wbGFpbiJf
cyB8fCB0eXBlID09ICJ0ZXh0L2h0bWwiX3MpCisgICAgICAgIHJldHVybiBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNUZXh0OworICAgIHJldHVybiBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlcjsKK30KKworQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yKENsaXBib2FyZCYgY2xpcGJvYXJkLCBjb25zdCBWZWN0b3I8UmVmUHRyPENs
aXBib2FyZEl0ZW0+PiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3Vj
Y2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2NsaXBib2FyZChtYWtlV2Vha1B0
cihjbGlwYm9hcmQpKQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAsIG1faXRlbXMoaXRlbXMubWFwKFsmXSAoYXV0byYgaXRlbSkgeyBy
ZXR1cm4gbWFrZVJlZigqaXRlbSk7IH0pKQoreworfQorCitDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3Rvcjo6fkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yKCkKK3sKKyAgICBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpzdGFydERh
dGFDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAg
QVNTRVJUKCFtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQpOworCisgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9pdGVtcykgeworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IGl0ZW0tPnR5cGVzKCkpIHsK
KyAgICAgICAgICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNhbmNl
bERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKyttX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQ7CisgICAgICAgICAgICBt
X2xvYWRSZXN1bHRzLnNldCh7IGl0ZW0ucHRyKCksIHR5cGUgfSwgTG9hZFJlc3VsdCgpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpCisgICAgICAg
IGl0ZW0tPmNvbGxlY3REYXRhRm9yV3JpdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJk
SXRlbURhdGFDb2xsZWN0b3I6OmNhbmNlbERhdGFDb2xsZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1f
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAg
bV9wZW5kaW5nTG9hZFJlc3VsdENvdW50ID0gMDsKKworICAgIGZvciAoYXV0byYgbG9hZFJlc3Vs
dCA6IG1fbG9hZFJlc3VsdHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0g
bG9hZFJlc3VsdC5sb2FkZXIpCisgICAgICAgICAgICBsb2FkZXItPmxvYWRlcigpLmNhbmNlbCgp
OworICAgIH0KKworICAgIG1faXRlbXMuY2xlYXIoKTsKKyAgICBtX2xvYWRSZXN1bHRzLmNsZWFy
KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKnRoaXMsIHsgfSwgZmFsc2UpOworfQorCit2b2lk
IENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yOjpoYW5kbGVTdHJpbmcoQ2xpcGJvYXJkSXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgYXV0
byBtYXRjaGluZ1Jlc3VsdCA9IGZpbmRMb2FkUmVzdWx0KHsgJml0ZW0sIHR5cGUgfSk7CisgICAg
aWYgKCFtYXRjaGluZ1Jlc3VsdCkgeworICAgICAgICBjYW5jZWxEYXRhQ29sbGVjdGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWF0Y2hpbmdSZXN1bHQtPmRhdGEgPSB7IGRh
dGEgfTsKKyAgICBkZWNyZW1lbnRQZW5kaW5nTG9hZENvdW50KCk7Cit9CisKK3ZvaWQgQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3I6OmhhbmRsZUJsb2IoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8QmxvYj4mJiBibG9iKQoreworICAgIGF1dG8gbWF0Y2hpbmdS
ZXN1bHQgPSBmaW5kTG9hZFJlc3VsdCh7ICZpdGVtLCB0eXBlIH0pOworICAgIGlmICghbWF0Y2hp
bmdSZXN1bHQpIHsKKyAgICAgICAgY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2NsaXBi
b2FyZCA/IG1fY2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgOiBudWxscHRyOwor
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWF0Y2hpbmdSZXN1bHQt
PmxvYWRlciA9IENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpjcmVhdGUoKnRoaXMsIHsgJml0ZW0s
IHR5cGUgfSwgcmVhZFR5cGVGb3JNSU1FVHlwZSh0eXBlKSk7CisgICAgbWF0Y2hpbmdSZXN1bHQt
PmxvYWRlci0+bG9hZGVyKCkuc3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYik7Cit9
CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmRlY3JlbWVudFBlbmRpbmdMb2Fk
Q291bnQoKQoreworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlciB8fCAhbV9wZW5kaW5nTG9h
ZFJlc3VsdENvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIS0tbV9wZW5kaW5nTG9h
ZFJlc3VsdENvdW50KQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIs
IHsgfSkoKnRoaXMsIHRha2VQYXN0ZWJvYXJkSXRlbXNGcm9tUmVzdWx0cygpLCB0cnVlKTsKK30K
KworVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rv
cjo6dGFrZVBhc3RlYm9hcmRJdGVtc0Zyb21SZXN1bHRzKCkKK3sKKyAgICBBU1NFUlQoIW1fcGVu
ZGluZ0xvYWRSZXN1bHRDb3VudCk7CisKKyAgICBhdXRvIGl0ZW1zID0gc3RkOjpleGNoYW5nZSht
X2l0ZW1zLCB7IH0pOworICAgIGF1dG8gbG9hZFJlc3VsdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fbG9h
ZFJlc3VsdHMsIHsgfSk7CisKKyAgICBpZiAoIW1fY2xpcGJvYXJkKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9jbGlwYm9hcmQtPmZyYW1lKCkp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4g
Y3VzdG9tRGF0YVJlc3VsdHM7CisgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKKyAgICAgICAgZm9yIChhdXRvIHR5
cGUgOiBpdGVtLT50eXBlcygpKSB7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBsb2FkUmVzdWx0
cy5nZXQoeyBpdGVtLnB0cigpLCB0eXBlIH0pLmRhdGE7CisgICAgICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhV1RGOjpnZXQ8U3RyaW5nPihkYXRh
KSkKKyAgICAgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIFdURjo6Z2V0
PFN0cmluZz4oZGF0YSkpOworICAgICAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5
cGUsICpXVEY6OmdldDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4oZGF0YSkpOworICAgICAgICB9Cisg
ICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGRvY3VtZW50LT5vcmlnaW5JZGVudGlmaWVyRm9y
UGFzdGVib2FyZCgpKTsKKyAgICAgICAgY3VzdG9tRGF0YVJlc3VsdHMuYXBwZW5kKFdURk1vdmUo
Y3VzdG9tRGF0YSkpOworICAgIH0KKyAgICByZXR1cm4gY3VzdG9tRGF0YVJlc3VsdHM7Cit9CisK
K3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OmRpZEZpbmlzaExvYWRpbmdCbG9iKENs
aXBib2FyZEl0ZW1CbG9iTG9hZGVyJiBibG9iTG9hZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0g
ZmluZExvYWRSZXN1bHQoYmxvYkxvYWRlci5sb2FkUmVzdWx0S2V5KCkpOworICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgIGNhbmNlbERhdGFDb2xsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvJiBsb2FkZXIgPSBibG9iTG9hZGVyLmxvYWRlcigpOworICAgIGlm
IChibG9iTG9hZGVyLnJlYWRUeXBlKCkgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4dCkK
KyAgICAgICAgcmVzdWx0LT5kYXRhID0geyBsb2FkZXIuc3RyaW5nUmVzdWx0KCkgfTsKKyAgICBl
bHNlIGlmIChhdXRvIGFycmF5QnVmZmVyID0gbG9hZGVyLmFycmF5QnVmZmVyUmVzdWx0KCkpCisg
ICAgICAgIHJlc3VsdC0+ZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKSB9OworCisgICAgZGVjcmVtZW50UGVuZGluZ0xvYWRDb3VudCgpOworfQorCitPcHRpb25h
bDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJlc3VsdCY+IENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yOjpmaW5kTG9hZFJlc3VsdChjb25zdCBMb2FkUmVzdWx0S2V5JiBsb2FkUmVz
dWx0S2V5KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2xvYWRSZXN1bHRzLmZpbmQobG9hZFJl
c3VsdEtleSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yID09IG1fbG9hZFJlc3VsdHMuZW5kKCkgPyBX
VEY6Om51bGxvcHQgOiBPcHRpb25hbDxDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvcjo6TG9hZFJl
c3VsdCY+IHsgaXRlcmF0b3ItPnZhbHVlIH07Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sK
KyAgICBtX2NvbGxlY3Rvci5kaWRGaW5pc2hMb2FkaW5nQmxvYigqdGhpcyk7Cit9CisKK3ZvaWQg
Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I6OkNsaXBib2FyZEl0ZW1CbG9iTG9hZGVyOjpkaWRG
YWlsKGludCkKK3sKKyAgICBtX2NvbGxlY3Rvci5jYW5jZWxEYXRhQ29sbGVjdGlvbigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDE1ZGVkMDQzNjIxOWEyNjhkMTBkOTlhNDEzYjcwMWQ1M2UxNWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgorI2lu
Y2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJsb2I7CitjbGFzcyBDbGlwYm9hcmQ7CitjbGFzcyBDbGlwYm9hcmRJdGVtOworY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGE7CisKK2NsYXNzIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yPiBjcmVhdGUoQ2xp
cGJvYXJkJiBjbGlwYm9hcmQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBp
dGVtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvciYs
IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiwgYm9vbCBzdWNjZWVkZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJv
YXJkSXRlbURhdGFDb2xsZWN0b3IoY2xpcGJvYXJkLCBpdGVtcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB+Q2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IoKTsK
KworICAgIHZvaWQgaGFuZGxlU3RyaW5nKENsaXBib2FyZEl0ZW0mLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlQmxvYihDbGlwYm9hcmRJdGVtJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8QmxvYj4mJik7CisgICAgdm9pZCBjYW5jZWxEYXRhQ29s
bGVjdGlvbigpOworCisgICAgdm9pZCBzdGFydERhdGFDb2xsZWN0aW9uKCk7CisgICAgYm9vbCBo
YXNQZW5kaW5nTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdMb2FkUmVzdWx0Q291bnQ7
IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdEtleSB7CisgICAgICAgIFJlZlB0
cjxDbGlwYm9hcmRJdGVtPiBpdGVtOworICAgICAgICBTdHJpbmcgdHlwZTsKKyAgICB9OworCisg
ICAgc3RydWN0IExvYWRSZXN1bHRLZXlIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgTG9hZFJlc3VsdEtleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gUHRySGFzaDxDbGlwYm9hcmRJdGVtKj46Omhhc2goa2V5Lml0ZW0uZ2V0KCkpICsga2V5LnR5
cGUuaGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
TG9hZFJlc3VsdEtleSYgYSwgY29uc3QgTG9hZFJlc3VsdEtleSYgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGEuaXRlbSA9PSBiLml0ZW0gJiYgYS50eXBlID09IGIudHlwZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKKworICAgIHN0cnVjdCBMb2FkUmVzdWx0S2V5
SGFzaFRyYWl0IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPExvYWRSZXN1bHRLZXk+IHsKKyAgICAg
ICAgc3RhdGljIExvYWRSZXN1bHRLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgbnVsbHB0ciwg
ZW1wdHlTdHJpbmcoKSB9OyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25z
dCBMb2FkUmVzdWx0S2V5JiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlLml0ZW0gJiYgdmFsdWUudHlw
ZSA9PSBlbXB0eVN0cmluZygpOyB9CisKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKExvYWRSZXN1bHRLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgTG9h
ZFJlc3VsdEtleSgpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IExvYWRSZXN1bHRLZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaXRlbSAmJiAhdmFsdWUudHlw
ZTsgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5j
dGlvbiA9IHRydWU7CisgICAgfTsKKworICAgIGNsYXNzIENsaXBib2FyZEl0ZW1CbG9iTG9hZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbUJsb2JMb2FkZXI+LCBwdWJsaWMgRmls
ZVJlYWRlckxvYWRlckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW1CbG9iTG9hZGVyPiBjcmVhdGUoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Im
IGNvbGxlY3RvciwgY29uc3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSwgRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENsaXBib2FyZEl0ZW1CbG9iTG9hZGVyKGNvbGxlY3RvciwgbG9hZFJl
c3VsdEtleSwgcmVhZFR5cGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIEZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQorICAg
ICAgICBGaWxlUmVhZGVyTG9hZGVyJiBsb2FkZXIoKSB7IHJldHVybiAqbV9sb2FkZXI7IH0KKyAg
ICAgICAgY29uc3QgTG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZFJlc3VsdEtleTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xpcGJvYXJkSXRl
bUJsb2JMb2FkZXIoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImIGNvbGxlY3RvciwgY29uc3Qg
TG9hZFJlc3VsdEtleSYgbG9hZFJlc3VsdEtleSwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUg
cmVhZFR5cGUpCisgICAgICAgICAgICA6IG1fY29sbGVjdG9yKGNvbGxlY3RvcikKKyAgICAgICAg
ICAgICwgbV9sb2FkUmVzdWx0S2V5KGxvYWRSZXN1bHRLZXkpCisgICAgICAgICAgICAsIG1fcmVh
ZFR5cGUocmVhZFR5cGUpCisgICAgICAgICAgICAsIG1fbG9hZGVyKG1ha2VVbmlxdWU8RmlsZVJl
YWRlckxvYWRlcj4ocmVhZFR5cGUsIHRoaXMpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGRpZFN0YXJ0TG9hZGluZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOworICAgICAgICB2b2lkIGRpZEZhaWwoaW50KSBmaW5hbDsKKworICAgICAgICBDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYgbV9jb2xsZWN0b3I7CisgICAgICAgIExvYWRSZXN1bHRLZXkg
bV9sb2FkUmVzdWx0S2V5OworICAgICAgICBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSBtX3Jl
YWRUeXBlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9sb2Fk
ZXI7CisgICAgfTsKKworICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gVmFyaWFudDxSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgU3RyaW5nPjsKKyAgICBzdHJ1Y3QgTG9hZFJlc3VsdCB7CisgICAgICAg
IEJ1ZmZlck9yU3RyaW5nIGRhdGE7CisgICAgICAgIFJlZlB0cjxDbGlwYm9hcmRJdGVtQmxvYkxv
YWRlcj4gbG9hZGVyOworICAgIH07CisKKyAgICBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3RvcihD
bGlwYm9hcmQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPENsaXBib2FyZEl0ZW0+PiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3ImLCBWZWN0b3I8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiYsIGJvb2wgc3VjY2VlZGVkKT4mJik7CisKKyAgICBPcHRpb25hbDxM
b2FkUmVzdWx0Jj4gZmluZExvYWRSZXN1bHQoY29uc3QgTG9hZFJlc3VsdEtleSYpOworICAgIHZv
aWQgZGVjcmVtZW50UGVuZGluZ0xvYWRDb3VudCgpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Z0Jsb2IoQ2xpcGJvYXJkSXRlbUJsb2JMb2FkZXImKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5n
QmxvYigpOworICAgIFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gdGFrZVBhc3RlYm9hcmRJ
dGVtc0Zyb21SZXN1bHRzKCk7CisKKyAgICBXZWFrUHRyPENsaXBib2FyZD4gbV9jbGlwYm9hcmQ7
CisgICAgSGFzaE1hcDxMb2FkUmVzdWx0S2V5LCBMb2FkUmVzdWx0LCBMb2FkUmVzdWx0S2V5SGFz
aCwgTG9hZFJlc3VsdEtleUhhc2hUcmFpdD4gbV9sb2FkUmVzdWx0czsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yJiwgVmVjdG9yPFBhc3RlYm9h
cmRDdXN0b21EYXRhPiYmLCBib29sIHN1Y2NlZWRlZCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtPj4gbV9pdGVtczsKKyAgICB1aW50NjRfdCBtX3Bl
bmRpbmdMb2FkUmVzdWx0Q291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAppbmRleCA5MmE2ZDFmZDNlZTY5NWJlNzU2
NGQ1OWVkNDFjZDc2NmE3OWI0MDgwLi5jOTUzMDdmMThlNzZlYzkwMTI0NTU4YjE0OTJhMDY1OGRl
MmRmODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBD
bGlwYm9hcmRJdGVtOworY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3I7CiAKIGNsYXNz
IENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKIHB1YmxpYzoKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9h
cmRJdGVtRGF0YUNvbGxlY3RvciYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIENsaXBib2FyZEl0
ZW0mIG1faXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFT
b3VyY2UuY3BwCmluZGV4IDg4NGQ0NzYwOTMzMDkxYzFmYTQzMjMzNzk0ZGY4NzcwMTg1MWMzNjYu
LjI5OWVmMWIyM2I4MDhmNjY2ODFjYTdjMWJlOGRhYWY3NTg5MWJiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5o
IgorI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKIApA
QCAtNTQsNCArNTUsMTEgQEAgdm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6
OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWQKICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiB9CiAKK3ZvaWQgQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkSXRlbURhdGFD
b2xsZWN0b3ImIGNvbGxlY3RvcikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiBU
aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBib2Fy
ZEl0ZW1zCisgICAgLy8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQud3Jp
dGUoKS4KKyAgICBjb2xsZWN0b3IuY2FuY2VsRGF0YUNvbGxlY3Rpb24oKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuaAppbmRleCBiMjYzMjhiZTVjYTA5Y2Y3NTJjZDU5NGY3ODBlMjI5YjY4NGQ1YWM0
Li5mZjEzNGU0ZDM1YzY1MDJhYzcwMDVjZmYwYTc0MTQ4Njg1NTgwNDBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaApAQCAtNDAsNiArNDAsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yJikgZmluYWw7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3R5cGVzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCmluZGV4IDQ0YmZhOWIxNmVlZjgyMzM2OTk1NzE3Y2I0NmExODE4MTcxYTQ5
ZDQuLmQxNmFkOWVjNWU0NTRhYTI3M2IxYmEwMTYwYjEwZTk5ZWY4Mzc2NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcApAQCAtMzMsMTIgKzMzLDE1IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlICJKU092ZXJjb25zdHJhaW5lZEVycm9yLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPdmVy
Y29uc3RyYWluZWRFcnJvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
OWU0MzdmMGUwYzhmOGNiZjliMDMwNmY0NTJjMDFlOGNjYjNjYmJjZS4uYzFhNzE5ZjdlZjY0YWVh
NjFkOTJiMjZlYzA0ZDVlNzIxY2U2MzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM2LDYgKzM2LDcg
QEAgbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKK01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBh
c3RlYm9hcmREYXRhU291cmNlLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvTmF2aWdhdG9y
Q2xpcGJvYXJkLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTQ5YjA5ZDgzNjQwZDQ5NGYyYWIzODBkZmJhNWIyMWI5YmIy
YzIzZi4uODNjZmUzNGEzNDg1ZjdhMTYyMWRhZmZhNjYzYmU1NmFhMWI2ODYyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDky
Myw2ICs0OTIzLDcgQEAKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0
b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAq
LzsgfTsKIAkJRjREMDc1NTgyMzREODIyRDAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1EYXRhU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZD
NDQ3QTIzNDY1MzVFMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCAqLzsgfTsK
IAkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNv
dXJjZS5oICovOyB9OworCQlGNEQwNzU1NjIzNEQ4MjIzMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRl
bURhdGFDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0RTMwRDNGMjM0NDQ3NDgwMDc2REY2QSAvKiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxl
Y3Rvci5oICovOyB9OwogCQlGNEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRF
NTdFREMyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEU1N0VEQTIxM0YzRjVGMDA0
RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1N0VFMTIxM0Y0MzRBMDA0RUE5OEUgLyogV2Vi
Q29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xNTM0Miw2ICsxNTM0Myw4IEBACiAJCUY0RTE5NjVGMjFGMjZFNEUwMDI4NTA3
OCAvKiBVbmRvSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvSXRlbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjYxMjFGMjdEM0MwMDI4NTA3OCAvKiBDdXN0
b21VbmRvU3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21VbmRv
U3RlcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEUxOTY2MjIxRjI3RDNEMDAy
ODUwNzggLyogQ3VzdG9tVW5kb1N0ZXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3VzdG9tVW5kb1N0ZXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNEUzMEQzRjIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRFMzBENDAyMzQ0NDc0ODAwNzZERjZBIC8qIENsaXBib2Fy
ZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZEl0ZW1E
YXRhQ29sbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFREEy
MTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9u
dE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNGb250TWFu
YWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MDc0LDYgKzI3
MDc3LDggQEAKIAkJCQlGNDQwRTc3NzIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5p
ZGwgKi8sCiAJCQkJRjQ2QzQ0N0QyMzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwICovLAogCQkJCUY0NkM0NDdDMjM0NjU0NTQwMDM5QTc5RCAvKiBD
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggKi8sCisJCQkJRjRFMzBENDAyMzQ0NDc0
ODAwNzZERjZBIC8qIENsaXBib2FyZEl0ZW1EYXRhQ29sbGVjdG9yLmNwcCAqLywKKwkJCQlGNEUz
MEQzRjIzNDQ0NzQ4MDA3NkRGNkEgLyogQ2xpcGJvYXJkSXRlbURhdGFDb2xsZWN0b3IuaCAqLywK
IAkJCQlGNDZDNDQ3QTIzNDY1MzVFMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aCAqLywKIAkJCQlGNDZDNDQ4MTIzNDY1NDdBMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlLmNwcCAqLywKIAkJCQlGNDZDNDQ4MDIzNDY1NDdBMDAzOUE3OUQgLyog
Q2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggKi8sCkBAIC0yOTA1OCw2ICsyOTA2
Myw3IEBACiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDQwRTc3QjIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xpcGJvYXJk
SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ2QzQ0N0UyMzQ2NTQ1NDAwMzlBNzlEIC8qIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0RDA3
NTU2MjM0RDgyMjMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtRGF0YUNvbGxlY3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjREMDc1NTgyMzREODIyRDAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1E
YXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQwNzU1OTIzNEQ4MjMzMDA4ODFFNzMg
LyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMzA1NzcsNyArMzA1ODMsNiBAQAogCQkJCUJDRTFDNDNDMEQ5ODMwRDMwMDNC
MDJGMiAvKiBKU0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0E4MDYyMDFFMDNCNTg1
MDA4QTFGMjYgLyogSlNMb25nUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUI2RDJFMTdD
ODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlFNEFCQUMwNjIzNkIwMTZEMDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNTk3NDFEQjFCN0QxNDAxMDAyMDFDOTIgLyogSlNNZWRpYURldmljZUluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTE1NzM5QkJCMUI0MjAxMkQwMEQyNThDMSAvKiBKU01lZGlhRGV2
aWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQyM0ExMjYxM0Y1RkE1OTAwRjY3MDAxIC8qIEpT
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTQ4LDgg
KzMyMTUzLDEwIEBACiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRD
bG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0
eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdCMEU4MUQzQkUw
MEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QUJBQzA2MjM2
QjAxNkQwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjk2
ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzNUQzNjM3MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20u
aCBpbiBIZWFkZXJzICovLAorCQkJCUU0QUJBQzA0MjM2QUU5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1
aWxkZXJHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkYzMjM2OEI5NTkwMEZB
NDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRjQ0NEQw
RTY3NDYyODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0MDFFMEE0MUMzQzBCODMwMEYzNEQxMCAvKiBTdHlsZUNoYW5nZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMjM1Myw3ICszMjM2MCw2IEBACiAJCQkJMDg1NEIwMjMxMjU1RTRFNjAwQjlDREQwIC8q
IFNWR1Jvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUEzMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FB
NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTRBQkFDMDQyMzZBRTk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3Rv
cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383102</attachid>
            <date>2019-11-07 18:56:25 -0800</date>
            <delta_ts>2019-11-07 19:05:09 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-203707-20191107185625.patch</filename>
            <type>text/plain</type>
            <size>18670</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5ZmE1ZDJhYWQwZmMx
YTI3YjIwY2Q1MDEyOTA0NmIwNThhZmI1MS4uMDg5Njc4NjkyOWE0MTVlMDRiYTk3NzEyMTczNjU2
ZDY1N2M3YTgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE5LTExLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBBZGQgc29tZSBpbmZyYXN0cnVjdHVyZSB0byByZXNvbHZlIENsaXBib2FyZEl0ZW1zIGlu
dG8gcGFzdGVib2FyZCBkYXRhIGZvciB3cml0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgbmV3IG1ldGhvZCB0aGF0IHdpbGwg
YmUgdXNlZCBpbiBhIGZ1dHVyZSBwYXRjaCB0byBhZ2dyZWdhdGUgZGF0YSB2ZW5kZWQgYnkgQ2xp
cGJvYXJkSXRlbXMgd2hlbgorICAgICAgICB3cml0aW5nIGl0ZW1zIHRvIHRoZSBwbGF0Zm9ybSBw
YXN0ZWJvYXJkLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlsczsgbm8gbmV3IHRlc3RzLCBzaW5j
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4KKyAgICAgICAgYmVoYXZpb3IgeWV0LgorCisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAg
IEFkZCBhIG5ldyB2aXJ0dWFsIGBjb2xsZWN0RGF0YUZvcldyaXRpbmdgIG1ldGhvZCwgd2hpY2gg
aXMgdXNlZCB3aGVuIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbSBkYXRhIHRvIHRoZQorICAgICAgICBw
YXN0ZWJvYXJkLiBUaGlzIGFsbG93cyBDbGlwYm9hcmRJdGVtcyB0byBhc3luY2hyb25vdXNseSBj
b252ZXJ0IGRhdGEgdG8gYSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBhZnRlciByZXNvbHZpbmcKKyAg
ICAgICAgcHJvbWlzZXMgdG8gc3RyaW5ncyBvciBibG9iczsgb3IgYWx0ZXJuYXRlbHksIGNhbmNl
bCBhbGwgZGF0YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICBJ
biBvcmRlciB0byBjb252ZXJ0IHRoaXMgaW50byBQYXN0ZWJvYXJkQ3VzdG9tRGF0YXMsIHdlIGRv
IHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIHNldCB1cCBhIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBjbGlwYm9hcmQgaXRlbQorICAgICAgICAgICAgZm9y
IGVhY2ggY2xpcGJvYXJkIGl0ZW06CisgICAgICAgICAgICAgICAgZm9yIGVhY2ggdHlwZSBpbiB0
aGUgY2xpcGJvYXJkIGl0ZW06CisgICAgICAgICAgICAgICAgICAgIHRyeSB0byByZXNvbHZlIHRo
ZSBwcm9taXNlCisgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRv
IGEgc3RyaW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgdGhlIHN0cmluZyB0byBj
dXN0b20gZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJv
bWlzZSByZXNvbHZlZCB0byBhIGJsb2I6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkIHRo
ZSBibG9iIGRhdGEgYXMgZWl0aGVyIHRleHQgb3IgYW4gQXJyYXlCdWZmZXIgKGRlcGVuZGluZyBv
biB0aGUgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGVpdGhlciB0aGUgbG9h
ZGVkIHN0cmluZyBvciBidWZmZXIgdG8gY3VzdG9tIGRhdGEgdW5kZXIgdGhlIHR5cGUKKyAgICAg
ICAgICAgICAgICAgICAgaWYgdGhlIHByb21pc2UgcmVqZWN0ZWQgb3IgcmVzb2x2ZWQgdG8gYW4g
dW5zdXBwb3J0ZWQgdmFsdWUsIGJhaWwgZnJvbSB0aGVzZSBzdGVwcworCisgICAgICAgIENsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yIGFuZCBDbGlwYm9hcmRJdGVtIGNhcnJ5IG91dCB0aGVzZSBz
dGVwcyBhc3luY2hyb25vdXNseSwgc28gdGhhdCBmb3IgZWFjaCBwYWlyIG9mCisgICAgICAgIChj
bGlwYm9hcmQgaXRlbSwgdHlwZSksIHdlIHRyeSB0byByZXNvbHZlIHRoZSBwcm9taXNlIGFuZCB0
aGVuIGxvYWQgdGhlIHJlc3VsdGluZyBibG9iIGlmIG5lY2Vzc2FyeS4KKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlYWRUeXBlRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZh
aWxUb1Jlc29sdmVJdGVtKToKKworICAgICAgICBIZWxwZXIgbWV0aG9kIHRvIGNhbmNlbCBhbGwg
ZGF0YSBjb2xsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gaXRlbS4gVGhpcyBzdG9wcyBhbGwgYWN0aXZl
IEZpbGVSZWFkZXJMb2FkZXJzIGFuZAorICAgICAgICBpbnZva2VzIHRoZSBjb21wbGV0aW9uIGhh
bmRsZXIgd2l0aCBgTnVsbG9wdGAuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OmNhbkZpbmlzaENvbGxlY3RpbmdEYXRhRm9yV3JpdGluZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpm
aW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmdJZlBvc3NpYmxlKToKKworICAgICAgICBDYWxs
ZWQgd2hlbmV2ZXIgbmV3IGRhdGEgaXMgcmVjZWl2ZWQgZm9yIGFueSBjbGlwYm9hcmQgaXRlbSB0
eXBlLiBXaGVuIGFsbCBjbGlwYm9hcmQgZGF0YSB0eXBlcyBoYXZlIGZpbmlzaGVkCisgICAgICAg
IGxvYWRpbmcsIHRoaXMgbWV0aG9kIHdpbGwgcHJvY2VlZCB0byBjb252ZXJ0IHRoZSBsb2FkZWQg
ZGF0YSBpbnRvIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgb2JqZWN0LCBhbmQgaW52b2tlIHRoZQor
ICAgICAgICBjb21wbGV0aW9uIGhhbmRsZXIuIElmIG9uZSBvciBtb3JlIHR5cGVzIGZhaWxlZCB0
byBsb2FkLCB3ZSB3b3VsZCBpbnN0ZWFkIGhhdmUgYmFpbGVkIGFscmVhZHkgYnkgY2FsbGluZwor
ICAgICAgICBkaWRGYWlsVG9SZXNvbHZlSXRlbS4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6CisKKyAgICAgICAg
SXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIGJsb2IgbG9hZGVycywgaW4gc2VhcmNoIGZvciBsb2Fk
ZXJzIHdpdGggZGF0YSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIGFkZGVkIHRvIGVpdGhlcgorICAg
ICAgICB0aGUgY2xpcGJvYXJkIHR5cGUgdG8gdGV4dCBkYXRhIG1hcCwgb3IgdGhlIGNsaXBib2Fy
ZCB0eXBlIHRvIGJ1ZmZlciBtYXAuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZhaWwpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3Vy
Y2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisKKyAgICAgICAgRm9yIHRoZSB0aW1lIGJlaW5n
LCBsZWF2ZSB0aGlzIHVuaW1wbGVtZW50ZWQ7IGEgZnV0dXJlIHBhdGNoIHdpbGwgYWRkIHN1cHBv
cnQgZm9yIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbXMgdGhhdAorICAgICAgICBjYW1lIGZyb20gdGhl
IHBsYXRmb3JtIHBhc3RlYm9hcmQsIGFzIG9wcG9zZWQgdG8gdGhvc2UgY3JlYXRlZCBieSB0aGUg
cGFnZS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1Q
YXN0ZWJvYXJkRGF0YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHA6CisKKyAgICAgICAgQnVpbGQgZml4IGR1ZSB0byB1bmlmaWVkIHNv
dXJjZXMuCisKIDIwMTktMTEtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2NyZWVuIGxvY2tzIHdoaWxlIHdhdGNoaW5nIHByZXZpb3VzbHktbXV0ZWQtdGhl
bi11bm11dGVkIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCmluZGV4IDA4NjZkZTkyZTQyOGI2YmZiZWQz
NWY1NDUzYmZkNmE0N2E0MzY2MzguLjg5ZjMzMGQ1OTNhNmJjMDE4ZjliYmUxNzEwM2Y1MjY5YWJh
MTI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCkBAIC05Miw2ICs5MiwxMSBAQCB2b2lkIENsaXBib2Fy
ZEl0ZW06OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgbV9kYXRhU291cmNlLT5nZXRUeXBlKHR5cGUsIFdURk1vdmUocHJvbWlz
ZSkpOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlw
Ym9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPik+JiYgY29tcGxldGlvbikKK3sKKyAgICBtX2RhdGFTb3VyY2UtPmNv
bGxlY3REYXRhRm9yV3JpdGluZyhkZXN0aW5hdGlvbiwgV1RGTW92ZShjb21wbGV0aW9uKSk7Cit9
CisKIE5hdmlnYXRvciogQ2xpcGJvYXJkSXRlbTo6bmF2aWdhdG9yKCkKIHsKICAgICByZXR1cm4g
bV9uYXZpZ2F0b3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggNDlkMjU0NzllNWNhNjIwNDNmMDdl
ODYwNTI1M2M5NjM2OTg0ODQxMi4uMjIyZGYxNDNmOGU4MTg5ZWU3ZDRiZDVhOTkzM2Y3MTA4NmJl
ZDY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBDbGlwYm9hcmRJdGVt
RGF0YVNvdXJjZTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTVByb21pc2U7CiBj
bGFzcyBOYXZpZ2F0b3I7CitjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIHN0cnVjdCBQYXN0
ZWJvYXJkSXRlbUluZm87CiAKIGNsYXNzIENsaXBib2FyZEl0ZW0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxDbGlwYm9hcmRJdGVtPiB7CkBAIC01OSw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
U3RyaW5nPiB0eXBlcygpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAorICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5n
KENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJik7CisKICAgICBQcmVzZW50YXRpb25TdHlsZSBwcmVz
ZW50YXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU3R5bGU7IH07CiAg
ICAgTmF2aWdhdG9yKiBuYXZpZ2F0b3IoKTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBl
NzI2MDUxMTQ0OGQ5Y2I0OGI1NGZiYmJlNDQ0Zjk1ODZmYmY5YzgwLi5iMTBjNDlmMmY0MWQwZTIw
Mzk3MmY5MmNiYjc5YzE3MzNjNWRmNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQmxv
Yi5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKQEAgLTM2LDYgKzM3LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgc3RhdGljIHJl
YWRUeXBlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09
ICJ0ZXh0L3VyaS1saXN0Il9zIHx8IHR5cGUgPT0gInRleHQvcGxhaW4iX3MgfHwgdHlwZSA9PSAi
dGV4dC9odG1sIl9zKQorICAgICAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4
dDsKKyAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXI7Cit9CisK
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFJlZlB0cjxET01Qcm9taXNlPj4+JiYgaXRlbVByb21pc2VzKQogICAgIDogQ2xpcGJvYXJkSXRl
bURhdGFTb3VyY2UoaXRlbSkKICAgICAsIG1faXRlbVByb21pc2VzKFdURk1vdmUoaXRlbVByb21p
c2VzKSkKQEAgLTk0LDQgKzEwMiwxNzQgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9
KTsKIH0KIAordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0
YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Ly8gQWJvcnQgYW55IG9uZ29pbmcgZGF0YSBjb2xsZWN0aW9uIHNlc3Npb24uCisgICAgZGlkRmFp
bFRvUmVzb2x2ZUl0ZW0oKTsKKworICAgIG1fbGFzdExvYWRBdHRlbXB0SWRlbnRpZmllciA9IExv
YWRBdHRlbXB0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uKTsKKyAgICBtX3dyaXRpbmdEZXN0aW5hdGlvbiA9IG1ha2VX
ZWFrUHRyKGRlc3RpbmF0aW9uKTsKKworICAgIGZvciAoYXV0byB0eXBlQW5kSXRlbSA6IG1faXRl
bVByb21pc2VzKSB7CisgICAgICAgIGF1dG8gcHJvbWlzZSA9IHR5cGVBbmRJdGVtLnZhbHVlOwor
ICAgICAgICBwcm9taXNlLT53aGVuU2V0dGxlZChbdGhpcywgaW5pdGlhbENvdW50ID0gbV9sYXN0
TG9hZEF0dGVtcHRJZGVudGlmaWVyLCBwcm90ZWN0ZWRJdGVtID0gbWFrZVJlZlB0cihtX2l0ZW0p
LCBwcm9taXNlLCB0eXBlID0gdHlwZUFuZEl0ZW0ua2V5XSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmIChtX2xhc3RMb2FkQXR0ZW1wdElkZW50aWZpZXIgIT0gaW5pdGlhbENvdW50KQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwcm9taXNl
LT5yZXN1bHQoKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
ZGlkRmFpbFRvUmVzb2x2ZUl0ZW0oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gY2xpcGJvYXJkID0gbWFrZVJlZlB0cihtX3dyaXRp
bmdEZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIWNsaXBib2FyZCkgeworICAg
ICAgICAgICAgICAgIGRpZEZhaWxUb1Jlc29sdmVJdGVtKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNsaXBib2FyZC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgZGlkRmFpbFRvUmVzb2x2ZUl0
ZW0oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFN0cmluZyBzdHJpbmc7CisgICAgICAgICAgICByZXN1bHQuZ2V0U3RyaW5nKHByb21pc2Ut
Pmdsb2JhbE9iamVjdCgpLCBzdHJpbmcpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgICAgICBtX2xvYWRlZFRleHQuc2V0KHR5cGUsIHN0cmluZyk7Cisg
ICAgICAgICAgICAgICAgZmluaXNoQ29sbGVjdGluZ0RhdGFGb3JXcml0aW5nSWZQb3NzaWJsZSgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGRpZEZhaWxUb1Jlc29s
dmVJdGVtKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoYXV0byBibG9iID0gbWFrZVJlZlB0cihKU0Jsb2I6OnRvV3JhcHBlZChyZXN1
bHQuZ2V0T2JqZWN0KCktPnZtKCksIHJlc3VsdC5nZXRPYmplY3QoKSkpKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KHJlYWRUeXBl
Rm9yTUlNRVR5cGUodHlwZSksIHRoaXMpOworICAgICAgICAgICAgICAgIGxvYWRlci0+c3RhcnQo
Y2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAgICAgaWYgKGxvYWRlci0+ZXJyb3JDb2RlKCkgPT0gRmlsZUVycm9y
OjpPSykgeworICAgICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJzQnlUeXBlLmFwcGVuZCh7
IHR5cGUsIFdURk1vdmUobG9hZGVyKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGlkRmFpbFRv
UmVzb2x2ZUl0ZW0oKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZhaWxUb1Jlc29sdmVJdGVtKCkKK3sKKyAgICBpZiAo
IW1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7Cisg
ICAgYXV0byBibG9iTG9hZGVyc0J5VHlwZSA9IHN0ZDo6ZXhjaGFuZ2UobV9ibG9iTG9hZGVyc0J5
VHlwZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8mIHR5cGVBbmRMb2FkZXIgOiBibG9iTG9hZGVyc0J5
VHlwZSkKKyAgICAgICAgdHlwZUFuZExvYWRlci52YWx1ZS0+Y2FuY2VsKCk7CisKKyAgICBtX2xv
YWRlZFRleHQuY2xlYXIoKTsKKyAgICBtX2xvYWRlZEJ1ZmZlcnMuY2xlYXIoKTsKKyAgICBtX3dy
aXRpbmdEZXN0aW5hdGlvbiA9IG51bGxwdHI7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0KTsKK30KKworYm9vbCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjYW5G
aW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmcoKSBjb25zdAoreworICAgIGlmICghbV9jb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMoKSkgeworICAgICAgICBpZiAoIW1fbG9hZGVkVGV4dC5jb250YWlucyh0eXBl
KSAmJiAhbV9sb2FkZWRCdWZmZXJzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlOjpmaW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmdJZlBvc3Np
YmxlKCkKK3sKKyAgICBpZiAoIWNhbkZpbmlzaENvbGxlY3RpbmdEYXRhRm9yV3JpdGluZygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNo
YW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOworICAgIGF1dG8gdGV4dCA9IHN0ZDo6ZXhj
aGFuZ2UobV9sb2FkZWRUZXh0LCB7IH0pOworICAgIGF1dG8gYnVmZmVycyA9IHN0ZDo6ZXhjaGFu
Z2UobV9sb2FkZWRCdWZmZXJzLCB7IH0pOworICAgIGF1dG8gY2xpcGJvYXJkID0gbWFrZVJlZlB0
cihtX3dyaXRpbmdEZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgbV93cml0aW5nRGVzdGluYXRpb24g
PSBudWxscHRyOworICAgIG1fYmxvYkxvYWRlcnNCeVR5cGUuY2xlYXIoKTsKKworICAgIGlmICgh
Y2xpcGJvYXJkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihjbGlw
Ym9hcmQtPmZyYW1lKCkpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
ZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBbGwgY2xpcGJvYXJkIHR5cGVzIGhhdmUgYmVlbiBs
b2FkZWQ7IHByb2NlZWQgdG8gY29udmVydCB0aGUgbG9hZGVkIGRhdGEgaW50byBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YS4KKyAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOworICAgIGZv
ciAoYXV0byYgdHlwZSA6IHR5cGVzKCkpIHsKKyAgICAgICAgYXV0byBkYXRhID0gdGV4dC5nZXQo
dHlwZSk7CisgICAgICAgIGlmIChkYXRhLmlzTnVsbCgpKQorICAgICAgICAgICAgY3VzdG9tRGF0
YS53cml0ZURhdGEodHlwZSwgKmJ1ZmZlcnMuZ2V0KHR5cGUpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBkYXRhKTsKKyAgICB9CisgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oZG9jdW1lbnQtPm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJv
YXJkKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgV1RGTW92ZShjdXN0b21EYXRhKSB9KTsK
K30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpkaWRGaW5pc2hMb2Fk
aW5nKCkKK3sKKyAgICBib29sIGRpZEZhaWwgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHR5cGVB
bmRMb2FkZXIgOiBtX2Jsb2JMb2FkZXJzQnlUeXBlKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IHR5
cGVBbmRMb2FkZXIua2V5OworICAgICAgICBpZiAobV9sb2FkZWRUZXh0LmNvbnRhaW5zKHR5cGUp
IHx8IG1fbG9hZGVkQnVmZmVycy5jb250YWlucyh0eXBlKSkgeworICAgICAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBleHRyYWN0ZWQgZGF0YSBmcm9tIHRoaXMgbG9hZGVyLgorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBsb2FkZXIgPSB0eXBlQW5kTG9h
ZGVyLnZhbHVlOworICAgICAgICBpZiAobG9hZGVyLT5lcnJvckNvZGUoKSAhPSBGaWxlRXJyb3I6
Ok9LKSB7CisgICAgICAgICAgICBkaWRGYWlsID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvYWRlci0+Ynl0ZXNMb2FkZWQoKSAhPSBsb2FkZXIt
PnRvdGFsQnl0ZXMoKSB8fCAhbG9hZGVyLT5ieXRlc0xvYWRlZCgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgYXV0byBzdHJpbmdSZXN1bHQgPSByZWFkVHlwZUZvck1JTUVUeXBl
KHR5cGUpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc1RleHQgPyBsb2FkZXItPnN0cmluZ1Jl
c3VsdCgpIDogbnVsbFN0cmluZygpOworICAgICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051bGwo
KSkKKyAgICAgICAgICAgIG1fbG9hZGVkVGV4dC5zZXQodHlwZSwgV1RGTW92ZShzdHJpbmdSZXN1
bHQpKTsKKyAgICAgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IGxvYWRlci0+YXJyYXlC
dWZmZXJSZXN1bHQoKSkKKyAgICAgICAgICAgIG1fbG9hZGVkQnVmZmVycy5zZXQodHlwZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZGlkRmFpbCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChkaWRGYWlsKQorICAgICAgICBkaWRGYWlsVG9SZXNvbHZlSXRlbSgp
OworICAgIGVsc2UKKyAgICAgICAgZmluaXNoQ29sbGVjdGluZ0RhdGFGb3JXcml0aW5nSWZQb3Nz
aWJsZSgpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZh
aWwoaW50KQoreworICAgIGRpZEZhaWxUb1Jlc29sdmVJdGVtKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aAppbmRleCA2ZmQ4ZGRhNTc2YjdiNTJiMDgyMzAxOTZmZTk0OTQwNGMxNDc0OGI0Li42N2MyZTg1
ODkxZDIwZjg2Yjc3ZTAzZjA5YmJmOWEzNTc5NTg0MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0yNiwxMiArMjYsMTcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBET01Qcm9taXNlOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIFBhc3RlYm9h
cmRDdXN0b21EYXRhOwogCi1jbGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlIDog
cHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKK2NsYXNzIENsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UsIHB1YmxpYyBG
aWxlUmVhZGVyTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlKENsaXBib2FyZEl0ZW0m
LCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPERPTVByb21pc2U+Pj4mJik7CkBA
IC00MCw2ICs0NSwyNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5n
KENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CisKKyAgICB2b2lkIGRpZEZhaWxUb1Jl
c29sdmVJdGVtKCk7CisgICAgdm9pZCBmaW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmdJZlBv
c3NpYmxlKCk7CisgICAgYm9vbCBjYW5GaW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmcoKSBj
b25zdDsKKworICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgbWV0aG9kcy4KKyAgICB2b2lk
IGRpZFN0YXJ0TG9hZGluZygpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoKSBm
aW5hbCB7IH0KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZEZhaWwoaW50KSBmaW5hbDsKKworICAgIGVudW0gTG9hZEF0dGVtcHRJZGVudGlmaWVyVHlwZSB7
IH07CisgICAgdXNpbmcgTG9hZEF0dGVtcHRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxM
b2FkQXR0ZW1wdElkZW50aWZpZXJUeXBlPjsKKworICAgIExvYWRBdHRlbXB0SWRlbnRpZmllciBt
X2xhc3RMb2FkQXR0ZW1wdElkZW50aWZpZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAg
IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxv
YWRlcj4+PiBtX2Jsb2JMb2FkZXJzQnlUeXBlOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IG1fbG9hZGVkVGV4dDsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IG1f
bG9hZGVkQnVmZmVyczsKKyAgICBXZWFrUHRyPENsaXBib2FyZD4gbV93cml0aW5nRGVzdGluYXRp
b247CiAKICAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPERPTVByb21pc2U+
Pj4gbV9pdGVtUHJvbWlzZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKaW5k
ZXggOTJhNmQxZmQzZWU2OTViZTc1NjRkNTllZDQxY2Q3NjZhNzliNDA4MC4uYmYxZGFhY2Y3MDM4
ODM1MDFlNWU5MjI1MjZlZTU4OGJmMjRkYmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNv
dXJjZS5oCkBAIC0zMiw4ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RGVmZXJyZWRQcm9taXNlOworY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ2xpcGJvYXJkSXRlbTsK
K2NsYXNzIERlZmVycmVkUHJvbWlzZTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Ug
ewogcHVibGljOgpAQCAtNDYsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlKGNv
bnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgQ2xpcGJvYXJkSXRlbSYgbV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9h
cmREYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKaW5kZXggODg0ZDQ3NjA5MzMw
OTFjMWZhNDMyMzM3OTRkZjg3NzAxODUxYzM2Ni4uZjMxM2IzY2Y5MjMzNTFiY2M4NDAzZTJmZGVk
YThlZDY0MDcyNWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuY3BwCkBAIC01NCw0ICs1NCwxMSBAQCB2b2lkIENsaXBib2FyZEl0ZW1QYXN0
ZWJvYXJkRGF0YVNvdXJjZTo6Z2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJl
ZAogICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKIH0KIAordm9pZCBD
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhD
bGlwYm9hcmQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0
b21EYXRhPik+JiYgY29tcGxldGlvbikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVk
LiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBi
b2FyZEl0ZW1zCisgICAgLy8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQu
d3JpdGUoKS4KKyAgICBjb21wbGV0aW9uKFdURjo6bnVsbG9wdCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291
cmNlLmgKaW5kZXggYjI2MzI4YmU1Y2EwOWNmNzUyY2Q1OTRmNzgwZTIyOWI2ODRkNWFjNC4uZTVi
NzNmZTQzMWRmMjYyMWIwYjUzNGVhZDc2Y2MzMTA3ZDgyYmU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmRE
YXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0IGZpbmFsOwog
ICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRh
Pik+JiYpIGZpbmFsOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV90eXBlczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcAppbmRleCA0NGJmYTliMTZlZWY4MjMzNjk5NTcxN2NiNDZhMTgxODE3MWE0OWQ0Li5kMTZh
ZDllYzVlNDU0YWEyNzNiMWJhMDE2MGIxMGU5OWVmODM3NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAg
LTMzLDEyICszMywxNSBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiSlNPdmVyY29uc3RyYWluZWRFcnJvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3ZlcmNvbnN0cmFp
bmVkRXJyb3IuaCIKICNpbmNsdWRlICJQYWdlLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383105</attachid>
            <date>2019-11-07 19:05:11 -0800</date>
            <delta_ts>2019-11-08 10:05:35 -0800</delta_ts>
            <desc>FIX WPE/GTK builds</desc>
            <filename>bug-203707-20191107190510.patch</filename>
            <type>text/plain</type>
            <size>18810</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5ZmE1ZDJhYWQwZmMx
YTI3YjIwY2Q1MDEyOTA0NmIwNThhZmI1MS4uMDg5Njc4NjkyOWE0MTVlMDRiYTk3NzEyMTczNjU2
ZDY1N2M3YTgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE5LTExLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBBZGQgc29tZSBpbmZyYXN0cnVjdHVyZSB0byByZXNvbHZlIENsaXBib2FyZEl0ZW1zIGlu
dG8gcGFzdGVib2FyZCBkYXRhIGZvciB3cml0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgbmV3IG1ldGhvZCB0aGF0IHdpbGwg
YmUgdXNlZCBpbiBhIGZ1dHVyZSBwYXRjaCB0byBhZ2dyZWdhdGUgZGF0YSB2ZW5kZWQgYnkgQ2xp
cGJvYXJkSXRlbXMgd2hlbgorICAgICAgICB3cml0aW5nIGl0ZW1zIHRvIHRoZSBwbGF0Zm9ybSBw
YXN0ZWJvYXJkLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlsczsgbm8gbmV3IHRlc3RzLCBzaW5j
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4KKyAgICAgICAgYmVoYXZpb3IgeWV0LgorCisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAg
IEFkZCBhIG5ldyB2aXJ0dWFsIGBjb2xsZWN0RGF0YUZvcldyaXRpbmdgIG1ldGhvZCwgd2hpY2gg
aXMgdXNlZCB3aGVuIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbSBkYXRhIHRvIHRoZQorICAgICAgICBw
YXN0ZWJvYXJkLiBUaGlzIGFsbG93cyBDbGlwYm9hcmRJdGVtcyB0byBhc3luY2hyb25vdXNseSBj
b252ZXJ0IGRhdGEgdG8gYSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBhZnRlciByZXNvbHZpbmcKKyAg
ICAgICAgcHJvbWlzZXMgdG8gc3RyaW5ncyBvciBibG9iczsgb3IgYWx0ZXJuYXRlbHksIGNhbmNl
bCBhbGwgZGF0YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICBJ
biBvcmRlciB0byBjb252ZXJ0IHRoaXMgaW50byBQYXN0ZWJvYXJkQ3VzdG9tRGF0YXMsIHdlIGRv
IHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIHNldCB1cCBhIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBjbGlwYm9hcmQgaXRlbQorICAgICAgICAgICAgZm9y
IGVhY2ggY2xpcGJvYXJkIGl0ZW06CisgICAgICAgICAgICAgICAgZm9yIGVhY2ggdHlwZSBpbiB0
aGUgY2xpcGJvYXJkIGl0ZW06CisgICAgICAgICAgICAgICAgICAgIHRyeSB0byByZXNvbHZlIHRo
ZSBwcm9taXNlCisgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRv
IGEgc3RyaW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgdGhlIHN0cmluZyB0byBj
dXN0b20gZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcHJv
bWlzZSByZXNvbHZlZCB0byBhIGJsb2I6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkIHRo
ZSBibG9iIGRhdGEgYXMgZWl0aGVyIHRleHQgb3IgYW4gQXJyYXlCdWZmZXIgKGRlcGVuZGluZyBv
biB0aGUgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGVpdGhlciB0aGUgbG9h
ZGVkIHN0cmluZyBvciBidWZmZXIgdG8gY3VzdG9tIGRhdGEgdW5kZXIgdGhlIHR5cGUKKyAgICAg
ICAgICAgICAgICAgICAgaWYgdGhlIHByb21pc2UgcmVqZWN0ZWQgb3IgcmVzb2x2ZWQgdG8gYW4g
dW5zdXBwb3J0ZWQgdmFsdWUsIGJhaWwgZnJvbSB0aGVzZSBzdGVwcworCisgICAgICAgIENsaXBi
b2FyZEl0ZW1EYXRhQ29sbGVjdG9yIGFuZCBDbGlwYm9hcmRJdGVtIGNhcnJ5IG91dCB0aGVzZSBz
dGVwcyBhc3luY2hyb25vdXNseSwgc28gdGhhdCBmb3IgZWFjaCBwYWlyIG9mCisgICAgICAgIChj
bGlwYm9hcmQgaXRlbSwgdHlwZSksIHdlIHRyeSB0byByZXNvbHZlIHRoZSBwcm9taXNlIGFuZCB0
aGVuIGxvYWQgdGhlIHJlc3VsdGluZyBibG9iIGlmIG5lY2Vzc2FyeS4KKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlYWRUeXBlRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZh
aWxUb1Jlc29sdmVJdGVtKToKKworICAgICAgICBIZWxwZXIgbWV0aG9kIHRvIGNhbmNlbCBhbGwg
ZGF0YSBjb2xsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gaXRlbS4gVGhpcyBzdG9wcyBhbGwgYWN0aXZl
IEZpbGVSZWFkZXJMb2FkZXJzIGFuZAorICAgICAgICBpbnZva2VzIHRoZSBjb21wbGV0aW9uIGhh
bmRsZXIgd2l0aCBgTnVsbG9wdGAuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OmNhbkZpbmlzaENvbGxlY3RpbmdEYXRhRm9yV3JpdGluZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpm
aW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmdJZlBvc3NpYmxlKToKKworICAgICAgICBDYWxs
ZWQgd2hlbmV2ZXIgbmV3IGRhdGEgaXMgcmVjZWl2ZWQgZm9yIGFueSBjbGlwYm9hcmQgaXRlbSB0
eXBlLiBXaGVuIGFsbCBjbGlwYm9hcmQgZGF0YSB0eXBlcyBoYXZlIGZpbmlzaGVkCisgICAgICAg
IGxvYWRpbmcsIHRoaXMgbWV0aG9kIHdpbGwgcHJvY2VlZCB0byBjb252ZXJ0IHRoZSBsb2FkZWQg
ZGF0YSBpbnRvIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgb2JqZWN0LCBhbmQgaW52b2tlIHRoZQor
ICAgICAgICBjb21wbGV0aW9uIGhhbmRsZXIuIElmIG9uZSBvciBtb3JlIHR5cGVzIGZhaWxlZCB0
byBsb2FkLCB3ZSB3b3VsZCBpbnN0ZWFkIGhhdmUgYmFpbGVkIGFscmVhZHkgYnkgY2FsbGluZwor
ICAgICAgICBkaWRGYWlsVG9SZXNvbHZlSXRlbS4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6CisKKyAgICAgICAg
SXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIGJsb2IgbG9hZGVycywgaW4gc2VhcmNoIGZvciBsb2Fk
ZXJzIHdpdGggZGF0YSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIGFkZGVkIHRvIGVpdGhlcgorICAg
ICAgICB0aGUgY2xpcGJvYXJkIHR5cGUgdG8gdGV4dCBkYXRhIG1hcCwgb3IgdGhlIGNsaXBib2Fy
ZCB0eXBlIHRvIGJ1ZmZlciBtYXAuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZhaWwpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3Vy
Y2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisKKyAgICAgICAgRm9yIHRoZSB0aW1lIGJlaW5n
LCBsZWF2ZSB0aGlzIHVuaW1wbGVtZW50ZWQ7IGEgZnV0dXJlIHBhdGNoIHdpbGwgYWRkIHN1cHBv
cnQgZm9yIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbXMgdGhhdAorICAgICAgICBjYW1lIGZyb20gdGhl
IHBsYXRmb3JtIHBhc3RlYm9hcmQsIGFzIG9wcG9zZWQgdG8gdGhvc2UgY3JlYXRlZCBieSB0aGUg
cGFnZS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1Q
YXN0ZWJvYXJkRGF0YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHA6CisKKyAgICAgICAgQnVpbGQgZml4IGR1ZSB0byB1bmlmaWVkIHNv
dXJjZXMuCisKIDIwMTktMTEtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2NyZWVuIGxvY2tzIHdoaWxlIHdhdGNoaW5nIHByZXZpb3VzbHktbXV0ZWQtdGhl
bi11bm11dGVkIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCmluZGV4IDA4NjZkZTkyZTQyOGI2YmZiZWQz
NWY1NDUzYmZkNmE0N2E0MzY2MzguLjg5ZjMzMGQ1OTNhNmJjMDE4ZjliYmUxNzEwM2Y1MjY5YWJh
MTI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwCkBAIC05Miw2ICs5MiwxMSBAQCB2b2lkIENsaXBib2Fy
ZEl0ZW06OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgbV9kYXRhU291cmNlLT5nZXRUeXBlKHR5cGUsIFdURk1vdmUocHJvbWlz
ZSkpOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlw
Ym9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPik+JiYgY29tcGxldGlvbikKK3sKKyAgICBtX2RhdGFTb3VyY2UtPmNv
bGxlY3REYXRhRm9yV3JpdGluZyhkZXN0aW5hdGlvbiwgV1RGTW92ZShjb21wbGV0aW9uKSk7Cit9
CisKIE5hdmlnYXRvciogQ2xpcGJvYXJkSXRlbTo6bmF2aWdhdG9yKCkKIHsKICAgICByZXR1cm4g
bV9uYXZpZ2F0b3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKaW5kZXggNDlkMjU0NzllNWNhNjIwNDNmMDdl
ODYwNTI1M2M5NjM2OTg0ODQxMi4uMjIyZGYxNDNmOGU4MTg5ZWU3ZDRiZDVhOTkzM2Y3MTA4NmJl
ZDY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBDbGlwYm9hcmRJdGVt
RGF0YVNvdXJjZTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTVByb21pc2U7CiBj
bGFzcyBOYXZpZ2F0b3I7CitjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIHN0cnVjdCBQYXN0
ZWJvYXJkSXRlbUluZm87CiAKIGNsYXNzIENsaXBib2FyZEl0ZW0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxDbGlwYm9hcmRJdGVtPiB7CkBAIC01OSw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
U3RyaW5nPiB0eXBlcygpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAorICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5n
KENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJik7CisKICAgICBQcmVzZW50YXRpb25TdHlsZSBwcmVz
ZW50YXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU3R5bGU7IH07CiAg
ICAgTmF2aWdhdG9yKiBuYXZpZ2F0b3IoKTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBl
NzI2MDUxMTQ0OGQ5Y2I0OGI1NGZiYmJlNDQ0Zjk1ODZmYmY5YzgwLi41YTEyZjkwOTM3ZTFmZDIy
MzZiNTc3MTU2MGY1ZGE4ZDhmNzZlMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjcsNyArMjcsMTEgQEAKICNpbmNsdWRlICJDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgiCiAKICNpbmNsdWRlICJCbG9iLmgiCisjaW5j
bHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbS5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKQEAgLTM2LDYgKzQwLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgc3RhdGljIHJl
YWRUeXBlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09
ICJ0ZXh0L3VyaS1saXN0Il9zIHx8IHR5cGUgPT0gInRleHQvcGxhaW4iX3MgfHwgdHlwZSA9PSAi
dGV4dC9odG1sIl9zKQorICAgICAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4
dDsKKyAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXI7Cit9CisK
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFJlZlB0cjxET01Qcm9taXNlPj4+JiYgaXRlbVByb21pc2VzKQogICAgIDogQ2xpcGJvYXJkSXRl
bURhdGFTb3VyY2UoaXRlbSkKICAgICAsIG1faXRlbVByb21pc2VzKFdURk1vdmUoaXRlbVByb21p
c2VzKSkKQEAgLTk0LDQgKzEwNSwxNzQgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9
KTsKIH0KIAordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0
YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Ly8gQWJvcnQgYW55IG9uZ29pbmcgZGF0YSBjb2xsZWN0aW9uIHNlc3Npb24uCisgICAgZGlkRmFp
bFRvUmVzb2x2ZUl0ZW0oKTsKKworICAgIG1fbGFzdExvYWRBdHRlbXB0SWRlbnRpZmllciA9IExv
YWRBdHRlbXB0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uKTsKKyAgICBtX3dyaXRpbmdEZXN0aW5hdGlvbiA9IG1ha2VX
ZWFrUHRyKGRlc3RpbmF0aW9uKTsKKworICAgIGZvciAoYXV0byB0eXBlQW5kSXRlbSA6IG1faXRl
bVByb21pc2VzKSB7CisgICAgICAgIGF1dG8gcHJvbWlzZSA9IHR5cGVBbmRJdGVtLnZhbHVlOwor
ICAgICAgICBwcm9taXNlLT53aGVuU2V0dGxlZChbdGhpcywgaW5pdGlhbENvdW50ID0gbV9sYXN0
TG9hZEF0dGVtcHRJZGVudGlmaWVyLCBwcm90ZWN0ZWRJdGVtID0gbWFrZVJlZlB0cihtX2l0ZW0p
LCBwcm9taXNlLCB0eXBlID0gdHlwZUFuZEl0ZW0ua2V5XSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmIChtX2xhc3RMb2FkQXR0ZW1wdElkZW50aWZpZXIgIT0gaW5pdGlhbENvdW50KQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwcm9taXNl
LT5yZXN1bHQoKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
ZGlkRmFpbFRvUmVzb2x2ZUl0ZW0oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gY2xpcGJvYXJkID0gbWFrZVJlZlB0cihtX3dyaXRp
bmdEZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIWNsaXBib2FyZCkgeworICAg
ICAgICAgICAgICAgIGRpZEZhaWxUb1Jlc29sdmVJdGVtKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNsaXBib2FyZC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgZGlkRmFpbFRvUmVzb2x2ZUl0
ZW0oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFN0cmluZyBzdHJpbmc7CisgICAgICAgICAgICByZXN1bHQuZ2V0U3RyaW5nKHByb21pc2Ut
Pmdsb2JhbE9iamVjdCgpLCBzdHJpbmcpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgICAgICBtX2xvYWRlZFRleHQuc2V0KHR5cGUsIHN0cmluZyk7Cisg
ICAgICAgICAgICAgICAgZmluaXNoQ29sbGVjdGluZ0RhdGFGb3JXcml0aW5nSWZQb3NzaWJsZSgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGRpZEZhaWxUb1Jlc29s
dmVJdGVtKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoYXV0byBibG9iID0gbWFrZVJlZlB0cihKU0Jsb2I6OnRvV3JhcHBlZChyZXN1
bHQuZ2V0T2JqZWN0KCktPnZtKCksIHJlc3VsdC5nZXRPYmplY3QoKSkpKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KHJlYWRUeXBl
Rm9yTUlNRVR5cGUodHlwZSksIHRoaXMpOworICAgICAgICAgICAgICAgIGxvYWRlci0+c3RhcnQo
Y2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAgICAgaWYgKGxvYWRlci0+ZXJyb3JDb2RlKCkgPT0gRmlsZUVycm9y
OjpPSykgeworICAgICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJzQnlUeXBlLmFwcGVuZCh7
IHR5cGUsIFdURk1vdmUobG9hZGVyKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGlkRmFpbFRv
UmVzb2x2ZUl0ZW0oKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZhaWxUb1Jlc29sdmVJdGVtKCkKK3sKKyAgICBpZiAo
IW1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7Cisg
ICAgYXV0byBibG9iTG9hZGVyc0J5VHlwZSA9IHN0ZDo6ZXhjaGFuZ2UobV9ibG9iTG9hZGVyc0J5
VHlwZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8mIHR5cGVBbmRMb2FkZXIgOiBibG9iTG9hZGVyc0J5
VHlwZSkKKyAgICAgICAgdHlwZUFuZExvYWRlci52YWx1ZS0+Y2FuY2VsKCk7CisKKyAgICBtX2xv
YWRlZFRleHQuY2xlYXIoKTsKKyAgICBtX2xvYWRlZEJ1ZmZlcnMuY2xlYXIoKTsKKyAgICBtX3dy
aXRpbmdEZXN0aW5hdGlvbiA9IG51bGxwdHI7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0KTsKK30KKworYm9vbCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjYW5G
aW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmcoKSBjb25zdAoreworICAgIGlmICghbV9jb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMoKSkgeworICAgICAgICBpZiAoIW1fbG9hZGVkVGV4dC5jb250YWlucyh0eXBl
KSAmJiAhbV9sb2FkZWRCdWZmZXJzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlOjpmaW5pc2hDb2xsZWN0aW5nRGF0YUZvcldyaXRpbmdJZlBvc3Np
YmxlKCkKK3sKKyAgICBpZiAoIWNhbkZpbmlzaENvbGxlY3RpbmdEYXRhRm9yV3JpdGluZygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNo
YW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOworICAgIGF1dG8gdGV4dCA9IHN0ZDo6ZXhj
aGFuZ2UobV9sb2FkZWRUZXh0LCB7IH0pOworICAgIGF1dG8gYnVmZmVycyA9IHN0ZDo6ZXhjaGFu
Z2UobV9sb2FkZWRCdWZmZXJzLCB7IH0pOworICAgIGF1dG8gY2xpcGJvYXJkID0gbWFrZVJlZlB0
cihtX3dyaXRpbmdEZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgbV93cml0aW5nRGVzdGluYXRpb24g
PSBudWxscHRyOworICAgIG1fYmxvYkxvYWRlcnNCeVR5cGUuY2xlYXIoKTsKKworICAgIGlmICgh
Y2xpcGJvYXJkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihjbGlw
Ym9hcmQtPmZyYW1lKCkpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
ZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBbGwgY2xpcGJvYXJkIHR5cGVzIGhhdmUgYmVlbiBs
b2FkZWQ7IHByb2NlZWQgdG8gY29udmVydCB0aGUgbG9hZGVkIGRhdGEgaW50byBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YS4KKyAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOworICAgIGZv
ciAoYXV0byYgdHlwZSA6IHR5cGVzKCkpIHsKKyAgICAgICAgYXV0byBkYXRhID0gdGV4dC5nZXQo
dHlwZSk7CisgICAgICAgIGlmIChkYXRhLmlzTnVsbCgpKQorICAgICAgICAgICAgY3VzdG9tRGF0
YS53cml0ZURhdGEodHlwZSwgKmJ1ZmZlcnMuZ2V0KHR5cGUpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBkYXRhKTsKKyAgICB9CisgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oZG9jdW1lbnQtPm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJv
YXJkKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgV1RGTW92ZShjdXN0b21EYXRhKSB9KTsK
K30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpkaWRGaW5pc2hMb2Fk
aW5nKCkKK3sKKyAgICBib29sIGRpZEZhaWwgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHR5cGVB
bmRMb2FkZXIgOiBtX2Jsb2JMb2FkZXJzQnlUeXBlKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IHR5
cGVBbmRMb2FkZXIua2V5OworICAgICAgICBpZiAobV9sb2FkZWRUZXh0LmNvbnRhaW5zKHR5cGUp
IHx8IG1fbG9hZGVkQnVmZmVycy5jb250YWlucyh0eXBlKSkgeworICAgICAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBleHRyYWN0ZWQgZGF0YSBmcm9tIHRoaXMgbG9hZGVyLgorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBsb2FkZXIgPSB0eXBlQW5kTG9h
ZGVyLnZhbHVlOworICAgICAgICBpZiAobG9hZGVyLT5lcnJvckNvZGUoKSAhPSBGaWxlRXJyb3I6
Ok9LKSB7CisgICAgICAgICAgICBkaWRGYWlsID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvYWRlci0+Ynl0ZXNMb2FkZWQoKSAhPSBsb2FkZXIt
PnRvdGFsQnl0ZXMoKSB8fCAhbG9hZGVyLT5ieXRlc0xvYWRlZCgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgYXV0byBzdHJpbmdSZXN1bHQgPSByZWFkVHlwZUZvck1JTUVUeXBl
KHR5cGUpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc1RleHQgPyBsb2FkZXItPnN0cmluZ1Jl
c3VsdCgpIDogbnVsbFN0cmluZygpOworICAgICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051bGwo
KSkKKyAgICAgICAgICAgIG1fbG9hZGVkVGV4dC5zZXQodHlwZSwgV1RGTW92ZShzdHJpbmdSZXN1
bHQpKTsKKyAgICAgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IGxvYWRlci0+YXJyYXlC
dWZmZXJSZXN1bHQoKSkKKyAgICAgICAgICAgIG1fbG9hZGVkQnVmZmVycy5zZXQodHlwZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZGlkRmFpbCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChkaWRGYWlsKQorICAgICAgICBkaWRGYWlsVG9SZXNvbHZlSXRlbSgp
OworICAgIGVsc2UKKyAgICAgICAgZmluaXNoQ29sbGVjdGluZ0RhdGFGb3JXcml0aW5nSWZQb3Nz
aWJsZSgpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmRpZEZh
aWwoaW50KQoreworICAgIGRpZEZhaWxUb1Jlc29sdmVJdGVtKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aAppbmRleCA2ZmQ4ZGRhNTc2YjdiNTJiMDgyMzAxOTZmZTk0OTQwNGMxNDc0OGI0Li45ZTA4Mzc2
OGMxYTU2ODkzMjRiMTUyNTY2YTk4ZmU1YjgyZDNiODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0yNiwxMiArMjYsMTggQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVByb21pc2U7CitjbGFzcyBGaWxlUmVh
ZGVyTG9hZGVyOworY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiAKLWNsYXNzIENsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Ug
eworY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9h
cmRJdGVtRGF0YVNvdXJjZSwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UoQ2xpcGJvYXJkSXRlbSYsIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBS
ZWZQdHI8RE9NUHJvbWlzZT4+PiYmKTsKQEAgLTQwLDYgKzQ2LDI3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGdl
dFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CisgICAg
dm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmKSBmaW5h
bDsKKworICAgIHZvaWQgZGlkRmFpbFRvUmVzb2x2ZUl0ZW0oKTsKKyAgICB2b2lkIGZpbmlzaENv
bGxlY3RpbmdEYXRhRm9yV3JpdGluZ0lmUG9zc2libGUoKTsKKyAgICBib29sIGNhbkZpbmlzaENv
bGxlY3RpbmdEYXRhRm9yV3JpdGluZygpIGNvbnN0OworCisgICAgLy8gRmlsZVJlYWRlckxvYWRl
ckNsaWVudCBtZXRob2RzLgorICAgIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YSgpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZygpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChpbnQpIGZpbmFsOworCisgICAgZW51bSBM
b2FkQXR0ZW1wdElkZW50aWZpZXJUeXBlIHsgfTsKKyAgICB1c2luZyBMb2FkQXR0ZW1wdElkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPExvYWRBdHRlbXB0SWRlbnRpZmllclR5cGU+OworCisg
ICAgTG9hZEF0dGVtcHRJZGVudGlmaWVyIG1fbGFzdExvYWRBdHRlbXB0SWRlbnRpZmllcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+
IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIHN0
ZDo6dW5pcXVlX3B0cjxGaWxlUmVhZGVyTG9hZGVyPj4+IG1fYmxvYkxvYWRlcnNCeVR5cGU7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9sb2FkZWRUZXh0OworICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gbV9sb2FkZWRCdWZmZXJzOworICAgIFdlYWtQdHI8Q2xp
cGJvYXJkPiBtX3dyaXRpbmdEZXN0aW5hdGlvbjsKIAogICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBSZWZQdHI8RE9NUHJvbWlzZT4+PiBtX2l0ZW1Qcm9taXNlczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
RGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbURhdGFTb3VyY2UuaAppbmRleCA5MmE2ZDFmZDNlZTY5NWJlNzU2NGQ1OWVkNDFj
ZDc2NmE3OWI0MDgwLi5iZjFkYWFjZjcwMzg4MzUwMWU1ZTkyMjUyNmVlNTg4YmYyNGRiZTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKQEAgLTMyLDggKzMyLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFzcyBDbGlwYm9h
cmQ7CiBjbGFzcyBDbGlwYm9hcmRJdGVtOworY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogCiBjbGFz
cyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiBwdWJsaWM6CkBAIC00Niw2ICs0Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJv
YXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4pPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBDbGlwYm9hcmRJdGVt
JiBtX2l0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291
cmNlLmNwcAppbmRleCA4ODRkNDc2MDkzMzA5MWMxZmE0MzIzMzc5NGRmODc3MDE4NTFjMzY2Li5m
MzEzYjNjZjkyMzM1MWJjYzg0MDNlMmZkZWRhOGVkNjQwNzI1YjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKQEAgLTU0LDQgKzU0LDEx
IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlOjpnZXRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkCiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RB
bGxvd2VkRXJyb3IpOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQoreworICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgd3Jp
dGluZyBwbGF0Zm9ybS1iYWNrZWQgQ2xpcGJvYXJkSXRlbXMKKyAgICAvLyBiYWNrIHRvIHRoZSBw
YXN0ZWJvYXJkIHVzaW5nIENsaXBib2FyZC53cml0ZSgpLgorICAgIGNvbXBsZXRpb24oV1RGOjpu
dWxsb3B0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmRE
YXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaAppbmRleCBiMjYzMjhiZTVjYTA5Y2Y3NTJj
ZDU5NGY3ODBlMjI5YjY4NGQ1YWM0Li5lNWI3M2ZlNDMxZGYyNjIxYjBiNTM0ZWFkNzZjYzMxMDdk
ODJiZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3Vy
Y2UuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdERhdGFGb3JX
cml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CiAKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX3R5cGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDQ0YmZhOWIxNmVlZjgyMzM2OTk1
NzE3Y2I0NmExODE4MTcxYTQ5ZDQuLmQxNmFkOWVjNWU0NTRhYTI3M2IxYmEwMTYwYjEwZTk5ZWY4
Mzc2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzMsMTIgKzMzLDE1IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU092ZXJjb25zdHJhaW5lZEVycm9yLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgor
I2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJPdmVyY29uc3RyYWluZWRFcnJvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383138</attachid>
            <date>2019-11-08 10:05:36 -0800</date>
            <delta_ts>2019-11-08 22:58:05 -0800</delta_ts>
            <desc>v3</desc>
            <filename>bug-203707-20191108100535.patch</filename>
            <type>text/plain</type>
            <size>18997</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5ZmE1ZDJhYWQwZmMx
YTI3YjIwY2Q1MDEyOTA0NmIwNThhZmI1MS4uMDE4YTE4ZTk3Njk2YjZkNTkzNWQ2NmI5YzRmMzUy
ZTYxOTZhYWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE5LTExLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBBZGQgc29tZSBpbmZyYXN0cnVjdHVyZSB0byByZXNvbHZlIENsaXBib2FyZEl0ZW1zIGlu
dG8gcGFzdGVib2FyZCBkYXRhIGZvciB3cml0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGEgbmV3IG1ldGhvZCB0aGF0IHdpbGwg
YmUgdXNlZCBpbiBhIGZ1dHVyZSBwYXRjaCB0byBhZ2dyZWdhdGUgZGF0YSB2ZW5kZWQgYnkgQ2xp
cGJvYXJkSXRlbXMgd2hlbgorICAgICAgICB3cml0aW5nIGl0ZW1zIHRvIHRoZSBwbGF0Zm9ybSBw
YXN0ZWJvYXJkLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlsczsgbm8gbmV3IHRlc3RzLCBzaW5j
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4KKyAgICAgICAgYmVoYXZpb3IgeWV0LgorCisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAg
IEFkZCBhIG5ldyB2aXJ0dWFsIGBjb2xsZWN0RGF0YUZvcldyaXRpbmdgIG1ldGhvZCwgd2hpY2gg
aXMgdXNlZCB3aGVuIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbSBkYXRhIHRvIHRoZQorICAgICAgICBw
YXN0ZWJvYXJkLiBUaGlzIGFsbG93cyBDbGlwYm9hcmRJdGVtcyB0byBhc3luY2hyb25vdXNseSBj
b252ZXJ0IGRhdGEgdG8gYSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBhZnRlciByZXNvbHZpbmcKKyAg
ICAgICAgcHJvbWlzZXMgdG8gc3RyaW5ncyBvciBibG9iczsgb3IgYWx0ZXJuYXRlbHksIGNhbmNl
bCBhbGwgZGF0YSBsb2FkaW5nIGlmIGEgcHJvbWlzZSBpcyByZWplY3RlZC4KKworICAgICAgICBJ
biBvcmRlciB0byBjb252ZXJ0IGl0ZW1zIGludG8gYSBsaXN0IG9mIFBhc3RlYm9hcmRDdXN0b21E
YXRhLCB3ZSBkbyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIHNldCB1cCBhIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBjbGlwYm9hcmQgaXRlbQorICAgICAgICBm
b3IgZWFjaCBjbGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAgIGZvciBlYWNoIHR5cGUgaW4gdGhl
IGNsaXBib2FyZCBpdGVtOgorICAgICAgICAgICAgICAgIHRyeSB0byByZXNvbHZlIHRoZSBwcm9t
aXNlCisgICAgICAgICAgICAgICAgaWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBzdHJpbmc6
CisgICAgICAgICAgICAgICAgICAgIHdyaXRlIHRoZSBzdHJpbmcgdG8gY3VzdG9tIGRhdGEgdW5k
ZXIgdGhlIHR5cGUKKyAgICAgICAgICAgICAgICBpZiB0aGUgcHJvbWlzZSByZXNvbHZlZCB0byBh
IGJsb2I6CisgICAgICAgICAgICAgICAgICAgIGxvYWQgdGhlIGJsb2IgZGF0YSBhcyBlaXRoZXIg
dGV4dCBvciBhbiBBcnJheUJ1ZmZlciAoZGVwZW5kaW5nIG9uIHRoZSB0eXBlKQorICAgICAgICAg
ICAgICAgICAgICB3cml0ZSBlaXRoZXIgdGhlIGxvYWRlZCBzdHJpbmcgb3IgYnVmZmVyIHRvIGN1
c3RvbSBkYXRhIHVuZGVyIHRoZSB0eXBlCisgICAgICAgICAgICAgICAgaWYgdGhlIHByb21pc2Ug
cmVqZWN0ZWQgb3IgcmVzb2x2ZWQgdG8gYW4gdW5zdXBwb3J0ZWQgdmFsdWUsIGJhaWwgZnJvbSB0
aGVzZSBzdGVwcworCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFR5cGVGb3JNSU1F
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
Ojpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGU6OkNsaXBib2FyZEl0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlOjp+Q2xpcGJvYXJkSXRlbVR5cGUp
OgorCisgICAgICAgIEFkZCBhIGhlbHBlciBjbGFzcyB0byBob2xkIHN0YXRlIGFzc29jaWF0ZWQg
d2l0aCBsb2FkaW5nIGVhY2ggY2xpcGJvYXJkIHR5cGUuIFRoaXMgaW5jbHVkZXMgdGhlIGZpbmFs
IGRhdGEKKyAgICAgICAgaXRzZWxmIChhIHZhcmlhbnQgdGhhdCBob2xkcyBlaXRoZXIgYSBTdHJp
bmcgb3IgQmxvYiksIGFzIHdlbGwgYXMgYSBGaWxlUmVhZGVyTG9hZGVyIHdoaWNoIG1heSBiZSBw
cmVzZW50IGluIHRoZQorICAgICAgICBjYXNlIHdoZXJlIHRoZSBjbGlwYm9hcmQgaXRlbSB0eXBl
IHJlc29sdmVzIHRvIGEgYmxvYi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGU6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGU6OmRpZEZhaWwpOgorCisgICAgICAgIEVhY2ggQ2xpcGJvYXJkSXRlbVR5cGUg
aXMgYWxzbyB0aGUgY2xpZW50IGZvciBpdHMgRmlsZVJlYWRlckxvYWRlciwgaWYgcHJlc2VudDsg
d2hlbiB0aGUgRmlsZVJlYWRlckxvYWRlcgorICAgICAgICBmaW5pc2hlcyBsb2FkaW5nIG9yIGZh
aWxzLCB3ZSB0aGVuIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBsb2FkZXIgYW5kIGludm9rZSB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZTo6aW52b2tlQ29tcGxldGlvbkhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
Q2xpcGJvYXJkSXRlbVR5cGU6OmRpZFJlc29sdmVUb0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGU6OmRpZEZh
aWxUb1Jlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGU6OmRpZFJlc29sdmVUb1N0cmluZyk6CisKKyAgICAg
ICAgT25lIG9mIHRoZXNlIHRocmVlIG1ldGhvZHMgaXMgY2FsbGVkIHdoZW4gdGhlIHByb21pc2Ug
Y29ycmVzcG9uZGluZyB0byBhIGNsaXBib2FyZCB0eXBlIGlzIGVpdGhlciByZXNvbHZlZCBvcgor
ICAgICAgICByZWplY3RlZC4gSWYgcmVqZWN0ZWQgb3IgcmVzb2x2ZWQgdG8gYW4gaW5jb21wYXRp
YmxlIHR5cGUsIHdlIGNhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBpbW1lZGlhdGVseSB3aXRo
IG5vCisgICAgICAgIGRhdGE7IGlmIHdlIHJlc29sdmUgdG8gYSBzdHJpbmcsIHdlIHNpbXBseSBz
dG9yZSB0aGUgc3RyaW5nIGluIGBtX2RhdGFgIGFuZCBpbnZva2UgdGhlIGNvbXBsZXRpb24gaGFu
ZGxlcjsKKyAgICAgICAgb3RoZXJ3aXNlLCBpZiB3ZSByZXNvbHZlIHRvIGEgYmxvYiwgd2UgY3Jl
YXRlIGEgbmV3IGxvYWRlciB0byBmZXRjaCBlaXRoZXIgdGhlIHN0cmluZyBvciBkYXRhIGJ1ZmZl
ciBmb3IgdGhlCisgICAgICAgIGJsb2IsIGFuZCB3YWl0IHVudGlsIGVpdGhlciBkaWRGaW5pc2hM
b2FkaW5nIG9yIGRpZEZhaWwgaXMgY2FsbGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjpDbGlwYm9hcmRJdGVtVHlwZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZTo6ZGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbVBhc3RlYm9h
cmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcpOgorCisgICAgICAgIEZvciB0aGUg
dGltZSBiZWluZywgbGVhdmUgdGhpcyB1bmltcGxlbWVudGVkOyBhIGZ1dHVyZSBwYXRjaCB3aWxs
IGFkZCBzdXBwb3J0IGZvciB3cml0aW5nIENsaXBib2FyZEl0ZW1zIHRoYXQKKyAgICAgICAgY2Ft
ZSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBhcyBvcHBvc2VkIHRvIHRob3NlIGNyZWF0
ZWQgYnkgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaDoKKwogMjAxOS0xMS0wNiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JlZW4gbG9ja3Mgd2hpbGUgd2F0
Y2hpbmcgcHJldmlvdXNseS1tdXRlZC10aGVuLXVubXV0ZWQgdmlkZW8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAK
aW5kZXggMDg2NmRlOTJlNDI4YjZiZmJlZDM1ZjU0NTNiZmQ2YTQ3YTQzNjYzOC4uODlmMzMwZDU5
M2E2YmMwMThmOWJiZTE3MTAzZjUyNjlhYmExMjQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTky
LDYgKzkyLDExIEBAIHZvaWQgQ2xpcGJvYXJkSXRlbTo6Z2V0VHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2RhdGFTb3VyY2UtPmdl
dFR5cGUodHlwZSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKK3ZvaWQgQ2xpcGJvYXJkSXRlbTo6
Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9u
KQoreworICAgIG1fZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKGRlc3RpbmF0aW9u
LCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKK30KKwogTmF2aWdhdG9yKiBDbGlwYm9hcmRJdGVtOjpu
YXZpZ2F0b3IoKQogewogICAgIHJldHVybiBtX25hdmlnYXRvci5nZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaApp
bmRleCA0OWQyNTQ3OWU1Y2E2MjA0M2YwN2U4NjA1MjUzYzk2MzY5ODQ4NDEyLi4yMjJkZjE0M2Y4
ZTgxODllZTdkNGJkNWE5OTMzZjcxMDg2YmVkNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oCkBAIC00MCw2ICs0
MCw3IEBAIGNsYXNzIENsaXBib2FyZEl0ZW1EYXRhU291cmNlOwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOwogY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIE5hdmlnYXRvcjsKK2NsYXNzIFBhc3RlYm9h
cmRDdXN0b21EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIAogY2xhc3MgQ2xpcGJv
YXJkSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW0+IHsKQEAgLTU5LDYgKzYw
LDggQEAgcHVibGljOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CiAgICAgdm9p
ZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCisgICAg
dm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmKTsKKwog
ICAgIFByZXNlbnRhdGlvblN0eWxlIHByZXNlbnRhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVzZW50YXRpb25TdHlsZTsgfTsKICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvcigpOwogICAg
IENsaXBib2FyZCogY2xpcGJvYXJkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGU3MjYwNTExNDQ4ZDljYjQ4YjU0ZmJiYmU0NDRmOTU4
NmZiZjljODAuLmVmMTA0ZThmN2NiZWUxZjE0Zjc2MGNhMTVhYTdjNmM5NWE1ZjgxZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNyw3
ICsyNywxMSBAQAogI2luY2x1ZGUgIkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCIK
IAogI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJD
bGlwYm9hcmRJdGVtLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGaWxlUmVh
ZGVyTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgpAQCAtMzYsNiArNDAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGaWxlUmVhZGVy
TG9hZGVyOjpSZWFkVHlwZSBzdGF0aWMgcmVhZFR5cGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MgfHwgdHlwZSA9PSAi
dGV4dC9wbGFpbiJfcyB8fCB0eXBlID09ICJ0ZXh0L2h0bWwiX3MpCisgICAgICAgIHJldHVybiBG
aWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNUZXh0OworICAgIHJldHVybiBGaWxlUmVhZGVyTG9hZGVy
OjpSZWFkQXNBcnJheUJ1ZmZlcjsKK30KKwogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZShDbGlwYm9hcmRJdGVtJiBpdGVtLCBW
ZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPERPTVByb21pc2U+Pj4mJiBpdGVtUHJv
bWlzZXMpCiAgICAgOiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZShpdGVtKQogICAgICwgbV9pdGVt
UHJvbWlzZXMoV1RGTW92ZShpdGVtUHJvbWlzZXMpKQpAQCAtOTQsNCArMTA1LDE2OSBAQCB2b2lk
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RGVmZXJyZWRQcgogICAgIH0pOwogfQogCit2b2lkIENsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRh
Pik+JiYgY29tcGxldGlvbikKK3sKKyAgICBtX2l0ZW1UeXBlTG9hZGVycy5jbGVhcigpOworICAg
IEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbik7CisgICAgbV93cml0aW5nRGVzdGluYXRpb24gPSBtYWtlV2Vh
a1B0cihkZXN0aW5hdGlvbik7CisgICAgbV9udW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcyA9
IG1faXRlbVByb21pc2VzLnNpemUoKTsKKyAgICBtX2l0ZW1UeXBlTG9hZGVycyA9IG1faXRlbVBy
b21pc2VzLm1hcChbJl0gKGF1dG8mIHR5cGVBbmRJdGVtKSB7CisgICAgICAgIGF1dG8gdHlwZSA9
IHR5cGVBbmRJdGVtLmtleTsKKyAgICAgICAgYXV0byBpdGVtVHlwZSA9IENsaXBib2FyZEl0ZW1U
eXBlOjpjcmVhdGUodHlwZSwgW3RoaXMsIHByb3RlY3RlZEl0ZW0gPSBtYWtlUmVmKG1faXRlbSld
IHsKKyAgICAgICAgICAgIGlmICghLS1tX251bWJlck9mUGVuZGluZ0NsaXBib2FyZFR5cGVzKQor
ICAgICAgICAgICAgICAgIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGF1dG8gcHJvbWlzZSA9IHR5cGVBbmRJdGVtLnZhbHVlOworICAgICAgICBwcm9t
aXNlLT53aGVuU2V0dGxlZChbZGVzdGluYXRpb24gPSBtX3dyaXRpbmdEZXN0aW5hdGlvbiwgcHJv
bWlzZSwgdHlwZSwgd2Vha0l0ZW1UeXBlID0gbWFrZVdlYWtQdHIoaXRlbVR5cGUucHRyKCkpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha0l0ZW1UeXBlKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBpdGVtVHlwZSA9IG1ha2VSZWYoKndlYWtJ
dGVtVHlwZSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHByb21pc2UtPnJlc3VsdCgpOwor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBpdGVtVHlwZS0+ZGlk
RmFpbFRvUmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgYXV0byBjbGlwYm9hcmQgPSBtYWtlUmVmUHRyKGRlc3RpbmF0aW9uLmdl
dCgpKTsKKyAgICAgICAgICAgIGlmICghY2xpcGJvYXJkKSB7CisgICAgICAgICAgICAgICAgaXRl
bVR5cGUtPmRpZEZhaWxUb1Jlc29sdmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpdGVtVHlwZS0+ZGlkRmFpbFRvUmVzb2x2ZSgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
U3RyaW5nIHRleHQ7CisgICAgICAgICAgICByZXN1bHQuZ2V0U3RyaW5nKHByb21pc2UtPmdsb2Jh
bE9iamVjdCgpLCB0ZXh0KTsKKyAgICAgICAgICAgIGlmICghdGV4dC5pc051bGwoKSkgeworICAg
ICAgICAgICAgICAgIGl0ZW1UeXBlLT5kaWRSZXNvbHZlVG9TdHJpbmcodGV4dCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5pc09iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgaXRlbVR5cGUtPmRpZEZhaWxUb1Jlc29s
dmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChhdXRvIGJsb2IgPSBtYWtlUmVmUHRyKEpTQmxvYjo6dG9XcmFwcGVkKHJlc3VsdC5n
ZXRPYmplY3QoKS0+dm0oKSwgcmVzdWx0LmdldE9iamVjdCgpKSkpCisgICAgICAgICAgICAgICAg
aXRlbVR5cGUtPmRpZFJlc29sdmVUb0Jsb2IoKmNsaXBib2FyZC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBibG9iLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGl0ZW1UeXBlLT5kaWRGYWlsVG9SZXNvbHZlKCk7CisgICAgICAgIH0pOworCisg
ICAgICAgIHJldHVybiBpdGVtVHlwZTsKKyAgICB9KTsKKworICAgIGlmICghbV9udW1iZXJPZlBl
bmRpbmdDbGlwYm9hcmRUeXBlcykKKyAgICAgICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsK
K30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0
aW9uSGFuZGxlcigpCit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwg
eyB9KTsKKyAgICBhdXRvIGl0ZW1UeXBlTG9hZGVycyA9IHN0ZDo6ZXhjaGFuZ2UobV9pdGVtVHlw
ZUxvYWRlcnMsIHsgfSk7CisgICAgYXV0byBjbGlwYm9hcmQgPSBtYWtlUmVmUHRyKG1fd3JpdGlu
Z0Rlc3RpbmF0aW9uLmdldCgpKTsKKyAgICBtX3dyaXRpbmdEZXN0aW5hdGlvbiA9IG51bGxwdHI7
CisKKyAgICBpZiAoIWNsaXBib2FyZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBmcmFtZSA9IG1h
a2VSZWZQdHIoY2xpcGJvYXJkLT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7Cisg
ICAgaWYgKCFkb2N1bWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGFzdGVib2FyZEN1c3RvbURhdGEg
Y3VzdG9tRGF0YTsKKyAgICBmb3IgKGF1dG8mIGl0ZW1UeXBlIDogaXRlbVR5cGVMb2FkZXJzKSB7
CisgICAgICAgIGF1dG8gdHlwZSA9IGl0ZW1UeXBlLT50eXBlKCk7CisgICAgICAgIGF1dG8mIGRh
dGEgPSBpdGVtVHlwZS0+ZGF0YSgpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KGRhdGEpICYmICEhV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSkKKyAgICAgICAgICAg
IGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSk7Cisg
ICAgICAgIGVsc2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGRvY3Vt
ZW50LT5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGN1c3RvbURhdGEpKTsKK30KKworQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGU6OkNsaXBib2FyZEl0ZW1UeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQoreworfQorCitDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
OjpDbGlwYm9hcmRJdGVtVHlwZTo6fkNsaXBib2FyZEl0ZW1UeXBlKCkKK3sKKyAgICBpbnZva2VD
b21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBBU1NF
UlQobV9ibG9iTG9hZGVyKTsKKyAgICBhdXRvIHN0cmluZ1Jlc3VsdCA9IHJlYWRUeXBlRm9yTUlN
RVR5cGUobV90eXBlKSA9PSBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNUZXh0ID8gbV9ibG9iTG9h
ZGVyLT5zdHJpbmdSZXN1bHQoKSA6IG51bGxTdHJpbmcoKTsKKyAgICBpZiAoIXN0cmluZ1Jlc3Vs
dC5pc051bGwoKSkKKyAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKKyAgICBlbHNl
IGlmIChhdXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgp
KQorICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSkgfTsKKyAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOworICAgIGludm9rZUNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGU6OmRpZEZhaWwoaW50KQoreworICAgIEFTU0VSVChtX2Jsb2JMb2FkZXIp
OworICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CisgICAgaW52b2tlQ29tcGxldGlvbkhhbmRs
ZXIoKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQoreworICAgIGlmIChhdXRvIGNv
bXBsZXRpb24gPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0
aW9uKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGU6OmRpZFJlc29sdmVUb0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmVmPEJsb2I+JiYgYmxvYikKK3sKKyAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7Cisg
ICAgbV9ibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihyZWFkVHlwZUZv
ck1JTUVUeXBlKG1fdHlwZSksIHRoaXMpOworICAgIG1fYmxvYkxvYWRlci0+c3RhcnQoJmNvbnRl
eHQsIFdURk1vdmUoYmxvYikpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlOjpkaWRGYWlsVG9SZXNvbHZlKCkKK3sKKyAgICBBU1NF
UlQoIW1fYmxvYkxvYWRlcik7CisgICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
dm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZTo6
ZGlkUmVzb2x2ZVRvU3RyaW5nKGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBBU1NFUlQoIW1f
YmxvYkxvYWRlcik7CisgICAgbV9kYXRhID0geyB0ZXh0IH07CisgICAgaW52b2tlQ29tcGxldGlv
bkhhbmRsZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDZmZDhkZGE1NzZiN2I1MmIwODIz
MDE5NmZlOTQ5NDA0YzE0NzQ4YjQuLjY0YzYwZGUxN2MyMjYxYzMwNjQ1NjFhOTIwOWYzYjBlNWIw
OTZiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgK
QEAgLTI2LDEwICsyNiwxNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDbGlwYm9hcmRJ
dGVtRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUHJv
bWlzZTsKK2NsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CitjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlw
Ym9hcmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00
MCw2ICs0Niw0OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENs
aXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFz
dGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CisKKyAgICB2b2lkIGludm9rZUNvbXBsZXRp
b25IYW5kbGVyKCk7CisKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IFZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGUgOiBwdWJs
aWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRl
bVR5cGU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpcGJvYXJkSXRlbVR5cGU+IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGU+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJv
YXJkSXRlbVR5cGUodHlwZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAg
fQorCisgICAgICAgIH5DbGlwYm9hcmRJdGVtVHlwZSgpOworCisgICAgICAgIHZvaWQgZGlkUmVz
b2x2ZVRvU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIGRpZEZhaWxUb1Jlc29s
dmUoKTsKKyAgICAgICAgdm9pZCBkaWRSZXNvbHZlVG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWY8QmxvYj4mJik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgeyByZXR1
cm4gbV90eXBlOyB9CisgICAgICAgIGNvbnN0IEJ1ZmZlck9yU3RyaW5nJiBkYXRhKCkgeyByZXR1
cm4gbV9kYXRhOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDbGlwYm9hcmRJdGVtVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKKyAgICAg
ICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgIC8vIEZpbGVSZWFk
ZXJMb2FkZXJDbGllbnQgbWV0aG9kcy4KKyAgICAgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBm
aW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSgpIGZpbmFsIHsgfQorICAgICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRGYWlsKGlu
dCkgZmluYWw7CisKKyAgICAgICAgU3RyaW5nIG1fdHlwZTsKKyAgICAgICAgQnVmZmVyT3JTdHJp
bmcgbV9kYXRhOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9i
bG9iTG9hZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1fY29tcGxldGlv
bkhhbmRsZXI7CisgICAgfTsKKworICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZQZW5kaW5nQ2xpcGJv
YXJkVHlwZXMgeyAwIH07CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFZlY3RvcjxSZWY8
Q2xpcGJvYXJkSXRlbVR5cGU+PiBtX2l0ZW1UeXBlTG9hZGVyczsKKyAgICBXZWFrUHRyPENsaXBi
b2FyZD4gbV93cml0aW5nRGVzdGluYXRpb247CiAKICAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0
cmluZywgUmVmUHRyPERPTVByb21pc2U+Pj4gbV9pdGVtUHJvbWlzZXM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1EYXRhU291cmNlLmgKaW5kZXggOTJhNmQxZmQzZWU2OTViZTc1NjRkNTllZDQxY2Q3
NjZhNzliNDA4MC4uYmYxZGFhY2Y3MDM4ODM1MDFlNWU5MjI1MjZlZTU4OGJmMjRkYmU2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCkBAIC0zMiw4ICszMiw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgQ2xpcGJvYXJk
OwogY2xhc3MgQ2xpcGJvYXJkSXRlbTsKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKIAogY2xhc3Mg
Q2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogcHVibGljOgpAQCAtNDYsNiArNDcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2Fy
ZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2Fy
ZEN1c3RvbURhdGE+KT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2xpcGJvYXJkSXRlbSYg
bV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZS5jcHAKaW5kZXggODg0ZDQ3NjA5MzMwOTFjMWZhNDMyMzM3OTRkZjg3NzAxODUxYzM2Ni4uZjMx
M2IzY2Y5MjMzNTFiY2M4NDAzZTJmZGVkYThlZDY0MDcyNWIwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmRE
YXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCkBAIC01NCw0ICs1NCwxMSBA
QCB2b2lkIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZTo6Z2V0VHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZAogICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxs
b3dlZEVycm9yKTsKIH0KIAordm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6
OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYgY29tcGxldGlvbikKK3sKKyAgICAv
LyBGSVhNRTogTm90IGltcGxlbWVudGVkLiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHdyaXRp
bmcgcGxhdGZvcm0tYmFja2VkIENsaXBib2FyZEl0ZW1zCisgICAgLy8gYmFjayB0byB0aGUgcGFz
dGVib2FyZCB1c2luZyBDbGlwYm9hcmQud3JpdGUoKS4KKyAgICBjb21wbGV0aW9uKFdURjo6bnVs
bG9wdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0
YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKaW5kZXggYjI2MzI4YmU1Y2EwOWNmNzUyY2Q1
OTRmNzgwZTIyOWI2ODRkNWFjNC4uZTViNzNmZTQzMWRmMjYyMWIwYjUzNGVhZDc2Y2MzMTA3ZDgy
YmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNl
LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlcygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3Jp
dGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpIGZpbmFsOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV90eXBlczsKIH07Cg==
</data>
<flag name="review"
          id="398893"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383249</attachid>
            <date>2019-11-10 14:42:05 -0800</date>
            <delta_ts>2019-11-10 15:16:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203707-20191110144205.patch</filename>
            <type>text/plain</type>
            <size>19648</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5ZmE1ZDJhYWQwZmMx
YTI3YjIwY2Q1MDEyOTA0NmIwNThhZmI1MS4uOGQ4OGY0NGFkMzk5M2NkMWFkOWNlMjc1OWEzMWIx
M2M0Yzc5MzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTExLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBBZGQgc29tZSBpbmZyYXN0cnVjdHVyZSB0byByZXNvbHZlIENsaXBib2FyZEl0ZW1zIGlu
dG8gcGFzdGVib2FyZCBkYXRhIGZvciB3cml0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9z
dWtlIE5pd2EuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIG5ldyBtZXRob2QgdGhhdCB3aWxsIGJl
IHVzZWQgaW4gYSBmdXR1cmUgcGF0Y2ggdG8gYWdncmVnYXRlIGRhdGEgdmVuZGVkIGJ5IENsaXBi
b2FyZEl0ZW1zIHdoZW4KKyAgICAgICAgd3JpdGluZyBpdGVtcyB0byB0aGUgcGxhdGZvcm0gcGFz
dGVib2FyZC4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHM7IG5vIG5ldyB0ZXN0cywgc2luY2Ug
dGhlcmUgaXMgbm8gY2hhbmdlIGluCisgICAgICAgIGJlaGF2aW9yIHlldC4KKworICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKToKKworICAgICAgICBB
ZGQgYSBuZXcgdmlydHVhbCBgY29sbGVjdERhdGFGb3JXcml0aW5nYCBtZXRob2QsIHdoaWNoIGlz
IHVzZWQgd2hlbiB3cml0aW5nIENsaXBib2FyZEl0ZW0gZGF0YSB0byB0aGUKKyAgICAgICAgcGFz
dGVib2FyZC4gVGhpcyBhbGxvd3MgQ2xpcGJvYXJkSXRlbXMgdG8gYXN5bmNocm9ub3VzbHkgY29u
dmVydCBkYXRhIHRvIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgYWZ0ZXIgcmVzb2x2aW5nCisgICAg
ICAgIHByb21pc2VzIHRvIHN0cmluZ3Mgb3IgYmxvYnM7IG9yIGFsdGVybmF0ZWx5LCBjYW5jZWwg
YWxsIGRhdGEgbG9hZGluZyBpZiBhIHByb21pc2UgaXMgcmVqZWN0ZWQuCisKKyAgICAgICAgSW4g
b3JkZXIgdG8gY29udmVydCBpdGVtcyBpbnRvIGEgbGlzdCBvZiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSwgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICBzZXQgdXAgYSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggY2xpcGJvYXJkIGl0ZW0KKyAgICAgICAgZm9y
IGVhY2ggY2xpcGJvYXJkIGl0ZW06CisgICAgICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBj
bGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAgICAgICB0cnkgdG8gcmVzb2x2ZSB0aGUgcHJvbWlz
ZQorICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgc3RyaW5nOgor
ICAgICAgICAgICAgICAgICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVy
IHRoZSB0eXBlCisgICAgICAgICAgICAgICAgaWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBi
bG9iOgorICAgICAgICAgICAgICAgICAgICBsb2FkIHRoZSBibG9iIGRhdGEgYXMgZWl0aGVyIHRl
eHQgb3IgYW4gQXJyYXlCdWZmZXIgKGRlcGVuZGluZyBvbiB0aGUgdHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0
b20gZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJl
amVjdGVkIG9yIHJlc29sdmVkIHRvIGFuIHVuc3VwcG9ydGVkIHZhbHVlLCBiYWlsIGZyb20gdGhl
c2Ugc3RlcHMKKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50RnJvbUNsaXBi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9y
V3JpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6On5DbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGNsYXNzIHRvIGhvbGQgc3RhdGUgYXNz
b2NpYXRlZCB3aXRoIGxvYWRpbmcgZWFjaCBjbGlwYm9hcmQgdHlwZS4gVGhpcyBpbmNsdWRlcyB0
aGUgZmluYWwgZGF0YQorICAgICAgICBpdHNlbGYgKGEgdmFyaWFudCB0aGF0IGhvbGRzIGVpdGhl
ciBhIFN0cmluZyBvciBCbG9iKSwgYXMgd2VsbCBhcyBhIEZpbGVSZWFkZXJMb2FkZXIgd2hpY2gg
bWF5IGJlIHByZXNlbnQgaW4gdGhlCisgICAgICAgIGNhc2Ugd2hlcmUgdGhlIGNsaXBib2FyZCBp
dGVtIHR5cGUgcmVzb2x2ZXMgdG8gYSBibG9iLgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmFpbCk6CisKKyAgICAgICAgRWFj
aCBDbGlwYm9hcmRJdGVtVHlwZSBpcyBhbHNvIHRoZSBjbGllbnQgZm9yIGl0cyBGaWxlUmVhZGVy
TG9hZGVyLCBpZiBwcmVzZW50OyB3aGVuIHRoZSBGaWxlUmVhZGVyTG9hZGVyCisgICAgICAgIGZp
bmlzaGVzIGxvYWRpbmcgb3IgZmFpbHMsIHdlIHRoZW4gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGxv
YWRlciBhbmQgaW52b2tlIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIuCisKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9h
ZGVyOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkUmVz
b2x2ZVRvQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmFpbFRvUmVzb2x2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6ZGlkUmVzb2x2ZVRvU3RyaW5nKToKKworICAgICAgICBPbmUgb2YgdGhl
c2UgdGhyZWUgbWV0aG9kcyBpcyBjYWxsZWQgd2hlbiB0aGUgcHJvbWlzZSBjb3JyZXNwb25kaW5n
IHRvIGEgY2xpcGJvYXJkIHR5cGUgaXMgZWl0aGVyIHJlc29sdmVkIG9yCisgICAgICAgIHJlamVj
dGVkLiBJZiByZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiBpbmNvbXBhdGlibGUgdHlwZSwgd2Ug
Y2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGltbWVkaWF0ZWx5IHdpdGggbm8KKyAgICAgICAg
ZGF0YTsgaWYgd2UgcmVzb2x2ZSB0byBhIHN0cmluZywgd2Ugc2ltcGx5IHN0b3JlIHRoZSBzdHJp
bmcgaW4gYG1fZGF0YWAgYW5kIGludm9rZSB0aGUgY29tcGxldGlvbiBoYW5kbGVyOworICAgICAg
ICBvdGhlcndpc2UsIGlmIHdlIHJlc29sdmUgdG8gYSBibG9iLCB3ZSBjcmVhdGUgYSBuZXcgbG9h
ZGVyIHRvIGZldGNoIGVpdGhlciB0aGUgc3RyaW5nIG9yIGRhdGEgYnVmZmVyIGZvciB0aGUKKyAg
ICAgICAgYmxvYiwgYW5kIHdhaXQgdW50aWwgZWl0aGVyIGRpZEZpbmlzaExvYWRpbmcgb3IgZGlk
RmFpbCBpcyBjYWxsZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkYXRhKToK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJj
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0
ZWJvYXJkRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtUGFz
dGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisKKyAgICAgICAgRm9y
IHRoZSB0aW1lIGJlaW5nLCBsZWF2ZSB0aGlzIHVuaW1wbGVtZW50ZWQ7IGEgZnV0dXJlIHBhdGNo
IHdpbGwgYWRkIHN1cHBvcnQgZm9yIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbXMgdGhhdAorICAgICAg
ICBjYW1lIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIGFzIG9wcG9zZWQgdG8gdGhvc2Ug
Y3JlYXRlZCBieSB0aGUgcGFnZS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oOgorCiAyMDE5LTExLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcmVlbiBsb2NrcyB3aGls
ZSB3YXRjaGluZyBwcmV2aW91c2x5LW11dGVkLXRoZW4tdW5tdXRlZCB2aWRlbwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
LmNwcAppbmRleCAwODY2ZGU5MmU0MjhiNmJmYmVkMzVmNTQ1M2JmZDZhNDdhNDM2NjM4Li44OWYz
MzBkNTkzYTZiYzAxOGY5YmJlMTcxMDNmNTI2OWFiYTEyNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApA
QCAtOTIsNiArOTIsMTEgQEAgdm9pZCBDbGlwYm9hcmRJdGVtOjpnZXRUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1fZGF0YVNvdXJj
ZS0+Z2V0VHlwZSh0eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBDbGlwYm9hcmRJ
dGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBs
ZXRpb24pCit7CisgICAgbV9kYXRhU291cmNlLT5jb2xsZWN0RGF0YUZvcldyaXRpbmcoZGVzdGlu
YXRpb24sIFdURk1vdmUoY29tcGxldGlvbikpOworfQorCiBOYXZpZ2F0b3IqIENsaXBib2FyZEl0
ZW06Om5hdmlnYXRvcigpCiB7CiAgICAgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bS5oCmluZGV4IDQ5ZDI1NDc5ZTVjYTYyMDQzZjA3ZTg2MDUyNTNjOTYzNjk4NDg0MTIuLjIyMmRm
MTQzZjhlODE4OWVlN2Q0YmQ1YTk5MzNmNzEwODZiZWQ2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKQEAgLTQw
LDYgKzQwLDcgQEAgY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2U7CiBjbGFzcyBEZWZlcnJl
ZFByb21pc2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogCiBjbGFzcyBD
bGlwYm9hcmRJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbT4gewpAQCAtNTks
NiArNjAsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAg
ICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAK
KyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYp
OworCiAgICAgUHJlc2VudGF0aW9uU3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3ByZXNlbnRhdGlvblN0eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdhdG9yKCk7
CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZTcyNjA1MTE0NDhkOWNiNDhiNTRmYmJiZTQ0
NGY5NTg2ZmJmOWM4MC4uODU5YTYzM2RmOGU1NGVlOTZmMjhiYmNmNjNmNGYyZDBlZmI1Y2YwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAg
LTI3LDcgKzI3LDExIEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1
ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZp
bGVSZWFkZXJMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTQmxvYi5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCkBAIC0zNiw2ICs0MCwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50RnJvbUNsaXBib2FyZChjb25zdCBDbGlwYm9hcmQq
IGNsaXBib2FyZCkKK3sKKyAgICBpZiAoIWNsaXBib2FyZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvKiBmcmFtZSA9IGNsaXBib2FyZC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1l
bnQoKTsKK30KKworc3RhdGljIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09ICJ0ZXh0L3Vy
aS1saXN0Il9zIHx8IHR5cGUgPT0gInRleHQvcGxhaW4iX3MgfHwgdHlwZSA9PSAidGV4dC9odG1s
Il9zKQorICAgICAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4dDsKKyAgICBy
ZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXI7Cit9CisKIENsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uo
Q2xpcGJvYXJkSXRlbSYgaXRlbSwgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxE
T01Qcm9taXNlPj4+JiYgaXRlbVByb21pc2VzKQogICAgIDogQ2xpcGJvYXJkSXRlbURhdGFTb3Vy
Y2UoaXRlbSkKICAgICAsIG1faXRlbVByb21pc2VzKFdURk1vdmUoaXRlbVByb21pc2VzKSkKQEAg
LTk0LDQgKzExNywxNjQgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpn
ZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9KTsKIH0KIAor
dm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRp
bmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit7CisgICAgbV9pdGVtVHlw
ZUxvYWRlcnMuY2xlYXIoKTsKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAg
IG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb24pOworICAgIG1fd3JpdGlu
Z0Rlc3RpbmF0aW9uID0gbWFrZVdlYWtQdHIoZGVzdGluYXRpb24pOworICAgIG1fbnVtYmVyT2ZQ
ZW5kaW5nQ2xpcGJvYXJkVHlwZXMgPSBtX2l0ZW1Qcm9taXNlcy5zaXplKCk7CisgICAgbV9pdGVt
VHlwZUxvYWRlcnMgPSBtX2l0ZW1Qcm9taXNlcy5tYXAoWyZdIChhdXRvJiB0eXBlQW5kSXRlbSkg
eworICAgICAgICBhdXRvIHR5cGUgPSB0eXBlQW5kSXRlbS5rZXk7CisgICAgICAgIGF1dG8gaXRl
bVR5cGVMb2FkZXIgPSBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6Y3JlYXRlKHR5cGUsIFt0aGlz
LCBwcm90ZWN0ZWRJdGVtID0gbWFrZVJlZihtX2l0ZW0pXSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9udW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcyk7CisgICAgICAgICAgICBpZiAoIS0tbV9u
dW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcykKKyAgICAgICAgICAgICAgICBpbnZva2VDb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIHByb21pc2UgPSB0
eXBlQW5kSXRlbS52YWx1ZTsKKyAgICAgICAgcHJvbWlzZS0+d2hlblNldHRsZWQoW3RoaXMsIHBy
b3RlY3RlZEl0ZW0gPSBtYWtlUmVmUHRyKG1faXRlbSksIGRlc3RpbmF0aW9uID0gbV93cml0aW5n
RGVzdGluYXRpb24sIHByb21pc2UsIHR5cGUsIHdlYWtJdGVtVHlwZUxvYWRlciA9IG1ha2VXZWFr
UHRyKGl0ZW1UeXBlTG9hZGVyLnB0cigpKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtJdGVtVHlwZUxvYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGF1dG8gaXRlbVR5cGVMb2FkZXIgPSBtYWtlUmVmKCp3ZWFrSXRlbVR5cGVMb2FkZXIpOwor
ICAgICAgICAgICAgQVNTRVJUKG5vdEZvdW5kICE9IG1faXRlbVR5cGVMb2FkZXJzLmZpbmRNYXRj
aGluZyhbJl0gKGF1dG8mIGxvYWRlcikgeyByZXR1cm4gbG9hZGVyLnB0cigpID09IGl0ZW1UeXBl
TG9hZGVyLnB0cigpOyB9KSk7CisKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcHJvbWlzZS0+
cmVzdWx0KCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIGl0
ZW1UeXBlTG9hZGVyLT5kaWRGYWlsVG9SZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIGNsaXBib2FyZCA9IG1ha2VSZWZQ
dHIoZGVzdGluYXRpb24uZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFjbGlwYm9hcmQpIHsKKyAg
ICAgICAgICAgICAgICBpdGVtVHlwZUxvYWRlci0+ZGlkRmFpbFRvUmVzb2x2ZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjbGlw
Ym9hcmQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICAgICAgICAgIGl0ZW1U
eXBlTG9hZGVyLT5kaWRGYWlsVG9SZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgICAgIHJl
c3VsdC5nZXRTdHJpbmcocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCksIHRleHQpOworICAgICAgICAg
ICAgaWYgKCF0ZXh0LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgaXRlbVR5cGVMb2FkZXIt
PmRpZFJlc29sdmVUb1N0cmluZyh0ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgICAgICBpdGVtVHlwZUxvYWRlci0+ZGlkRmFpbFRvUmVzb2x2ZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF1dG8gYmxv
YiA9IG1ha2VSZWZQdHIoSlNCbG9iOjp0b1dyYXBwZWQocmVzdWx0LmdldE9iamVjdCgpLT52bSgp
LCByZXN1bHQuZ2V0T2JqZWN0KCkpKSkKKyAgICAgICAgICAgICAgICBpdGVtVHlwZUxvYWRlci0+
ZGlkUmVzb2x2ZVRvQmxvYigqY2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJs
b2IucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
aXRlbVR5cGVMb2FkZXItPmRpZEZhaWxUb1Jlc29sdmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgcmV0dXJuIGl0ZW1UeXBlTG9hZGVyOworICAgIH0pOworCisgICAgaWYgKCFtX251bWJlck9m
UGVuZGluZ0NsaXBib2FyZFR5cGVzKQorICAgICAgICBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigp
OworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBs
ZXRpb25IYW5kbGVyKCkKK3sKKyAgICBpZiAoIW1fY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVy
LCB7IH0pOworICAgIGF1dG8gaXRlbVR5cGVMb2FkZXJzID0gc3RkOjpleGNoYW5nZShtX2l0ZW1U
eXBlTG9hZGVycywgeyB9KTsKKyAgICBhdXRvIGNsaXBib2FyZCA9IG1ha2VSZWZQdHIobV93cml0
aW5nRGVzdGluYXRpb24uZ2V0KCkpOworICAgIG1fd3JpdGluZ0Rlc3RpbmF0aW9uID0gbnVsbHB0
cjsKKworICAgIGF1dG8gZG9jdW1lbnQgPSBkb2N1bWVudEZyb21DbGlwYm9hcmQoY2xpcGJvYXJk
LmdldCgpKTsKKyAgICBpZiAoIWRvY3VtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBjdXN0b21EYXRhOworICAgIGZvciAoYXV0byYgaXRlbVR5cGVMb2FkZXIgOiBp
dGVtVHlwZUxvYWRlcnMpIHsKKyAgICAgICAgYXV0byB0eXBlID0gaXRlbVR5cGVMb2FkZXItPnR5
cGUoKTsKKyAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CisgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFXVEY6Omdl
dDxTdHJpbmc+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBl
LCBXVEY6OmdldDxTdHJpbmc+KGRhdGEpKTsKKyAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgICAgICBjdXN0b21E
YXRhLndyaXRlRGF0YSh0eXBlLCBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29w
eVJlZigpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisg
ICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oZG9jdW1lbnQtPm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY3VzdG9tRGF0YSkpOwor
fQorCitDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcjo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
Cit7Cit9CisKK0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1U
eXBlTG9hZGVyOjp+Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIoKQoreworICAgIGlmIChtX2Jsb2JM
b2FkZXIpCisgICAgICAgIG1fYmxvYkxvYWRlci0+Y2FuY2VsKCk7CisKKyAgICBpbnZva2VDb21w
bGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBB
U1NFUlQobV9ibG9iTG9hZGVyKTsKKyAgICBhdXRvIHN0cmluZ1Jlc3VsdCA9IHJlYWRUeXBlRm9y
TUlNRVR5cGUobV90eXBlKSA9PSBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNUZXh0ID8gbV9ibG9i
TG9hZGVyLT5zdHJpbmdSZXN1bHQoKSA6IG51bGxTdHJpbmcoKTsKKyAgICBpZiAoIXN0cmluZ1Jl
c3VsdC5pc051bGwoKSkKKyAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKKyAgICBl
bHNlIGlmIChhdXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3Vs
dCgpKQorICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSkgfTsKKyAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOworICAgIGludm9rZUNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmRpZEZhaWwoaW50KQoreworICAgIEFTU0VSVChtX2Js
b2JMb2FkZXIpOworICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CisgICAgaW52b2tlQ29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
OjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQorewor
ICAgIGlmIChhdXRvIGNvbXBsZXRpb24gPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQor
ICAgICAgICBjb21wbGV0aW9uKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmRpZFJlc29sdmVUb0Jsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPEJsb2I+JiYgYmxvYikKK3sKKyAgICBBU1NF
UlQoIW1fYmxvYkxvYWRlcik7CisgICAgbV9ibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVh
ZGVyTG9hZGVyPihyZWFkVHlwZUZvck1JTUVUeXBlKG1fdHlwZSksIHRoaXMpOworICAgIG1fYmxv
YkxvYWRlci0+c3RhcnQoJmNvbnRleHQsIFdURk1vdmUoYmxvYikpOworfQorCit2b2lkIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRG
YWlsVG9SZXNvbHZlKCkKK3sKKyAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7CisgICAgaW52b2tl
Q29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkUmVzb2x2ZVRvU3RyaW5nKGNvbnN0
IFN0cmluZyYgdGV4dCkKK3sKKyAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7CisgICAgbV9kYXRh
ID0geyB0ZXh0IH07CisgICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5oCmluZGV4IDZmZDhkZGE1NzZiN2I1MmIwODIzMDE5NmZlOTQ5NDA0YzE0NzQ4YjQuLjdk
YjFhYTRjMTUxYTg1YjJhYmI3NGQ3ZmIwNzI1NWYzN2EyYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTI2LDEwICsyNiwxNiBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oIgorI2luY2x1
ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUHJvbWlzZTsKK2NsYXNzIEZpbGVSZWFkZXJM
b2FkZXI7CitjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Niw0OCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOwor
ICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikg
ZmluYWw7CisKKyAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICB1c2lu
ZyBCdWZmZXJPclN0cmluZyA9IFZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47Cisg
ICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRl
ckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXIodHlwZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIH5DbGlwYm9hcmRJdGVtVHlwZUxvYWRlcigpOworCisgICAgICAg
IHZvaWQgZGlkUmVzb2x2ZVRvU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIGRp
ZEZhaWxUb1Jlc29sdmUoKTsKKyAgICAgICAgdm9pZCBkaWRSZXNvbHZlVG9CbG9iKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWY8QmxvYj4mJik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiB0
eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CisgICAgICAgIGNvbnN0IEJ1ZmZlck9yU3RyaW5nJiBk
YXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcihjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisKKyAgICAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOworCisg
ICAgICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgbWV0aG9kcy4KKyAgICAgICAgdm9pZCBk
aWRTdGFydExvYWRpbmcoKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSgp
IGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICAg
ICAgdm9pZCBkaWRGYWlsKGludCkgZmluYWw7CisKKyAgICAgICAgU3RyaW5nIG1fdHlwZTsKKyAg
ICAgICAgQnVmZmVyT3JTdHJpbmcgbV9kYXRhOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmls
ZVJlYWRlckxvYWRlcj4gbV9ibG9iTG9hZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgfTsKKworICAgIHVuc2lnbmVkIG1fbnVt
YmVyT2ZQZW5kaW5nQ2xpcGJvYXJkVHlwZXMgeyAwIH07CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiBtX2NvbXBsZXRpb25IYW5kbGVy
OworICAgIFZlY3RvcjxSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+PiBtX2l0ZW1UeXBlTG9h
ZGVyczsKKyAgICBXZWFrUHRyPENsaXBib2FyZD4gbV93cml0aW5nRGVzdGluYXRpb247CiAKICAg
ICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPERPTVByb21pc2U+Pj4gbV9pdGVt
UHJvbWlzZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKaW5kZXggOTJhNmQx
ZmQzZWU2OTViZTc1NjRkNTllZDQxY2Q3NjZhNzliNDA4MC4uYmYxZGFhY2Y3MDM4ODM1MDFlNWU5
MjI1MjZlZTU4OGJmMjRkYmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCkBA
IC0zMiw4ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOworY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ2xpcGJvYXJkSXRlbTsKK2NsYXNzIERl
ZmVycmVkUHJvbWlzZTsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogcHVibGlj
OgpAQCAtNDYsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IHR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmlu
ZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgPSAwOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQ2xpcGJvYXJkSXRlbSYgbV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKaW5kZXggODg0ZDQ3NjA5MzMwOTFjMWZhNDMy
MzM3OTRkZjg3NzAxODUxYzM2Ni4uZjMxM2IzY2Y5MjMzNTFiY2M4NDAzZTJmZGVkYThlZDY0MDcy
NWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3Vy
Y2UuY3BwCkBAIC01NCw0ICs1NCwxMSBAQCB2b2lkIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0
YVNvdXJjZTo6Z2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZAogICAgICAg
ICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKIH0KIAordm9pZCBDbGlwYm9hcmRJ
dGVtUGFzdGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+
JiYgY29tcGxldGlvbikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiBUaGlzIGlz
IG5lZWRlZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBib2FyZEl0ZW1z
CisgICAgLy8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQud3JpdGUoKS4K
KyAgICBjb21wbGV0aW9uKFdURjo6bnVsbG9wdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKaW5k
ZXggYjI2MzI4YmU1Y2EwOWNmNzUyY2Q1OTRmNzgwZTIyOWI2ODRkNWFjNC4uZTViNzNmZTQzMWRm
MjYyMWIwYjUzNGVhZDc2Y2MzMTA3ZDgyYmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
Z2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpIGZp
bmFsOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV90eXBlczsKIH07Cg==
</data>
<flag name="commit-queue"
          id="398991"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383250</attachid>
            <date>2019-11-10 15:33:28 -0800</date>
            <delta_ts>2019-11-10 16:16:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203707-20191110153328.patch</filename>
            <type>text/plain</type>
            <size>19661</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5ZmE1ZDJhYWQwZmMx
YTI3YjIwY2Q1MDEyOTA0NmIwNThhZmI1MS4uOGQ4OGY0NGFkMzk5M2NkMWFkOWNlMjc1OWEzMWIx
M2M0Yzc5MzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTExLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBBZGQgc29tZSBpbmZyYXN0cnVjdHVyZSB0byByZXNvbHZlIENsaXBib2FyZEl0ZW1zIGlu
dG8gcGFzdGVib2FyZCBkYXRhIGZvciB3cml0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9z
dWtlIE5pd2EuCisKKyAgICAgICAgSW1wbGVtZW50cyBhIG5ldyBtZXRob2QgdGhhdCB3aWxsIGJl
IHVzZWQgaW4gYSBmdXR1cmUgcGF0Y2ggdG8gYWdncmVnYXRlIGRhdGEgdmVuZGVkIGJ5IENsaXBi
b2FyZEl0ZW1zIHdoZW4KKyAgICAgICAgd3JpdGluZyBpdGVtcyB0byB0aGUgcGxhdGZvcm0gcGFz
dGVib2FyZC4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHM7IG5vIG5ldyB0ZXN0cywgc2luY2Ug
dGhlcmUgaXMgbm8gY2hhbmdlIGluCisgICAgICAgIGJlaGF2aW9yIHlldC4KKworICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKToKKworICAgICAgICBB
ZGQgYSBuZXcgdmlydHVhbCBgY29sbGVjdERhdGFGb3JXcml0aW5nYCBtZXRob2QsIHdoaWNoIGlz
IHVzZWQgd2hlbiB3cml0aW5nIENsaXBib2FyZEl0ZW0gZGF0YSB0byB0aGUKKyAgICAgICAgcGFz
dGVib2FyZC4gVGhpcyBhbGxvd3MgQ2xpcGJvYXJkSXRlbXMgdG8gYXN5bmNocm9ub3VzbHkgY29u
dmVydCBkYXRhIHRvIGEgUGFzdGVib2FyZEN1c3RvbURhdGEgYWZ0ZXIgcmVzb2x2aW5nCisgICAg
ICAgIHByb21pc2VzIHRvIHN0cmluZ3Mgb3IgYmxvYnM7IG9yIGFsdGVybmF0ZWx5LCBjYW5jZWwg
YWxsIGRhdGEgbG9hZGluZyBpZiBhIHByb21pc2UgaXMgcmVqZWN0ZWQuCisKKyAgICAgICAgSW4g
b3JkZXIgdG8gY29udmVydCBpdGVtcyBpbnRvIGEgbGlzdCBvZiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSwgd2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICBzZXQgdXAgYSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggY2xpcGJvYXJkIGl0ZW0KKyAgICAgICAgZm9y
IGVhY2ggY2xpcGJvYXJkIGl0ZW06CisgICAgICAgICAgICBmb3IgZWFjaCB0eXBlIGluIHRoZSBj
bGlwYm9hcmQgaXRlbToKKyAgICAgICAgICAgICAgICB0cnkgdG8gcmVzb2x2ZSB0aGUgcHJvbWlz
ZQorICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJlc29sdmVkIHRvIGEgc3RyaW5nOgor
ICAgICAgICAgICAgICAgICAgICB3cml0ZSB0aGUgc3RyaW5nIHRvIGN1c3RvbSBkYXRhIHVuZGVy
IHRoZSB0eXBlCisgICAgICAgICAgICAgICAgaWYgdGhlIHByb21pc2UgcmVzb2x2ZWQgdG8gYSBi
bG9iOgorICAgICAgICAgICAgICAgICAgICBsb2FkIHRoZSBibG9iIGRhdGEgYXMgZWl0aGVyIHRl
eHQgb3IgYW4gQXJyYXlCdWZmZXIgKGRlcGVuZGluZyBvbiB0aGUgdHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgd3JpdGUgZWl0aGVyIHRoZSBsb2FkZWQgc3RyaW5nIG9yIGJ1ZmZlciB0byBjdXN0
b20gZGF0YSB1bmRlciB0aGUgdHlwZQorICAgICAgICAgICAgICAgIGlmIHRoZSBwcm9taXNlIHJl
amVjdGVkIG9yIHJlc29sdmVkIHRvIGFuIHVuc3VwcG9ydGVkIHZhbHVlLCBiYWlsIGZyb20gdGhl
c2Ugc3RlcHMKKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50RnJvbUNsaXBi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVHlwZUZvck1JTUVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9y
V3JpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6On5DbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGNsYXNzIHRvIGhvbGQgc3RhdGUgYXNz
b2NpYXRlZCB3aXRoIGxvYWRpbmcgZWFjaCBjbGlwYm9hcmQgdHlwZS4gVGhpcyBpbmNsdWRlcyB0
aGUgZmluYWwgZGF0YQorICAgICAgICBpdHNlbGYgKGEgdmFyaWFudCB0aGF0IGhvbGRzIGVpdGhl
ciBhIFN0cmluZyBvciBCbG9iKSwgYXMgd2VsbCBhcyBhIEZpbGVSZWFkZXJMb2FkZXIgd2hpY2gg
bWF5IGJlIHByZXNlbnQgaW4gdGhlCisgICAgICAgIGNhc2Ugd2hlcmUgdGhlIGNsaXBib2FyZCBp
dGVtIHR5cGUgcmVzb2x2ZXMgdG8gYSBibG9iLgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmFpbCk6CisKKyAgICAgICAgRWFj
aCBDbGlwYm9hcmRJdGVtVHlwZSBpcyBhbHNvIHRoZSBjbGllbnQgZm9yIGl0cyBGaWxlUmVhZGVy
TG9hZGVyLCBpZiBwcmVzZW50OyB3aGVuIHRoZSBGaWxlUmVhZGVyTG9hZGVyCisgICAgICAgIGZp
bmlzaGVzIGxvYWRpbmcgb3IgZmFpbHMsIHdlIHRoZW4gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGxv
YWRlciBhbmQgaW52b2tlIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIuCisKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9h
ZGVyOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkUmVz
b2x2ZVRvQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmFpbFRvUmVzb2x2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6ZGlkUmVzb2x2ZVRvU3RyaW5nKToKKworICAgICAgICBPbmUgb2YgdGhl
c2UgdGhyZWUgbWV0aG9kcyBpcyBjYWxsZWQgd2hlbiB0aGUgcHJvbWlzZSBjb3JyZXNwb25kaW5n
IHRvIGEgY2xpcGJvYXJkIHR5cGUgaXMgZWl0aGVyIHJlc29sdmVkIG9yCisgICAgICAgIHJlamVj
dGVkLiBJZiByZWplY3RlZCBvciByZXNvbHZlZCB0byBhbiBpbmNvbXBhdGlibGUgdHlwZSwgd2Ug
Y2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGltbWVkaWF0ZWx5IHdpdGggbm8KKyAgICAgICAg
ZGF0YTsgaWYgd2UgcmVzb2x2ZSB0byBhIHN0cmluZywgd2Ugc2ltcGx5IHN0b3JlIHRoZSBzdHJp
bmcgaW4gYG1fZGF0YWAgYW5kIGludm9rZSB0aGUgY29tcGxldGlvbiBoYW5kbGVyOworICAgICAg
ICBvdGhlcndpc2UsIGlmIHdlIHJlc29sdmUgdG8gYSBibG9iLCB3ZSBjcmVhdGUgYSBuZXcgbG9h
ZGVyIHRvIGZldGNoIGVpdGhlciB0aGUgc3RyaW5nIG9yIGRhdGEgYnVmZmVyIGZvciB0aGUKKyAg
ICAgICAgYmxvYiwgYW5kIHdhaXQgdW50aWwgZWl0aGVyIGRpZEZpbmlzaExvYWRpbmcgb3IgZGlk
RmFpbCBpcyBjYWxsZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkYXRhKToK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJj
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0
ZWJvYXJkRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtUGFz
dGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyk6CisKKyAgICAgICAgRm9y
IHRoZSB0aW1lIGJlaW5nLCBsZWF2ZSB0aGlzIHVuaW1wbGVtZW50ZWQ7IGEgZnV0dXJlIHBhdGNo
IHdpbGwgYWRkIHN1cHBvcnQgZm9yIHdyaXRpbmcgQ2xpcGJvYXJkSXRlbXMgdGhhdAorICAgICAg
ICBjYW1lIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIGFzIG9wcG9zZWQgdG8gdGhvc2Ug
Y3JlYXRlZCBieSB0aGUgcGFnZS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oOgorCiAyMDE5LTExLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcmVlbiBsb2NrcyB3aGls
ZSB3YXRjaGluZyBwcmV2aW91c2x5LW11dGVkLXRoZW4tdW5tdXRlZCB2aWRlbwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
LmNwcAppbmRleCAwODY2ZGU5MmU0MjhiNmJmYmVkMzVmNTQ1M2JmZDZhNDdhNDM2NjM4Li44OWYz
MzBkNTkzYTZiYzAxOGY5YmJlMTcxMDNmNTI2OWFiYTEyNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmNwcApA
QCAtOTIsNiArOTIsMTEgQEAgdm9pZCBDbGlwYm9hcmRJdGVtOjpnZXRUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1fZGF0YVNvdXJj
ZS0+Z2V0VHlwZSh0eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBDbGlwYm9hcmRJ
dGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBs
ZXRpb24pCit7CisgICAgbV9kYXRhU291cmNlLT5jb2xsZWN0RGF0YUZvcldyaXRpbmcoZGVzdGlu
YXRpb24sIFdURk1vdmUoY29tcGxldGlvbikpOworfQorCiBOYXZpZ2F0b3IqIENsaXBib2FyZEl0
ZW06Om5hdmlnYXRvcigpCiB7CiAgICAgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bS5oCmluZGV4IDQ5ZDI1NDc5ZTVjYTYyMDQzZjA3ZTg2MDUyNTNjOTYzNjk4NDg0MTIuLjIyMmRm
MTQzZjhlODE4OWVlN2Q0YmQ1YTk5MzNmNzEwODZiZWQ2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKQEAgLTQw
LDYgKzQwLDcgQEAgY2xhc3MgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2U7CiBjbGFzcyBEZWZlcnJl
ZFByb21pc2U7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogCiBjbGFzcyBD
bGlwYm9hcmRJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbT4gewpAQCAtNTks
NiArNjAsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdDsKICAg
ICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAK
KyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYp
OworCiAgICAgUHJlc2VudGF0aW9uU3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3ByZXNlbnRhdGlvblN0eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdhdG9yKCk7
CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZTcyNjA1MTE0NDhkOWNiNDhiNTRmYmJiZTQ0
NGY5NTg2ZmJmOWM4MC4uZWVhZGMzYWNhYzk0N2U1ZWVjYjc3ZDA1ZjVmOGU0NDlkMDNkZmNkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAg
LTI3LDcgKzI3LDExIEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1
ZGUgIkNsaXBib2FyZEl0ZW0uaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZp
bGVSZWFkZXJMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTQmxvYi5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCkBAIC0zNiw2ICs0MCwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50RnJvbUNsaXBib2FyZChjb25zdCBDbGlwYm9hcmQq
IGNsaXBib2FyZCkKK3sKKyAgICBpZiAoIWNsaXBib2FyZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvKiBmcmFtZSA9IGNsaXBib2FyZC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1l
bnQoKTsKK30KKworc3RhdGljIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09ICJ0ZXh0L3Vy
aS1saXN0Il9zIHx8IHR5cGUgPT0gInRleHQvcGxhaW4iX3MgfHwgdHlwZSA9PSAidGV4dC9odG1s
Il9zKQorICAgICAgICByZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4dDsKKyAgICBy
ZXR1cm4gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXI7Cit9CisKIENsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uo
Q2xpcGJvYXJkSXRlbSYgaXRlbSwgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxE
T01Qcm9taXNlPj4+JiYgaXRlbVByb21pc2VzKQogICAgIDogQ2xpcGJvYXJkSXRlbURhdGFTb3Vy
Y2UoaXRlbSkKICAgICAsIG1faXRlbVByb21pc2VzKFdURk1vdmUoaXRlbVByb21pc2VzKSkKQEAg
LTk0LDQgKzExNywxNjQgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpn
ZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9KTsKIH0KIAor
dm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRp
bmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit7CisgICAgbV9pdGVtVHlw
ZUxvYWRlcnMuY2xlYXIoKTsKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAg
IG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb24pOworICAgIG1fd3JpdGlu
Z0Rlc3RpbmF0aW9uID0gbWFrZVdlYWtQdHIoZGVzdGluYXRpb24pOworICAgIG1fbnVtYmVyT2ZQ
ZW5kaW5nQ2xpcGJvYXJkVHlwZXMgPSBtX2l0ZW1Qcm9taXNlcy5zaXplKCk7CisgICAgbV9pdGVt
VHlwZUxvYWRlcnMgPSBtX2l0ZW1Qcm9taXNlcy5tYXAoWyZdIChhdXRvJiB0eXBlQW5kSXRlbSkg
eworICAgICAgICBhdXRvIHR5cGUgPSB0eXBlQW5kSXRlbS5rZXk7CisgICAgICAgIGF1dG8gaXRl
bVR5cGVMb2FkZXIgPSBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6Y3JlYXRlKHR5cGUsIFt0aGlz
LCBwcm90ZWN0ZWRJdGVtID0gbWFrZVJlZihtX2l0ZW0pXSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9udW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcyk7CisgICAgICAgICAgICBpZiAoIS0tbV9u
dW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcykKKyAgICAgICAgICAgICAgICBpbnZva2VDb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIHByb21pc2UgPSB0
eXBlQW5kSXRlbS52YWx1ZTsKKyAgICAgICAgcHJvbWlzZS0+d2hlblNldHRsZWQoW3RoaXMsIHBy
b3RlY3RlZEl0ZW0gPSBtYWtlUmVmUHRyKG1faXRlbSksIGRlc3RpbmF0aW9uID0gbV93cml0aW5n
RGVzdGluYXRpb24sIHByb21pc2UsIHR5cGUsIHdlYWtJdGVtVHlwZUxvYWRlciA9IG1ha2VXZWFr
UHRyKGl0ZW1UeXBlTG9hZGVyLnB0cigpKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtJdGVtVHlwZUxvYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGF1dG8gaXRlbVR5cGVMb2FkZXIgPSBtYWtlUmVmKCp3ZWFrSXRlbVR5cGVMb2FkZXIpOwor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0aGlzLCBub3RGb3VuZCAhPSBtX2l0ZW1UeXBlTG9h
ZGVycy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBsb2FkZXIpIHsgcmV0dXJuIGxvYWRlci5wdHIo
KSA9PSBpdGVtVHlwZUxvYWRlci5wdHIoKTsgfSkpOworCisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IHByb21pc2UtPnJlc3VsdCgpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAg
ICAgICAgICAgICBpdGVtVHlwZUxvYWRlci0+ZGlkRmFpbFRvUmVzb2x2ZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBjbGlwYm9h
cmQgPSBtYWtlUmVmUHRyKGRlc3RpbmF0aW9uLmdldCgpKTsKKyAgICAgICAgICAgIGlmICghY2xp
cGJvYXJkKSB7CisgICAgICAgICAgICAgICAgaXRlbVR5cGVMb2FkZXItPmRpZEZhaWxUb1Jlc29s
dmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICghY2xpcGJvYXJkLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAg
ICAgICAgICBpdGVtVHlwZUxvYWRlci0+ZGlkRmFpbFRvUmVzb2x2ZSgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nIHRleHQ7Cisg
ICAgICAgICAgICByZXN1bHQuZ2V0U3RyaW5nKHByb21pc2UtPmdsb2JhbE9iamVjdCgpLCB0ZXh0
KTsKKyAgICAgICAgICAgIGlmICghdGV4dC5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGl0
ZW1UeXBlTG9hZGVyLT5kaWRSZXNvbHZlVG9TdHJpbmcodGV4dCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc09iamVj
dCgpKSB7CisgICAgICAgICAgICAgICAgaXRlbVR5cGVMb2FkZXItPmRpZEZhaWxUb1Jlc29sdmUo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChhdXRvIGJsb2IgPSBtYWtlUmVmUHRyKEpTQmxvYjo6dG9XcmFwcGVkKHJlc3VsdC5nZXRP
YmplY3QoKS0+dm0oKSwgcmVzdWx0LmdldE9iamVjdCgpKSkpCisgICAgICAgICAgICAgICAgaXRl
bVR5cGVMb2FkZXItPmRpZFJlc29sdmVUb0Jsb2IoKmNsaXBib2FyZC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBibG9iLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGl0ZW1UeXBlTG9hZGVyLT5kaWRGYWlsVG9SZXNvbHZlKCk7CisgICAgICAg
IH0pOworCisgICAgICAgIHJldHVybiBpdGVtVHlwZUxvYWRlcjsKKyAgICB9KTsKKworICAgIGlm
ICghbV9udW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcykKKyAgICAgICAgaW52b2tlQ29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
OjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5k
bGVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21w
bGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICBhdXRvIGl0ZW1UeXBlTG9hZGVycyA9IHN0ZDo6ZXhj
aGFuZ2UobV9pdGVtVHlwZUxvYWRlcnMsIHsgfSk7CisgICAgYXV0byBjbGlwYm9hcmQgPSBtYWtl
UmVmUHRyKG1fd3JpdGluZ0Rlc3RpbmF0aW9uLmdldCgpKTsKKyAgICBtX3dyaXRpbmdEZXN0aW5h
dGlvbiA9IG51bGxwdHI7CisKKyAgICBhdXRvIGRvY3VtZW50ID0gZG9jdW1lbnRGcm9tQ2xpcGJv
YXJkKGNsaXBib2FyZC5nZXQoKSk7CisgICAgaWYgKCFkb2N1bWVudCkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKKyAgICBmb3IgKGF1dG8mIGl0ZW1U
eXBlTG9hZGVyIDogaXRlbVR5cGVMb2FkZXJzKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IGl0ZW1U
eXBlTG9hZGVyLT50eXBlKCk7CisgICAgICAgIGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+
ZGF0YSgpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEp
ICYmICEhV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3Jp
dGVTdHJpbmcodHlwZSwgV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSk7CisgICAgICAgIGVsc2UgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAg
ICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGRvY3VtZW50LT5vcmlnaW5JZGVu
dGlmaWVyRm9yUGFzdGVib2FyZCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGN1
c3RvbURhdGEpKTsKK30KKworQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyKGNvbnN0IFN0cmluZyYg
dHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IDogbV90eXBlKHR5cGUpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQoreworfQorCitDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6fkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyKCkKK3sKKyAg
ICBpZiAobV9ibG9iTG9hZGVyKQorICAgICAgICBtX2Jsb2JMb2FkZXItPmNhbmNlbCgpOworCisg
ICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
ZygpCit7CisgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CisgICAgYXV0byBzdHJpbmdSZXN1bHQg
PSByZWFkVHlwZUZvck1JTUVUeXBlKG1fdHlwZSkgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFz
VGV4dCA/IG1fYmxvYkxvYWRlci0+c3RyaW5nUmVzdWx0KCkgOiBudWxsU3RyaW5nKCk7CisgICAg
aWYgKCFzdHJpbmdSZXN1bHQuaXNOdWxsKCkpCisgICAgICAgIG1fZGF0YSA9IHsgc3RyaW5nUmVz
dWx0IH07CisgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IG1fYmxvYkxvYWRlci0+YXJy
YXlCdWZmZXJSZXN1bHQoKSkKKyAgICAgICAgbV9kYXRhID0geyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpIH07CisgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsKKyAgICBp
bnZva2VDb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGYWlsKGludCkKK3sKKyAg
ICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKKyAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOworICAg
IGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6Omludm9rZUNvbXBsZXRpb25I
YW5kbGVyKCkKK3sKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbigpOworfQorCit2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRSZXNvbHZl
VG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxCbG9iPiYmIGJsb2Ip
Cit7CisgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIpOworICAgIG1fYmxvYkxvYWRlciA9IG1ha2VV
bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4ocmVhZFR5cGVGb3JNSU1FVHlwZShtX3R5cGUpLCB0aGlz
KTsKKyAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KCZjb250ZXh0LCBXVEZNb3ZlKGJsb2IpKTsKK30K
Kwordm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6ZGlkRmFpbFRvUmVzb2x2ZSgpCit7CisgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIp
OworICAgIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmRpZFJlc29sdmVU
b1N0cmluZyhjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIp
OworICAgIG1fZGF0YSA9IHsgdGV4dCB9OworICAgIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCA2ZmQ4ZGRhNTc2YjdiNTJiMDgyMzAxOTZmZTk0OTQw
NGMxNDc0OGI0Li43ZGIxYWE0YzE1MWE4NWIyYWJiNzRkN2ZiMDcyNTVmMzdhMmFiZDZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0yNiwxMCAr
MjYsMTYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkSXRlbURhdGFTb3Vy
Y2UuaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVByb21pc2U7CitjbGFz
cyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiAKIGNsYXNz
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xpcGJvYXJkSXRlbURh
dGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDAsNiArNDYsNDgg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRl
c3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0
b21EYXRhPik+JiYpIGZpbmFsOworCisgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigp
OworCisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBWYXJpYW50PFN0cmluZywgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIGNsYXNzIENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZp
bGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBl
TG9hZGVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVy
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyKHR5cGUsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKSk7CisgICAgICAgIH0KKworICAgICAgICB+Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIo
KTsKKworICAgICAgICB2b2lkIGRpZFJlc29sdmVUb1N0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAg
ICAgICAgdm9pZCBkaWRGYWlsVG9SZXNvbHZlKCk7CisgICAgICAgIHZvaWQgZGlkUmVzb2x2ZVRv
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEJsb2I+JiYpOworCisgICAgICAgIGNv
bnN0IFN0cmluZyYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBjb25zdCBCdWZm
ZXJPclN0cmluZyYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCisgICAgICAgIHZvaWQgaW52b2tlQ29tcGxldGlvbkhh
bmRsZXIoKTsKKworICAgICAgICAvLyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IG1ldGhvZHMuCisg
ICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkg
ZmluYWw7CisgICAgICAgIHZvaWQgZGlkRmFpbChpbnQpIGZpbmFsOworCisgICAgICAgIFN0cmlu
ZyBtX3R5cGU7CisgICAgICAgIEJ1ZmZlck9yU3RyaW5nIG1fZGF0YTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fYmxvYkxvYWRlcjsKKyAgICAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKKyAgICB1
bnNpZ25lZCBtX251bWJlck9mUGVuZGluZ0NsaXBib2FyZFR5cGVzIHsgMCB9OworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4gbV9jb21w
bGV0aW9uSGFuZGxlcjsKKyAgICBWZWN0b3I8UmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPj4g
bV9pdGVtVHlwZUxvYWRlcnM7CisgICAgV2Vha1B0cjxDbGlwYm9hcmQ+IG1fd3JpdGluZ0Rlc3Rp
bmF0aW9uOwogCiAgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxET01Qcm9t
aXNlPj4+IG1faXRlbVByb21pc2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5o
CmluZGV4IDkyYTZkMWZkM2VlNjk1YmU3NTY0ZDU5ZWQ0MWNkNzY2YTc5YjQwODAuLmJmMWRhYWNm
NzAzODgzNTAxZTVlOTIyNTI2ZWU1ODhiZjI0ZGJlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURh
dGFTb3VyY2UuaApAQCAtMzIsOCArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIERlZmVycmVkUHJvbWlzZTsKK2NsYXNzIENsaXBib2FyZDsKIGNsYXNzIENsaXBib2FyZEl0
ZW07CitjbGFzcyBEZWZlcnJlZFByb21pc2U7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1EYXRhU291
cmNlIHsKIHB1YmxpYzoKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlw
ZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIENsaXBib2FyZEl0ZW0mIG1faXRlbTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0
ZWJvYXJkRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCmluZGV4IDg4NGQ0NzYw
OTMzMDkxYzFmYTQzMjMzNzk0ZGY4NzcwMTg1MWMzNjYuLmYzMTNiM2NmOTIzMzUxYmNjODQwM2Uy
ZmRlZGE4ZWQ2NDA3MjViMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlLmNwcApAQCAtNTQsNCArNTQsMTEgQEAgdm9pZCBDbGlwYm9hcmRJdGVt
UGFzdGVib2FyZERhdGFTb3VyY2U6OmdldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVm
ZXJyZWQKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiB9CiAKK3Zv
aWQgQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRp
bmcoQ2xpcGJvYXJkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCB3cml0aW5nIHBsYXRmb3JtLWJhY2tlZCBD
bGlwYm9hcmRJdGVtcworICAgIC8vIGJhY2sgdG8gdGhlIHBhc3RlYm9hcmQgdXNpbmcgQ2xpcGJv
YXJkLndyaXRlKCkuCisgICAgY29tcGxldGlvbihXVEY6Om51bGxvcHQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0
YVNvdXJjZS5oCmluZGV4IGIyNjMyOGJlNWNhMDljZjc1MmNkNTk0Zjc4MGUyMjliNjg0ZDVhYzQu
LmU1YjczZmU0MzFkZjI2MjFiMGI1MzRlYWQ3NmNjMzEwN2Q4MmJlN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oCkBAIC00MCw2ICs0MCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JikgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0
aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4pPiYmKSBmaW5hbDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdHlwZXM7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>