<?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>205295</bug_id>
          
          <creation_ts>2019-12-16 12:30:55 -0800</creation_ts>
          <short_desc>Improve release logging in NetworkResourceLoader</short_desc>
          <delta_ts>2020-05-05 22:17:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211495</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>krollin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599030</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-16 12:30:55 -0800</bug_when>
    <thetext>Improve release logging in NetworkResourceLoader to facilitate debugging of loading-related issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599031</commentid>
    <comment_count>1</comment_count>
      <attachid>385794</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-16 12:32:18 -0800</bug_when>
    <thetext>Created attachment 385794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599081</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2019-12-16 13:53:59 -0800</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599082</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-16 13:56:43 -0800</bug_when>
    <thetext>Sample logging:

Network	default	8833	13:54:53.014803-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.014923-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.015063-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.016423-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.016623-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 1
Network	default	8833	13:54:53.016812-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.019929-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Done checking the HTTP disk cache (foundCachedEntry = 0)
Network	default	8833	13:54:53.019985-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: (isFirstLoad = 1, timeout = 31536000.000000)
Network	default	8833	13:54:53.020747-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: Going to the network (description = LocalDataTask &lt;ECE9E040-2520-4CEB-BC1C-D1D11B16A9FC&gt;.&lt;1&gt;)
Network	default	8833	13:54:53.161798-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::didReceiveResponse: (httpStatusCode = 200, MIMEType = text/html, expectedContentLength = -1, hasCachedEntryForValidation = 0, hasNetworkLoadChecker = 1)
Network	default	8833	13:54:53.161856-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::didReceiveMainResourceResponse:
Network	default	8833	13:54:53.167972-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::didReceiveResponse: Sending WebResourceLoader::DidReceiveResponse IPC (willWaitForContinueDidReceiveResponse = 1)
Network	default	8833	13:54:53.171731-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::continueDidReceiveResponse: (hasCacheEntryWaitingForContinueDidReceiveResponse = 0, hasResponseCompletionHandler = 1)
Network	default	8833	13:54:53.173506-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::didReceiveBuffer: Started receiving data (reportedEncodedDataLength = 96513)
Network	default	8833	13:54:53.173799-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::didFinishLoading: (numBytesReceived = 96513, hasCacheEntryForValidation = 0)
Network	default	8833	13:54:53.173823-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::tryStoreAsCacheEntry: Storing entry in HTTP disk cache
Network	default	8833	13:54:53.174087-0800	com.apple.WebKit.Networking.Development	0x119dfc000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 1, isMainResource = 1, isSynchronous = 0] NetworkResourceLoader::cleanup: (result = 1)
Network	default	8833	13:54:53.181054-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.181081-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.181097-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.181227-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.181245-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.181260-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.181711-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Done checking the HTTP disk cache (foundCachedEntry = 0)
Network	default	8833	13:54:53.181735-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: (isFirstLoad = 1, timeout = 2147483647.000000)
Network	default	8833	13:54:53.181930-0800	com.apple.WebKit.Networking.Development	0x119dfc580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 2, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: Going to the network (description = LocalDataTask &lt;A265515B-48DD-4B3F-855A-9B351CCF428A&gt;.&lt;2&gt;)
Network	default	8833	13:54:53.182518-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.182565-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.182583-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.182691-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.182704-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.182719-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.182801-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.182818-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.182832-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.182925-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.182941-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.182987-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.183058-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Done checking the HTTP disk cache (foundCachedEntry = 0)
Network	default	8833	13:54:53.183082-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: (isFirstLoad = 1, timeout = 2147483647.000000)
Network	default	8833	13:54:53.183254-0800	com.apple.WebKit.Networking.Development	0x119dfd080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 4, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: Going to the network (description = LocalDataTask &lt;2DF45235-AB79-4FB8-9F6F-D7D4F46482CD&gt;.&lt;3&gt;)
Network	default	8833	13:54:53.183295-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.183311-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.183331-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.183696-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.183793-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.183928-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.184052-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.184123-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.184145-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.184302-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.184319-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.184380-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.184427-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Done checking the HTTP disk cache (foundCachedEntry = 0)
Network	default	8833	13:54:53.184449-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: (isFirstLoad = 1, timeout = 2147483647.000000)
Network	default	8833	13:54:53.184662-0800	com.apple.WebKit.Networking.Development	0x119dfdb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 6, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: Going to the network (description = LocalDataTask &lt;21EF8E17-C79E-4668-9CC4-FE830F745EAA&gt;.&lt;4&gt;)
Network	default	8833	13:54:53.184732-0800	com.apple.WebKit.Networking.Development	0x119dfe100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 7, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.184752-0800	com.apple.WebKit.Networking.Development	0x119dfe100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 7, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.184767-0800	com.apple.WebKit.Networking.Development	0x119dfe100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 7, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.184859-0800	com.apple.WebKit.Networking.Development	0x119dfe100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 7, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.184874-0800	com.apple.WebKit.Networking.Development	0x119dfe100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 7, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.184890-0800	com.apple.WebKit.Networking.Development	0x119dfe100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 7, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.184945-0800	com.apple.WebKit.Networking.Development	0x119dfe680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 8, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.184962-0800	com.apple.WebKit.Networking.Development	0x119dfe680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 8, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.184977-0800	com.apple.WebKit.Networking.Development	0x119dfe680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 8, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.185255-0800	com.apple.WebKit.Networking.Development	0x119dfe680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 8, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.185314-0800	com.apple.WebKit.Networking.Development	0x119dfe680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 8, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.185378-0800	com.apple.WebKit.Networking.Development	0x119dfe680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 8, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.185456-0800	com.apple.WebKit.Networking.Development	0x119dde000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 9, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.185476-0800	com.apple.WebKit.Networking.Development	0x119dde000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 9, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.185558-0800	com.apple.WebKit.Networking.Development	0x119dde000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 9, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.185753-0800	com.apple.WebKit.Networking.Development	0x119dde000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 9, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.185771-0800	com.apple.WebKit.Networking.Development	0x119dde000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 9, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.185806-0800	com.apple.WebKit.Networking.Development	0x119dde000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 9, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.185894-0800	com.apple.WebKit.Networking.Development	0x119dde580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 10, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.185913-0800	com.apple.WebKit.Networking.Development	0x119dde580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 10, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.185929-0800	com.apple.WebKit.Networking.Development	0x119dde580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 10, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.186117-0800	com.apple.WebKit.Networking.Development	0x119dde580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 10, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.186137-0800	com.apple.WebKit.Networking.Development	0x119dde580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 10, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.186153-0800	com.apple.WebKit.Networking.Development	0x119dde580 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 10, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.186223-0800	com.apple.WebKit.Networking.Development	0x119ddeb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 11, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.186243-0800	com.apple.WebKit.Networking.Development	0x119ddeb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 11, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.186259-0800	com.apple.WebKit.Networking.Development	0x119ddeb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 11, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.186427-0800	com.apple.WebKit.Networking.Development	0x119ddeb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 11, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.186445-0800	com.apple.WebKit.Networking.Development	0x119ddeb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 11, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.186463-0800	com.apple.WebKit.Networking.Development	0x119ddeb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 11, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.186575-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Done checking the HTTP disk cache (foundCachedEntry = 0)
Network	default	8833	13:54:53.186594-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: (isFirstLoad = 1, timeout = 2147483647.000000)
Network	default	8833	13:54:53.186762-0800	com.apple.WebKit.Networking.Development	0x119dfcb00 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 3, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startNetworkLoad: Going to the network (description = LocalDataTask &lt;D51E269C-16DB-4F38-91C4-54601E88ADA9&gt;.&lt;5&gt;)
Network	default	8833	13:54:53.186832-0800	com.apple.WebKit.Networking.Development	0x119ddf080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 12, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.186852-0800	com.apple.WebKit.Networking.Development	0x119ddf080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 12, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.186875-0800	com.apple.WebKit.Networking.Development	0x119ddf080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 12, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.186974-0800	com.apple.WebKit.Networking.Development	0x119ddf080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 12, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.186990-0800	com.apple.WebKit.Networking.Development	0x119ddf080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 12, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.187005-0800	com.apple.WebKit.Networking.Development	0x119ddf080 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 12, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.187072-0800	com.apple.WebKit.Networking.Development	0x119ddf600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 13, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.187108-0800	com.apple.WebKit.Networking.Development	0x119ddf600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 13, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.187153-0800	com.apple.WebKit.Networking.Development	0x119ddf600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 13, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.187422-0800	com.apple.WebKit.Networking.Development	0x119ddf600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 13, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.187444-0800	com.apple.WebKit.Networking.Development	0x119ddf600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 13, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.187463-0800	com.apple.WebKit.Networking.Development	0x119ddf600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 13, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.187561-0800	com.apple.WebKit.Networking.Development	0x119ddfb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 14, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.187635-0800	com.apple.WebKit.Networking.Development	0x119ddfb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 14, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.187669-0800	com.apple.WebKit.Networking.Development	0x119ddfb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 14, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.188081-0800	com.apple.WebKit.Networking.Development	0x119ddfb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 14, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.188180-0800	com.apple.WebKit.Networking.Development	0x119ddfb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 14, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.188201-0800	com.apple.WebKit.Networking.Development	0x119ddfb80 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 14, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.188288-0800	com.apple.WebKit.Networking.Development	0x119de0100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 15, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.188332-0800	com.apple.WebKit.Networking.Development	0x119de0100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 15, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.188433-0800	com.apple.WebKit.Networking.Development	0x119de0100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 15, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.188792-0800	com.apple.WebKit.Networking.Development	0x119de0100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 15, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.188846-0800	com.apple.WebKit.Networking.Development	0x119de0100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 15, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.188875-0800	com.apple.WebKit.Networking.Development	0x119de0100 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 15, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.188983-0800	com.apple.WebKit.Networking.Development	0x119de0680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 16, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.189002-0800	com.apple.WebKit.Networking.Development	0x119de0680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 16, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.189023-0800	com.apple.WebKit.Networking.Development	0x119de0680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 16, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.189192-0800	com.apple.WebKit.Networking.Development	0x119de0680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 16, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.189246-0800	com.apple.WebKit.Networking.Development	0x119de0680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 16, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.189277-0800	com.apple.WebKit.Networking.Development	0x119de0680 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 16, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.189349-0800	com.apple.WebKit.Networking.Development	0x119ddb000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 17, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::startWithServiceWorker:
Network	default	8833	13:54:53.189373-0800	com.apple.WebKit.Networking.Development	0x119ddb000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 17, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::serviceWorkerDidNotHandle: (fetchIdentifier = 0)
Network	default	8833	13:54:53.189407-0800	com.apple.WebKit.Networking.Development	0x119ddb000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 17, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: parentPID = 8829, hasNetworkLoadChecker = 1
Network	default	8833	13:54:53.189657-0800	com.apple.WebKit.Networking.Development	0x119ddb000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 17, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::start: NetworkLoadChecker::check is done
Network	default	8833	13:54:53.189708-0800	com.apple.WebKit.Networking.Development	0x119ddb000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 17, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: isMainFrameLoad = 0
Network	default	8833	13:54:53.189748-0800	com.apple.WebKit.Networking.Development	0x119ddb000 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 17, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Checking the HTTP disk cache
Network	default	8833	13:54:53.189907-0800	com.apple.WebKit.Networking.Development	0x119dfd600 - [webPageProxyID = 18, webPageID = 19, frameID = 3, resourceID = 5, isMainResource = 0, isSynchronous = 0] NetworkResourceLoader::retrieveCacheEntry: Done checking the HTTP disk cache (foundCachedEntry = 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599086</commentid>
    <comment_count>4</comment_count>
      <attachid>385809</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-16 14:03:59 -0800</bug_when>
    <thetext>Created attachment 385809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599318</commentid>
    <comment_count>5</comment_count>
      <attachid>385809</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-17 01:32:10 -0800</bug_when>
    <thetext>Comment on attachment 385809
Patch

Clearing flags on attachment: 385809

Committed r253615: &lt;https://trac.webkit.org/changeset/253615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599319</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-17 01:32:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599320</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-17 01:33:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/58000434&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385794</attachid>
            <date>2019-12-16 12:32:18 -0800</date>
            <delta_ts>2019-12-16 14:03:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205295-20191216123217.patch</filename>
            <type>text/plain</type>
            <size>42690</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3NjZhNGUwNDBhMmM5ZDUx
NTY2MWMyMDg0YTg2ZjgyY2RkOTY0MjIuLjVhZmY5ZTRlMzE2ODEzMzY2YTZiYTliMjA1MzJlNzM0
MGI4Yzc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTktMTItMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHJlbGVhc2UgbG9nZ2lu
ZyBpbiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcHJvdmUgcmVsZWFzZSBsb2dnaW5nIGluIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciB0byBmYWNpbGl0YXRlIGRlYnVnZ2luZyBvZiBsb2FkaW5nLXJlbGF0ZWQgaXNz
dWVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnlJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y2xlYW51cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVy
dFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFi
b3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpyZXN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVN
YWluUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNh
Y2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
V2l0aFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorCiAyMDE5LTEyLTE2ICB5b3Vlbm4gZmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcG9zdE1lc3NhZ2UtZmV0Y2gtb3JkZXIuaHR0cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUg
YWZ0ZXIgcjI1MzUyOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGM2MWVlOTg5ZTVlMDMzMmRjZTUxNWY1NDgz
MmVjNjFhZjUyNjA0NDUuLmZmMDM1YWNiM2NlZDRmODYyNGVhNWU2M2ZmYTYxZDFhOTQ2NmYzMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTYzLDggKzYzLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZp
ZXdDb252ZXJ0ZXIuaD4KICNlbmRpZgogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3
b3JrLCAiJXAgLSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVw
IC0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFt3ZWJQYWdlUHJveHlJRCA9
ICUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmss
ICIlcCAtIFt3ZWJQYWdlUHJveHlJRCA9ICUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZF0gTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCks
IGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE3MSw2ICsxNzEsNyBAQCBib29sIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6aXNTeW5jaHJvbm91cygpIGNvbnN0CiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IHBhcmVudFBJRCA9ICVkLCBoYXNOZXR3b3Jr
TG9hZENoZWNrZXIgPSAlZCIsIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsICEhbV9uZXR3b3JrTG9h
ZENoZWNrZXIpOwogCiAgICAgbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyID0gbV9jb25uZWN0aW9u
LT5zdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5GcmFtZUxvYWQoKSk7CiAKQEAgLTE4NCwxOCArMTg1
LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAKICAgICAgICAgICAg
IFdURjo6c3dpdGNoT24ocmVzdWx0LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VF
cnJvciYgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0g
JWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7
cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCks
IG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnQ6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2sgcmV0dXJuZWQgYW4gZXJyb3Ig
KGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCwgaXNDYW5jZWxsYXRp
b24gPSAlZCkiLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZXJy
b3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZh
aWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0
aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQmIHRyaXBsZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IE5ldHdv
cmtMb2FkQ2hlY2tlcjo6Y2hlY2sgcmV0dXJuZWQgYSBzeW50aGV0aWMgcmVkaXJlY3QiKTsKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVz
dEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+d2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVxdWVzdCksIFdURk1vdmUo
dHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXNwb25z
ZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDog
c3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBw
YXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNd
IChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2sgaXMgZG9u
ZSIpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+Y2FuVXNlQ2FjaGUocmVxdWVzdCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlz
LT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMDgsNyAr
MjA5LDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2Vy
IGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmln
aW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25v
dXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAgICAgICAgIHJldHJpZXZlQ2FjaGVFbnRy
eShvcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTgsNiAr
MjE4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBpc01haW5GcmFtZUxvYWQgPSAlZCIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKICAgICBB
U1NFUlQoY2FuVXNlQ2FjaGUocmVxdWVzdCkpOwogCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7CkBAIC0yMjUsNiArMjI2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiAgICAgICAgIEFTU0VSVChtX3BhcmFtZXRlcnMub3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6TmF2aWdhdGUpOwogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVj
dGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAg
ICAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0gc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnRha2Uo
cmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJyZXRyaWV2ZUNhY2hlRW50cnk6IHJldHJpZXZlZCBhbiBlbnRyeSBmcm9tIHRoZSBwcmVmZXRj
aCBjYWNoZSAoaXNSZWRpcmVjdCA9ICVkKSIsICFlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0LmlzTnVs
bCgpKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGNyZWRlbnRpYWxzICho
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMDAwKQogICAgICAgICAg
ICAgICAgIGlmICghZW50cnktPnJlZGlyZWN0UmVxdWVzdC5pc051bGwoKSkgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlUmVkaXJlY3RFbnRyeShy
ZXF1ZXN0LCBlbnRyeS0+cmVzcG9uc2UsIGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QpOwpAQCAtMjQx
LDE0ICsyNDMsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVF
bnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hl
RW50cnk6IENoZWNraW5nIHRoZSBIVFRQIGRpc2sgY2FjaGUiKTsKICAgICBtX2NhY2hlLT5yZXRy
aWV2ZShyZXF1ZXN0LCBnbG9iYWxGcmFtZUlEKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBl
bnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgIHJldHVybjsKIAorICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2
ZUNhY2hlRW50cnk6IERvbmUgY2hlY2tpbmcgdGhlIEhUVFAgZGlzayBjYWNoZSAoZm91bmRDYWNo
ZWRFbnRyeSA9ICVkKSIsICEhZW50cnkpOwogICAgICAgICBsb2dTbG93Q2FjaGVSZXRyaWV2ZUlm
TmVlZGVkKGluZm8pOwogCiAgICAgICAgIGlmICghZW50cnkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2Ugbm90IGluIGNh
Y2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgc3RhcnROZXR3b3JrTG9hZChXVEZN
b3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTI1OCw5ICsyNjIsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJl
dHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbChzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4mJiBlbnRyeSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2
ZUNhY2hlRW50cnlJbnRlcm5hbDoiKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBS
ZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNhcCAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVu
dHJ5SW50ZXJuYWw6IFJldmFsaWRhdGluZyBjYWNoZWQgZW50cnkgYmVjYXVzZSBpdCByZWFjaGVk
IHRoZSBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNhcCIpOwogICAgICAgICBtX2NhY2hlRW50cnlG
b3JNYXhBZ2VDYXBWYWxpZGF0aW9uID0gV1RGTW92ZShlbnRyeSk7CiAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gb3JpZ2luYWxSZXF1ZXN0KCk7CiAgICAgICAg
IHN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgRmlyc3RMb2Fk
OjpZZXMpOwpAQCAtMjY4LDI5ICsyNzMsMjggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2EKICAg
ICB9CiAjZW5kaWYKICAgICBpZiAoZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVk
aXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291
cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsOiBDYWNoZWQgZW50cnkgaXMgYSByZWRpcmVjdCIp
OwogICAgICAgICBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChtX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgp
LmNlcnRpZmljYXRlSW5mbygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZp
Y2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5SW50ZXJuYWw6IENhY2hlZCBlbnRyeSBpcyBtaXNzaW5nIGNlcnRp
ZmljYXRlIGluZm9ybWF0aW9uIHNvIHdlIGFyZSBub3QgdXNpbmcgaXQiKTsKICAgICAgICAgc3Rh
cnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1
ZXN0LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6
OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3Vz
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnlJ
bnRlcm5hbDogQ2FjaGVkIGVudHJ5IG5lZWRzIHJldmFsaWRhdGlvbiIpOwogICAgICAgICB2YWxp
ZGF0ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVk
IHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5SW50ZXJuYWw6IENhY2hlZCBlbnRyeSBpcyBk
aXJlY3RseSB1c2FibGUiKTsKICAgICBkaWRSZXRyaWV2ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRy
eSkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAoaXNGaXJzdExvYWQgPSAlZCwgdGlt
ZW91dCA9ICVmKSIsIGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMsIHJlcXVlc3QudGltZW91dEludGVy
dmFsKCkpOwogICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFp
blJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgdGltZW91dCA9ICVmKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSwgcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSk7Ci0KICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCkBAIC0zMDgsNyArMzEyLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7
CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2Fk
IHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBz
ZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2Fk
IHdpdGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lv
bklEPSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IHNlc3Npb25JRCgpLnRvVUludDY0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xv
YWQgZm9yIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChzZXNzaW9uSUQgPSAlIiBQUkl1
NjQgIikiLCBzZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5u
ZXR3b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5
KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW52YWxpZFNlc3Npb25JREtleSgp
LCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgZGlkRmFpbExvYWRpbmcoaW50
ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMyMCwxMiAr
MzI0LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVi
bGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3Jr
TG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRp
b24gPSAle3B1YmxpY31zKSIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1
bHQgcmVzdWx0KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY2xlYW51cDogKHJlc3VsdCA9ICV1KSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZXN1bHQpKTsKIAogICAgIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRp
b25Db2RlIGNvZGUgeyB9OwogICAgIHN3aXRjaCAocmVzdWx0KSB7CkBAIC0zNTcsOCArMzYyLDgg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1bHQp
CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZChEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkNv
bnZlcnRpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2NCAi
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgZG93bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwotICAgIAorICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImNvbnZlcnRUb0Rvd25sb2FkOiAoZG93bmxvYWRJRCA9ICUiIFBSSXU2NCAiLCBo
YXNOZXR3b3JrTG9hZCA9ICVkLCBoYXNSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gJWQpIiwg
ZG93bmxvYWRJRC5kb3dubG9hZElEKCksICEhbV9uZXR3b3JrTG9hZCwgISFtX3Jlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpOworCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJj
ZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CiAg
ICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHNlc3Npb25JRCgpLCBkb3dubG9hZElELCByZXF1ZXN0KTsKQEAgLTM3Miwy
MCArMzc3LDIxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9h
ZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291CiAKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjphYm9ydCgpCiB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6
IChoYXNOZXR3b3JrTG9hZCA9ICVkKSIsICEhbV9uZXR3b3JrTG9hZCk7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBD
YW5jZWxpbmcgcmVzb3VyY2UgbG9hZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsCi0gICAgICAgIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwotCiAgICAgaWYgKG1fcGFyYW1ldGVycy5v
cHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZl
KSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJhYm9ydDogS2VlcGluZyBuZXR3b3JrIGxvYWQgYWxpdmUgZHVlIHRvIGtlZXBh
bGl2ZSBvcHRpb24iKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT50cmFuc2ZlcktlcHRBbGl2ZUxv
YWQoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIGlmIChhdXRvIHRhc2sgPSBXVEZNb3ZlKG1fc2VydmljZVdvcmtlckZldGNo
VGFzaykpCisgICAgaWYgKGF1dG8gdGFzayA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhYm9ydDogQ2FuY2VsbGlu
ZyBwZW5kaW5nIHNlcnZpY2Ugd29ya2VyIGZldGNoIHRhc2sgKGZldGNoSWRlbnRpZmllciA9ICUi
IFBSSXU2NCAiKSIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAg
ICB0YXNrLT5jYW5jZWxGcm9tQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAobV9u
ZXR3b3JrTG9hZCkgewpAQCAtMzk0LDYgKzQwMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjphYm9ydCgpCiAgICAgICAgICAgICBpZiAoIW1fcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgbV9jYWNoZS0+cmVtb3ZlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCkpOwogICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBD
YW5jZWxsaW5nIG5ldHdvcmsgbG9hZCIpOwogICAgICAgICBtX25ldHdvcmtMb2FkLT5jYW5jZWwo
KTsKICAgICB9CiAKQEAgLTQ2NSw3ICs0NzIsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwog
CiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVkLCBsZW5ndGgg
PSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBy
ZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlID0gJWQsIE1JTUVUeXBlID0gJXtwdWJsaWN9cywg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gJSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFs
aWRhdGlvbiA9ICVkLCBoYXNOZXR3b3JrTG9hZENoZWNrZXIgPSAlZCkiLCByZWNlaXZlZFJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCku
ZGF0YSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCAhIW1fY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24sICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCiAgICAgaWYg
KGlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIGRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25z
ZShyZWNlaXZlZFJlc3BvbnNlKTsKQEAgLTQ4Nyw2ICs0OTQsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3BvbgogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAg
Ym9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09
IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAorICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzcG9uc2U6IFJlY2VpdmVkIHJldmFsaWRhdGlvbiByZXNwb25zZSAodmFs
aWRhdGlvblN1Y2NlZWRlZCA9ICVkLCB3YXNPcmlnaW5hbFJlcXVlc3RDb25kaXRpb25hbCA9ICVk
KSIsIHZhbGlkYXRpb25TdWNjZWVkZWQsIG9yaWdpbmFsUmVxdWVzdCgpLmlzQ29uZGl0aW9uYWwo
KSk7CiAgICAgICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkKSB7CiAgICAgICAgICAgICBtX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uID0gbV9jYWNoZS0+dXBkYXRlKG9yaWdpbmFsUmVxdWVzdCgp
LCBnbG9iYWxGcmFtZUlEKCksICptX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCBtX3Jlc3BvbnNl
KTsKICAgICAgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHdhcyBjb25kaXRpb25hbCB0aGVuIHRo
aXMgcmV2YWxpZGF0aW9uIHdhcyBub3QgdHJpZ2dlcmVkIGJ5IHRoZSBuZXR3b3JrIGNhY2hlIGFu
ZCB3ZSBwYXNzIHRoZSAzMDQgcmVzcG9uc2UgdG8gV2ViQ29yZS4KQEAgLTQ5OSw2ICs1MDcsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogCiAgICAgaWYgKGlzTWFpblJlc291cmNlKCkgJiYgc2hv
dWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKG1fcmVz
cG9uc2UpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogSW50ZXJydXB0aW5nIG1haW4gcmVzb3VyY2UgbG9hZCBkdWUgdG8gQ1NQIGZy
YW1lLWFuY2VzdG9ycyBvciBYLUZyYW1lLU9wdGlvbnMiKTsKICAgICAgICAgYXV0byByZXNwb25z
ZSA9IHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFJlc291cmNlUmVzcG9uc2UgeyBtX3Jlc3Bv
bnNlIH0sIFJlc291cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2Fm
ZSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTdG9wTG9hZGlu
Z0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkIHsgcmVzcG9u
c2UgfSk7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CkBAIC01MDcsNiArNTE2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICBp
ZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAgYXV0byBlcnJvciA9IG1fbmV0d29y
a0xvYWRDaGVja2VyLT52YWxpZGF0ZVJlc3BvbnNlKG1fbmV0d29ya0xvYWQgPyBtX25ldHdvcmtM
b2FkLT5jdXJyZW50UmVxdWVzdCgpIDogb3JpZ2luYWxSZXF1ZXN0KCksIG1fcmVzcG9uc2UpOwog
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6
dmFsaWRhdGVSZXNwb25zZSByZXR1cm5lZCBhbiBlcnJvciAoZXJyb3IuZG9tYWluID0gJXtwdWJs
aWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVy
cm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7
CiAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbmV0d29ya0xvYWQpCiAgICAg
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKQEAg
LTUxNywxNiArNTI3LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAKICAgICBhdXRvIHJl
c3BvbnNlID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoUmVzb3VyY2VSZXNwb25zZSB7IG1f
cmVzcG9uc2UgfSwgUmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmln
aW5TYWZlKTsKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogVXNpbmcgcmVzcG9uc2UgZm9yIHN5bmNo
cm9ub3VzIGxvYWQiKTsKICAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5yZXNwb25zZSA9
IFdURk1vdmUocmVzcG9uc2UpOwogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5QWN0aW9uOjpVc2UpOwogICAgIH0KIAotICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSkKKyAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBVc2luZyByZXNwb25zZSBmb3IgY3Jv
c3Mtb3JpZ2luIHByZWZldGNoIik7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQ
b2xpY3lBY3Rpb246OlVzZSk7CisgICAgfQogCiAgICAgLy8gV2Ugd2FpdCB0byByZWNlaXZlIG1l
c3NhZ2UgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBi
ZWZvcmUgY29udGludWluZyBhIGxvYWQgZm9yCiAgICAgLy8gYSBtYWluIHJlc291cmNlIGJlY2F1
c2UgdGhlIGVtYmVkZGluZyBjbGllbnQgbXVzdCBkZWNpZGUgd2hldGhlciB0byBhbGxvdyB0aGUg
bG9hZC4KICAgICBib29sIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBp
c01haW5SZXNvdXJjZSgpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQ
QyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9ICVkKSIsIHdpbGxXYWl0
Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2lsbFdhaXRGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB9KTsKIAogICAgIGlmICh3aWxsV2FpdEZvckNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CkBAIC01MzQsMTYgKzU0OCwxOSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZWNlaXZlZFJlc3BvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faXNLZXB0
QWxpdmUpCisgICAgaWYgKG1faXNLZXB0QWxpdmUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBJZ25vcmluZyByZXNwb25zZSBiZWNhdXNlIG9m
IGtlZXBhbGl2ZSBvcHRpb24iKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFBv
bGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICB9CiAKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzcG9uc2U6IFVzaW5nIHJlc3BvbnNlIik7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQg
cmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2
ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA9ICVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogICAgIG1fbnVtQnl0ZXNSZWNl
aXZlZCArPSBidWZmZXItPnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFs
aWRhdGlvbik7CkBAIC01NzIsNyArNTg5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZl
ZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKG51bUJ5
dGVzUmVjZWl2ZWQgPSAlemQsIGhhc0NhY2hlRW50cnlGb3JWYWxpZGF0aW9uID0gJWQpIiwgbV9u
dW1CeXRlc1JlY2VpdmVkLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCiAgICAgaWYg
KHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKQEAgLTYwNyw3ICs2MjQsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZhaWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRp
b24gPSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgp
KTsKKyAgICBib29sIHdhc1NlcnZpY2VXb3JrZXJMb2FkID0gZmFsc2U7CisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIHdhc1NlcnZpY2VXb3JrZXJMb2FkID0gISFtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CisjZW5kaWYKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJk
aWRGYWlsTG9hZGluZzogKHdhc1NlcnZpY2VXb3JrZXJMb2FkID0gJWQsIGlzVGltZW91dCA9ICVk
LCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyb3JDb2RlID0g
JWQpIiwgd2FzU2VydmljZVdvcmtlckxvYWQsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0Nh
bmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmll
cigpKTsKQEAgLTYzNSw2ICs2NTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
RmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiIp
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRCbG9ja0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkpOwogfQogCkBAIC02NjIsNiArNjg0LDcgQEAgT3B0aW9uYWw8U2Vj
b25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VD
YXBWYWxpZGF0aW8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0OiIp
OwogICAgICsrbV9yZWRpcmVjdENvdW50OwogCiAgICAgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0
aW9uOjpDb252ZXJzaW9uPiBhZENsaWNrQ29udmVyc2lvbjsKQEAgLTY3NiwxNSArNjk5LDIxIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgICAgIGlmIChhZENsaWNrQ29udmVyc2lvbikK
ICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5lbmFibGVDb250ZW50RXh0ZW5zaW9u
c0NoZWNrKCk7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZVJlZGlyZWN0aW9u
SWZOZWVkZWQocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogQ2hlY2tpbmcgcmVkaXJl
Y3QgdXNpbmcgTmV0d29ya0xvYWRDaGVja2VyIik7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVj
a2VyLT5jaGVja1JlZGlyZWN0aW9uKFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RS
ZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdGhpcywgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBtX25ldHdv
cmtMb2FkQ2hlY2tlci0+c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSwgYWRDbGlja0NvbnZlcnNp
b24gPSBXVEZNb3ZlKGFkQ2xpY2tDb252ZXJzaW9uKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKQorICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Q6IE5ldHdv
cmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRpcmVjdGlvbiByZXR1cm5lZCB3aXRoIGEgY2FuY2VsbGF0
aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0OiBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24gcmV0
dXJuZWQgYW4gZXJyb3IiKTsKICAgICAgICAgICAgICAgICB0aGlzLT5kaWRGYWlsTG9hZGluZyhy
ZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0OiBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24gaXMgZG9uZSIpOwog
ICAgICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLnJlZGlyZWN0ID09IEZldGNoT3B0
aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbCkgewogICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZpbmlz
aFdpdGhSZWRpcmVjdFJlc3BvbnNlKFdURk1vdmUocmVzdWx0LT5yZXF1ZXN0KSwgV1RGTW92ZShy
ZXN1bHQtPnJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVzdWx0LT5yZWRpcmVjdFJlc3BvbnNl
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjkzLDcgKzcyMiw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsCiAgICAgICAgICAgICBpZiAodGhpcy0+aXNTeW5jaHJvbm91cygpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IG1fbmV0d29y
a0xvYWRDaGVja2VyLT5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcmVzdGFydCB0aGUgbG9hZCB0byB1cGRhdGUgdGhlIHNlc3Np
b24gYWNjb3JkaW5nIHRoZSBuZXcgY3JlZGVudGlhbCBwb2xpY3kuCi0gICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Q6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIFJlc3RhcnRpbmcgbmV0d29yayBsb2FkIGR1ZSB0byBjcmVkZW50aWFsIHBv
bGljeSBjaGFuZ2UgZm9yIHN5bmNocm9ub3VzIGxvYWQiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogUmVzdGFydGluZyBuZXR3b3JrIGxvYWQg
ZHVlIHRvIGNyZWRlbnRpYWwgcG9saWN5IGNoYW5nZSBmb3Igc3luY2hyb25vdXMgbG9hZCIpOwog
ICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXN1
bHQtPnJlZGlyZWN0UmVxdWVzdCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNzE0LDYgKzc0Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgT3B0aW9u
YWw8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiYmIGFkQ2xpY2tDb252ZXJzaW9uKQog
eworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdDogKG1faXNLZXB0QWxpdmUgPSAlZCwgaGFzQWRDbGlja0NvbnZlcnNpb24gPSAlZCki
LCBtX2lzS2VwdEFsaXZlLCAhIWFkQ2xpY2tDb252ZXJzaW9uKTsKICAgICBBU1NFUlQoIWlzU3lu
Y2hyb25vdXMoKSk7CiAKICAgICBpZiAobV9pc0tlcHRBbGl2ZSkgewpAQCAtNzMyLDYgKzc2Miw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2U6Iik7CiAgICAgcmVkaXJlY3RS
ZXNwb25zZS5zZXRUeXBlKFJlc291cmNlUmVzcG9uc2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0KTsK
ICAgICBpZiAoIWlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgW10gKGF1dG8pIHsgfSk7CkBAIC03NTcs
NyArNzg4LDcgQEAgUmVzb3VyY2VSZXNwb25zZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNhbml0
aXplUmVzcG9uc2VJZlBvc3NpYmxlKFJlc291cmNlUmVzcG8KIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnJlc3RhcnROZXR3b3JrTG9hZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlc3RhcnROZXR3b3Jr
TG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXN0YXJ0TmV0d29ya0xvYWQ6ICho
YXNOZXR3b3JrTG9hZCA9ICVkKSIsICEhbV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9uZXR3
b3JrTG9hZCkKICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2FuY2VsKCk7CkBAIC03NjcsMTcgKzc5
OCwyMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzID0gJWQpIiwgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChwYXJhbWV0ZXJzKCku
b3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKICAgICAgICAg
aWYgKGF1dG8gc2VydmljZVdvcmtlckZldGNoVGFzayA9IG1fY29ubmVjdGlvbi0+c3dDb25uZWN0
aW9uKCkuY3JlYXRlRmV0Y2hUYXNrKCp0aGlzLCBuZXdSZXF1ZXN0KSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IENyZWF0ZWQg
YSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIHRvIGhhbmRsZSB0aGUgcmVkaXJlY3QgKGZldGNoSWRl
bnRpZmllciA9ICUiIFBSSXU2NCAiKSIsIHNlcnZpY2VXb3JrZXJGZXRjaFRhc2stPmZldGNoSWRl
bnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxw
dHI7CiAgICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgPSBXVEZNb3ZlKHNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2spOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBOYXZp
Z2F0aW9uIGlzIG5vdCB1c2luZyBzZXJ2aWNlIHdvcmtlcnMiKTsKICAgICAgICAgbV9zaG91bGRS
ZXN0YXJ0TG9hZCA9ICEhbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogICAgICAgICBtX3NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAobV9zZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0OiBDb250aW51aW5nIGZldGNoIHRhc2sgd2l0aCByZWRpcmVjdCAoZmV0
Y2hJZGVudGlmaWVyID0gJSIgUFJJdTY0ICIpIiwgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5m
ZXRjaElkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLT5jb250aW51ZUZldGNoVGFza1dpdGgoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC03ODksNyArODI1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QKICAgICAgICAgaWYgKG1fbmV0d29ya0xvYWQpCiAgICAgICAgICAgICBtX25ldHdvcmtM
b2FkLT51cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihuZXdSZXF1ZXN0KTsKIAotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikgUmVzdGFydGluZyBuZXR3b3JrIGxvYWQiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IFJlc3RhcnRpbmcgbmV0d29yayBsb2FkIik7CiAgICAgICAgIHJl
c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTc5NywxMyArODMzLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0CiAgICAg
aWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgZG9pbmcgdGhpcyBjaGVjayB3aGVuIHJlY2VpdmluZyB0aGUgcmVkaXJlY3Rpb24gYW5kIG5v
dCBhbGxvdyBhYm91dCBwcm90b2NvbCBhcyBwZXIgZmV0Y2ggc3BlYy4KICAgICAgICAgaWYgKCFu
ZXdSZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhbmV3UmVxdWVzdC51
cmwoKS5wcm90b2NvbElzQWJvdXQoKSAmJiBtX3JlZGlyZWN0Q291bnQpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBG
YWlsaW5nIGxvYWQgYmVjYXVzZSBpdCByZWRpcmVjdGVkIHRvIGEgc2NoZW1lIHRoYXQgaXMgbm90
IEhUVFAoUykiKTsKICAgICAgICAgICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBT
dHJpbmcgeyB9LCAwLCBuZXdSZXF1ZXN0LnVybCgpLCAiUmVkaXJlY3Rpb24gdG8gVVJMIHdpdGgg
YSBzY2hlbWUgdGhhdCBpcyBub3QgSFRUUChTKSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwotCiAg
ICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYXRjaCBpbiB0aGUgbmV0
d29yayBjYWNoZSwgd2UgbmVlZCB0byByZXVzZSB0aGUgb3JpZ2luYWwgY2FjaGUgcG9saWN5IGFu
ZCBwYXJ0aXRpb24uCkBAIC04MTQsNiArODQ5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QK
ICAgICAgICAgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGly
ZWN0ID0gZmFsc2U7CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vz
cykgUmV0cmlldmluZyBjYWNoZWQgcmVkaXJlY3QiKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IG1faXNXYWl0aW5nQ29udGludWVXaWxs
U2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB3YXMgc2V0Iik7CiAKICAgICAgICAgaWYgKGNh
blVzZUNhY2hlZFJlZGlyZWN0KG5ld1JlcXVlc3QpKQogICAgICAgICAgICAgcmV0cmlldmVDYWNo
ZUVudHJ5KG5ld1JlcXVlc3QpOwpAQCAtODIzLDE0ICs4NTksMTggQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5l
d1JlcXVlc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX25ldHdvcmtMb2Fk
KQorICAgIGlmIChtX25ldHdvcmtMb2FkKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBUZWxsaW5nIE5ldHdvcmtMb2FkIHRvIHByb2Nl
ZWQgd2l0aCB0aGUgcmVkaXJlY3QiKTsKICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CisgICAgfQogfQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogeworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOiAoaGFz
Q2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9ICVkLCBoYXNS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gJWQpIiwgISFtX2NhY2hlRW50cnlXYWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UsICEhbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
KTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fc2VydmljZVdvcmtlckZl
dGNoVGFzaykgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZTogY29udGludWluZyB3aXRoIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgKGZl
dGNoSWRlbnRpZmllciA9ICUiIFBSSXU2NCAiKSIsIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+
ZmV0Y2hJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIG1fc2VydmljZVdvcmtlckZl
dGNoVGFzay0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtODg0LDE2ICs5MjQsMjMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUwK
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKIHsK
LSAgICBpZiAoIWNhblVzZUNhY2hlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkpKQor
ICAgIGlmICghY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5v
dCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkKKyAgICB9
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRy
eSBiZWNhdXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0cnlTdG9yZUFzQ2FjaGVFbnRy
eTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwogICAgICAgICAgICAgc2Vzc2lv
bi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCku
dXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBk
aXNrIGNhY2hlIik7CiAgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xv
YWRlciA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKQEAgLTkwNiw2ICs5NTMsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogeworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZToiKTsKICNpZiBFTkFCTEUoTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKGF1dG8qIHNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBtX2NhY2hlID8gbV9jYWNoZS0+c3BlY3VsYXRpdmVMb2FkTWFu
YWdlcigpIDogbnVsbHB0cikKICAgICAgICAgc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0
ZXJNYWluUmVzb3VyY2VMb2FkUmVzcG9uc2UoZ2xvYmFsRnJhbWVJRCgpLCBvcmlnaW5hbFJlcXVl
c3QoKSwgcmVzcG9uc2UpOwpAQCAtOTE0LDEyICs5NjIsMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRy
eShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpCiB7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiIpOwogICAgIGF1dG8g
cmVzcG9uc2UgPSBlbnRyeS0+cmVzcG9uc2UoKTsKIAogICAgIGlmIChpc01haW5SZXNvdXJjZSgp
KQogICAgICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogCiAg
ICAgaWYgKGlzTWFpblJlc291cmNlKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1l
QW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKHJlc3BvbnNlKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IFN0b3BwaW5nIGxvYWQg
ZHVlIHRvIENTUCBGcmFtZS1BbmNlc3RvcnMgb3IgWC1GcmFtZS1PcHRpb25zIik7CiAgICAgICAg
IHJlc3BvbnNlID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoV1RGTW92ZShyZXNwb25zZSks
IFJlc291cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2FmZSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTdG9wTG9hZGluZ0FmdGVy
WEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkIHsgcmVzcG9uc2UgfSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw2ICs5NzcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2Fj
aGU6OgogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBhdXRvIGVycm9y
ID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnZhbGlkYXRlUmVzcG9uc2Uob3JpZ2luYWxSZXF1ZXN0
KCksIHJlc3BvbnNlKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiBG
YWlsaW5nIGxvYWQgZHVlIHRvIE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFsaWRhdGVSZXNwb25zZSIp
OwogICAgICAgICAgICAgZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC05NDEsNiArOTkyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoK
ICAgICB9CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
ID0gaXNNYWluUmVzb3VyY2UoKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZXRy
aWV2ZUNhY2hlRW50cnk6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNw
b25zZSBJUEMgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0gJWQpIiwg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CiAKICAgICBpZiAobmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCkBAIC05NTMsNiArMTAwNSw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5k
UmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
ZW50cnkpCiB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2VuZFJlc3VsdEZvckNhY2hl
RW50cnk6Iik7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBpZiAoIWVudHJ5
LT5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzb3VyY2UoZW50cnktPnNoYXJl
YWJsZVJlc291cmNlSGFuZGxlKCkpKTsKQEAgLTk3OSw2ICsxMDMyLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGUKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpCiB7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmFsaWRhdGVDYWNoZUVudHJ5OiIpOwogICAgIEFTU0VS
VCghbV9uZXR3b3JrTG9hZCk7CiAKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBhbHJlYWR5IGNv
bmRpdGlvbmFsIHRoZW4gdGhlIHJldmFsaWRhdGlvbiB3YXMgbm90IHRyaWdnZXJlZCBieSB0aGUg
ZGlzayBjYWNoZQpAQCAtMTAwMCw2ICsxMDU0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnZhbGlkYXRlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnQK
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9y
Q2FjaGVFbnRyeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NhY2hlOjpFbnRyeT4mJiBlbnRyeSkKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnk6Iik7CiAgICAgQVNTRVJUKGVu
dHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSk7CiAgICAgQVNTRVJUKCFtX2lzV2FpdGluZ0NvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QpOwogCkBAIC0xMjYwLDE4ICsxMzE1LDIz
IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSBj
b25zdAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydFdpdGhTZXJ2aWNlV29ya2VyKCkKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydFdpdGhTZXJ2aWNlV29ya2VyOiIpOwogICAgIEFTU0VSVCghbV9zZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKTsKICAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgPSBtX2Nvbm5lY3Rp
b24tPnN3Q29ubmVjdGlvbigpLmNyZWF0ZUZldGNoVGFzaygqdGhpcywgb3JpZ2luYWxSZXF1ZXN0
KCkpOwotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spCisgICAgaWYgKG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzaykgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dFdpdGhTZXJ2aWNlV29ya2VyOiBDcmVhdGVkIGEgU2VydmljZVdvcmtlckZldGNoVGFzayAoZmV0
Y2hJZGVudGlmaWVyID0gJSIgUFJJdTY0ICIpIiwgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5m
ZXRjaElkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUobnVsbHB0cik7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sqIGZldGNoVGFzaykKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlOiAoZmV0Y2hJZGVudGlmaWVyID0gJSIgUFJJdTY0ICIpIiwg
ZmV0Y2hUYXNrID8gZmV0Y2hUYXNrLT5mZXRjaElkZW50aWZpZXIoKS50b1VJbnQ2NCgpIDogMCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmdldCgpID09IGZl
dGNoVGFzayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vy
dmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IEFib3J0aW5nIGxvYWQgYmVjYXVzZSB0
aGUgc2VydmljZSB3b3JrZXIgZGlkIG5vdCBoYW5kbGUgdGhlIGxvYWQgYW5kIHNlcnZpY2VXb3Jr
ZXJNb2RlIG9ubHkgYWxsb3dzIHNlcnZpY2Ugd29ya2VycyIpOwogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGlk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGFib3J0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyODQs
NyArMTM0NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlk
Tm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqIGZlCiAgICAgICAgIGlmIChtX25ldHdv
cmtMb2FkKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZC0+dXBkYXRlUmVxdWVzdEFmdGVyUmVk
aXJlY3Rpb24obmV3UmVxdWVzdCk7CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikgUmVzdGFydGluZyBuZXR3
b3JrIGxvYWQiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2VydmljZVdvcmtlckRpZE5vdEhhbmRsZTogUmVz
dGFydGluZyBuZXR3b3JrIGxvYWQgZm9yIHJlZGlyZWN0Iik7CiAgICAgICAgIHJlc3RhcnROZXR3
b3JrTG9hZChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385809</attachid>
            <date>2019-12-16 14:03:59 -0800</date>
            <delta_ts>2019-12-17 01:32:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205295-20191216140359.patch</filename>
            <type>text/plain</type>
            <size>44485</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3NjZhNGUwNDBhMmM5ZDUx
NTY2MWMyMDg0YTg2ZjgyY2RkOTY0MjIuLjVhZmY5ZTRlMzE2ODEzMzY2YTZiYTliMjA1MzJlNzM0
MGI4Yzc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTktMTItMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHJlbGVhc2UgbG9nZ2lu
ZyBpbiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcHJvdmUgcmVsZWFzZSBsb2dnaW5nIGluIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciB0byBmYWNpbGl0YXRlIGRlYnVnZ2luZyBvZiBsb2FkaW5nLXJlbGF0ZWQgaXNz
dWVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnlJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y2xlYW51cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVy
dFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFi
b3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpyZXN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVN
YWluUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNh
Y2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
V2l0aFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorCiAyMDE5LTEyLTE2ICB5b3Vlbm4gZmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcG9zdE1lc3NhZ2UtZmV0Y2gtb3JkZXIuaHR0cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUg
YWZ0ZXIgcjI1MzUyOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGM2MWVlOTg5ZTVlMDMzMmRjZTUxNWY1NDgz
MmVjNjFhZjUyNjA0NDUuLmE5YzAwOWRkMWE3Zjc0MjcwNzIwZjRmMGQ0MjhhZjRlNDQ5MThiZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTYzLDggKzYzLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZp
ZXdDb252ZXJ0ZXIuaD4KICNlbmRpZgogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3
b3JrLCAiJXAgLSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVw
IC0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQ
Ukl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgaXNTeW5jaHJvbm91cz0lZF0g
TmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQ
cm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlUHJv
eHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZT0lZCwgaXNTeW5jaHJv
bm91cz0lZF0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgIyNfX1ZBX0FSR1Nf
XykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE3
MSw2ICsxNzEsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNTeW5jaHJvbm91cygp
IGNvbnN0CiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IHBhcmVudFBJRD0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2VyPSVkIiwgbV9wYXJhbWV0ZXJzLnBh
cmVudFBJRCwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKICAgICBtX25ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9h
ZCgpKTsKIApAQCAtMTg0LDE4ICsxODUsMTggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0KCkKIAogICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsCiAgICAgICAgICAg
ICAgICAgW3RoaXNdIChSZXNvdXJjZUVycm9yJiBlcnJvcikgewotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hlY2tpbmcgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCks
IHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJyb3IuZG9t
YWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogTmV0d29ya0xvYWRDaGVja2VyOjpj
aGVjayByZXR1cm5lZCBhbiBlcnJvciAoZXJyb3IuZG9tYWluPSV7cHVibGljfXMsIGVycm9yLmNv
ZGU9JWQsIGlzQ2FuY2VsbGF0aW9uPSVkKSIsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFlcnJvci5pc0NhbmNlbGxhdGlvbigpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy0+ZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAgICAgW3RoaXNdIChOZXR3b3JrTG9hZENoZWNrZXI6OlJlZGlyZWN0aW9uVHJp
cGxldCYgdHJpcGxldCkgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydDogTmV0d29ya0xvYWRDaGVja2VyOjpjaGVjayByZXR1cm5lZCBhIHN5bnRoZXRp
YyByZWRpcmVjdCIpOwogICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX2lzV2FpdGluZ0NvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB0aGlzLT53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUodHJpcGxldC5y
ZXF1ZXN0KSwgV1RGTW92ZSh0cmlwbGV0LnJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUodHJpcGxl
dC5yZWRpcmVjdFJlc3BvbnNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3Qg
VVJMIHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25v
dXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICAgICBbdGhpc10gKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgeworICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogTmV0d29ya0xvYWRDaGVj
a2VyOjpjaGVjayBpcyBkb25lIik7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5jYW5V
c2VDYWNoZShyZXF1ZXN0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFp
blJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJ
RCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXRyaWV2ZUNhY2hlRW50cnkocmVx
dWVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTIwOCw3ICsyMDksNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnQoKQogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9uY2UgbV9u
ZXR3b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCiAgICAgaWYg
KGNhblVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAg
cmV0cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxOCw2ICsyMTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IGlzTWFpbkZyYW1lTG9hZD0lZCIsIGlzTWFpbkZyYW1l
TG9hZCgpKTsKICAgICBBU1NFUlQoY2FuVXNlQ2FjaGUocmVxdWVzdCkpOwogCiAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CkBAIC0yMjUsNiArMjI2LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIEFTU0VSVChtX3BhcmFtZXRlcnMub3B0aW9ucy5tb2Rl
ID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpOwogICAgICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0gc2Vzc2lvbi0+cHJlZmV0
Y2hDYWNoZSgpLnRha2UocmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IHJldHJpZXZlZCBhbiBlbnRyeSBm
cm9tIHRoZSBwcmVmZXRjaCBjYWNoZSAoaXNSZWRpcmVjdD0lZCkiLCAhZW50cnktPnJlZGlyZWN0
UmVxdWVzdC5pc051bGwoKSk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBj
cmVkZW50aWFscyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDAw
MCkKICAgICAgICAgICAgICAgICBpZiAoIWVudHJ5LT5yZWRpcmVjdFJlcXVlc3QuaXNOdWxsKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZVJl
ZGlyZWN0RW50cnkocmVxdWVzdCwgZW50cnktPnJlc3BvbnNlLCBlbnRyeS0+cmVkaXJlY3RSZXF1
ZXN0KTsKQEAgLTI0MSwxNCArMjQzLDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpy
ZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBDaGVja2luZyB0aGUgSFRUUCBkaXNrIGNhY2hlIik7CiAgICAg
bV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgZ2xvYmFsRnJhbWVJRCgpLCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1
ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBEb25lIGNoZWNraW5nIHRoZSBIVFRQIGRpc2sgY2Fj
aGUgKGZvdW5kQ2FjaGVkRW50cnk9JWQpIiwgISFlbnRyeSk7CiAgICAgICAgIGxvZ1Nsb3dDYWNo
ZVJldHJpZXZlSWZOZWVkZWQoaW5mbyk7CiAKICAgICAgICAgaWYgKCFlbnRyeSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJj
ZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlz
TWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBzdGFydE5ldHdv
cmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMjU4LDkgKzI2MiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeUludGVy
bmFsKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmIGVudHJ5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeUludGVybmFsOiIpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3Vy
Y2VBZ2VDYXAoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2Fw
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnlJbnRlcm5hbDogUmV2YWxpZGF0aW5nIGNhY2hlZCBlbnRyeSBiZWNhdXNl
IGl0IHJlYWNoZWQgdGhlIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2FwIik7CiAgICAgICAgIG1f
Y2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24gPSBXVEZNb3ZlKGVudHJ5KTsKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3Qo
KTsKICAgICAgICAgc3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3Qp
LCBGaXJzdExvYWQ6Olllcyk7CkBAIC0yNjgsMjkgKzI3MywyOCBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5SW50ZXJuYWwoc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYQogICAgIH0KICNlbmRpZgogICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBI
YW5kbGluZyByZWRpcmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5SW50ZXJuYWw6IENhY2hlZCBlbnRyeSBpcyBh
IHJlZGlyZWN0Iik7CiAgICAgICAgIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRy
eShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnkt
PnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVp
cmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBp
c01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbDogQ2FjaGVkIGVudHJ5IGlzIG1p
c3NpbmcgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gc28gd2UgYXJlIG5vdCB1c2luZyBpdCIpOwog
ICAgICAgICBzdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVz
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZW50cnktPm5lZWRzVmFsaWRhdGlv
bigpIHx8IHJlcXVlc3QuY2FjaGVQb2xpY3koKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeTo6UmVmcmVzaEFueUNhY2hlRGF0YSkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUgZW50cnkgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeUludGVybmFsOiBDYWNoZWQgZW50cnkgbmVlZHMgcmV2YWxpZGF0aW9uIik7CiAg
ICAgICAgIHZhbGlkYXRlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5
OiBSZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbDogQ2FjaGVk
IGVudHJ5IGlzIGRpcmVjdGx5IHVzYWJsZSIpOwogICAgIGRpZFJldHJpZXZlQ2FjaGVFbnRyeShX
VEZNb3ZlKGVudHJ5KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5l
dHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hZCBsb2FkKQogewor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChpc0ZpcnN0TG9h
ZD0lZCwgdGltZW91dD0lZikiLCBsb2FkID09IEZpcnN0TG9hZDo6WWVzLCByZXF1ZXN0LnRpbWVv
dXRJbnRlcnZhbCgpKTsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHRpbWVvdXQgPSAlZiki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCksIHJlcXVlc3QudGltZW91dEludGVydmFsKCkpOwotCiAgICAgICAg
IGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3Vz
KCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQpAQCAtMzA4LDcg
KzMxMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgYXV0byogbmV0d29ya1Nlc3Np
b24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU2Vz
c2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3
b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhp
c3QuIiwgc2Vzc2lvbklEKCkudG9VSW50NjQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3
b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBzZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5l
dHdvcmtMb2FkIGZvciBhIHNlc3Npb24gdGhhdCBkb2VzIG5vdCBleGlzdCAoc2Vzc2lvbklEPSUi
IFBSSXU2NCAiKSIsIHNlc3Npb25JRCgpLnRvVUludDY0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkubG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJy
b3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklE
S2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGlu
ZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzIw
LDEyICszMjQsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xv
YWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICBwYXJhbWV0ZXJzLnJl
cXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVl
PE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0g
JXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChkZXNj
cmlwdGlvbj0le3B1YmxpY31zKSIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgp
LmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRS
ZXN1bHQgcmVzdWx0KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiY2xlYW51cDogKHJlc3VsdD0ldSkiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVzdWx0KSk7CiAKICAgICBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0
aW9uQ29kZSBjb2RlIHsgfTsKICAgICBzd2l0Y2ggKHJlc3VsdCkgewpAQCAtMzU3LDggKzM2Miw4
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0
KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJD
b252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQg
IiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKLSAgICAKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJjb252ZXJ0VG9Eb3dubG9hZDogKGRvd25sb2FkSUQ9JSIgUFJJdTY0ICIsIGhh
c05ldHdvcmtMb2FkPSVkLCBoYXNSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyPSVkKSIsIGRvd25s
b2FkSUQuZG93bmxvYWRJRCgpLCAhIW1fbmV0d29ya0xvYWQsICEhbV9yZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyKTsKKwogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgcmVzb3VyY2UgY2Ft
ZSBmcm9tIHRoZSBkaXNrIGNhY2hlLgogICAgIGlmICghbV9uZXR3b3JrTG9hZCkgewogICAgICAg
ICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnRE
b3dubG9hZChzZXNzaW9uSUQoKSwgZG93bmxvYWRJRCwgcmVxdWVzdCk7CkBAIC0zNzIsMjAgKzM3
NywyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YWJvcnQoKQogeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiAoaGFz
TmV0d29ya0xvYWQ9JWQpIiwgISFtX25ldHdvcmtMb2FkKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGlu
ZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllcik7Ci0KICAgICBpZiAobV9wYXJhbWV0ZXJzLm9wdGlvbnMu
a2VlcEFsaXZlICYmIG1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1faXNLZXB0QWxpdmUpIHsKICAg
ICAgICAgbV9pc0tlcHRBbGl2ZSA9IHRydWU7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImFib3J0OiBLZWVwaW5nIG5ldHdvcmsgbG9hZCBhbGl2ZSBkdWUgdG8ga2VlcGFsaXZlIG9w
dGlvbiIpOwogICAgICAgICBtX2Nvbm5lY3Rpb24tPnRyYW5zZmVyS2VwdEFsaXZlTG9hZCgqdGhp
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgaWYgKGF1dG8gdGFzayA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkK
KyAgICBpZiAoYXV0byB0YXNrID0gV1RGTW92ZShtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBDYW5jZWxsaW5nIHBlbmRp
bmcgc2VydmljZSB3b3JrZXIgZmV0Y2ggdGFzayAoZmV0Y2hJZGVudGlmaWVyPSUiIFBSSXU2NCAi
KSIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICB0YXNrLT5j
YW5jZWxGcm9tQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAobV9uZXR3b3JrTG9h
ZCkgewpAQCAtMzk0LDYgKzQwMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9y
dCgpCiAgICAgICAgICAgICBpZiAoIW1fcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgbV9jYWNoZS0+cmVtb3ZlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkpOwogICAg
ICAgICB9CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBDYW5jZWxsaW5n
IG5ldHdvcmsgbG9hZCIpOwogICAgICAgICBtX25ldHdvcmtMb2FkLT5jYW5jZWwoKTsKICAgICB9
CiAKQEAgLTQ2NSw3ICs0NzIsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
SW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklk
NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25z
ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0le3B1YmxpY31zLCBleHBlY3RlZENvbnRl
bnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFz
TmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVz
cG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
biwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKICAgICBpZiAoaXNNYWluUmVzb3VyY2UoKSkK
ICAgICAgICAgZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2Up
OwpAQCAtNDg3LDYgKzQ5NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAKICAgICBpZiAo
bV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNj
ZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1v
ZGlmaWVkCisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25z
ZTogUmVjZWl2ZWQgcmV2YWxpZGF0aW9uIHJlc3BvbnNlICh2YWxpZGF0aW9uU3VjY2VlZGVkPSVk
LCB3YXNPcmlnaW5hbFJlcXVlc3RDb25kaXRpb25hbD0lZCkiLCB2YWxpZGF0aW9uU3VjY2VlZGVk
LCBvcmlnaW5hbFJlcXVlc3QoKS5pc0NvbmRpdGlvbmFsKCkpOwogICAgICAgICBpZiAodmFsaWRh
dGlvblN1Y2NlZWRlZCkgewogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiA9
IG1fY2FjaGUtPnVwZGF0ZShvcmlnaW5hbFJlcXVlc3QoKSwgZ2xvYmFsRnJhbWVJRCgpLCAqbV9j
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgbV9yZXNwb25zZSk7CiAgICAgICAgICAgICAvLyBJZiB0
aGUgcmVxdWVzdCB3YXMgY29uZGl0aW9uYWwgdGhlbiB0aGlzIHJldmFsaWRhdGlvbiB3YXMgbm90
IHRyaWdnZXJlZCBieSB0aGUgbmV0d29yayBjYWNoZSBhbmQgd2UgcGFzcyB0aGUgMzA0IHJlc3Bv
bnNlIHRvIFdlYkNvcmUuCkBAIC00OTksNiArNTA3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNw
b24KICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsK
IAogICAgIGlmIChpc01haW5SZXNvdXJjZSgpICYmIHNob3VsZEludGVycnVwdExvYWRGb3JDU1BG
cmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW9ucyhtX3Jlc3BvbnNlKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IEludGVycnVwdGlu
ZyBtYWluIHJlc291cmNlIGxvYWQgZHVlIHRvIENTUCBmcmFtZS1hbmNlc3RvcnMgb3IgWC1GcmFt
ZS1PcHRpb25zIik7CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBzYW5pdGl6ZVJlc3BvbnNlSWZQ
b3NzaWJsZShSZXNvdXJjZVJlc3BvbnNlIHsgbV9yZXNwb25zZSB9LCBSZXNvdXJjZVJlc3BvbnNl
OjpTYW5pdGl6YXRpb25UeXBlOjpDcm9zc09yaWdpblNhZmUpOwogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6U3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNv
bnRlbnRTZWN1cml0eVBvbGljeURlbmllZCB7IHJlc3BvbnNlIH0pOwogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwpAQCAtNTA3LDYgKzUxNiw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2Vy
KSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+dmFsaWRhdGVS
ZXNwb25zZShtX25ldHdvcmtMb2FkID8gbV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSA6
IG9yaWdpbmFsUmVxdWVzdCgpLCBtX3Jlc3BvbnNlKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051
bGwoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiBOZXR3b3JrTG9hZENoZWNrZXI6OnZhbGlkYXRlUmVzcG9uc2UgcmV0dXJu
ZWQgYW4gZXJyb3IgKGVycm9yLmRvbWFpbj0le3B1YmxpY31zLCBlcnJvci5jb2RlPSVkKSIsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAgICAgICAgICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPm1fbmV0d29ya0xvYWQpCiAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKQEAgLTUxNywxNiArNTI3LDIwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uCiAKICAgICBhdXRvIHJlc3BvbnNlID0gc2FuaXRpemVSZXNwb25zZUlm
UG9zc2libGUoUmVzb3VyY2VSZXNwb25zZSB7IG1fcmVzcG9uc2UgfSwgUmVzb3VyY2VSZXNwb25z
ZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsKICAgICBpZiAoaXNTeW5jaHJv
bm91cygpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNw
b25zZTogVXNpbmcgcmVzcG9uc2UgZm9yIHN5bmNocm9ub3VzIGxvYWQiKTsKICAgICAgICAgbV9z
eW5jaHJvbm91c0xvYWREYXRhLT5yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOwogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogICAgIH0KIAot
ICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKKyAgICBpZiAoaXNDcm9zc09yaWdpblBy
ZWZldGNoKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiBVc2luZyByZXNwb25zZSBmb3IgY3Jvc3Mtb3JpZ2luIHByZWZldGNoIik7CiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgfQog
CiAgICAgLy8gV2Ugd2FpdCB0byByZWNlaXZlIG1lc3NhZ2UgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBiZWZvcmUgY29udGludWluZyBhIGxvYWQgZm9y
CiAgICAgLy8gYSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIGVtYmVkZGluZyBjbGllbnQgbXVz
dCBkZWNpZGUgd2hldGhlciB0byBhbGxvdyB0aGUgbG9hZC4KICAgICBib29sIHdpbGxXYWl0Rm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBpc01haW5SZXNvdXJjZSgpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7
CiAKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSkgewpAQCAt
NTM0LDE2ICs1NDgsMTkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChtX2lzS2VwdEFsaXZlKQorICAgIGlmIChtX2lzS2VwdEFsaXZl
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
SWdub3JpbmcgcmVzcG9uc2UgYmVjYXVzZSBvZiBrZWVwYWxpdmUgb3B0aW9uIik7CiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgfQog
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBVc2luZyBy
ZXNwb25zZSIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0K
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRh
dGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAg
QVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKQEAgLTU3Miw3ICs1ODksNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRGaW5pc2hMb2FkaW5nOiAobnVtQnl0ZXNSZWNlaXZlZD0lemQsIGhhc0NhY2hlRW50cnlG
b3JWYWxpZGF0aW9uPSVkKSIsIG1fbnVtQnl0ZXNSZWNlaXZlZCwgISFtX2NhY2hlRW50cnlGb3JW
YWxpZGF0aW9uKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0
cmljcyhpZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC02MDcsNyArNjI0LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNUaW1l
b3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9ICVkLCBlcnJD
b2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3Iu
aXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJv
bCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgYm9vbCB3YXNTZXJ2aWNlV29ya2VyTG9hZCA9
IGZhbHNlOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB3YXNTZXJ2aWNlV29ya2Vy
TG9hZCA9ICEhbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOworI2VuZGlmCisgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6ICh3YXNTZXJ2aWNlV29ya2VyTG9h
ZD0lZCwgaXNUaW1lb3V0PSVkLCBpc0NhbmNlbGxhdGlvbj0lZCwgaXNBY2Nlc3NDb250cm9sPSVk
LCBlcnJvckNvZGU9JWQpIiwgd2FzU2VydmljZVdvcmtlckxvYWQsIGVycm9yLmlzVGltZW91dCgp
LCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3Iu
ZXJyb3JDb2RlKCkpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRp
b24oaWRlbnRpZmllcigpKTsKQEAgLTYzNSw2ICs2NTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOiIpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwogfQogCkBAIC02NjIsNiArNjg0LDcgQEAg
T3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50
cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0OiIpOwogICAgICsrbV9yZWRpcmVjdENvdW50OwogCiAgICAgT3B0aW9uYWw8QWRD
bGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiBhZENsaWNrQ29udmVyc2lvbjsKQEAgLTY3Niwx
NSArNjk5LDIxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgICAgIGlmIChhZENsaWNr
Q29udmVyc2lvbikKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5lbmFibGVDb250
ZW50RXh0ZW5zaW9uc0NoZWNrKCk7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9y
ZVJlZGlyZWN0aW9uSWZOZWVkZWQocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogQ2hl
Y2tpbmcgcmVkaXJlY3QgdXNpbmcgTmV0d29ya0xvYWRDaGVja2VyIik7CiAgICAgICAgIG1fbmV0
d29ya0xvYWRDaGVja2VyLT5jaGVja1JlZGlyZWN0aW9uKFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdGhpcywgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSwgYWRD
bGlja0NvbnZlcnNpb24gPSBXVEZNb3ZlKGFkQ2xpY2tDb252ZXJzaW9uKV0oYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKQorICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3Q6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRpcmVjdGlvbiByZXR1cm5lZCB3aXRo
IGEgY2FuY2VsbGF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KCJ3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0OiBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVk
aXJlY3Rpb24gcmV0dXJuZWQgYW4gZXJyb3IiKTsKICAgICAgICAgICAgICAgICB0aGlzLT5kaWRG
YWlsTG9hZGluZyhyZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0OiBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24g
aXMgZG9uZSIpOwogICAgICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLnJlZGlyZWN0
ID09IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbCkgewogICAgICAgICAgICAgICAgIHRo
aXMtPmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKFdURk1vdmUocmVzdWx0LT5yZXF1ZXN0
KSwgV1RGTW92ZShyZXN1bHQtPnJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVzdWx0LT5yZWRp
cmVjdFJlc3BvbnNlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjkzLDcgKzcyMiw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgICAgICAgICBpZiAodGhpcy0+aXNTeW5j
aHJvbm91cygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ICE9IG1fbmV0d29ya0xvYWRDaGVja2VyLT5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVzdGFydCB0aGUgbG9hZCB0byB1cGRh
dGUgdGhlIHNlc3Npb24gYWNjb3JkaW5nIHRoZSBuZXcgY3JlZGVudGlhbCBwb2xpY3kuCi0gICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIFJlc3RhcnRpbmcgbmV0d29yayBsb2FkIGR1ZSB0byBj
cmVkZW50aWFsIHBvbGljeSBjaGFuZ2UgZm9yIHN5bmNocm9ub3VzIGxvYWQiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogUmVzdGFydGluZyBu
ZXR3b3JrIGxvYWQgZHVlIHRvIGNyZWRlbnRpYWwgcG9saWN5IGNoYW5nZSBmb3Igc3luY2hyb25v
dXMgbG9hZCIpOwogICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXN0YXJ0TmV0d29ya0xvYWQo
V1RGTW92ZShyZXN1bHQtPnJlZGlyZWN0UmVxdWVzdCkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtNzE0LDYgKzc0Myw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiYmIGFkQ2xpY2tD
b252ZXJzaW9uKQogeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdDogKG1faXNLZXB0QWxpdmU9JWQsIGhhc0FkQ2xpY2tDb252ZXJz
aW9uPSVkKSIsIG1faXNLZXB0QWxpdmUsICEhYWRDbGlja0NvbnZlcnNpb24pOwogICAgIEFTU0VS
VCghaXNTeW5jaHJvbm91cygpKTsKIAogICAgIGlmIChtX2lzS2VwdEFsaXZlKSB7CkBAIC03MzIs
NiArNzYyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJgogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZToiKTsKICAgICBy
ZWRpcmVjdFJlc3BvbnNlLnNldFR5cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlcmVk
aXJlY3QpOwogICAgIGlmICghaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBbXSAoYXV0bykgeyB9KTsK
QEAgLTc1Nyw3ICs3ODgsNyBAQCBSZXNvdXJjZVJlc3BvbnNlIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoUmVzb3VyY2VSZXNwbwogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVzdGFy
dE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlc3RhcnROZXR3b3Jr
TG9hZDogKGhhc05ldHdvcmtMb2FkPSVkKSIsICEhbV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAo
bV9uZXR3b3JrTG9hZCkKICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2FuY2VsKCk7CkBAIC03Njcs
MTcgKzc5OCwyMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtM
b2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzPSVkKSIsIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAocGFyYW1ldGVy
cygpLm9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CiAgICAg
ICAgIGlmIChhdXRvIHNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgPSBtX2Nvbm5lY3Rpb24tPnN3Q29u
bmVjdGlvbigpLmNyZWF0ZUZldGNoVGFzaygqdGhpcywgbmV3UmVxdWVzdCkpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBDcmVh
dGVkIGEgU2VydmljZVdvcmtlckZldGNoVGFzayB0byBoYW5kbGUgdGhlIHJlZGlyZWN0IChmZXRj
aElkZW50aWZpZXI9JSIgUFJJdTY0ICIpIiwgc2VydmljZVdvcmtlckZldGNoVGFzay0+ZmV0Y2hJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkID0gbnVs
bHB0cjsKICAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzayA9IFdURk1vdmUoc2Vy
dmljZVdvcmtlckZldGNoVGFzayk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IE5h
dmlnYXRpb24gaXMgbm90IHVzaW5nIHNlcnZpY2Ugd29ya2VycyIpOwogICAgICAgICBtX3Nob3Vs
ZFJlc3RhcnRMb2FkID0gISFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiAgICAgICAgIG1fc2Vy
dmljZVdvcmtlckZldGNoVGFzayA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmIChtX3NlcnZpY2VX
b3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IENvbnRpbnVpbmcgZmV0Y2ggdGFzayB3aXRoIHJlZGlyZWN0IChm
ZXRjaElkZW50aWZpZXI9JSIgUFJJdTY0ICIpIiwgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5m
ZXRjaElkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLT5jb250aW51ZUZldGNoVGFza1dpdGgoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC03ODksNyArODI1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QKICAgICAgICAgaWYgKG1fbmV0d29ya0xvYWQpCiAgICAgICAgICAgICBtX25ldHdvcmtM
b2FkLT51cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihuZXdSZXF1ZXN0KTsKIAotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikgUmVzdGFydGluZyBuZXR3b3JrIGxvYWQiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IFJlc3RhcnRpbmcgbmV0d29yayBsb2FkIik7CiAgICAgICAgIHJl
c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTc5NywxMyArODMzLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0CiAgICAg
aWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgZG9pbmcgdGhpcyBjaGVjayB3aGVuIHJlY2VpdmluZyB0aGUgcmVkaXJlY3Rpb24gYW5kIG5v
dCBhbGxvdyBhYm91dCBwcm90b2NvbCBhcyBwZXIgZmV0Y2ggc3BlYy4KICAgICAgICAgaWYgKCFu
ZXdSZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhbmV3UmVxdWVzdC51
cmwoKS5wcm90b2NvbElzQWJvdXQoKSAmJiBtX3JlZGlyZWN0Q291bnQpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBG
YWlsaW5nIGxvYWQgYmVjYXVzZSBpdCByZWRpcmVjdGVkIHRvIGEgc2NoZW1lIHRoYXQgaXMgbm90
IEhUVFAoUykiKTsKICAgICAgICAgICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBT
dHJpbmcgeyB9LCAwLCBuZXdSZXF1ZXN0LnVybCgpLCAiUmVkaXJlY3Rpb24gdG8gVVJMIHdpdGgg
YSBzY2hlbWUgdGhhdCBpcyBub3QgSFRUUChTKSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwotCiAg
ICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYXRjaCBpbiB0aGUgbmV0
d29yayBjYWNoZSwgd2UgbmVlZCB0byByZXVzZSB0aGUgb3JpZ2luYWwgY2FjaGUgcG9saWN5IGFu
ZCBwYXJ0aXRpb24uCkBAIC04MTQsNiArODQ5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QK
ICAgICAgICAgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGly
ZWN0ID0gZmFsc2U7CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vz
cykgUmV0cmlldmluZyBjYWNoZWQgcmVkaXJlY3QiKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IG1faXNXYWl0aW5nQ29udGludWVXaWxs
U2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB3YXMgc2V0Iik7CiAKICAgICAgICAgaWYgKGNh
blVzZUNhY2hlZFJlZGlyZWN0KG5ld1JlcXVlc3QpKQogICAgICAgICAgICAgcmV0cmlldmVDYWNo
ZUVudHJ5KG5ld1JlcXVlc3QpOwpAQCAtODIzLDE0ICs4NTksMTggQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5l
d1JlcXVlc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX25ldHdvcmtMb2Fk
KQorICAgIGlmIChtX25ldHdvcmtMb2FkKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBUZWxsaW5nIE5ldHdvcmtMb2FkIHRvIHByb2Nl
ZWQgd2l0aCB0aGUgcmVkaXJlY3QiKTsKICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CisgICAgfQogfQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogeworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOiAoaGFz
Q2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZT0lZCwgaGFzUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcj0lZCkiLCAhIW1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSwgISFtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlOiBjb250aW51aW5nIHdpdGggU2VydmljZVdvcmtlckZldGNoVGFzayAoZmV0Y2hJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiKSIsIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+ZmV0Y2hJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFz
ay0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtODg0LDE2ICs5MjQsMjMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUwKIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKIHsKLSAgICBp
ZiAoIWNhblVzZUNhY2hlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkpKQorICAgIGlm
ICghY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkKKyAgICB9CisgICAg
aWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNh
dXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3Rv
cmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwogICAgICAgICAgICAgc2Vzc2lvbi0+cHJl
ZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNh
Y2hlIik7CiAgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9
IG1ha2VSZWYoKnRoaXMpXShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNv
dXJjZUhhbmRsZS5pc051bGwoKSkKQEAgLTkwNiw2ICs5NTMsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZToiKTsKICNpZiBFTkFCTEUoTkVUV09SS19D
QUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKGF1dG8qIHNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIgPSBtX2NhY2hlID8gbV9jYWNoZS0+c3BlY3VsYXRpdmVMb2FkTWFuYWdlcigp
IDogbnVsbHB0cikKICAgICAgICAgc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0ZXJNYWlu
UmVzb3VyY2VMb2FkUmVzcG9uc2UoZ2xvYmFsRnJhbWVJRCgpLCBvcmlnaW5hbFJlcXVlc3QoKSwg
cmVzcG9uc2UpOwpAQCAtOTE0LDEyICs5NjIsMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXIK
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpCiB7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiIpOwogICAgIGF1dG8gcmVzcG9u
c2UgPSBlbnRyeS0+cmVzcG9uc2UoKTsKIAogICAgIGlmIChpc01haW5SZXNvdXJjZSgpKQogICAg
ICAgICBkaWRSZWNlaXZlTWFpblJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgaWYg
KGlzTWFpblJlc291cmNlKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0
b3JzT3JYRnJhbWVPcHRpb25zKHJlc3BvbnNlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IFN0b3BwaW5nIGxvYWQgZHVlIHRv
IENTUCBGcmFtZS1BbmNlc3RvcnMgb3IgWC1GcmFtZS1PcHRpb25zIik7CiAgICAgICAgIHJlc3Bv
bnNlID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoV1RGTW92ZShyZXNwb25zZSksIFJlc291
cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2FmZSk7CiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTdG9wTG9hZGluZ0FmdGVyWEZyYW1l
T3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkIHsgcmVzcG9uc2UgfSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTkyNyw2ICs5NzcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6Ogog
ICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBhdXRvIGVycm9yID0gbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnZhbGlkYXRlUmVzcG9uc2Uob3JpZ2luYWxSZXF1ZXN0KCksIHJl
c3BvbnNlKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiBGYWlsaW5n
IGxvYWQgZHVlIHRvIE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFsaWRhdGVSZXNwb25zZSIpOwogICAg
ICAgICAgICAgZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC05NDEsNiArOTkyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoKICAgICB9
CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0gaXNN
YWluUmVzb3VyY2UoKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZXRyaWV2ZUNh
Y2hlRW50cnk6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJ
UEMgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlPSVkKSIsIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogCiAgICAgaWYgKG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQpAQCAtOTUzLDYgKzEwMDUsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZv
ckNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQog
eworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5OiIp
OwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgaWYgKCFlbnRyeS0+c2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUoKS5pc051bGwoKSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNlKGVudHJ5LT5zaGFyZWFibGVSZXNv
dXJjZUhhbmRsZSgpKSk7CkBAIC05NzksNiArMTAzMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnkoc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQogeworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInZhbGlkYXRlQ2FjaGVFbnRyeToiKTsKICAgICBBU1NFUlQoIW1fbmV0
d29ya0xvYWQpOwogCiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgYWxyZWFkeSBjb25kaXRpb25h
bCB0aGVuIHRoZSByZXZhbGlkYXRpb24gd2FzIG5vdCB0cmlnZ2VyZWQgYnkgdGhlIGRpc2sgY2Fj
aGUKQEAgLTEwMDAsNiArMTA1NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxp
ZGF0ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50CiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50
cnkoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+JiYgZW50cnkpCiB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzcGF0
Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5OiIpOwogICAgIEFTU0VSVChlbnRyeS0+cmVk
aXJlY3RSZXF1ZXN0KCkpOwogICAgIEFTU0VSVCghbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5k
UmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0KTsKIApAQCAtMTExNiw3ICsxMTcxLDcgQEAgc3RhdGlj
IHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW8KIAogI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9i
amVjdCwgbGFiZWwudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgTE9DQUxf
TE9HKHN0ciwgLi4uKSBcCi0gICAgTE9DQUxfTE9HX0lGX0FMTE9XRUQoImxvZ0Nvb2tpZUluZm9y
bWF0aW9uOiBCTE9DS0VEIGNvb2tpZSBhY2Nlc3MgZm9yIHBhZ2VJRCA9ICVzLCBmcmFtZUlEID0g
JXMsIHJlc291cmNlSUQgPSAlcywgZmlyc3RQYXJ0eSA9ICVzOiAiIHN0ciwgZXNjYXBlZFBhZ2VJ
RC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkSWRl
bnRpZmllci51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRmlyc3RQYXJ0eS51dGY4KCkuZGF0YSgpLCAj
I19fVkFfQVJHU19fKQorICAgIExPQ0FMX0xPR19JRl9BTExPV0VEKCJsb2dDb29raWVJbmZvcm1h
dGlvbjogQkxPQ0tFRCBjb29raWUgYWNjZXNzIGZvciB3ZWJQYWdlSUQ9JXMsIGZyYW1lSUQ9JXMs
IHJlc291cmNlSUQ9JXMsIGZpcnN0UGFydHk9JXM6ICIgc3RyLCBlc2NhcGVkUGFnZUlELnV0Zjgo
KS5kYXRhKCksIGVzY2FwZWRGcmFtZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRJZGVudGlmaWVy
LnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRGaXJzdFBhcnR5LnV0ZjgoKS5kYXRhKCksICMjX19WQV9B
UkdTX18pCiAKICAgICBMT0NBTF9MT0coUiIoeyAidXJsIjogIiV7cHVibGljfXMiLCkiLCBlc2Nh
cGVkVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPQ0FMX0xPRyhSIiggICJwYXJ0aXRpb24iOiAi
JXtwdWJsaWN9cyIsKSIsICJCTE9DS0VEIik7CkBAIC0xMTQ4LDcgKzEyMDMsNyBAQCBzdGF0aWMg
dm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aQogCiAjZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2Jq
ZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9M
T0coc3RyLCAuLi4pIFwKLSAgICBMT0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3Jt
YXRpb246IHBhZ2VJRCA9ICVzLCBmcmFtZUlEID0gJXMsIHJlc291cmNlSUQgPSAlczogIiBzdHIs
IGVzY2FwZWRQYWdlSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEo
KSwgZXNjYXBlZElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyAgICBM
T0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3JtYXRpb246IHdlYlBhZ2VJRD0lcywg
ZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0lczogIiBzdHIsIGVzY2FwZWRQYWdlSUQudXRmOCgpLmRh
dGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZElkZW50aWZpZXIudXRm
OCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIAogICAgIExPQ0FMX0xPRyhSIih7ICJ1cmwiOiAi
JXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRVUkwudXRmOCgpLmRhdGEoKSk7CiAgICAgTE9DQUxfTE9H
KFIiKCAgInBhcnRpdGlvbiI6ICIle3B1YmxpY31zIiwpIiwgZXNjYXBlZFBhcnRpdGlvbi51dGY4
KCkuZGF0YSgpKTsKQEAgLTEyNjAsMTggKzEzMTUsMjMgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpIGNvbnN0CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VXb3Jr
ZXIoKQogeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0V2l0aFNlcnZpY2VXb3Jr
ZXI6Iik7CiAgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOwogICAgIG1fc2Vy
dmljZVdvcmtlckZldGNoVGFzayA9IG1fY29ubmVjdGlvbi0+c3dDb25uZWN0aW9uKCkuY3JlYXRl
RmV0Y2hUYXNrKCp0aGlzLCBvcmlnaW5hbFJlcXVlc3QoKSk7Ci0gICAgaWYgKG1fc2VydmljZVdv
cmtlckZldGNoVGFzaykKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0V2l0aFNlcnZpY2VXb3JrZXI6IENyZWF0
ZWQgYSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIChmZXRjaElkZW50aWZpZXI9JSIgUFJJdTY0ICIp
IiwgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5mZXRjaElkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUobnVsbHB0cik7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29y
a2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqIGZldGNoVGFzaykKIHsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiAoZmV0
Y2hJZGVudGlmaWVyPSUiIFBSSXU2NCAiKSIsIGZldGNoVGFzayA/IGZldGNoVGFzay0+ZmV0Y2hJ
ZGVudGlmaWVyKCkudG9VSW50NjQoKSA6IDApOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzay5nZXQoKSA9PSBmZXRjaFRhc2spOwogICAgIGlmIChtX3BhcmFtZXRl
cnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFu
ZGxlOiBBYm9ydGluZyBsb2FkIGJlY2F1c2UgdGhlIHNlcnZpY2Ugd29ya2VyIGRpZCBub3QgaGFu
ZGxlIHRoZSBsb2FkIGFuZCBzZXJ2aWNlV29ya2VyTW9kZSBvbmx5IGFsbG93cyBzZXJ2aWNlIHdv
cmtlcnMiKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZp
Y2VXb3JrZXJEaWROb3RIYW5kbGUgeyB9LCBpZGVudGlmaWVyKCkpOwogICAgICAgICBhYm9ydCgp
OwogICAgICAgICByZXR1cm47CkBAIC0xMjg0LDcgKzEzNDQsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKiBmZQogICAgICAgICBpZiAobV9uZXR3b3JrTG9hZCkKICAgICAgICAgICAgIG1fbmV0d29y
a0xvYWQtPnVwZGF0ZVJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKG5ld1JlcXVlc3QpOwogCi0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIFJlc3RhcnRpbmcgbmV0d29yayBsb2FkIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNl
cnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IFJlc3RhcnRpbmcgbmV0d29yayBsb2FkIGZvciByZWRp
cmVjdCIpOwogICAgICAgICByZXN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>