<?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>173504</bug_id>
          
          <creation_ts>2017-06-16 18:23:09 -0700</creation_ts>
          <short_desc>Use WTF::Function instead of std::function in WebKit2/</short_desc>
          <delta_ts>2017-06-17 17:04:38 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320283</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 18:23:09 -0700</bug_when>
    <thetext>Use WTF::Function instead of std::function in NetworkProcessProxy to avoid unnecessary copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320284</commentid>
    <comment_count>1</comment_count>
      <attachid>313171</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 18:23:50 -0700</bug_when>
    <thetext>Created attachment 313171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320287</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 18:25:00 -0700</bug_when>
    <thetext>Attachment 313171 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:132:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:133:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 5 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320314</commentid>
    <comment_count>3</comment_count>
      <attachid>313178</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 20:55:28 -0700</bug_when>
    <thetext>Created attachment 313178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320315</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 20:57:06 -0700</bug_when>
    <thetext>Attachment 313178 did not pass style-queue:

ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.mm:305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:176:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:195:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:237:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:160:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:167:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:174:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:879:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:201:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:228:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:132:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:129:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:142:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:443:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:720:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:361:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.cpp:407:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.cpp:398:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:426:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:437:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:458:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:469:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:480:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:498:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:509:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:531:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:542:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:553:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:577:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:588:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:620:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:743:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:960:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1624:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2822:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2833:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2844:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2856:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2868:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2892:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2918:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6288:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6321:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6365:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6585:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6717:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6747:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:433:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:461:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:477:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:505:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:506:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:507:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:511:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:512:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:513:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:514:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:516:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:517:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:519:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:522:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:524:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:535:  Extra space before ( in f
unction call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:596:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:597:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:598:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:610:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:612:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:671:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:781:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:782:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:783:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:784:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:791:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:792:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:794:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:796:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1046:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1093:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:294:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:295:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:225:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:606:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:1520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:218:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:45:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:145:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:304:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:314:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:330:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:341:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:344:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:177:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:123:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 190 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320320</commentid>
    <comment_count>5</comment_count>
      <attachid>313179</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 21:02:16 -0700</bug_when>
    <thetext>Created attachment 313179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320322</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 21:04:12 -0700</bug_when>
    <thetext>Attachment 313179 did not pass style-queue:

ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.mm:305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:176:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:195:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:237:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:160:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:167:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:174:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:879:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:201:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:228:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:132:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:129:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:142:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:443:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:720:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:361:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.cpp:407:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.cpp:398:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:426:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:437:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:458:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:469:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:480:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:498:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:509:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:531:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:542:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:553:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:577:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:588:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:620:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:743:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:960:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1624:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2822:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2833:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2844:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2856:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2868:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2892:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2918:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6288:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6321:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6365:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6585:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6717:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6747:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:433:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:461:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:477:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:505:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:506:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:507:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:511:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:512:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:513:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:514:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:516:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:517:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:519:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:522:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:524:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:535:  Extra space before ( in f
unction call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:596:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:597:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:598:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:610:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:612:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:671:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:781:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:782:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:783:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:784:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:791:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:792:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:794:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:796:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1046:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1093:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:294:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:295:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:225:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:606:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:1520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:218:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:45:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:145:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:104:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:97:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:304:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:314:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:330:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:341:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:344:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:177:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:123:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 192 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320325</commentid>
    <comment_count>7</comment_count>
      <attachid>313182</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 21:17:54 -0700</bug_when>
    <thetext>Created attachment 313182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320326</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 21:20:27 -0700</bug_when>
    <thetext>Attachment 313182 did not pass style-queue:

ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.mm:305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:176:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:195:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:237:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:160:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:167:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:174:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:879:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:201:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:228:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:132:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:129:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:142:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:443:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:720:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:813:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:361:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.cpp:407:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.cpp:398:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:426:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:437:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:458:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:469:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:480:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:498:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:509:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:531:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:542:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:553:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:577:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:588:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:620:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:743:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:960:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1624:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2822:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2833:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2844:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2856:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2868:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2892:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2918:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6288:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6321:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6365:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6585:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6717:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6747:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:433:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:461:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:477:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:505:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:506:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:507:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:511:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:512:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:513:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:514:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:516:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:517:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:519:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:522:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:524:  Extra space bef
ore ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:596:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:597:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:598:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:610:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:612:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:671:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:781:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:782:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:783:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:784:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:791:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:792:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:794:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:796:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1046:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1093:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:294:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:295:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:225:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:606:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:1520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:218:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:45:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:145:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:304:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:314:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:330:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:341:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:344:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:177:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:123:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 191 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320332</commentid>
    <comment_count>9</comment_count>
      <attachid>313184</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 21:44:06 -0700</bug_when>
    <thetext>Created attachment 313184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320333</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 21:47:02 -0700</bug_when>
    <thetext>Attachment 313184 did not pass style-queue:

ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.mm:305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:140:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:176:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:195:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:237:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:160:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:167:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:174:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:876:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:879:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:201:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:228:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:132:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:129:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:142:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/WebNetscapePluginStream.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:443:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/loader/NetscapePlugInStreamLoader.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.h:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:720:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:813:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:361:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/Plugins/PluginStream.cpp:407:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/APIIconLoadingClient.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebBackForwardList.cpp:398:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxy.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:426:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:437:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:458:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:469:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:480:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:498:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:509:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:531:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:542:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:553:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:577:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:588:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:620:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:743:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:960:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentCoordinator.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:1624:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2822:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2833:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2844:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2856:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2868:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2892:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2918:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6288:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6321:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6365:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6585:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6717:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:6747:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:433:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:461:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:477:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:505:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:506:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:507:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:511:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:512:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:513:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:514:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:516:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:517:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:519:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:522:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:524:  Extra space bef
ore ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:596:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:597:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:598:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:610:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:612:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:671:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:781:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:782:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:783:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:784:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:791:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:792:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:794:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:796:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1046:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1093:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:294:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:295:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:225:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:606:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:1520:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.mm:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:299:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:218:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:45:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:145:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/IconLoadingDelegate.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:304:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:314:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:330:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:341:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:344:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:177:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncRequest.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:123:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 191 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320430</commentid>
    <comment_count>11</comment_count>
      <attachid>313184</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-17 13:26:52 -0700</bug_when>
    <thetext>Comment on attachment 313184
Patch

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

I could not discern the pattern for where you were using WTF::Function and where you were using Function without the explicit namespace.

If a function need to call a function one or more times before it returns, and is definitely not intending to hold on to the function and call it later, and in fact is not allowed to do so, what’s the best type to use for that argument? WTF::Function&amp;&amp;? const WTF::Function&amp;? Something else? That pattern does seem to come up fairly often.

&gt; Source/WebKit2/UIProcess/ProcessAssertion.h:27
&gt;  #ifndef ProcessAssertion_h
&gt;  #define ProcessAssertion_h

#pragma once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320434</commentid>
    <comment_count>12</comment_count>
      <attachid>313184</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-17 13:56:01 -0700</bug_when>
    <thetext>Comment on attachment 313184
Patch

Clearing flags on attachment: 313184

Committed r218457: &lt;http://trac.webkit.org/changeset/218457&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320435</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-17 13:56:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320446</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-17 17:04:38 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Comment on attachment 313184 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313184&amp;action=review
&gt; 
&gt; I could not discern the pattern for where you were using WTF::Function and
&gt; where you were using Function without the explicit namespace.

The issue with using Function without WTF:: namespace is that it often conflicts with something else on non-Mac bots. As a result, I tend to prefer using WTF::Function over Function. If people prefer using Function when possible, I do not mind either but this sometimes means try &amp; fail attempts with EWS bots to figure out when WTF:: is required.

I think I used Function without namespace in one file in this patch because it was already using Function without namespace in the surroundings.

&gt; 
&gt; If a function need to call a function one or more times before it returns,
&gt; and is definitely not intending to hold on to the function and call it
&gt; later, and in fact is not allowed to do so, what’s the best type to use for
&gt; that argument? WTF::Function&amp;&amp;? const WTF::Function&amp;? Something else? That
&gt; pattern does seem to come up fairly often.

Hmm. I believe I did not treat those cases any differently for now, meaning that I passed them a WTF::Function&amp;&amp;. That said, thinking about this more, I think it may make more sense to use const WTF::Function&amp; instead. This makes it clear we are not transferring ownership to the callee and it may be useful for the caller to maintain ownership after the call.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ProcessAssertion.h:27
&gt; &gt;  #ifndef ProcessAssertion_h
&gt; &gt;  #define ProcessAssertion_h
&gt; 
&gt; #pragma once?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313171</attachid>
            <date>2017-06-16 18:23:50 -0700</date>
            <delta_ts>2017-06-16 20:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173504-20170616182349.patch</filename>
            <type>text/plain</type>
            <size>8689</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTAzNTQzNTk4ZjlhZjk1
OTVlODY1ZjhjNDM0NWUyOWU1ZDZkYmQyNy4uYWQ3YWRlOThmNTg4NzQ5OWNmYmM3MzAxMWZmMmRl
NjA2YzhjZTI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24g
aW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIE5ldHdvcmtQcm9jZXNzUHJveHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBOZXR3b3JrUHJvY2Vzc1Byb3h5IHRvIGF2b2lk
IHVubmVjZXNzYXJ5IGNvcHlpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisKKzIwMTctMDYtMTYgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbV0syXSBBZGQgV0tQcm9jZXNzUG9vbCBT
UEkgdG8gZWZmaWNpZW50bHkgcmVzZXQgYWxsIHBsdWdpbiBsb2FkIGNsaWVudCBwb2xpY2llcwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDcyCiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODg1ODgxNz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMDY3
OTgxZjA4N2VhZGQ0Mzg2MGZhOGY4ZGNlN2Y3NmFiNzgyN2M3OC4uOTM2OWRmMTkwOTkwOGI4OWMw
MTEzYjhlZWIyNjM3ZDFkODI3Njk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyMiwxNSArMTIy
LDE0IEBAIERvd25sb2FkUHJveHkqIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2Fk
UHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94
eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3Qp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9w
dGlvbj4gZmV0Y2hPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byB0
b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAgUkVMRUFT
RV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5k
IGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0
ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9u
SURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CisgICAgbV9wZW5kaW5nRmV0Y2hXZWJzaXRl
RGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgc2Vzc2lvbklEXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRvbmUg
ZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAgICAgfSk7CkBAIC0xMzgsMjggKzEzNywy
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRhKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBmZXRjaE9wdGlv
bnMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxl
dGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
LCAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gdG9rZW4gPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwogICAgIFJFTEVBU0VfTE9HX0lG
KHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRp
b24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIs
IHRoaXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNh
bGxiYWNrSUQsIFt0aGlzLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIsIHNlc3Npb25JRF0gewor
ICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBb
dGhpcywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vz
c2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZG9uZSBkZWxldGluZyBXZWJzaXRlIGRh
dGEiLCB0aGlzKTsKICAgICB9KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RGVsZXRlV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIGNh
bGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNv
b2tpZUhvc3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogCiAgICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwotICAgIGF1dG8gdG9rZW4gPSB0aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwogICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25J
RC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5l
dHdvcmtQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJh
bCBvcmlnaW5zIiwgdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnNDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiwgY29tcGxldGlvbkhh
bmRsZXIsIHNlc3Npb25JRF0geworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2luc0NhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgc2Vzc2lvbklEXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMg
cmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9j
ZXNzIGlzIGRvbmUgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIGZvciBzZXZlcmFsIG9yaWdpbnMiLCB0
aGlzKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBjNWViMWM2ZTg4OTYzMDc3ZGY4ZTVmOTU2
ODJhM2M0OTRkNzExOTU0Li42ODMzNmIxODFmNjI3MmZkN2ZiNDliY2JjMDRmYmRlZTQ4ZGE3MzQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAtNjQsOSArNjUsOSBAQCBwdWJsaWM6CiAKICAg
ICBEb3dubG9hZFByb3h5KiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uPiwgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb29raWVIb3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9u
PiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llSG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoYm9vbCk7CkBAIC0xMjcsOSArMTI4LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0
ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNr
czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnND
YWxsYmFja3M7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3du
bG9hZFByb3h5TWFwOwogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313178</attachid>
            <date>2017-06-16 20:55:28 -0700</date>
            <delta_ts>2017-06-16 21:02:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173504-20170616205527.patch</filename>
            <type>text/plain</type>
            <size>185521</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJlZjllZDhlNzZmNDFl
YzMwYWYxZWI4ZjAwNTljYWZkNDA2M2Y5NC4uZmM0ZTEyNzJhOTVkOGQ0YjVmMDc4NmNkNmMxZDlh
NjExNTRmM2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24g
aW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9m
IHN0ZDo6ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3Nhcnkg
Y29weWluZy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9y
OjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKwog
MjAxNy0wNi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2F0aGVyU3RhdHNGb3JMb2dnaW5nIGlz
IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMWUwMWNhMmQwNzgxYjkzYzA3ZGY2ZmZiMzFj
MmZiMDhhYTIzZTRjZS4uMTdmZTYxN2Q3MDBiNzJkZjBjMjQyNzFiMGRmNGY2MTM0NDNlOTcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVh
ZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6
ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWlu
Zy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoK
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAo
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6Om9wZW5QYXltZW50U2V0dXAp
OgorCiAyMDE3LTA2LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1MgRG5EXSBbV0sxXSBEcm9wcGluZyBsaW5rcyBvbnRvIFVJV2ViVmlld3Mg
c2hvdWxkIG5vdCB0cmlnZ2VyIG5hdmlnYXRpb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGNjZDdlOTRlOTAzMzhjMjJjYjI3ZDY0YTg1N2UwNjZhOTAwM2I0OGMuLmQyNjcxMTMyZTkz
ZWY3YTVmOWE3YTFmYTlhZjY2NGJkZGI3YmMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9uIGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBXZWJL
aXQyLworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcz
NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvIHRvIGF2
b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IGNvcHlpbmcuCisKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06OndpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKwogMjAxNy0wNi0x
NSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBb
V2luXSBXZWJLaXQgc2hvdWxkbid0IGluY2x1ZGUgdGhlIGZvcndhcmRpbmcgaGVhZGVyIG9mIFdl
YktpdCBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMDM1NDM1OThmOWFmOTU5NWU4NjVmOGM0MzQ1ZTI5
ZTVkNmRiZDI3Li4xMzJhMzRiNzExN2Q2ZTQxZTc0ODUzZTVmODkwMDljNjNmOTg1NmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTk3IEBACiAyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6
OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24g
aW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWluZy4KKworICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZVByb2Nlc3M6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKToK
KyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Omluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3Iu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXN5bmNSZXF1ZXN0OjpBc3luY1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpB
c3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcik6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVx
dWVzdC5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcCk6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3dubG9hZENs
aWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25M
b2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAodG9HZW5lcmljQ2FsbGJhY2tG
dW5jdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcg
bWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWREcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6dHJ5QXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2VD
b21tb24pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3
UGFnZUFzeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hv
dFJlbW92YWxUcmFja2VyOjpzdGFydCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxG
b2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FsbEFmdGVy
TmV4dFByZXNlbnRhdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0
UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb2N1c05leHRBc3Npc3RlZE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06
CisgICAgICAgICgtW1dLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIgaW5pdFdpdGhTZWxlY3Rpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250QXRT
ZWxlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bWFya0xheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z1VwZGF0ZWRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKworMjAxNy0wNi0xNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFtXSzJdIEFkZCBXS1Byb2Nl
c3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQgY2xpZW50IHBv
bGljaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM0NzIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODU4ODE3PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IDZlZDBkZDM4NjAyZDVmZjUxMjM0NDc2NTY1ZjA3MzdhMjhmNTZhOTQuLjBlYTVlYzM3MTBmZDU3
NDk4YjBlNjc3ZTc0OWU1MmRlMjJmY2Q1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTU1LDEyICs1NSwx
MiBAQCBib29sIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1
cm4gbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzKCk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2xpZW50LmNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jbGllbnQub3BlblBh
eW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDY3YmRkMzQwYzk0YzFlYTExZTMyZWUwNzU4
NGEwYTI2ZTRjYjhkNmIuLmIzYjRkOGY0NDg5NzIzZWRmZWQxZDY3NDZjYWQwYTZkNDIwNDhhNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNp
bmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsOCArNTIs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9u
KTsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBib29sIGhhc0FjdGl2ZVNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNlc3Npb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
aW5kZXggMTc4N2I1N2VkNGQ1MWIxZjMxZTBmNWM1NTNjZjIyMGI3YmQxMzZiYy4uODMzM2FkNjYw
MTJiNjk4Yzg1Y2EzYWI2YjAzN2I3ZmU4Y2VlN2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBA
IC00NCw4ICs0NCw4IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGNhbk1ha2VQYXltZW50cygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChi
b29sKT4gY29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlblBheW1l
bnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNob3dQYXlt
ZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJ
Y29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVlc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDcyOTQyNmNlYTJj
NGU2ZDNiMDdlNzc1Y2QxMmViNGQ0NGViYTUyYTIuLmU5MzVmZjJhOTY4ZjYxMDhlN2RiY2M1OGQw
N2RlNGY5ZjdkMTg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC00ODgsOCArNDg4LDggQEAgY2xhc3MgRW1wdHlJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yQ2xpZW50IHsKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAgICAgYm9vbCBzdXBw
b3J0c1ZlcnNpb24odW5zaWduZWQpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBj
YW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
IH0pOyB9Ci0gICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
IHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAg
ICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29u
c3QgUGF5bWVudFJlcXVlc3QmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDQ1
NjI0YzQ5ZWI0NjljMDhhNWMzZjI5OTQwMTRkOWQxOTE2NGQ1NWUuLmZmYWE3ZTVjZWUwOWE3MTM0
M2NmNzkyNjNhYWFlZGEyMmFkMjhkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtODgsMTEgKzg4LDExIEBAIGJv
b2wgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIG1fY2xpZW50LT53
aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrXShSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92
ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVz
cG9uc2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KSB7CiAgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oCmluZGV4IDI1N2M1MDEyYmU1MTEzMjg1ZWI2OWEzY2I2M2ExN2JmNjcxNjZiYmIu
LmM5ZGMxOWZmM2FiZDQ5MDg4ZDg4NjkxNDBhZTdkNzBiNGEyZDkwZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wg
aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiZDVkOGM2ZDhiZThkOWM0ZGYxYzRkZjI4NTM2
M2IxNmExNzg3OGIuLjc3NDQ2ZTFjZWU5MGUwMTA2ZjNmOTliNDQ2NjMxNjdiMjJmOGZiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAzLDcgKzQwMyw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0MzU4YjdhMTZlOTQxMGVkOWU4MTdj
OTBmNWY3ZjE3YzI1MWI3YWM5Li42ZGRhMzRhOTZhY2JlMDc2MWJhMDRlNmZkZGUzZjU0NzMxZDgx
MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtOTksNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBhNjE2MGYwZjYyNWU3NmJiYmQ4MGE4MzZmMjg5ZDQ3
MGM1YzhmMzU4Li4xNTY3ZGM4MjMyZDM3Nzk0ZTc1NjQxNzFlYzIwYjk5M2FhNjc1ZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBO
U0Vycm9yICpwbHVnaW5DYW5jZWxsZWRDb25uZWN0aW9uRXJyb3IoKSBjb25zdDsKIAogICAgIC8v
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IG1ldGhvZHMuCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVu
Y3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQppbmRleCBmMTdiNjJjZjVhMmNjZTZhNTEzMzNhYzkzYjkxZDdiYzM3M2Qw
NTliLi4wMzc1YWUwMzIwOGRhOWRkMjQwYTM5MjQ1MjU1NzQ1YTYwZTYyZjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1MCiAgICAgbV9pbnN0YW5jZS0+ZGlzY29ubmVjdFN0cmVhbSh0aGlzKTsKIH0KIAotdm9p
ZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQordm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNl
bmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhl
cmUuCiAgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYmY0MzQxNTI3
NWI0YTZmMjMzMWUxZDFkNWE3Y2VjZmJhMDhmMjQ0MC4uNzZlZTg1ZmU2N2ZlMjY4ZWVhMjE0NGMy
ODVhZDc3NGM4OTAzMTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAg
IE5TRXJyb3IgKnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNvbnN0OwogCiAgICAg
Ly8gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgbWV0aG9kcy4KLSAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICBib29sIHdhbnRzQWxsU3Ry
ZWFtcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNjY3M2E5NGRiMjQzN2YzNDEzYWNj
YzYwODBlODlhZGUzZTc1ZDlmMC4uZjZlMGFhNWVmZWExZDFlZjI4MzEzNzdkNGVmYzZmMjMwMGU5
NjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6c3RvcCgpCiAgICAgICAgIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVy
cm9yKG1fbG9hZGVyLT5jYW5jZWxsZWRFcnJvcigpKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBw
bHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IDlkMDVlZmJm
NTE4NzM2MzA0ZTVlYWVkMTE4NzY5ZTAyZWY0MGUzNWMuLmY1ZWFmZTM5NDQzYzJkNmRkYTEzZTlj
ZWVjMWViNGIxZDFlZmJhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOCw4
ICszOCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZTsKLSAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCA5MWM3NGNiYzE2NzVmN2E3ZTZkMjEzMjUwZWI0
OGQ2YmVmNzhkMDQ2Li4wOWIxYzQyZDdjZWU2OTc1ZDRmMDZkMDJkMjZmNTI0N2VlOGZkZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00OCwxNiArNDgsMTYgQEAgYm9vbCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNhbk1ha2VQYXltZW50cygpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAg
IH0pOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBkYTgzM2FhZjRmOGJhZTQ0YjQ4MDRiMzUyMWZj
ZDE3N2I4Y2FkZDRlLi4xMzg3ZmFiYjAxMGNkM2MzMGYyZTdjNjNmMTMzOTZlZTM3NTAyYzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgQ1N0cmluZyYgcmUKICAgICBkZXN0cm95U3RyZWFtKHJlc3Vs
dFN0cmluZy5pc051bGwoKSA/IE5QUkVTX05FVFdPUktfRVJSIDogTlBSRVNfRE9ORSk7CiB9CiAK
LXZvaWQgUGx1Z2luU3RyZWFtOjp3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2Fs
bGJhY2spCit2b2lkIFBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVn
LWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRl
eCA2MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFlYmQ3Li4zYjZjNzEwNWYxMDk0
YjBhMDNhMGZiM2E2MTBlNzYzOWM1OGVkMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGRlc3Ryb3lTdHJlYW0oKTsKIAogICAgICAgICAvLyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudAotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcAppbmRleCBiZmZjMzgyMTIwNzgyOTFhMjFhNjNmZGMxNTlmOTk2NGUwMDEwMTkyLi45ZGZk
NmJjMWJhOTM4NjQzNWEwM2Q2MTUyMzhjNTM4NWNmMGVmNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMjkzLDEyICsy
OTMsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VQcm9j
ZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJs
b2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gKytsYXN0UmVxdWVzdElEOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SUQsIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVycy5zZXQocmVx
dWVzdElELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkdldFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHJlcXVlc3RJRCwgZmlsZW5hbWVzKSwgMCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApp
bmRleCA5Yzk0OTE5Y2NlNDg5MTNkNjE4ODU5MGQwMTVjMzQwYTdjNWUyZDVhLi4wZDI4NjU0MTlj
Yjg0YzJmNjQ5MDVlMDZmYjNlMWIzMmRjNjg2Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+IGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCiAKIHByaXZh
dGU6CkBAIC0xMTksNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgUmVmUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPj4gbV9pZGJTZXJ2
ZXJzOwogI2VuZGlmCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
Jik+PiBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVyczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiYpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxl
cnM7CiAKICAgICBEZXF1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VUYXNrczsKICAgICBM
b2NrIG1fZGF0YWJhc2VUYXNrTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXggMjljMjY0YjRiNjRhYTM1
NDFkOTY3ZDk0ODBiMmYzODBjMDdiM2UzZS4uMTUxMjhkY2QyNzIxMzlmMGFmOTE0MDMwOGY0YjE5
NzY5MzM0YWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEUpCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IGY3
YmJlNWJhYzY4OWRjYzJhMmMyYjliMTBmNmE2NWQwOWY3ZWRlODMuLjQ1MDNmZWZmYjlmNDNlMDA1
ZjY2MmE4MDA5MWVhNTlmN2RmNjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PGNocm9ubz4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDE1ODA3OWU1NWE2MmY1ZWRkYmEwZjE0MGZiN2Y5ZTAzZDUwNTE2OTUu
Ljg1ZjI2YTJjYjk1OWFkODExM2I4OWMxNWIyZWEyMWUyYzAyYmRmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IG1lc3NhZ2UpCiAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KIAotdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VD
YWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQordWludDY0X3QgQ29ubmVj
dGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9p
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB1
aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gYwogICAgIGlmICghbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2tRdWV1ZSkKICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LklQQy5JbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tRdWV1ZSIpOwogCi0gICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
LmFkZChtX25leHRJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAg
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy5hZGQobV9uZXh0SW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJldHVybiBtX25leHRJ
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGZjZTFlNjNiYzI5ZmNiYjJlZTNiZTcyMDYxZjgzNmFiNzNm
Zjc4OWQuLjJlMGM1OTM2MTZlOWQyMDdhMjRjMDExMGY5OTQ2MmZlODI5NTlmY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEJvb3N0TWFpblRocmVhZE9uU3luY01lc3NhZ2UoYm9v
bCBiKSB7IG1fc2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2FnZSA9IGI7IH0KICNlbmRp
ZgogCi0gICAgdWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB1aW50NjRfdCBpbnN0YWxsSW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCB1bmluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2sodWludDY0X3QpOwogICAgIGJvb2wgaGFzSW5j
b21pbmdTeW5jTWVzc2FnZSgpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGVuZGluZ1N5bmNSZXBseT4gbV9wZW5kaW5nU3luY1JlcGxpZXM7CiAKICAgICBMb2Nr
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1faW5jb21p
bmdTeW5jTWVzc2FnZUNhbGxiYWNrczsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2luY29taW5n
U3luY01lc3NhZ2VDYWxsYmFja1F1ZXVlOwogICAgIHVpbnQ2NF90IG1fbmV4dEluY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja0lEIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuaAppbmRleCBmZjM3YmY5ZTU0NGU0Yjk5ZmIwMmI1
OWJhN2VlZGE5YzM5YWRjZDlmLi44YWM1ZjFjNzA2Y2JhYzQ0YTEzNzY3OTNjMjM5Mjc5YjMxZTBj
YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRN
b25pdG9yLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgR1NvY2tldE1vbml0b3JfaAogI2Rl
ZmluZSBHU29ja2V0TW9uaXRvcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGUxODU5NWQ0MzFiNTNjMWYw
YjBmNjRlMzI2MWFlOTk0ZWM4M2E4M2QuLmI0Nzc1NmNiYzE4ZDRmZWU0ZjhlZWUzN2MxOGRiODVi
ZjlhODM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAK
ICNkZWZpbmUgV2ViS2l0TG9nZ2luZ19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ01hY3Jvcy5o
PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggMjI2MTg2MTBiMGYzZjM0Y2M3MDE0YmU1NjI5ZTg2YmY4NzY5NzRkZi4u
OTYyODY0ZjcyNzkzOWEzMTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIEFQSU9iamVj
dF9oCiAjZGVmaW5lIEFQSU9iamVjdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmNwcAppbmRleCBhNGY4YjAyNWZjMWM0MjJlNWM2NmNkOGU4MTQzZmQzODk3OGJkMTFmLi5k
ZmExYTM5NzA3OWQwNWI0MTRjNTQ1ODVmYmRhM2NkN2M1ZjhlZDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXN5bmNSZXF1ZXN0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVSZXF1ZXN0SUQoKQogICAgIHJldHVybiArK3JlcXVlc3RJRDsKIH0KIAotQXN5bmNS
ZXF1ZXN0OjpBc3luY1JlcXVlc3Qoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBhYm9ydEhhbmRsZXIp
CitBc3luY1JlcXVlc3Q6OkFzeW5jUmVxdWVzdChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJv
cnRIYW5kbGVyKQogICAgIDogbV9hYm9ydEhhbmRsZXIoV1RGTW92ZShhYm9ydEhhbmRsZXIpKQog
ICAgICwgbV9yZXF1ZXN0SUQoZ2VuZXJhdGVSZXF1ZXN0SUQoKSkKIHsKQEAgLTQ5LDcgKzQ5LDcg
QEAgQXN5bmNSZXF1ZXN0Ojp+QXN5bmNSZXF1ZXN0KCkKICAgICBBU1NFUlQoIW1fYWJvcnRIYW5k
bGVyKTsKIH0KIAotdm9pZCBBc3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGhhbmRsZXIpCit2b2lkIEFzeW5jUmVxdWVzdDo6c2V0QWJvcnRIYW5kbGVy
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBoYW5kbGVyKQogewogICAgIG1fYWJvcnRIYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Bc3luY1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaApp
bmRleCAwYzRhMGEwYzQxM2IwYTFjM2JlOWVlZjVjNzc1YmNmMTIzNTViOTU1Li40Mjc3NjE2OTEz
OWM4OTdiNmMxY2EwMjYyNWU3ODc2MDNmZDU0YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5j
UmVxdWVzdC5oCkBAIC0yNyw3ICsyNyw2IEBACiAjaWZuZGVmIEFzeW5jUmVxdWVzdF9oCiAjZGVm
aW5lIEFzeW5jUmVxdWVzdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MCwxNiArMzksMTYgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcmVx
dWVzdElEKCkgeyByZXR1cm4gbV9yZXF1ZXN0SUQ7IH0KIAotICAgIHZvaWQgc2V0QWJvcnRIYW5k
bGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZvaWQgc2V0QWJvcnRIYW5kbGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QWJvcnRlZCgpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4gdm9pZCBjb21wbGV0ZVJlcXVlc3QoQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEFzeW5j
UmVxdWVzdChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcik7CisgICAgZXhwbGlj
aXQgQXN5bmNSZXF1ZXN0KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBhYm9ydEhhbmRsZXIpOwog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29tcGxldGlvbkhhbmRsZXIoKSA9IDA7CiAKLSAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fYWJvcnRIYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4gbV9hYm9ydEhhbmRsZXI7CiAKIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZXF1
ZXN0SUQ7CkBAIC02MCwxMiArNTksMTIgQEAgY2xhc3MgQXN5bmNSZXF1ZXN0SW1wbCBmaW5hbCA6
IHB1YmxpYyBBc3luY1JlcXVlc3QgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHVzaW5nIEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUsIFQsIGNvbnN0IFQmPjo6dHlwZTsKIAotICAgIHN0YXRpYyBSZWY8
QXN5bmNSZXF1ZXN0PiBjcmVhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKEFyZ3VtZW50VHlwZTxBcmd1
bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgc3RhdGljIFJlZjxBc3luY1JlcXVl
c3Q+IGNyZWF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXN5bmNSZXF1ZXN0SW1wbDxBcmd1bWVudHMuLi4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBudWxscHRyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxBc3luY1JlcXVlc3Q+IGNy
ZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21w
bGV0aW9uSGFuZGxlciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGFib3J0SGFuZGxlcikKKyAgICBz
dGF0aWMgUmVmPEFzeW5jUmVxdWVzdD4gY3JlYXRlKFdURjo6RnVuY3Rpb248dm9pZChBcmd1bWVu
dFR5cGU8QXJndW1lbnRzPi4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGFib3J0SGFuZGxlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1lbnRzLi4uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgV1RGTW92ZShhYm9ydEhhbmRsZXIpKSk7CiAgICAgfQpAQCAtODMsNyArODIsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFzeW5jUmVxdWVzdEltcGwoc3RkOjpmdW5j
dGlvbjx2b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVy
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcikKKyAgICBBc3luY1JlcXVlc3RJ
bXBsKFdURjo6RnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJvcnRIYW5kbGVyKQog
ICAgICAgICA6IEFzeW5jUmVxdWVzdChXVEZNb3ZlKGFib3J0SGFuZGxlcikpCiAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CkBA
IC05NSw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBu
dWxscHRyOwogICAgIH0KIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFy
Z3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248dm9p
ZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPiB2b2lkIEFzeW5jUmVxdWVzdDo6Y29t
cGxldGVSZXF1ZXN0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXgg
ZWQ1MmY0M2MwOGNhZDJkNzNmMzQ3OGM3NGQ4OGViMzkxZDk5MTU1MS4uZWIyYmYzYTNjYjhjNjJl
NjhmNDM2ZjcyZGNlOWEzNWJmOGYyZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGhyZWFkQ291bnRMaW1pdDsKIH07CiAKLUNv
bXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiB1cGRhdGVGdW5jdGlvbikKK0NvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5M
b29wKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCiAgICAgOiBtX3VwZGF0ZVRp
bWVyKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLnJ1bkxvb3AodGhpcyksIHRoaXMsICZDb21w
b3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3VwZGF0ZUZ1bmN0aW9u
KFdURk1vdmUodXBkYXRlRnVuY3Rpb24pKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5n
UnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IGZiODE1MTg0NDg1NWRj
MDIxNDc0YjM5OWMxMzZiOTdmOTlhZTYwZGUuLjFmODZiZmY1OTc0NTczODJjYWQyYWU0MDZjNzEy
ZjcwNzQ2MjUyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTQzLDcgKzQyLDcgQEAgY2xhc3MgQ29tcG9zaXRpbmdS
dW5Mb29wIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbXBvc2l0aW5nUnVu
TG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIENvbXBvc2l0aW5nUnVuTG9vcChG
dW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB+Q29tcG9zaXRpbmdSdW5Mb29wKCk7CiAKICAgICB2
b2lkIHBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwpAQCAtNjUsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCiAgICAgUnVuTG9vcDo6VGlt
ZXI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX3VwZGF0ZVRpbWVyOwotICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3VwZGF0
ZUZ1bmN0aW9uOwogICAgIEF0b21pYzxVcGRhdGVTdGF0ZT4gbV91cGRhdGVTdGF0ZTsKICAgICBM
b2NrIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0
Y2hTeW5jQ29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmgKaW5kZXggYTM2MTkwN2NiYjE4MzM4ODM5OGJiYmJjYTdjN2FmYjU1MDkzNDU4
Zi4uM2Y5NzlmYjg2NTNmNjE4ZDUwYWYzMWQ4YTYyOWM2YjU4MDlkYjgwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
eHRNZW51SXRlbS5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDJhN2UzYTZiYWMwODYwMjhjOGQ3
NGM3NzQ1MGFkZDZiMmEyODlhNTkuLmI1N2RkZTQwZjNhYzdkMTljMWI2MjljYmUxNzcwNGZjOTkz
NDM0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRfaAog
I2RlZmluZSBBUElEb3dubG9hZENsaWVudF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJLaXQ6OldlYlBy
b3RlY3Rpb25TcGFjZSopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gY2FsbGJhY2spIHsgY2FsbGJhY2socmVxdWVzdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFj
aykgeyBjYWxsYmFjayhyZXF1ZXN0KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
aW5kZXggNTMzMWNiYTFmODAzNGMzZDliYjhkYTRiOGU3MzA1MjJiOTNjMDVlMS4uYmQ2OTdlODI0
NDFlMmNiNTQ0ZjJlMWUxNmQzYTRiYzkwMGI2NmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxv
YWRpbmdDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4g
Y29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9y
SWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoV1RGOjpG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCmluZGV4IGE1NWNmNTlhZTQyN2NkYzIxNjEwNGFjZGFiMjE3NWEwN2M1OGUyNTYuLjEyNTM2
NDI0NzhiYjFjMTBjYWVhNmUzYTg5NDMxNDdhOGRkNmZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJX
ZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogI2lmIFBM
QVRGT1JNKElPUykKIE9CSkNfQ0xBU1MgTlNBcnJheTsKQEAgLTc0LDcgKzczLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4gY29t
cGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0
ZU5ld1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdl
YktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggMzMzMmYyMzczZjgwMTdkZTFkNTk5ODdmNmVmZjU1N2IyMWQ5OTE3OS4u
YjI4YzBlYTIwNGY3ZWM5ODg3ODAxYzUzM2ZmMTVmM2ZlODBiYWUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHZvaWQg
V0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIHNjcmlwdFJlZiwKIH0KICNlbmRpZgogCi1zdGF0aWMgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoV0tTdHJpbmdS
ZWYsIFdLRXJyb3JSZWYsIHZvaWQqKSkKK3N0YXRpYyBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+IHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShXS1N0cmluZ1JlZiwgV0tF
cnJvclJlZiwgdm9pZCopKQogewogICAgIHJldHVybiBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0
IFN0cmluZyYgcmV0dXJuVmFsdWUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVl
KS5wdHIoKSksIGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRv
QVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjMGRiNzMz
MmIyMTcwNTYxZDk0OWU4OGYwMGIzNjQyZTU5ZjQ2YzA0Li5hOGIwNWFlZWEyOWVjMWFmYjgxZGU0
MmJiM2UzYzYxZTE2ZDgxMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjk2LDcgKzI5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1dlYlZpZXcgewogICAgIAogICAgIGludCBfYWN0aXZlQW5pbWF0ZWRSZXNpemVDb3VudDsKIAot
ICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBfc25hcHNob3RzRGVmZXJyZWREdXJp
bmdSZXNpemU7CisgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IF9zbmFwc2hvdHNE
ZWZlcnJlZER1cmluZ1Jlc2l6ZTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9zdGFi
bGVTdGF0ZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrczsKIAogICAgIFJldGFpblB0cjxXS1Bh
c3N3b3JkVmlldz4gX3Bhc3N3b3JkVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCA1OTVmZTc4OWU3NjA1MTVlZjAyM2QyZTJiMzQwNGRkM2ZlMTQ4
MTJhLi5lMmZmMzQ4NzA4MmQyYTI5ZDdkNzllOGI5M2ZhNGFhMDEwNjFiZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04NzMsMTAgKzg3MywxMCBA
QCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlcikoTlNEYXRhKik7
CiAKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6Okxp
bmtJY29uJiBsaW5rSWNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4gY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlIHsKKyAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgV1RGOjpGdW5jdGlvbjx2b2lkIChXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZSB7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJ
Y29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKIAotICAg
ICAgICAgICAgW21fd2tWaWV3IHBlcmZvcm1TZWxlY3RvcjpkZWxlZ2F0ZVNlbGVjdG9yKCkgd2l0
aE9iamVjdDpwYXJhbWV0ZXJzLmdldCgpIHdpdGhPYmplY3Q6W2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9h
ZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBbbV93a1ZpZXcgcGVyZm9ybVNlbGVj
dG9yOmRlbGVnYXRlU2VsZWN0b3IoKSB3aXRoT2JqZWN0OnBhcmFtZXRlcnMuZ2V0KCkgd2l0aE9i
amVjdDpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKT46OmZyb21DYWxs
YWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSWNv
bkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
ICAgICAgICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
IChOU0RhdGEgKik+KGxvYWRDb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKQEAgLTg4
Niw3ICs4ODYsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKLSAgICAgICAgICAgIH1dOworICAg
ICAgICAgICAgfSkuZ2V0KCldOwogICAgICAgICB9CiAKICAgICAgICAgV0tWaWV3ICptX3drVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWFQcm94eS5jcHAKaW5kZXggMWE0ZmY5NzkxZTJkM2Y0MDg4OWMzMmU4M2VkODQ4MjMz
NjljNzY4Ni4uYmRhZDJkZDU1YjQwNzhlYzBjM2VjODg1ZGI0ZjYwOTg4N2Y5OWQ0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKQEAgLTYzLDE0ICs2MywxNCBAQCBib29sIEFjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eTo6YWx3YXlzVXNlQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBh
Z2VQcm94eS5wcmVmZXJlbmNlcygpLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgJiYg
bV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS5mb3JjZUNvbXBvc2l0aW5nTW9kZSgpOwogfQog
Ci12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVy
V2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uXSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0g
ewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGU3ODkwYzgwNzg1YmEyYzQ4MTNjNDQ3MDk2MWUw
ZmJkY2M4OTcwNjcuLjc2ODNjM2YyNGE2ZDc0Y2EzMmY2MmZmNmNmMWJlNjM0ODIwOTcxYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveU5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDQyY2NmMWNjZGQ3YTFhN2Q0YWM5YjQ4MmVkODQ3YzExMmI0MGM0Njgu
LjdlZTBmZjFmYjRlMDU1ZDVkOTIzNDViZTk1MWNlZGVkOWM2YmZjNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCkBAIC05NSw5ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKIAogICAgIGJvb2wgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKTsK
LSAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgcGxhdGZv
cm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBw
bGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3QmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQppbmRleCAwZGI1NDBiYzg0NTUwNzNkM2I0MmJhMGY0MDc1YjFkOTBmNWY3
Y2MzLi5jYTc4MWQ5Y2I4NWJkNDBmNzU3YjliMjJiZmI3YjI1ZmE4ZDVkMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzUsNiArMzUs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTMwMCw1MSArMzAxLDUxIEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxp
Y2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9t
YWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJh
dGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXJdKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgeworICAgIHNv
ZnRMaW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9t
YWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCksIEJsb2NrUHRyPHZvaWQgKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGJhY2soW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
ewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBh
eW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsK
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBj
YW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5NYWtlUGF5bWVu
dHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXltZW50cyk7CiAg
ICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbHNlCiAgICAgaWYgKCFjYW5M
b2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFtjb21wbGV0aW9u
SGFuZGxlcl0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkIChCT09M
LCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIs
IGVycm9yKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyLCBjYW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5N
YWtlUGF5bWVudHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXlt
ZW50cyk7CiAgICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbmRpZgogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBp
bml0XSk7Ci0gICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50
aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBsZXRpb246W2Nv
bXBsZXRpb25IYW5kbGVyXShCT09MIHJlc3VsdCkgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCByZXN1bHRdIHsKKyAgICBbcGFzc0xpYnJhcnkg
b3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIg
ZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgfSk7Ci0g
ICAgfV07CisgICAgfSkuZ2V0KCldOwogfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGI1OWJiYjA0NzY3OGMxMjNhNDIz
Yzg5YTBjZTA4ZWQ0M2U4NGFkNTIuLjBmMDU3MGYzNmFmYWJkYjA1ODZiNGY4ZDBkZjVhODA0MzBk
MzU5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3Mv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
NDEsNyArNDEsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29u
VVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3
Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlD
bGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggMWQzMjFhMjQ5Y2Y1MGM5MWRkODc4Nzg0NmQ4
MWQ2ZGI0M2Y2Njc3ZC4uYTIyMjMwMjViZmRkZGRmY2E1ZTdlZDAwMTAyMDI0Y2I4ODk5MGMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3NLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoUGFzc0tpdCkKIApAQCAtNDAsMTMgKzQxLDEzIEBAIFNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUs
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BL
UGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVS
TFN0cmluZ3MsIHJlcXVlc3QpOwogCiAgICAgYXV0byBzaG93UGF5bWVudFVJUmVxdWVzdFNlZWQg
PSBtX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKICAgICBhdXRvIHdlYWtUaGlzID0gbV93ZWFr
UHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckNsYXNzKCkgcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRS
ZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246W3BheW1lbnRSZXF1ZXN0LCBz
aG93UGF5bWVudFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
Q2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJl
cXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJl
cXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAg
aWYgKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgz
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKICAgICAgICAgW3BheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpIGJlZ2luU2hlZXQ6
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpoaWRlUGF5bWVudFVJKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmZmUwMGY1MjFl
YzlhMWQxNTdiMzNkYTdkYTM0ZmE3MWIwMGU3NjcwLi4wNmNhOGE0MjBkYTg2YWYzYzc5YjIzMjNi
OTE0MGI3YjdiNDAzMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC05MjksNyArOTI5
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rp
b25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2lu
dGVyYWN0aW9ucycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKIAogICAgIC8vIFZhbGlkYXRl
IGFsbCBvZiB0aGUgcGFyYW1ldGVycyBiZWZvcmUgcGVyZm9ybWluZyBhbnkgaW50ZXJhY3Rpb25z
IHdpdGggdGhlIGJyb3dzaW5nIGNvbnRleHQgdW5kZXIgdGVzdC4KLSAgICBWZWN0b3I8c3RkOjpm
dW5jdGlvbjx2b2lkKCk+PiBhY3Rpb25zVG9QZXJmb3JtOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4+IGFjdGlvbnNUb1BlcmZvcm07CiAgICAgYWN0aW9uc1RvUGVyZm9ybS5yZXNl
cnZlQ2FwYWNpdHkoaW50ZXJhY3Rpb25zLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byBpbnRl
cmFjdGlvbiA6IGludGVyYWN0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYWVkMWU5MTRkYWU0OTAwNGVi
NTc3MzYzYTkyZWNiNDEyMjg0Y2RmNi4uNWEwY2MxYTlkOTJlZGU2OWI1MDdkN2VjZWNiOTA1ZGMz
MjQ3YTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5J
Y29uTG9hZGluZ0NsaWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGdl
dExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQppbmRleCAxYjkwOTI5NDQ4OTBjYjNkNmE2MTI5ZmJlNWM3YWJjZWM0NTAwYjJjLi40
OGI4MTJkYzI2YTk0YTQ2YTEzNWY2OWRiZDg1NTU1YjEyYTYxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLTlNEYXRhLmgiCiAjaW5jbHVkZSAiX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIl9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFs
LmgiCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC03MSw3ICs3Miw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+
SWNvbkxvYWRpbmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyKShOU0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGlu
Z0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYg
bGlua0ljb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPik+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIFdURjo6RnVuY3Rp
b248dm9pZCAoV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwpAQCAtODYsNyArODcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6
Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgog
CiAgICAgUmV0YWluUHRyPF9XS0xpbmtJY29uUGFyYW1ldGVycz4gcGFyYW1ldGVycyA9IGFkb3B0
TlMoW1tfV0tMaW5rSWNvblBhcmFtZXRlcnMgYWxsb2NdIF9pbml0V2l0aExpbmtJY29uOmxpbmtJ
Y29uXSk7CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93
ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpedm9pZCAoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdh
dGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAobG9hZENvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9hZENvbXBsZXRpb25I
YW5kbGVyID0gQmxvY2tfY29weShsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICAgICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQpAQCAtOTYs
NyArOTcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDAy
N2RiNTBlZjRkOTg0NjAyM2FiYmY3NWExOTZiY2YxMzg4NDQ0Y2EuLmEzMzNiMTkwZDJmNGE2OTk1
YjM4NzE1NzUyZDA4NTlmOWEzYzI4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgSEFWRShB
UFBfTElOS1MpCkBAIC0yODIsNyArMjgzLDcgQEAgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50Ojp+TmF2aWdhdGlvbkNsaWVudCgpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeUFwcExp
bmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25z
dCBTdHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4g
Y29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgdm9pZCB0cnlBcHBMaW5rKFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaW5nJiBjdXJyZW50
TWFpbkZyYW1lVVJMLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5z
aG91bGRPcGVuQXBwTGlua3MoKSkgewpAQCAtMjkwLDEzICsyOTEsMTIgQEAgc3RhdGljIHZvaWQg
dHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rp
b24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGxvY2FsQ29t
cGxldGlvbkhhbmRsZXIgPSBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlv
bkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRp
b25IYW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwg
c3VjY2Vzc10geworICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlvbkFjdGlvbi0+
cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQgKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopIG11dGFibGUg
eworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9j
a1B0cjx2b2lkICgpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBzdWNjZXNzXSB7CiAgICAgICAgICAgICAoKmxvY2FsQ29tcGxl
dGlvbkhhbmRsZXIpKHN1Y2Nlc3MpOwogICAgICAgICAgICAgZGVsZXRlIGxvY2FsQ29tcGxldGlv
bkhhbmRsZXI7Ci0gICAgICAgIH0pOwotICAgIH1dOworICAgICAgICB9KS5nZXQoKSk7CisgICAg
fSkuZ2V0KCldOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDMwZjkw
ZjU0Nzc4YTBmZjdjZDE2MWFmNjFmY2FmMDEzMmM0MTMyYWEuLjdiMDJmMzRkNjZmYTI2YWE5ZmU5
NmUzOWY1M2ZkZTM3MWQ5Y2NiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUuaApAQCAtNzYsOCArNzYsOCBAQCBwcml2YXRlOgogICAgIHByaXZhdGU6CiAg
ICAgICAgIC8vIEFQSTo6VUlDbGllbnQKICAgICAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVBy
b3h5PiBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25z
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJikgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wg
Y3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25z
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwot
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1BhZ2VDb21tb24o
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQ
cm94eT4pPiogY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBib29sIGNyZWF0ZU5ld1BhZ2VB
c3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2Vi
UGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICBSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1BhZ2VDb21tb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKIAogICAgICAgICB2b2lkIGNsb3NlKFdlYktpdDo6V2ViUGFnZVBy
b3h5Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5l
KFdlYktpdDo6V2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDdjNWY2ZmE0MDhhYzUwN2MzOWYwODdiMGVi
MTc2YmJjM2UzNWUzMjMuLjMwMDNlYTNmY2U5ZmI5NGU5YTU4N2E3NjdiYmIxN2RiZTQ2ZjIxNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0x
NzMsNyArMTczLDcgQEAgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6On5VSUNsaWVudCgpCiB7CiB9CiAK
LVJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0
ZU5ld1BhZ2VDb21tb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNv
bnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pPiogY29tcGxl
dGlvbkhhbmRsZXIpCitSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjcmVhdGVOZXdQYWdlQ29tbW9uKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqIGluaXRpYXRpbmdGcmFtZSwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIHdpbmRv
d0ZlYXR1cmVzLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgV1RGOjpGdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJv
eHk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURl
bGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgQVNTRVJUKGRlbGVnYXRlKTsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpjcmVhdGVOZXdQYWdlQ29tbW9uKFdlYktpdDo6VwogICAgIGlmIChjb21wbGV0aW9uSGFu
ZGxlcikgewogICAgICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKF93ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpmb3JO
YXZpZ2F0aW9uQWN0aW9uOndpbmRvd0ZlYXR1cmVzOmNvbXBsZXRpb25IYW5kbGVyOikpOwogCi0g
ICAgICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKGFwaU5hdmlnYXRpb25BY3Rp
b24pIHdpbmRvd0ZlYXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpIGNvbXBsZXRpb25I
YW5kbGVyOkJsb2NrUHRyPHZvaWQgKFdLV2ViVmlldyAqKT46OmZyb21DYWxsYWJsZShbY29tcGxl
dGlvbkhhbmRsZXIgPSAqY29tcGxldGlvbkhhbmRsZXIsIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpLCByZWxhdGVkV2ViVmlldyA9IFJldGFpblB0cjxXS1dlYlZpZXc+KG1fdWlEZWxlZ2F0ZS5t
X3dlYlZpZXcpXShXS1dlYlZpZXcgKndlYlZpZXcpIHsKKyAgICAgICAgWyhpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0
aW9uQWN0aW9uOndyYXBwZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVyZXM6d3Jh
cHBlcihhcGlXaW5kb3dGZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAo
V0tXZWJWaWV3ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgcmVsYXRlZFdl
YlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KV0oV0tX
ZWJWaWV3ICp3ZWJWaWV3KSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yMzQsNyArMjM0LDcg
QEAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3Jl
YXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2UKICAgICByZXR1cm4gY3JlYXRlTmV3UGFnZUNvbW1v
bihwYWdlLCBpbml0aWF0aW5nRnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwgd2lu
ZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBudWxscHRyKTsKIH0KIAotYm9vbCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGluaXRpYXRpbmdGcmFtZSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+KT4gY29tcGxldGlvbkhhbmRsZXIpCitib29sIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93
RmVhdHVyZXMsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94
eT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdDcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb25Gb3JOYXZp
Z2F0aW9uQWN0aW9uV2luZG93RmVhdHVyZXNBc3luYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1Bh
Z2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0CiAgICAgaWYgKCFkZWxl
Z2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY3JlYXRlTmV3UGFnZUNvbW1vbihw
YWdlLCBpbml0aWF0aW5nRnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwgd2luZG93
RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCAmY29tcGxldGlvbkhhbmRsZXIpOworICAg
IGNyZWF0ZU5ld1BhZ2VDb21tb24ocGFnZSwgaW5pdGlhdGluZ0ZyYW1lLCBzZWN1cml0eU9yaWdp
bkRhdGEsIHJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwCmluZGV4IDNjNTNhYWM1ZjA2NTZhMzZmZjMwOGRjN2YyNzBjNTI3NDdhODk1ODUuLjdi
NWUzMDI1MGFkYTY3YjlmMmJlYTBlNDRhMjY0MDMzZDFjM2M2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OmxvZyhjb25zdCBTdHJpbmcmIGxvZykgY29uc3QKICAgICBMT0coVmll
d0dlc3R1cmVzLCAiU3dpcGUgU25hcHNob3QgUmVtb3ZhbCAoJTAuMmYgbXMpIC0gJXMiLCBtaWxs
aXNlY29uZHNTaW5jZVN0YXJ0LCBsb2cudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdGFydChFdmVudHMgZGVz
aXJlZEV2ZW50cywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHJlbW92YWxDYWxsYmFjaykKK3ZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdGFydChFdmVu
dHMgZGVzaXJlZEV2ZW50cywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcmVtb3ZhbENhbGxiYWNr
KQogewogICAgIG1fb3V0c3RhbmRpbmdFdmVudHMgPSBkZXNpcmVkRXZlbnRzOwogICAgIG1fcmVt
b3ZhbENhbGxiYWNrID0gV1RGTW92ZShyZW1vdmFsQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGNkNzA4N2VhYjU3YWNmNWJlMDhlODZhMmY3MWVhMDVjOGM0ZGFlM2EuLmFhNjk5ODJjYTI4NGFi
NDVhM2U0NjZjN2MwMzg4NmQzN2RhY2E2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTE1OSw3ICsxNTks
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIFNuYXBzaG90UmVtb3ZhbFRyYWNrZXIoKTsKIAotICAg
ICAgICB2b2lkIHN0YXJ0KEV2ZW50cywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICAgICAg
dm9pZCBzdGFydChFdmVudHMsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICAgICAgdm9p
ZCByZXNldCgpOwogCiAgICAgICAgIGJvb2wgZXZlbnRPY2N1cnJlZChFdmVudHMpOwpAQCAtMTc4
LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgc3RvcFdhaXRpbmdGb3JFdmVudChF
dmVudHMsIGNvbnN0IFN0cmluZyYgbG9nUmVhc29uKTsKIAogICAgICAgICBFdmVudHMgbV9vdXRz
dGFuZGluZ0V2ZW50cyB7IDAgfTsKLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcmVt
b3ZhbENhbGxiYWNrOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9yZW1vdmFsQ2Fs
bGJhY2s7CiAgICAgICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgbV9z
dGFydFRpbWU7CiAKICAgICAgICAgUnVuTG9vcDo6VGltZXI8U25hcHNob3RSZW1vdmFsVHJhY2tl
cj4gbV93YXRjaGRvZ1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAppbmRleCA2MWM3MzMyZDFmN2NmNDQyYWI2MWRiMzViMWVkYmRhZGIwZWVkOTcw
Li5hZDQ2OGJiMmMzMTQwMWM0MzdmNzlkM2Q4MDliZDE3NmJiZjE5ZDBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtMzYsNyArMzYsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRp
Y2F0b3JXaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24uaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpA
QCAtMjQ3LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpbmRvd09jY2x1c2lvbkRl
dGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9u
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBib29sIHdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWQ7
IH0KIAotICAgIHZvaWQgcHJlcGFyZUZvck1vdmVUb1dpbmRvdyhOU1dpbmRvdyAqdGFyZ2V0V2lu
ZG93LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
cHJlcGFyZUZvck1vdmVUb1dpbmRvdyhOU1dpbmRvdyAqdGFyZ2V0V2luZG93LCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgTlNXaW5kb3cgKnRhcmdldFdp
bmRvd0Zvck1vdmVQcmVwYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0V2luZG93Rm9y
TW92ZVByZXBhcmF0aW9uOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAw
MTU2NWU0N2JiZGI1NGY1ZjUwZWMwMjgwNjg2MmNlMGMzZjJmYjk5Li4yOTg2ZTUzYTMyYjdkMTg2
MjRhM2EwMTBkNWRiNjU0ZDgyMGQ4N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yMjEwLDcgKzIyMTAsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjplbmREZWZlcnJpbmdWaWV3SW5XaW5kb3dDaGFuZ2VzU3luYygpCiAgICAgfQogfQogCi12
b2lkIFdlYlZpZXdJbXBsOjpwcmVwYXJlRm9yTW92ZVRvV2luZG93KE5TV2luZG93ICp0YXJnZXRX
aW5kb3csIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
Vmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9zaG91
bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMgPSB0cnVlOwogICAgIHZpZXdXaWxsTW92ZVRvV2lu
ZG93KHRhcmdldFdpbmRvdyk7CkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpwcmVwYXJlRm9yTW92ZVRvV2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIHN0ZDo6ZnVu
Y3Rpb248dgogICAgIG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzID0gZmFsc2U7CiAK
ICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIG1fcGFnZS0+aW5zdGFs
bEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihbd2Vha1RoaXMsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKKyAgICBtX3BhZ2UtPmluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29t
cGxldGlvbkhhbmRsZXIoW3dlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2NTQ2YjZiNzFh
OWI1ZWY3MjNlZjExZWQzYWI0YTU1OWViNDZhZjMzLi45NjdjMjQ5MDRjNzhmMjlkZDRlMWNhNTBi
ZWViMWMwYmVkZWQ2YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcApAQCAtODUsNyArODUsNyBA
QCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogICAgIH0KIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nl
c3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0ZURh
dGEpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBzZW5kKE1lc3NhZ2VzOjpEYXRh
YmFzZVByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1v
ZGlmaWVkU2luY2UsICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgc2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzOjpE
ZWxldGVXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgY2Fs
bGJhY2tJRCksIDApOwogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChjYW5T
ZW5kTWVzc2FnZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rh
dGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oCmluZGV4IGE4MGQ2OTE4MjNhYjdhNWU1
MTE3MmEyMzM1YjBhMTE4N2FhN2RhMjMuLjUyOTk3NjU4NjA3YTM2MTcxMWVmOTEzMjdlYzQ3MWUy
ODNiZWY3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9v
bCopOwogICAgIH5EYXRhYmFzZVByb2Nlc3NQcm94eSgpOwogCi0gICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIHN0
ZDo6ZnVuY3Rpb248dm9pZChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
dm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFdURjo6RnVuY3Rpb248dm9pZChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29y
ZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24o
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4mJik7CiAKQEAgLTg4LDkgKzg4LDkgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCi0gICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+PiBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwotICAgIEhh
c2hNYXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFD
YWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4g
bV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCBlZTk3ZjBjODVhMTgzMTA2
M2Y1ZjUyMmNkNjJjYzJmZDA2MDczZDU1Li41YThhOWI3ZTliNjIzMTI1N2JhNTFkNDgwMGI2Y2E1
MmQzNDVjZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkgeyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBIaWRlIHRo
ZSBjb250ZW50IHVudGlsIHRoZSBjdXJyZW50bHkgcGVuZGluZyB1cGRhdGUgYXJyaXZlcy4KICAg
ICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRhdGUoKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHlJbXBsLmNwcAppbmRleCAwOWJhMzBiNDgzZDBmYzg2ZjE4MDE0NzkwYjY2M2FjM2Ri
ZjJlYzY0Li5mYTBhNGRkM2Y4Mzg4Mjc1MmZiYjc1Y2M5NWQxOWUyNWU1MjM0OGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKQEAg
LTIyMiwxMCArMjIyLDEwIEBAIGludCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0
b3I6OndlYlZpZXdEcmF3Q2FsbGJhY2soRHJhd2luZ0FyZWFQcm94eUltCiAgICAgcmV0dXJuIEZB
TFNFOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6c3Rh
cnQoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2spCit2
b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6c3RhcnQoV1RGOjpGdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3N0
YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1TKCk7Ci0gICAgbV9jYWxsYmFj
ayA9IGNhbGxiYWNrOworICAgIG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fd2ViUGFnZS52aWV3
V2lkZ2V0KCksICJkcmF3IiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYlZpZXdEcmF3
Q2FsbGJhY2spLCB0aGlzKTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxX3MpOwpAQCAtMjU4
LDcgKzI1OCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpk
aWREcmF3KCkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMTAwX21zKTsKIH0KIAotdm9p
ZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6
OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdU
Rjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGlmICghbV93ZWJQYWdlUHJveHkuaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CkBA
IC0yNjcsNyArMjY3LDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6ZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGIKIAogICAgIGlmICghbV9k
cmF3aW5nTW9uaXRvcikKICAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8RHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94eSk7
Ci0gICAgbV9kcmF3aW5nTW9uaXRvci0+c3RhcnQoY2FsbGJhY2tGdW5jdGlvbik7CisgICAgbV9k
cmF3aW5nTW9uaXRvci0+c3RhcnQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuaAppbmRleCA4OWM3MTNmYzg3YTczNTQ5MzAzOGFkMTBkOTBkYzFjZjYw
NjFkNDU3Li43MzUzM2Y0NzI0ZTRmNjQ1YmNjMzM3M2FhNDEwNjQ5ZWVlYjIzOTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaApAQCAtNjAs
NyArNjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZVNvb24oKTsK
ICAgICB2b2lkIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKSBvdmVycmlkZTsKIAogICAgIGNs
YXNzIERyYXdpbmdNb25pdG9yIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2lu
Z01vbml0b3IpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgRHJhd2luZ01vbml0b3IoV2ViUGFnZVByb3h5Jik7CiAgICAgICAgIH5E
cmF3aW5nTW9uaXRvcigpOwogCi0gICAgICAgIHZvaWQgc3RhcnQoc3RkOjpmdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgICAgICB2b2lkIHN0YXJ0KFdURjo6RnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgc3RhdGljIGludCB3ZWJWaWV3RHJhd0NhbGxiYWNrKERyYXdpbmdNb25pdG9yKik7CkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2U7
CiAgICAgICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IDAgfTsKLSAgICAgICAgc3RkOjpmdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gbV9jYWxsYmFjazsKKyAgICAgICAgV1RGOjpG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gbV9jYWxsYmFjazsKICAgICAgICAg
UnVuTG9vcDo6VGltZXI8RHJhd2luZ01vbml0b3I+IG1fdGltZXI7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCmluZGV4IDEwZjM0Mjc3NjI0MWU0
NDY0YTIyMDdjMzg0MDY5OTgwZGYyZTNlZGIuLmM0MzExMTkxNzUxN2VhZDI0ODI3Njk2ZjFhNjFh
NDlkODg1Y2NlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmlj
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNr
LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xOTAsMTMgKzE4OSw2
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB1
aW50NjRfdCBwdXQoc3RkOjpmdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikK
LSAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVv
Zi4uLihUKSwgVC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlU
b2tlbik7Ci0gICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+CiAgICAgdWludDY0X3QgcHV0KEZ1bmN0aW9uPHZv
aWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRB
Y3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICAgICAgYXV0byBjYWxsYmFj
ayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRl
KFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MDY3OTgxZjA4N2VhZGQ0Mzg2MGZhOGY4ZGNlN2Y3NmFiNzgyN2M3OC4uYjU4ODdiZTg3MDA3M2Jh
ZTViYzE2NDM1OGQ5NzA1YmI1ZjAwNjg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyMiwxNSAr
MTIyLDE0IEBAIERvd25sb2FkUHJveHkqIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25s
b2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQ
cm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVl
c3QpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAK
ICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0
byB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAgUkVM
RUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vi
c2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJh
Y2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNz
aW9uSURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CisgICAgbV9wZW5kaW5nRmV0Y2hXZWJz
aXRlRGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuID0gdGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc2Vzc2lvbklEXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5n
IGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRv
bmUgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAgICAgfSk7CkBAIC0xMzgsMjggKzEz
NywyNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRhKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBmZXRjaE9w
dGlvbnMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRh
dGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byB0b2tlbiA9
IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAgUkVMRUFTRV9MT0df
SUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRh
IiwgdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5hZGQo
Y2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuLCBjb21wbGV0aW9uSGFuZGxlciwgc2Vzc2lvbklEXSB7
CisgICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQs
IFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25JRF0g
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBSRUxFQVNFX0xPR19JRihz
ZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0
aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkb25lIGRlbGV0aW5nIFdlYnNpdGUg
ZGF0YSIsIHRoaXMpOwogICAgIH0pOwogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpEZWxldGVXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwg
Y2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llSG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7Ci0gICAgYXV0byB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiAgICAgUkVMRUFTRV9MT0dfSUYoc2Vzc2lv
bklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNh
dXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIGZvciBzZXZl
cmFsIG9yaWdpbnMiLCB0aGlzKTsKIAotICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2luc0NhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuLCBjb21wbGV0aW9u
SGFuZGxlciwgc2Vzc2lvbklEXSB7CisgICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4gPSB0aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBp
cyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHBy
b2Nlc3MgaXMgZG9uZSBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIs
IHRoaXMpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGM1ZWIxYzZlODg5NjMwNzdkZjhlNWY5
NTY4MmEzYzQ5NGQ3MTE5NTQuLjk5Y2FiNTNlZGJiOTczZDRhNmY2MjBmOTIxOTA1OGNlNjMxYWQ5
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogCiAgICAgRG93bmxv
YWRQcm94eSogY3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKIAotICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4sIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29v
a2llSG9zdE5hbWVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFdURjo6
RnVuY3Rpb248dm9pZChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhv
c3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KGJvb2wpOwpAQCAtMTI3LDkgKzEyNyw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwogICAgIERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2Fs
bGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1f
cGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2luc0NhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CisgICAg
SGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRl
V2Vic2l0ZURhdGFDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlv
bjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tz
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkUHJveHlNYXA+IG1fZG93bmxvYWRQcm94
eU1hcDsKICAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXgg
ODBjMzE4YzczMTM3YWQxMDQyOTEyOTkwNTliNzQwZDI0OGQyMjI5Mi4uZWRkYmIxNjRlOWQ0Y2Ri
MTcyNzZlMjQ3YTE2ZGNiZWNmOWIyYTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
KCkgPSAwOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHN0ZDo6
ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpID0gMDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKaW5kZXgg
MjUwNzU5MjRlYjViNjMwODg5ODZjMmI2OGZhZDE3ZGYwNmQ5YjcwZC4uZTczMjdkMDQ5ZDkwNTFk
MmY0YjRmMDIyZmQ0Mjg2NGNjY2M0YzJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcApAQCAt
MTIwLDcgKzEyMCw3IEBAIHZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFy
dE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpCiAgICAgfSk7CiB9CiAKLXZv
aWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJ
dGVtc1Bhc3NpbmdUZXN0KEFQSTo6RGljdGlvbmFyeSYgdGFibGUsIHN0ZDo6ZnVuY3Rpb248Ym9v
bChkb3VibGUgZXhwaXJhdGlvblRpbWVzdGFtcCk+IGlzRXhwaXJhdGlvblRpbWVBY2NlcHRhYmxl
KQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxl
V2l0aEl0ZW1zUGFzc2luZ1Rlc3QoQVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSwgV1RGOjpGdW5jdGlv
bjxib29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1wKT4mJiBpc0V4cGlyYXRpb25UaW1lQWNj
ZXB0YWJsZSkKIHsKICAgICBBU1NFUlQoaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXIuaAppbmRleCBmZTZiYzZmNTY3OTkwZmNiNTQxZTFhMmQyYjllOWRmNDY1
OTI3ZWNiLi5jYTFiMDA0MDkyNzAwMDg5MDNkMDFjYmI3NzYwM2E1ZDdkYTJiMTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXJfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTY3LDcgKzY2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKIAotICAg
IHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QoQVBJOjpE
aWN0aW9uYXJ5Jiwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1w
KT4pOworICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rl
c3QoQVBJOjpEaWN0aW9uYXJ5JiwgV1RGOjpGdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0aW9u
VGltZXN0YW1wKT4mJik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBQbHVnSW5BdXRv
U3RhcnRPcmlnaW5NYXAsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXV0b1N0YXJ0VGFibGU7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgQXV0b1N0YXJ0VGFibGU+
IFNlc3Npb25BdXRvU3RhcnRUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCA2ZDBiZTlmZGYz
MzYxYTExYTZlNTYxNjVmOGQ3YjhjMGJkNTIzNTJhLi41ZTliMzk2N2UxZmQ0MjY4OWIwZDAwNjVk
YTJhZWE2YzRmNTVhOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC05NSwyMSArOTUsMjEgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdp
blByb2Nlc3NQcm94eSogcGx1Z2luUHIKICAgICBtX3BsdWdpblByb2Nlc3Nlcy5yZW1vdmUodmVj
dG9ySW5kZXgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNpdGVE
YXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChW
ZWN0b3I8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQbHVnaW5Qcm9jZXNzTWFu
YWdlcjo6ZmV0Y2hXZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIFdU
Rjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1
Z2luUHJvY2VzcyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNzVHlwZU5v
cm1hbCwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3lOb3JtYWwpKTsKIAogICAgIHBsdWdpblBy
b2Nlc3MtPmZldGNoV2Vic2l0ZURhdGEoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpkZWxldGVXZWJzaXRlRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JD
cmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nl
c3NUeXBlTm9ybWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogCiAgICAg
cGx1Z2luUHJvY2Vzcy0+ZGVsZXRlV2Vic2l0ZURhdGEobW9kaWZpZWRTaW5jZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpkZWxl
dGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpkZWxldGVXZWJz
aXRlRGF0YUZvckhvc3ROYW1lcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9
IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVn
aW5Qcm9jZXNzVHlwZU5vcm1hbCwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3lOb3JtYWwpKTsK
ICAgICBwbHVnaW5Qcm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhob3N0TmFt
ZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IGRkNDRk
NjIyYzkyYzMxZTdjZGQ0MTk5MjMxYjc5NWU1YjdmY2UxZDIuLjJjZTQ3YjM2MTYzYTc0OWM2ZTc2
OWZmMTAxODA5NTM2NTY4ZGQ0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtNjEsOSArNjEsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdp
blByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKIAotICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChWZWN0
b3I8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVE
YXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlv
bkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3Qg
UGx1Z2luTW9kdWxlSW5mbyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0
b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaW5saW5lIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW4gcHJv
Y2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggYmFjZDcz
ZTU0MDM0MGE0NDI2ZDYwZTkwZWNhNzk3MWJhNWIwZGE3OS4uNmZjN2E1YzZkM2MzOTk0MTY4NTZl
NTQxYTJkZTViY2M4MzU0YjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3gKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlBsdWdpblByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAsIElQQzo6U2Vu
ZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0K
IAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoc3RkOjpmdW5jdGlv
bjx2b2lkIChWZWN0b3I8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8
U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTEyNiw3ICsxMjYsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0
YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4gYwogICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6R2V0U2l0ZXNXaXRoRGF0YShjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0
YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOwogICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzLnNldChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBs
dWdpblByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKG1vZGlmaWVkU2luY2UsIGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
SG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1l
cywgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBlZjQzZWFiYjA2ODBlN2Q3
MGFlYzZhYWNiMzUzZWUzMDVhMTQ3NzhjLi43MDgwNmMxZTdiNjQ2OWI0MDcyZDhkMmVlOWMzMzRh
MWZjMzJjMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtNzgsOSArNzgsOSBAQCBwdWJsaWM6CiAgICAgLy8g
ZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2RlciBhbmQgc2VudCBiYWNrIHRvIHRo
ZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vzcy4KICAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKIAotICAgIHZvaWQgZmV0Y2hX
ZWJzaXRlRGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4gY29tcGxldGlv
bkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5h
bWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXVEY6OkZ1
bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0
aW9uOyB9CiAKQEAgLTE1NywyMSArMTU3LDIxIEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIAogICAgIFZlY3Rvcjx1
aW50NjRfdD4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YVJlcXVlc3RzOwotICAgIEhhc2hNYXA8
dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPj4gbV9wZW5kaW5n
RmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFD
YWxsYmFja3M7CiAKICAgICBzdHJ1Y3QgRGVsZXRlV2Vic2l0ZURhdGFSZXF1ZXN0IHsKICAgICAg
ICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlOwog
ICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEOwogICAgIH07CiAgICAgVmVjdG9yPERlbGV0ZVdl
YnNpdGVEYXRhUmVxdWVzdD4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFSZXF1ZXN0czsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxl
dGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKIAogICAg
IHN0cnVjdCBEZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lc1JlcXVlc3QgewogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBob3N0TmFtZXM7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQ7CiAg
ICAgfTsKICAgICBWZWN0b3I8RGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXNSZXF1ZXN0PiBt
X3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lc1JlcXVlc3RzOwotICAgIEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNp
dGVEYXRhRm9ySG9zdE5hbWVzQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVz
Q2FsbGJhY2tzOwogCiAgICAgLy8gSWYgY3JlYXRlUGx1Z2luQ29ubmVjdGlvbiBpcyBjYWxsZWQg
d2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNoaW5nIHdlJ2xsIGtlZXAgY291bnQgb2Yg
aXQgYW5kIHNlbmQgYSBidW5jaCBvZiByZXF1ZXN0cwogICAgIC8vIHdoZW4gdGhlIHByb2Nlc3Mg
ZmluaXNoZXMgbGF1bmNoaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Byb2Nlc3NBc3NlcnRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzQXNz
ZXJ0aW9uLmgKaW5kZXggZmFjODYzMjZjMTVlMTc2YTkyODQyZjUyMmM5ZjU1NTY1NTc2N2UyNi4u
YzQyZTk4Y2U2OGJiZDBkODQxYTdiNjI4NjE0NGFlNWNjNjIwYzZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZu
ZGVmIFByb2Nlc3NBc3NlcnRpb25faAogI2RlZmluZSBQcm9jZXNzQXNzZXJ0aW9uX2gKIAotI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKICNpZiBQTEFU
Rk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBjODhlNjhjOTVmNGU1ZDQ4
ZWFhOTIxNTI4YzY2YzZiOTA2Y2Y4NjZhLi4yZjZkYjBiMjljNzFjYTRkYTdmNzg5OGVkMzY3YjUy
OTYwZTgzNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0Zv
cndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpj
bGVhcigpCiAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QobnVsbHB0ciwgV1RG
TW92ZShyZW1vdmVkSXRlbXMpKTsKIH0KIAotQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0Zv
cndhcmRMaXN0OjpiYWNrRm9yd2FyZExpc3RTdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wg
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mIGZpbHRlcikgY29uc3QKK0JhY2tGb3J3YXJkTGlz
dFN0YXRlIFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0ZvcndhcmRMaXN0U3RhdGUoV1RGOjpGdW5j
dGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgZmlsdGVyKSBjb25zdAogewog
ICAgIEFTU0VSVCghbV9oYXNDdXJyZW50SW5kZXggfHwgbV9jdXJyZW50SW5kZXggPCBtX2VudHJp
ZXMuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5oCmluZGV4IDE3OGYwN2U4N2U4MjE5ODE0NjUyMDI5YTZhNzgzODk4OTZmNzUyNjcuLmEw
NDBiMjFiZmQ2ZDE5MzQ4OGEyMzg0NzhjNTY5MWJiNDRiZGI5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgIFJlZjxBUEk6OkFycmF5PiBiYWNrTGlzdEFzQVBJQXJyYXlXaXRoTGltaXQodW5z
aWduZWQgbGltaXQpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBmb3J3YXJkTGlzdEFzQVBJ
QXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpIGNvbnN0OwogCi0gICAgQmFja0ZvcndhcmRM
aXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JikgY29uc3Q7CisgICAgQmFja0ZvcndhcmRMaXN0U3Rh
dGUgYmFja0ZvcndhcmRMaXN0U3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJik+JiYpIGNvbnN0OwogICAgIHZvaWQgcmVzdG9yZUZyb21TdGF0ZShCYWNrRm9y
d2FyZExpc3RTdGF0ZSk7CiAKICAgICBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBp
dGVtU3RhdGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGRmODAxZjQyMjAwMWNmZjY1MzJlMWU4ZGE4NWQw
ZWQ1M2JhMjViYzMuLjU1NzkwZTI1NWRjMjA0ZDIxYjg3YTA5OWFhMzQ4MTFmODQyZTBmMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
Y3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CiAKIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxi
YWNrKQogewogICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgbV9sZWdhY3lDb29raWVPYnNlcnZl
cnMuc2V0KHNlc3Npb25JRCwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMjU5LDggKzI1OSw5IEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojp1bnJlZ2lzdGVyT2JzZXJ2ZXIoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT2JzCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29v
a2llc0RpZENoYW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIG1fY2xpZW50LmNvb2tp
ZXNEaWRDaGFuZ2UodGhpcyk7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2xlZ2FjeUNvb2tp
ZU9ic2VydmVycy5nZXQoc2Vzc2lvbklEKSkKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICBhdXRv
IGxlZ2FjeUl0ZXJhdG9yID0gbV9sZWdhY3lDb29raWVPYnNlcnZlcnMuZmluZChzZXNzaW9uSUQp
OworICAgIGlmIChsZWdhY3lJdGVyYXRvciAhPSBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5lbmQo
KSkKKyAgICAgICAgKCgqbGVnYWN5SXRlcmF0b3IpLnZhbHVlKSgpOwogCiAgICAgYXV0byBpdGVy
YXRvciA9IG1fY29va2llT2JzZXJ2ZXJzLmZpbmQoc2Vzc2lvbklEKTsKICAgICBpZiAoaXRlcmF0
b3IgPT0gbV9jb29raWVPYnNlcnZlcnMuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggMjdhYTJhYzA3OWU3ZDE4MDk2YzNk
NTA2MzQzNGRkNmU5ODc4YmE1YS4uODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIy
ZjU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHN0b3BPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKLSAgICB2b2lkIHNldENvb2tp
ZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNz
aW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICBjbGFzcyBPYnNlcnZlciB7
CiAgICAgcHVibGljOgpAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFZvaWRDYWxsYmFjaz4+IG1fdm9pZENhbGxiYWNrczsKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8R2V0Q29va2llc0NhbGxiYWNrPj4gbV9nZXRDb29raWVzQ2Fs
bGJhY2tzOwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
U2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX2xlZ2FjeUNvb2tpZU9ic2VydmVy
czsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgSGFzaFNldDxPYnNlcnZlcio+PiBt
X2Nvb2tpZU9ic2VydmVyczsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudCBtX2Ns
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggY2Yw
NjljM2QzNWE0OWQ4MTA3ZWNlYmZjYzIwNGVmM2M3N2RjZGYyYy4uYzg5ZmM4OWRlNTBjY2U4NjJj
OTVmNzAzYzk0N2Q0ZTk4OWFlYWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIEludFNpemUgV2ViUGFnZVByb3h5Ojp2
aWV3U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC52aWV3U2l6ZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBp
c0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2Fy
ZEV2ZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKQEAgLTE2
MjEsNyArMTYyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlU2VsZWN0aW9uSW5Gb2N1
c2VkRWRpdGFibGVFbGVtZW50KCkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV9wYWdlSUQp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50
MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBh
Z2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewog
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBmYWxzZSwgMCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CkBAIC0yMzQ2LDExICsyMzQ2LDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
KQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3BhZ2VJRCk7CiB9CiAKLVNlc3Npb25TdGF0ZSBX
ZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKT4mIGZpbHRlcikgY29uc3QKK1Nlc3Npb25TdGF0ZSBXZWJQYWdl
UHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0
ZTsKIAotICAgIHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSA9IG1fYmFja0Zvcndh
cmRMaXN0LT5iYWNrRm9yd2FyZExpc3RTdGF0ZShmaWx0ZXIpOworICAgIHNlc3Npb25TdGF0ZS5i
YWNrRm9yd2FyZExpc3RTdGF0ZSA9IG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrRm9yd2FyZExpc3RT
dGF0ZShXVEZNb3ZlKGZpbHRlcikpOwogCiAgICAgU3RyaW5nIHByb3Zpc2lvbmFsVVJMU3RyaW5n
ID0gbV9wYWdlTG9hZFN0YXRlLnBlbmRpbmdBUElSZXF1ZXN0VVJMKCk7CiAgICAgaWYgKHByb3Zp
c2lvbmFsVVJMU3RyaW5nLmlzRW1wdHkoKSkKQEAgLTI4MTksNyArMjgxOSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRP
cHRpb25zIG9wdGlvbnMsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
b3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdl
SUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdURjo6RnVu
Y3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlv
biwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihudWxscHRyLCBmYWxzZSwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3du
KTsKQEAgLTI4MzAsNyArMjgzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHN0ZDo6ZnVuY3Rpb248CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
c2NyaXB0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC0y
ODQxLDcgKzI4NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdAogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFNv
dXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBA
IC0yODUzLDcgKzI4NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1l
SUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdl
dENvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFs
aWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NjUsNyArMjg2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRDb250ZW50c0FzU3RyaW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50
c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpnZXRCeXRlY29kZVByb2ZpbGUoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjg3Nyw3ICsyODc3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldEJ5dGVjb2RlUHJvZmlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWMKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVj
b2RlUHJvZmlsZShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5n
KCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjg4OSw3ICsyODg5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+IGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pXSB7CkBAIC0y
ODk5LDcgKzI4OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNzUgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5pc1Jlc3BvbnNpdmUoY2FsbGJhY2tGdW5jdGlvbik7
CisgICAgbV9wcm9jZXNzLT5pc1Jlc3BvbnNpdmUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7
CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0yOTE1LDcgKzI5MTUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0JhcwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCks
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMzgyNyw3ICszODI3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWMKIAogICAgIH07CiAKLSAgICBpZiAobV91aUNsaWVudC0+Y3Jl
YXRlTmV3UGFnZUFzeW5jKHRoaXMsIGZyYW1lLCBzZWN1cml0eU9yaWdpbkRhdGEsIHJlcXVlc3Qs
IHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29tcGxldGlvbkhhbmRsZXIp
KQorICAgIGlmIChtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlQXN5bmModGhpcywgZnJhbWUsIHNl
Y3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBbY29tcGxldGlvbkhhbmRsZXJdKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2Up
IHsgY29tcGxldGlvbkhhbmRsZXIobmV3UGFnZSk7IH0pKQogICAgICAgICByZXR1cm47CiAKICAg
ICBSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlID0gbV91aUNsaWVudC0+Y3JlYXRlTmV3UGFn
ZSh0aGlzLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJl
cywgbmF2aWdhdGlvbkFjdGlvbkRhdGEpOwpAQCAtNjI4NSw3ICs2Mjg1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmVwbGEKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5z
ZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIHJlZ2lzdGVyVW5kb0dyb3VwLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSwgc3VwcHJlc3NT
ZWxlY3Rpb25VcGRhdGUpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRN
YXJrZWRSYW5nZUFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRN
YXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgp
KSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oRWRpdGluZ1JhbmdlKCksIENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNjI5Niw3ICs2Mjk2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2Us
IENhbGxiYWMKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2Vk
UmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jhbmdl
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihFZGl0aW5nUmFuZ2UoKSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC02MzA3LDcgKzYzMDcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
RWRpdGluZ1JhbmdlLCBDYWxsYgogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmNoYXJh
Y3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdU
Rjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbigwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTYzMTgsNyArNjMx
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBzCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Zmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50
UmVjdCgpLCBFZGl0aW5nUmFuZ2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBA
IC02MzYyLDcgKzYzNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFu
Y2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNp
emUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVu
Y3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50
U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSgpLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKQEAgLTY1ODIsMTcgKzY1ODIsMTUgQEAgdm9pZCogV2ViUGFnZVBy
b3h5OjppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChS
ZWZQdHI8QVAKICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQsIHR5cGUsIHVzZXJEYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29t
cGxldGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKSgpKQordm9pZCBXZWJQYWdl
UHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIoV1RGOjpG
dW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGNvcGllZENvbXBsZXRpb25IYW5kbGVyID0gQmxvY2tfY29weShjb21w
bGV0aW9uSGFuZGxlcik7Ci0gICAgYXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShbY29waWVkQ29tcGxldGlvbkhhbmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0g
ICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIEJsb2NrX3JlbGVhc2Uo
Y29waWVkQ29tcGxldGlvbkhhbmRsZXIpOworICAgIGF1dG8gdm9pZENhbGxiYWNrID0gVm9pZENh
bGxiYWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
dm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5h
cHBlbmQoY2FsbGJhY2tJRCk7CkBAIC02NzE2LDcgKzY3MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShz
dGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFjaykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkgfHwgIW1fZHJhd2luZ0FyZWEpIHsKICAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CkBAIC02NzQ2LDcgKzY3NDQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24m
IGljb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyKQogewotICAgIG1faWNvbkxvYWRpbmdDbGll
bnQtPmdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWZQdHI8V2ViUGFnZVByb3h5Pih0aGlzKSwgbG9hZElkZW50aWZpZXJdKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24p
IHsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24s
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJ
ZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsK
ICAgICAgICAgICAgIGlmIChjYWxsYmFja0Z1bmN0aW9uKQogICAgICAgICAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZTIyNDY0MTNjZjhmNDE1MTU1
OGMwYmJmM2VjYWNhNWUyMzVkZTcwMS4uODRkZjU4MDAwNWY2YjUyNGVkOTA3NzJhYzIzNGYzZjNj
N2ViNDAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDMw
LDcgKzQzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7
CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgc2V0SW5pdGlh
bEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
KTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICAKICAgICB2b2lkIGNsZWFyU2VsZWN0aW9u
KCk7CiAgICAgdm9pZCByZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCk7
CkBAIC00NTgsNyArNDU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTUlNRVR5cGVXaXRoQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgdm9pZCBl
eGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5n
JiBhcmd1bWVudCA9IFN0cmluZygpKTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGJv
b2wsIGludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCB2YWxpZGF0ZUNv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAg
ICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VkaXRv
clN0YXRlOyB9CiAgICAgYm9vbCBjYW5EZWxldGUoKSBjb25zdCB7IHJldHVybiBoYXNTZWxlY3Rl
ZFJhbmdlKCkgJiYgaXNDb250ZW50RWRpdGFibGUoKTsgfQpAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzTWVkaWFTdHJlYW1DYXB0dXJlTXV0ZWQoKSBjb25zdCB7IHJldHVy
biBtX211dGVkU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpDYXB0dXJlRGV2aWNlc0Fy
ZU11dGVkOyB9CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBleGVjdXRlRWRpdENvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQogICAgIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVjdCgpOyB9CiAgICAgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudW5vYnNjdXJlZENvbnRlbnRSZWN0
KCk7IH0KQEAgLTUwMiwyNiArNTAyLDI2IEBAIHB1YmxpYzoKICAgICBpbnQzMl90IGRldmljZU9y
aWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbjsgfQogICAgIHZv
aWQgd2lsbENvbW1pdExheWVyVHJlZSh1aW50NjRfdCB0cmFuc2FjdGlvbklEKTsKIAotICAgIHZv
aWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3Qs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNl
SXNTdGFydCwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVp
bnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIHNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0
YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lk
IHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNl
SXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVp
bnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCB1cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKTsKICAgICB2b2lkIGV4
dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0
V29yZEJhY2t3YXJkKCk7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBv
ZmZzZXQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2
b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAg
ICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
LSAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgc3RkOjpmdW5jdGlv
bjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIHJlcXVl
c3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24s
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBj
b25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwot
ICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZz
ZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdURjo6RnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2VsZWN0UG9z
aXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGly
ZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b24sIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5j
dGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0
cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1aW50NjRf
dCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9u
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmlu
ZyYgY29udGV4dEJlZm9yZSwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4
dCwgU3RyaW5nJiBjb250ZXh0QWZ0ZXIsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxl
bmd0aCk7Ci0gICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQo
Y29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQg
cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYg
bmV3VGV4dCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsK
ICAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
aW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSk7CiAgICAgdm9pZCBkaWRVcGRhdGVCbG9j
a1NlbGVjdGlvbldpdGhUb3VjaCh1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgZmxhZ3MsIGZsb2F0
IGdyb3dUaHJlc2hvbGQsIGZsb2F0IHNocmlua1RocmVzaG9sZCk7Ci0gICAgdm9pZCBmb2N1c05l
eHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlz
Rm9yd2FyZCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNl
dEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91YmxlKTsKICAgICB2b2lkIHNldEFzc2lzdGVk
Tm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVj
dGlvbiA9IGZhbHNlKTsKQEAgLTU0NiwxMiArNTQ2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENvbXBsZXRlU3ludGhldGljQ2xpY2soKTsKICAgICB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0
dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdm9pZCBj
b250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRl
Z29yeSk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4pOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdm9pZCBzZXRG
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sKTsKICAgICB2b2lkIHNldElzU2Nyb2xsaW5nT3Ja
b29taW5nKGJvb2wpOwotICAgIHZvaWQgcmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2Vs
ZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIHJlcXVlc3RSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOworICAgIHZvaWQgcmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2Vs
ZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlY3RzQXRTZWxlY3Rp
b25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2b2lk
IGRpZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9uKGJvb2wgaGFuZGxl
ZCk7CiAgICAgdm9pZCBkaWRIYW5kbGVTdGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3QoYm9vbCBz
dGFydGVkKTsKQEAgLTU5MywxMCArNTkzLDEwIEBAIHB1YmxpYzoKICAgICBMYXllck9yVmlldyog
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBpbnNl
cnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxh
Y2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgPSBmYWxzZSwgRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QsIGJv
b2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBnZXRNYXJrZWRS
YW5nZUFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4pOwotICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgY2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwgc3RkOjpm
dW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lk
IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1Jh
bmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5
bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQg
KEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgY2hhcmFj
dGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV1RGOjpGdW5j
dGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFu
Z2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbkFz
eW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9u
VW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBzZWxlY3Rpb25SYW5n
ZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKTsKICAgICB2b2lkIGNvbmZp
cm1Db21wb3NpdGlvbkFzeW5jKCk7CiAKQEAgLTYwNyw5ICs2MDcsOSBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7Ci0gICAgdm9pZCBhdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2Um
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJpbmcmIGZvbnRG
YW1pbHksIGRvdWJsZSBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cyk7Ci0gICAgdm9pZCBm
b250QXRTZWxlY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUs
IGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb24o
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CiAgICAgTlNX
aW5kb3cgKnBsYXRmb3JtV2luZG93KCk7CkBAIC02NjgsNyArNjY4LDcgQEAgcHVibGljOgogCiAg
ICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKLSAgICBTZXNzaW9uU3RhdGUg
c2Vzc2lvblN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYpPiYgPSBudWxscHRyKSBjb25zdDsKKyAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRl
KFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmID0gbnVsbHB0
cikgY29uc3Q7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVzdG9yZUZyb21TZXNzaW9u
U3RhdGUoU2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNU
ZXh0Wm9vbSgpIGNvbnN0OwpAQCAtNzc4LDIyICs3NzgsMjIgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEZpbmRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4+JiBtYXRjaFJlY3RzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbik7CiAK
LSAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9m
aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+KTsKLSAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgaXNX
ZWJQcm9jZXNzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZSk+KTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShXVEY6OkZ1bmN0aW9uPHZv
aWQgKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYpOwogCiAjaWYgRU5BQkxFKE1IVE1M
KQogICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAjZW5kaWYKICAgICB2b2lkIGdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUoV2ViRnJhbWVQcm94eSosIEFQSTo6VVJMKiwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0Fz
U3RyaW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKKyAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OworICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQg
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJG
cmFtZVByb3h5Kiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSos
IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJh
Y2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFp
bnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2Vi
RnJhbWVQcm94eSopOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW53
cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGJvb2wmIHN1Y2NlZWRlZCwgVmVj
dG9yPHVpbnQ4X3Q+Jik7CiAjZW5kaWYKIAotICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6
OkludFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucywgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKIAogICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpOwogICAg
IHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJik7CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChS
ZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4p
OwogCi0gICAgdm9pZCBpbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVy
KHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyKSgpKTsKKyAgICB2b2lkIGluc3RhbGxBY3Rpdml0eVN0
YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAog
ICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVz
dWx0KTsKICAgICB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CkBAIC0xMTQ1LDcg
KzExNDUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGb3IgdGVzdGluZwogICAgIHZvaWQgY2xlYXJX
aGVlbEV2ZW50VGVzdFRyaWdnZXIoKTsKLSAgICB2b2lkIGNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAg
IHZvaWQgY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQg
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxl
c3RvbmUodWludDMyX3QgbGF5b3V0TWlsZXN0b25lcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNDAxOWYyNzMwODg4ZTIxZWZmYTgyZjdj
MmZjMGIwNzA1ODhiZDc3ZC4uYzMyY2I2MzM5ZmFjODhhMjZhYjQxYjI2NmMyMWI0NjVlODJlMzUx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTExNjUsNyArMTE2NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBpc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKT4gY2FsbGJhY2spCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNSZXNw
b25zaXZlKFdURjo6RnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPiYm
IGNhbGxiYWNrKQogewogICAgIGlmIChtX2lzUmVzcG9uc2l2ZSA9PSBOb09yTWF5YmU6Ok5vKSB7
CiAgICAgICAgIGlmIChjYWxsYmFjaykgewpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBpc1dlYlBy
b2Nlc3NSZXNwb25zaXYKICAgICB9CiAKICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgIG1faXNS
ZXNwb25zaXZlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7CisgICAgICAgIG1faXNSZXNwb25z
aXZlQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICByZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpNYWlu
VGhyZWFkUGluZygpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAppbmRleCBkMDBiNDc0OTQ5OTc0MzljMmU4ZGUzNDUxMzVjOTFhMjUzMWE5MjFlLi5iNWI0
OTkzYTJlYjIxMmZkZmMwMDY4MDA2YjdmY2NmMjJkODU2NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQ
cm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgaXNSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9p
ZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPik7CisgICAgdm9pZCBpc1Jlc3BvbnNpdmUo
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZU1haW5UaHJlYWRQaW5nKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzUGluZygpOwogCkBAIC0yODcsNyArMjg3LDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1fcGFnZVVSTFJldGFpbkNvdW50TWFw
OwogCiAgICAgZW51bSBjbGFzcyBOb09yTWF5YmUgeyBObywgTWF5YmUgfSBtX2lzUmVzcG9uc2l2
ZTsKLSAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZSk+PiBtX2lzUmVzcG9uc2l2ZUNhbGxiYWNrczsKKyAgICBWZWN0b3I8V1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk+PiBtX2lzUmVzcG9uc2l2ZUNhbGxi
YWNrczsKIAogICAgIFZpc2libGVXZWJQYWdlQ291bnRlciBtX3Zpc2libGVQYWdlQ291bnRlcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKaW5kZXggZjdiODY1ZmZlYWFjZjRhNWZmMzUwNjI1MGZhNzQ1MTM2NzUz
NTY0My4uODE4ZDAxZGNmZWE0MWFlMWE3ZWY4YTA2MTdhMTRmM2I2ZDM5NmMyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5kZXggZDI0YTAyMzhmNDYwMzhl
ZjUzMWJlNDBmMDI4M2RhOWY1YzcyNGU1Ny4uZDIzY2FlMWQzZjQ1MWMyOGRhZDdhZjgxZWIzZTJl
ZDM2NGVmOGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbm90aWZpZXI7CiAgICAgfQogCi0gICAgdm9pZCBhZGQoRGFt
YWdlIGRhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgbm90aWZ5RnVuY3Rpb24pCisgICAg
dm9pZCBhZGQoRGFtYWdlIGRhbWFnZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgbm90aWZ5RnVu
Y3Rpb24pCiAgICAgewogICAgICAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgZ2RrX3dpbmRvd19hZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOwpAQCAtMTAwLDcg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBI
YXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX25vdGlmeUZ1bmN0aW9uczsK
KyAgICBIYXNoTWFwPERhbWFnZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX25vdGlmeUZ1bmN0
aW9uczsKIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMT4g
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
aW5kZXggNmJiZWEyYTlhYTFjNTJhYzQ1NzUyMjIyNGVhY2Q4ZDMyZTRkNDRmYi4uMzhkZDEyZDFl
ZjA0NDUxNTlmMzMzYjQ0MzQ3N2Q1MjcwNjU5MjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjAyLDcgKzIwMiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VBdm9pZHNVbnNhZmVBcmVhKGJvb2wgYXZvaWRzVW5z
YWZlQXJlYSkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICB2b2lkIHJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIG92ZXJyaWRlOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGI1ZjY1YjZiMjY0OTM1Mzk0
NmY0OWVkOWQwZmE4NzhiN2UxZWE4MzguLmM3NDZiNjA5YTJjYTY1MjY1M2FmY2I0NGQ0N2E0NDU2
ZjM3Njg3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQpAQCAtODA3LDcgKzgwNyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6Omhh
bmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZlU2Vz
CiB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLXZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHN0ZDo6
ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHBhc3N3b3JkSGFuZGxlciA9IFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1N0cmluZyAqcGFzc3dv
cmQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFzc3dvcmQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0M2JiNGYwNmNj
ZDM1NzhiZDAyNDc5NGU0MWUwODVjNDkyNjg4NjAyLi40NDNhNDhiMjIwOGMxYzM5ZDA3MjcwZGMy
NmU4NTE2MzA4ZjZlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
YXllclRyZWVDb21taXRDb21wbGV0ZSgpCiAgICAgbV9wYWdlQ2xpZW50LmxheWVyVHJlZUNvbW1p
dENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQz
Ml90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50
MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJD
b3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
QEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleAogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50
MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCBD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNv
bnN0IFN0cmluZyYgbmV3VAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV9wYWdlSUQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcm
IHRleHRGb3JBdXRvY29ycmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJl
Y3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVj
dD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4oKSwgU3RyaW5nKCks
IDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDY2LDcgKzQ2Niw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmlu
ZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0
b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVGV4dCwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9j
b3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bFRleHQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29y
cmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgbwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3Jy
ZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC00OTUsNyAr
NDk1LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3Ry
aW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICByZXR1cm4gYXV0b2NvcnJlY3Rp
b25BcHBsaWVkOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFj
a0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbgogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0
VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pihn
cmFudWxhcml0eSksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBA
IC01MTcsNyArNTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19j
YXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxl
Y3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6ZnVu
Y3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQg
V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNTI4LDcgKzUy
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVj
dGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7CkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChw
b2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdl
YkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
dWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVu
a25vd24pOwpAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVj
dGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNlbGVjdGlvbkluRGlyZWN0
aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5j
dGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rp
b24pCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01
NjIsNyArNTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwKICAgICAKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RG
OjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01NzQsNyArNTc0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJv
dW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFAKICAgICAKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRl
eHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCks
IFN0cmluZygpLCBTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01
ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rp
b25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0
X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5n
KCksIFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJy
b3I6OlVua25vd24pOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRB
dXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBiZWZvcmVDb250ZXh0LCBTdHJpbmcmIG1hcmtl
CiAgICAgbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0b2NvcnJl
Y3Rpb25Db250ZXh0KCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRl
eHQ6OlJlcGx5KGJlZm9yZUNvbnRleHQsIG1hcmtlZFRleHQsIHNlbGVjdGVkVGV4dCwgYWZ0ZXJD
b250ZXh0LCBsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBp
ZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBTdHJp
bmcoKSwgU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNjE3LDcg
KzYxNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWluCiAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJ
RCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3Vj
aGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgMCwgMCwgMCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZWxlY3RXb3JkQmFja3dhcmQoKSwgbV9wYWdlSUQpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zm
c2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PigpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTcyOSw3ICs3MjksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0
aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZz
ZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFZlY3RvcjxX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0PigpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
QEAgLTc0MCw3ICs3NDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxl
Y3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgUwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhU
ZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQg
V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxi
YWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCiAgICAgbV9wYWdlQ2xpZW50LmRp
c2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1
c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBRdWlja0xvb2tE
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgbV9wYWdlQ2xp
ZW50LnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGZpbGVOYW1lLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKKyAg
ICBtX3BhZ2VDbGllbnQucmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoZmlsZU5h
bWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KHBhc3N3b3JkKSwg
cHJvdGVjdGVkVGhpcy0+bV9wYWdlSUQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaAppbmRleCAxZWIwY2JmYzViNWNjYmUxOWI5MzZjYzZhZGE0NWM0OTEwNjc3OTQ0Li5m
ZWQyMzJkMTdmYmU5ZDk3MjM5NGJkZTE1OWU2Y2JiOWNkNWVlM2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIEZv
ciBub3csIGFsbCBjYWxsYmFja3MgYXJlIGNhbGxlZCBiZWZvcmUgY29tbWl0dGluZyBjaGFuZ2Vz
LCBiZWNhdXNlIHRoYXQncyB3aGF0IHRoZSBvbmx5IGNsaWVudCByZXF1aXJlcy4KICAgICAvLyBP
bmNlIHdlIGhhdmUgb3RoZXIgY2FsbGJhY2tzLCBpdCBtYXkgbWFrZSBzZW5zZSB0byBoYXZlIGEg
YmVmb3JlLWNvbW1pdC9hZnRlci1jb21taXQgb3B0aW9uLgotICAgIHZvaWQgZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpIG92ZXJyaWRlOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0KaW5kZXggYTFiMjI5OTk0N2ZiMTI1N2M4ZWUzY2MyNWI3MzU5YjUzZjFmZTY3NS4uZmNjNDM1
ZWE4NGYzOGQ2YWYzMTY3MGRjNzlmMDdjMDFlNzRlMDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogICAgIG1fd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXll
clRyZWU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91
dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2
ZXMpOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNo
QWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFtX3dl
YlBhZ2VQcm94eS5pc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFj
a0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgKaW5kZXggZjE4MjUzZjc3MzA0YmU2YjBhOTdhOWZhNTk0NTlhMjc3MjE3YzUz
Ny4uZGEwYzNlMGY4NTQ3ZmM4YzgyM2VmMWEyM2I5NWNiNjI2ZGFhMWY5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxTZW5kVXBkYXRl
R2VvbWV0cnkoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1t
CmluZGV4IDcxNzMzMjQwMzYzNjc1MDQ2NDZhODBlYWJiZDdjN2ZjOGM2MjExN2YuLmJlODllNTNm
MDAwMDMxMTc2NGYzNjQ3MzZlYmE0ZTI1ZDcxNmM2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSVBDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMTEsMTIgKzIxMiwxMiBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmNvbW1pdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdAogICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29tbWl0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3Jp
Z2luKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpm
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2spCit2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdp
bmcoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykK
IHsKICAgICAvLyBUaGlzIGNhbGxiYWNrIGlzIHByaW1hcmlseSB1c2VkIGZvciB0ZXN0aW5nIGlu
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLiBXZSBjb3VsZCBpbiB0aGVvcnkgd2FpdCBmb3Ig
YSBDQSBjb21taXQgaGVyZS4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IEJsb2NrUHRyPHZvaWQgKCk+Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIHsKICAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7Ci0g
ICAgfSk7CisgICAgfSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5k
ZXggYjU1NGQxN2JjZWI2YjljMThiMTJlYjdlYjYwYjRlYmYzMzY0M2U3Zi4uODVmNWRlMmZkMzAz
NzA2NDYxNzk1NmRiNjk2M2RkZDZkYzYyNTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTE0Miw4ICsxNDIsOCBAQCBA
ZW5kCiBAaW1wbGVtZW50YXRpb24gV0tUZXh0RmluZGVyQ2xpZW50IHsKICAgICBXZWJQYWdlUHJv
eHkgKl9wYWdlOwogICAgIE5TVmlldyAqX3ZpZXc7Ci0gICAgRGVxdWU8c3RkOjpmdW5jdGlvbjx2
b2lkKE5TQXJyYXkgKiwgYm9vbCBkaWRXcmFwKT4+IF9maW5kUmVwbHlDYWxsYmFja3M7Ci0gICAg
RGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKE5TSW1hZ2UgKik+PiBfaW1hZ2VSZXBseUNhbGxiYWNr
czsKKyAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoTlNBcnJheSAqLCBib29sIGRpZFdyYXAp
Pj4gX2ZpbmRSZXBseUNhbGxiYWNrczsKKyAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoTlNJ
bWFnZSAqKT4+IF9pbWFnZVJlcGx5Q2FsbGJhY2tzOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhQYWdlOihXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tCmluZGV4IDQwZmE0MWZjNmViZjdhN2E4NmU5NTNlNzJhMDYwN2NlNjkwNDZjNWEuLmRhM2My
YjhiOGMwY2UxYjRhZDVhN2M3M2ZkYzQ5Njc4NGU0NmNlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KQEAgLTc4
LDIwICs3OCwyMCBAQCAtIChBUEk6Ok9iamVjdCopdXNlckRhdGEKIEBlbmQKIAogQGludGVyZmFj
ZSBXS1NlbGVjdGlvbkhhbmRsZXJXcmFwcGVyIDogTlNPYmplY3QgewotICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gX3NlbGVjdGlvbkhhbmRsZXI7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiBfc2VsZWN0aW9uSGFuZGxlcjsKIH0KLS0gKGlkKWluaXRXaXRoU2VsZWN0aW9uSGFuZGxlcjoo
c3RkOjpmdW5jdGlvbjx2b2lkICgpPilzZWxlY3Rpb25IYW5kbGVyOworLSAoaWQpaW5pdFdpdGhT
ZWxlY3Rpb25IYW5kbGVyOihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpc2VsZWN0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpZXhlY3V0ZVNlbGVjdGlvbkhhbmRsZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXS1NlbGVjdGlvbkhhbmRsZXJXcmFwcGVyCi0tIChpZClpbml0V2l0aFNlbGVjdGlvbkhh
bmRsZXI6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pc2VsZWN0aW9uSGFuZGxlcgorLSAoaWQpaW5p
dFdpdGhTZWxlY3Rpb25IYW5kbGVyOihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpc2VsZWN0aW9u
SGFuZGxlcgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIF9zZWxlY3Rpb25IYW5kbGVyID0gc2VsZWN0aW9u
SGFuZGxlcjsKKyAgICBfc2VsZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VsZWN0aW9uSGFuZGxl
cik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMTdjY2JhNDhiZjllNzRkNmVmNTBkOTEzYzg0
YmM0YzcxOTVjNzZjMi4uMWE2NGU3OWI4Y2M4ZGEyYmMxZDg0YjFiMjdiZjNjODBmNDJkZTU5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogI2VuZGlmCiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQXR0cmlidXRlZFN0
cmluZygpLCBFZGl0aW5nUmFuZ2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBA
IC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JD
aGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHIKICAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHN0cmluZywgYWN0dWFsUmFuZ2UpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT5jYWxsYmFj
a0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCAwLCBmYWxzZSwgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6VW5rbm93bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggMmE2MmQwN2VlMTQ2M2Iw
NjM1ZDFjZDg5YzlkMzc1OTI5ZWYyZjc0Ny4uNjJmMDU0ZTQwZjU4ZmQxNGZmOTU0NDBmNDUzNGE2
MTExY2Q4ZmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtODAsNyArODAsNyBAQCBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZFJlcGx5
SUQoKQogICAgIHJldHVybiArK2Nhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHlJRDsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3Rp
dmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byByZXBseUlEID0gZ2VuZXJhdGVDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZFJl
cGx5SUQoKTsKIApAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVPcGVu
UGF5bWVudFNldHVwUmVwbHlJRCgpCiAgICAgcmV0dXJuICsrb3BlblBheW1lbnRTZXR1cFJlcGx5
SUQ7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKGNv
bnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlcGx5SUQgPSBnZW5l
cmF0ZU9wZW5QYXltZW50U2V0dXBSZXBseUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4
IDAzYjllNWIzMGVjZmIzMzQ2OGZmNzMxMDIxZWM0YWZiNDc5ZGFjMjMuLmUzNTNkNjY1ZWVlZTM2
ODVhODA0MmY1NDY1NDJhZWI0MTM2NjNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTUs
OCArNTUsOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNs
aWVudC4KICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKSBvdmVycmlk
ZTsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNo
YW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIG9wZW5Q
YXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVS
TCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVS
THMsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRT
ZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIG92ZXJy
aWRlOwpAQCAtODYsOCArODYsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdl
OwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4+IG1f
cGVuZGluZ0Nhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkQ2FsbGJhY2tzOwotICAgIEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX3BlbmRpbmdPcGVuUGF5
bWVudFNldHVwQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+PiBtX3BlbmRpbmdDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZENhbGxi
YWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPj4g
bV9wZW5kaW5nT3BlblBheW1lbnRTZXR1cENhbGxiYWNrczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyZDIzMmFj
ZDE3MGU1ZTAxYmYxYjYwYTczYzBhNmVhNjVmNGRiMGJhLi44ZmYwZTI4MjZmZjA4NmM5ZDM1Yjhh
MTgyMjUyYjIwODgwMWM2NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICB9
CiAKICAgICAvLyBOZXRzY2FwZVBsdWdpblN0cmVhbUxvYWRlckNsaWVudAotICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIFBsdWdpblZpZXcqIG1f
cGx1Z2luVmlldzsKICAgICB1aW50NjRfdCBtX3N0cmVhbUlEOwogICAgIFJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChSZXNvdXJjZVJlcXVlc3QpPiBt
X2xvYWRDYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVzdCk+
IG1fbG9hZENhbGxiYWNrOwogCiAgICAgLy8gVHJ1ZSBpZiB0aGUgc3RyZWFtIHdhcyBleHBsaWNp
dGx5IGNhbmNlbGxlZCBieSBjYWxsaW5nIGNhbmNlbCgpLgogICAgIC8vIChBcyBvcHBvc2VkIHRv
IGJlaW5nIGNhbmNlbGxlZCBieSB0aGUgdXNlciBoaXR0aW5nIHRoZSBzdG9wIGJ1dHRvbiBmb3Ig
ZXhhbXBsZS4KQEAgLTIyMSwxMiArMjIxLDEyIEBAIHN0YXRpYyB1aW50MzJfdCBsYXN0TW9kaWZp
ZWREYXRlTVMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgcmV0dXJuIHN0
ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGxhc3RN
b2RpZmllZC52YWx1ZSgpLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKIH0KIAotdm9pZCBQ
bHVnaW5WaWV3OjpTdHJlYW06OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGRlY2lzaW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjp3aWxsU2VuZFJl
cXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJiBkZWNpc2lvbkhhbmRsZXIpCiB7CiAgICAg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBjb25zdCBVUkwmIHJl
ZGlyZWN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCi0gICAgbV9sb2Fk
Q2FsbGJhY2sgPSBkZWNpc2lvbkhhbmRsZXI7CisgICAgbV9sb2FkQ2FsbGJhY2sgPSBXVEZNb3Zl
KGRlY2lzaW9uSGFuZGxlcik7CiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBtX3BsdWdp
blZpZXctPm1fcGx1Z2luLT5zdHJlYW1XaWxsU2VuZFJlcXVlc3QobV9zdHJlYW1JRCwgcmVxdWVz
dFVSTCwgcmVkaXJlY3RSZXNwb25zZVVSTCwgcmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuY3BwCmluZGV4IDVhZDViNGIyZjIxMGI5MTQ3NDc1ZTg2NzIxNWYyMDkwNDkxZGNiYWEu
LmE1YmU1MmM1YTZkMzlmOWQzMzNkMjE2Yzg0NDM5NDgyNTE0NjY0MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtODIsNyAr
ODIsNyBAQCBEcmF3aW5nQXJlYTo6fkRyYXdpbmdBcmVhKCkKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgRHJhd2lu
Z0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQordm9pZCBEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKIHsKICAgICAvLyBTY3JvbGwgcG9zaXRpb24gdXBkYXRlcyBhcmUgc3luY2hyb25v
dXMgYnkgZGVmYXVsdCBzbyB3ZSBjYW4ganVzdCBjYWxsIHRoZSBmdW5jdGlvbiByaWdodCBhd2F5
IGhlcmUuCiAgICAgZnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggMzRiZGJhN2NhMmY2MWJkZTdlM2RiNmI4NmZmYmY2
ZjU1OTJkNDU1My4uZDg0NjM5ZjVmMmQwODQxYTE2YTg4NjkxODhhMzUyOWJjMWE1ODgyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyRmx1c2hUaHJvdHRsZVN0YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVNjcmVlbi5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CkBAIC0xMTUsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKICNlbmRpZgogCi0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyZWI2NzVkYjFlOWM5
YTBmNTJkYTcwY2MyM2UyY2VmY2IyNGNmYTc1Li4zNmQwNDIwN2ZlNzQ2M2EwYjJhOWY4OTBiMWYz
ZjAyYzUxY2QwMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0yMjAyLDcgKzIyMDIsNyBAQCBib29sIFdlYlBhZ2U6Om1hcmtMYXllcnNW
b2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpCiAgICAgcmV0dXJuICFkcmF3aW5nQXJlYSgp
IHx8IGRyYXdpbmdBcmVhKCktPm1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJs
ZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZShzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjptYXJrTGF5ZXJzVm9s
YXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIC0gV2ViUGFnZTo6bWFya0xheWVyc1ZvbGF0aWxl
KCkiLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggYTVmZWNiYzc4NTE3MTllNTdhMjg5NjYyYzlmMWQxZWMyYTNhNzM3Yi4uODliMmUw
ZjQ1NzU4ZGQ5MTQ2ODlkYmM0NzA4ZGI1MTZhM2I0YzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MDMsNyArNjAzLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKTsKLSAgICB2b2lkIG1hcmtMYXllcnNWb2xh
dGlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyID0geyB9KTsKKyAg
ICB2b2lkIG1hcmtMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIgPSB7IH0pOwogICAgIHZvaWQgY2FuY2VsTWFya0xheWVyc1ZvbGF0aWxlKCk7
CiAKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9sYXllclZvbGF0aWxpdHlUaW1lcjsK
LSAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9tYXJrTGF5ZXJzQXNWb2xhdGls
ZUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkICgpPj4g
bV9tYXJrTGF5ZXJzQXNWb2xhdGlsZUNvbXBsZXRpb25IYW5kbGVyczsKICAgICBib29sIG1faXNT
dXNwZW5kZWRVbmRlckxvY2sgeyBmYWxzZSB9OwogCiAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA5NTgzMzhh
MDNlZTdjN2FkYTVmMWMzY2ViODliNzgxNWRjZmZkNDZkLi42YjI5MWQ0MDZmZjZjZTcxODc4NjUy
M2Q3YmNkMTY4MTlhMWJiZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRzQXN5
bmNTY3JvbGxpbmcoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3Jv
bGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVW
aWV3Kikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCmluZGV4IGZjYTIyMDM3ODU5ODIzYTMyYmVjZjg2ZGE1MmI4YjBhYjYyNTQxZjguLmRiMTQ5
ZTc5MDJkYmMyNzY0Nzg4YTgxMDkzYmFhOTJkOWZmMjUyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNjYWxlVmlld1RvRml0RG9jdW1lbnRJZk5lZWRlZCgp
CiAgICAgbV93ZWJQYWdlLnNjYWxlVmlldyh2aWV3U2NhbGUpOwogfQogCi12b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xs
UG9zaXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQ
b3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykKICAgICBpZiAoIW1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zY3JvbGxp
bmdDb29yZGluYXRvcigpKSB7CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0
aW9uKHMKICAgICAvLyAoVGhlIHdlYiBwYWdlIGlzIGFscmVhZHkga2VwdCBhbGl2ZSBieSBkaXNw
YXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24pLgogICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSAmbV93ZWJQYWdlOwogCi0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJp
ZXIoW3RoaXMsIHdlYlBhZ2UsIGZ1bmN0aW9uXSB7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaEJhcnJpZXIoW3RoaXMsIHdlYlBhZ2UsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbild
IHsKICAgICAgICAgRHJhd2luZ0FyZWEqIGRyYXdpbmdBcmVhID0gd2ViUGFnZS0+ZHJhd2luZ0Fy
ZWEoKTsKICAgICAgICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDZiOTJmOWM3ODIxY2Qw
ZDEzOTFhM2FhNzRmZmFhNjY2OTY4M2ZhY2YuLjAzNTlkMjNhM2UyNzBiMzg5YzM1OTY3ZjVmN2Mz
ZDYzMjZlZDU1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMTM5Niw3ICsxMzk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNw
ZW5kKCkKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCksIDApOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGls
ZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6bWFya0FsbExheWVy
c1ZvbGF0aWxlKCkiLCB0aGlzKTsKICAgICBtX3BhZ2VzTWFya2luZ0xheWVyc0FzVm9sYXRpbGUg
PSBtX3BhZ2VNYXAuc2l6ZSgpOwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25I
YW5kbGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoYXV0byYgcGFnZSA6IG1f
cGFnZU1hcC52YWx1ZXMoKSkgewotICAgICAgICBwYWdlLT5tYXJrTGF5ZXJzVm9sYXRpbGUoW3Ro
aXMsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHBhZ2UtPm1hcmtMYXllcnNWb2xhdGls
ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
ewogICAgICAgICAgICAgQVNTRVJUKG1fcGFnZXNNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZSk7CiAg
ICAgICAgICAgICBpZiAoIS0tbV9wYWdlc01hcmtpbmdMYXllcnNBc1ZvbGF0aWxlKQogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCmluZGV4IDc4MmQ1M2JkNDRhOTc5ZTBlZDgxNzU0YmIxZmEyYjJhODUyNDMxZDAu
LmFiZjA4MDQwMjQwN2Y2Njg3MDMwYWY4NjM4N2EyMzBmYjI4YzI3MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yNDAsNyArMjQwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZ2lzdGVyV2l0aFN0YXRlRHVtcGVyKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgbWFy
a0FsbExheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgdm9pZCBtYXJrQWxsTGF5ZXJzVm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgY2FuY2VsTWFya0FsbExheWVyc1ZvbGF0
aWxlKCk7CiAgICAgdm9pZCBzZXRBbGxMYXllclRyZWVTdGF0ZXNGcm96ZW4oYm9vbCk7CiAgICAg
dm9pZCBwcm9jZXNzU3VzcGVuc2lvbkNsZWFudXBUaW1lckZpcmVkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313179</attachid>
            <date>2017-06-16 21:02:16 -0700</date>
            <delta_ts>2017-06-16 21:17:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173504-20170616210215.patch</filename>
            <type>text/plain</type>
            <size>185880</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJlZjllZDhlNzZmNDFl
YzMwYWYxZWI4ZjAwNTljYWZkNDA2M2Y5NC4uZmM0ZTEyNzJhOTVkOGQ0YjVmMDc4NmNkNmMxZDlh
NjExNTRmM2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24g
aW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9m
IHN0ZDo6ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3Nhcnkg
Y29weWluZy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9y
OjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKwog
MjAxNy0wNi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2F0aGVyU3RhdHNGb3JMb2dnaW5nIGlz
IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMWUwMWNhMmQwNzgxYjkzYzA3ZGY2ZmZiMzFj
MmZiMDhhYTIzZTRjZS4uMTdmZTYxN2Q3MDBiNzJkZjBjMjQyNzFiMGRmNGY2MTM0NDNlOTcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVh
ZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6
ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWlu
Zy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoK
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAo
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6Om9wZW5QYXltZW50U2V0dXAp
OgorCiAyMDE3LTA2LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1MgRG5EXSBbV0sxXSBEcm9wcGluZyBsaW5rcyBvbnRvIFVJV2ViVmlld3Mg
c2hvdWxkIG5vdCB0cmlnZ2VyIG5hdmlnYXRpb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGNjZDdlOTRlOTAzMzhjMjJjYjI3ZDY0YTg1N2UwNjZhOTAwM2I0OGMuLmQyNjcxMTMyZTkz
ZWY3YTVmOWE3YTFmYTlhZjY2NGJkZGI3YmMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9uIGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBXZWJL
aXQyLworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcz
NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvIHRvIGF2
b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IGNvcHlpbmcuCisKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06OndpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKwogMjAxNy0wNi0x
NSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBb
V2luXSBXZWJLaXQgc2hvdWxkbid0IGluY2x1ZGUgdGhlIGZvcndhcmRpbmcgaGVhZGVyIG9mIFdl
YktpdCBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMDM1NDM1OThmOWFmOTU5NWU4NjVmOGM0MzQ1ZTI5
ZTVkNmRiZDI3Li4xMzJhMzRiNzExN2Q2ZTQxZTc0ODUzZTVmODkwMDljNjNmOTg1NmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTk3IEBACiAyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6
OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24g
aW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWluZy4KKworICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZVByb2Nlc3M6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKToK
KyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Omluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3Iu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXN5bmNSZXF1ZXN0OjpBc3luY1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpB
c3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcik6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVx
dWVzdC5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcCk6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3dubG9hZENs
aWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25M
b2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAodG9HZW5lcmljQ2FsbGJhY2tG
dW5jdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcg
bWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWREcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6dHJ5QXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2VD
b21tb24pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3
UGFnZUFzeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hv
dFJlbW92YWxUcmFja2VyOjpzdGFydCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxG
b2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FsbEFmdGVy
TmV4dFByZXNlbnRhdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0
UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb2N1c05leHRBc3Npc3RlZE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06
CisgICAgICAgICgtW1dLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIgaW5pdFdpdGhTZWxlY3Rpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250QXRT
ZWxlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bWFya0xheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z1VwZGF0ZWRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKworMjAxNy0wNi0xNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFtXSzJdIEFkZCBXS1Byb2Nl
c3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQgY2xpZW50IHBv
bGljaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM0NzIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODU4ODE3PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IDZlZDBkZDM4NjAyZDVmZjUxMjM0NDc2NTY1ZjA3MzdhMjhmNTZhOTQuLjBlYTVlYzM3MTBmZDU3
NDk4YjBlNjc3ZTc0OWU1MmRlMjJmY2Q1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTU1LDEyICs1NSwx
MiBAQCBib29sIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1
cm4gbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzKCk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2xpZW50LmNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jbGllbnQub3BlblBh
eW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDY3YmRkMzQwYzk0YzFlYTExZTMyZWUwNzU4
NGEwYTI2ZTRjYjhkNmIuLmIzYjRkOGY0NDg5NzIzZWRmZWQxZDY3NDZjYWQwYTZkNDIwNDhhNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNp
bmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsOCArNTIs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9u
KTsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBib29sIGhhc0FjdGl2ZVNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNlc3Npb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
aW5kZXggMTc4N2I1N2VkNGQ1MWIxZjMxZTBmNWM1NTNjZjIyMGI3YmQxMzZiYy4uODMzM2FkNjYw
MTJiNjk4Yzg1Y2EzYWI2YjAzN2I3ZmU4Y2VlN2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBA
IC00NCw4ICs0NCw4IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGNhbk1ha2VQYXltZW50cygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChi
b29sKT4gY29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlblBheW1l
bnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNob3dQYXlt
ZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJ
Y29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVlc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDcyOTQyNmNlYTJj
NGU2ZDNiMDdlNzc1Y2QxMmViNGQ0NGViYTUyYTIuLmU5MzVmZjJhOTY4ZjYxMDhlN2RiY2M1OGQw
N2RlNGY5ZjdkMTg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC00ODgsOCArNDg4LDggQEAgY2xhc3MgRW1wdHlJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yQ2xpZW50IHsKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAgICAgYm9vbCBzdXBw
b3J0c1ZlcnNpb24odW5zaWduZWQpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBj
YW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
IH0pOyB9Ci0gICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
IHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAg
ICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29u
c3QgUGF5bWVudFJlcXVlc3QmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDQ1
NjI0YzQ5ZWI0NjljMDhhNWMzZjI5OTQwMTRkOWQxOTE2NGQ1NWUuLmZmYWE3ZTVjZWUwOWE3MTM0
M2NmNzkyNjNhYWFlZGEyMmFkMjhkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtODgsMTEgKzg4LDExIEBAIGJv
b2wgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIG1fY2xpZW50LT53
aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrXShSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92
ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVz
cG9uc2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KSB7CiAgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oCmluZGV4IDI1N2M1MDEyYmU1MTEzMjg1ZWI2OWEzY2I2M2ExN2JmNjcxNjZiYmIu
LmM5ZGMxOWZmM2FiZDQ5MDg4ZDg4NjkxNDBhZTdkNzBiNGEyZDkwZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wg
aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiZDVkOGM2ZDhiZThkOWM0ZGYxYzRkZjI4NTM2
M2IxNmExNzg3OGIuLjc3NDQ2ZTFjZWU5MGUwMTA2ZjNmOTliNDQ2NjMxNjdiMjJmOGZiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAzLDcgKzQwMyw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0MzU4YjdhMTZlOTQxMGVkOWU4MTdj
OTBmNWY3ZjE3YzI1MWI3YWM5Li42ZGRhMzRhOTZhY2JlMDc2MWJhMDRlNmZkZGUzZjU0NzMxZDgx
MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtOTksNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBhNjE2MGYwZjYyNWU3NmJiYmQ4MGE4MzZmMjg5ZDQ3
MGM1YzhmMzU4Li4xNTY3ZGM4MjMyZDM3Nzk0ZTc1NjQxNzFlYzIwYjk5M2FhNjc1ZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBO
U0Vycm9yICpwbHVnaW5DYW5jZWxsZWRDb25uZWN0aW9uRXJyb3IoKSBjb25zdDsKIAogICAgIC8v
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IG1ldGhvZHMuCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVu
Y3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQppbmRleCBmMTdiNjJjZjVhMmNjZTZhNTEzMzNhYzkzYjkxZDdiYzM3M2Qw
NTliLi4wMzc1YWUwMzIwOGRhOWRkMjQwYTM5MjQ1MjU1NzQ1YTYwZTYyZjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1MCiAgICAgbV9pbnN0YW5jZS0+ZGlzY29ubmVjdFN0cmVhbSh0aGlzKTsKIH0KIAotdm9p
ZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQordm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNl
bmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhl
cmUuCiAgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYmY0MzQxNTI3
NWI0YTZmMjMzMWUxZDFkNWE3Y2VjZmJhMDhmMjQ0MC4uNzZlZTg1ZmU2N2ZlMjY4ZWVhMjE0NGMy
ODVhZDc3NGM4OTAzMTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAg
IE5TRXJyb3IgKnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNvbnN0OwogCiAgICAg
Ly8gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgbWV0aG9kcy4KLSAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICBib29sIHdhbnRzQWxsU3Ry
ZWFtcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNjY3M2E5NGRiMjQzN2YzNDEzYWNj
YzYwODBlODlhZGUzZTc1ZDlmMC4uZjZlMGFhNWVmZWExZDFlZjI4MzEzNzdkNGVmYzZmMjMwMGU5
NjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6c3RvcCgpCiAgICAgICAgIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVy
cm9yKG1fbG9hZGVyLT5jYW5jZWxsZWRFcnJvcigpKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBw
bHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IDlkMDVlZmJm
NTE4NzM2MzA0ZTVlYWVkMTE4NzY5ZTAyZWY0MGUzNWMuLmY1ZWFmZTM5NDQzYzJkNmRkYTEzZTlj
ZWVjMWViNGIxZDFlZmJhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOCw4
ICszOCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZTsKLSAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCA5MWM3NGNiYzE2NzVmN2E3ZTZkMjEzMjUwZWI0
OGQ2YmVmNzhkMDQ2Li4wOWIxYzQyZDdjZWU2OTc1ZDRmMDZkMDJkMjZmNTI0N2VlOGZkZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00OCwxNiArNDgsMTYgQEAgYm9vbCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNhbk1ha2VQYXltZW50cygpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAg
IH0pOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBkYTgzM2FhZjRmOGJhZTQ0YjQ4MDRiMzUyMWZj
ZDE3N2I4Y2FkZDRlLi4xMzg3ZmFiYjAxMGNkM2MzMGYyZTdjNjNmMTMzOTZlZTM3NTAyYzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgQ1N0cmluZyYgcmUKICAgICBkZXN0cm95U3RyZWFtKHJlc3Vs
dFN0cmluZy5pc051bGwoKSA/IE5QUkVTX05FVFdPUktfRVJSIDogTlBSRVNfRE9ORSk7CiB9CiAK
LXZvaWQgUGx1Z2luU3RyZWFtOjp3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2Fs
bGJhY2spCit2b2lkIFBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVn
LWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRl
eCA2MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFlYmQ3Li4zYjZjNzEwNWYxMDk0
YjBhMDNhMGZiM2E2MTBlNzYzOWM1OGVkMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGRlc3Ryb3lTdHJlYW0oKTsKIAogICAgICAgICAvLyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudAotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcAppbmRleCBiZmZjMzgyMTIwNzgyOTFhMjFhNjNmZGMxNTlmOTk2NGUwMDEwMTkyLi45ZGZk
NmJjMWJhOTM4NjQzNWEwM2Q2MTUyMzhjNTM4NWNmMGVmNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMjkzLDEyICsy
OTMsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VQcm9j
ZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJs
b2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gKytsYXN0UmVxdWVzdElEOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SUQsIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVycy5zZXQocmVx
dWVzdElELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkdldFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHJlcXVlc3RJRCwgZmlsZW5hbWVzKSwgMCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApp
bmRleCA5Yzk0OTE5Y2NlNDg5MTNkNjE4ODU5MGQwMTVjMzQwYTdjNWUyZDVhLi4wZDI4NjU0MTlj
Yjg0YzJmNjQ5MDVlMDZmYjNlMWIzMmRjNjg2Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+IGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCiAKIHByaXZh
dGU6CkBAIC0xMTksNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgUmVmUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPj4gbV9pZGJTZXJ2
ZXJzOwogI2VuZGlmCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
Jik+PiBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVyczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiYpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxl
cnM7CiAKICAgICBEZXF1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VUYXNrczsKICAgICBM
b2NrIG1fZGF0YWJhc2VUYXNrTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXggMjljMjY0YjRiNjRhYTM1
NDFkOTY3ZDk0ODBiMmYzODBjMDdiM2UzZS4uMTUxMjhkY2QyNzIxMzlmMGFmOTE0MDMwOGY0YjE5
NzY5MzM0YWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEUpCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IGY3
YmJlNWJhYzY4OWRjYzJhMmMyYjliMTBmNmE2NWQwOWY3ZWRlODMuLjQ1MDNmZWZmYjlmNDNlMDA1
ZjY2MmE4MDA5MWVhNTlmN2RmNjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PGNocm9ubz4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDE1ODA3OWU1NWE2MmY1ZWRkYmEwZjE0MGZiN2Y5ZTAzZDUwNTE2OTUu
Ljg1ZjI2YTJjYjk1OWFkODExM2I4OWMxNWIyZWEyMWUyYzAyYmRmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IG1lc3NhZ2UpCiAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KIAotdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VD
YWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQordWludDY0X3QgQ29ubmVj
dGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9p
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB1
aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gYwogICAgIGlmICghbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2tRdWV1ZSkKICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LklQQy5JbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tRdWV1ZSIpOwogCi0gICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
LmFkZChtX25leHRJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAg
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy5hZGQobV9uZXh0SW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJldHVybiBtX25leHRJ
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGZjZTFlNjNiYzI5ZmNiYjJlZTNiZTcyMDYxZjgzNmFiNzNm
Zjc4OWQuLjJlMGM1OTM2MTZlOWQyMDdhMjRjMDExMGY5OTQ2MmZlODI5NTlmY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEJvb3N0TWFpblRocmVhZE9uU3luY01lc3NhZ2UoYm9v
bCBiKSB7IG1fc2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2FnZSA9IGI7IH0KICNlbmRp
ZgogCi0gICAgdWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB1aW50NjRfdCBpbnN0YWxsSW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCB1bmluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2sodWludDY0X3QpOwogICAgIGJvb2wgaGFzSW5j
b21pbmdTeW5jTWVzc2FnZSgpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGVuZGluZ1N5bmNSZXBseT4gbV9wZW5kaW5nU3luY1JlcGxpZXM7CiAKICAgICBMb2Nr
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1faW5jb21p
bmdTeW5jTWVzc2FnZUNhbGxiYWNrczsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2luY29taW5n
U3luY01lc3NhZ2VDYWxsYmFja1F1ZXVlOwogICAgIHVpbnQ2NF90IG1fbmV4dEluY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja0lEIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuaAppbmRleCBmZjM3YmY5ZTU0NGU0Yjk5ZmIwMmI1
OWJhN2VlZGE5YzM5YWRjZDlmLi44YWM1ZjFjNzA2Y2JhYzQ0YTEzNzY3OTNjMjM5Mjc5YjMxZTBj
YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRN
b25pdG9yLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgR1NvY2tldE1vbml0b3JfaAogI2Rl
ZmluZSBHU29ja2V0TW9uaXRvcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGUxODU5NWQ0MzFiNTNjMWYw
YjBmNjRlMzI2MWFlOTk0ZWM4M2E4M2QuLmI0Nzc1NmNiYzE4ZDRmZWU0ZjhlZWUzN2MxOGRiODVi
ZjlhODM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAK
ICNkZWZpbmUgV2ViS2l0TG9nZ2luZ19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ01hY3Jvcy5o
PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggMjI2MTg2MTBiMGYzZjM0Y2M3MDE0YmU1NjI5ZTg2YmY4NzY5NzRkZi4u
OTYyODY0ZjcyNzkzOWEzMTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIEFQSU9iamVj
dF9oCiAjZGVmaW5lIEFQSU9iamVjdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmNwcAppbmRleCBhNGY4YjAyNWZjMWM0MjJlNWM2NmNkOGU4MTQzZmQzODk3OGJkMTFmLi5k
ZmExYTM5NzA3OWQwNWI0MTRjNTQ1ODVmYmRhM2NkN2M1ZjhlZDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXN5bmNSZXF1ZXN0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVSZXF1ZXN0SUQoKQogICAgIHJldHVybiArK3JlcXVlc3RJRDsKIH0KIAotQXN5bmNS
ZXF1ZXN0OjpBc3luY1JlcXVlc3Qoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBhYm9ydEhhbmRsZXIp
CitBc3luY1JlcXVlc3Q6OkFzeW5jUmVxdWVzdChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJv
cnRIYW5kbGVyKQogICAgIDogbV9hYm9ydEhhbmRsZXIoV1RGTW92ZShhYm9ydEhhbmRsZXIpKQog
ICAgICwgbV9yZXF1ZXN0SUQoZ2VuZXJhdGVSZXF1ZXN0SUQoKSkKIHsKQEAgLTQ5LDcgKzQ5LDcg
QEAgQXN5bmNSZXF1ZXN0Ojp+QXN5bmNSZXF1ZXN0KCkKICAgICBBU1NFUlQoIW1fYWJvcnRIYW5k
bGVyKTsKIH0KIAotdm9pZCBBc3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGhhbmRsZXIpCit2b2lkIEFzeW5jUmVxdWVzdDo6c2V0QWJvcnRIYW5kbGVy
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBoYW5kbGVyKQogewogICAgIG1fYWJvcnRIYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Bc3luY1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaApp
bmRleCAwYzRhMGEwYzQxM2IwYTFjM2JlOWVlZjVjNzc1YmNmMTIzNTViOTU1Li40Mjc3NjE2OTEz
OWM4OTdiNmMxY2EwMjYyNWU3ODc2MDNmZDU0YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5j
UmVxdWVzdC5oCkBAIC0yNyw3ICsyNyw2IEBACiAjaWZuZGVmIEFzeW5jUmVxdWVzdF9oCiAjZGVm
aW5lIEFzeW5jUmVxdWVzdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MCwxNiArMzksMTYgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcmVx
dWVzdElEKCkgeyByZXR1cm4gbV9yZXF1ZXN0SUQ7IH0KIAotICAgIHZvaWQgc2V0QWJvcnRIYW5k
bGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZvaWQgc2V0QWJvcnRIYW5kbGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QWJvcnRlZCgpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4gdm9pZCBjb21wbGV0ZVJlcXVlc3QoQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEFzeW5j
UmVxdWVzdChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcik7CisgICAgZXhwbGlj
aXQgQXN5bmNSZXF1ZXN0KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBhYm9ydEhhbmRsZXIpOwog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29tcGxldGlvbkhhbmRsZXIoKSA9IDA7CiAKLSAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fYWJvcnRIYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4gbV9hYm9ydEhhbmRsZXI7CiAKIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZXF1
ZXN0SUQ7CkBAIC02MCwxMiArNTksMTIgQEAgY2xhc3MgQXN5bmNSZXF1ZXN0SW1wbCBmaW5hbCA6
IHB1YmxpYyBBc3luY1JlcXVlc3QgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHVzaW5nIEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUsIFQsIGNvbnN0IFQmPjo6dHlwZTsKIAotICAgIHN0YXRpYyBSZWY8
QXN5bmNSZXF1ZXN0PiBjcmVhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKEFyZ3VtZW50VHlwZTxBcmd1
bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgc3RhdGljIFJlZjxBc3luY1JlcXVl
c3Q+IGNyZWF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXN5bmNSZXF1ZXN0SW1wbDxBcmd1bWVudHMuLi4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBudWxscHRyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxBc3luY1JlcXVlc3Q+IGNy
ZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21w
bGV0aW9uSGFuZGxlciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGFib3J0SGFuZGxlcikKKyAgICBz
dGF0aWMgUmVmPEFzeW5jUmVxdWVzdD4gY3JlYXRlKFdURjo6RnVuY3Rpb248dm9pZChBcmd1bWVu
dFR5cGU8QXJndW1lbnRzPi4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGFib3J0SGFuZGxlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1lbnRzLi4uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgV1RGTW92ZShhYm9ydEhhbmRsZXIpKSk7CiAgICAgfQpAQCAtODMsNyArODIsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFzeW5jUmVxdWVzdEltcGwoc3RkOjpmdW5j
dGlvbjx2b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVy
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcikKKyAgICBBc3luY1JlcXVlc3RJ
bXBsKFdURjo6RnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJvcnRIYW5kbGVyKQog
ICAgICAgICA6IEFzeW5jUmVxdWVzdChXVEZNb3ZlKGFib3J0SGFuZGxlcikpCiAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CkBA
IC05NSw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBu
dWxscHRyOwogICAgIH0KIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFy
Z3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248dm9p
ZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPiB2b2lkIEFzeW5jUmVxdWVzdDo6Y29t
cGxldGVSZXF1ZXN0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXgg
ZWQ1MmY0M2MwOGNhZDJkNzNmMzQ3OGM3NGQ4OGViMzkxZDk5MTU1MS4uZWIyYmYzYTNjYjhjNjJl
NjhmNDM2ZjcyZGNlOWEzNWJmOGYyZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGhyZWFkQ291bnRMaW1pdDsKIH07CiAKLUNv
bXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiB1cGRhdGVGdW5jdGlvbikKK0NvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5M
b29wKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCiAgICAgOiBtX3VwZGF0ZVRp
bWVyKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLnJ1bkxvb3AodGhpcyksIHRoaXMsICZDb21w
b3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3VwZGF0ZUZ1bmN0aW9u
KFdURk1vdmUodXBkYXRlRnVuY3Rpb24pKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5n
UnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IGZiODE1MTg0NDg1NWRj
MDIxNDc0YjM5OWMxMzZiOTdmOTlhZTYwZGUuLjFmODZiZmY1OTc0NTczODJjYWQyYWU0MDZjNzEy
ZjcwNzQ2MjUyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTQzLDcgKzQyLDcgQEAgY2xhc3MgQ29tcG9zaXRpbmdS
dW5Mb29wIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbXBvc2l0aW5nUnVu
TG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIENvbXBvc2l0aW5nUnVuTG9vcChG
dW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB+Q29tcG9zaXRpbmdSdW5Mb29wKCk7CiAKICAgICB2
b2lkIHBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwpAQCAtNjUsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCiAgICAgUnVuTG9vcDo6VGlt
ZXI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX3VwZGF0ZVRpbWVyOwotICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3VwZGF0
ZUZ1bmN0aW9uOwogICAgIEF0b21pYzxVcGRhdGVTdGF0ZT4gbV91cGRhdGVTdGF0ZTsKICAgICBM
b2NrIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0
Y2hTeW5jQ29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmgKaW5kZXggYTM2MTkwN2NiYjE4MzM4ODM5OGJiYmJjYTdjN2FmYjU1MDkzNDU4
Zi4uM2Y5NzlmYjg2NTNmNjE4ZDUwYWYzMWQ4YTYyOWM2YjU4MDlkYjgwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
eHRNZW51SXRlbS5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDJhN2UzYTZiYWMwODYwMjhjOGQ3
NGM3NzQ1MGFkZDZiMmEyODlhNTkuLmI1N2RkZTQwZjNhYzdkMTljMWI2MjljYmUxNzcwNGZjOTkz
NDM0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRfaAog
I2RlZmluZSBBUElEb3dubG9hZENsaWVudF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJLaXQ6OldlYlBy
b3RlY3Rpb25TcGFjZSopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gY2FsbGJhY2spIHsgY2FsbGJhY2socmVxdWVzdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFj
aykgeyBjYWxsYmFjayhyZXF1ZXN0KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
aW5kZXggNTMzMWNiYTFmODAzNGMzZDliYjhkYTRiOGU3MzA1MjJiOTNjMDVlMS4uYmQ2OTdlODI0
NDFlMmNiNTQ0ZjJlMWUxNmQzYTRiYzkwMGI2NmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxv
YWRpbmdDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4g
Y29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9y
SWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoV1RGOjpG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCmluZGV4IGE1NWNmNTlhZTQyN2NkYzIxNjEwNGFjZGFiMjE3NWEwN2M1OGUyNTYuLjEyNTM2
NDI0NzhiYjFjMTBjYWVhNmUzYTg5NDMxNDdhOGRkNmZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJX
ZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogI2lmIFBM
QVRGT1JNKElPUykKIE9CSkNfQ0xBU1MgTlNBcnJheTsKQEAgLTc0LDcgKzczLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4gY29t
cGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0
ZU5ld1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdl
YktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggMzMzMmYyMzczZjgwMTdkZTFkNTk5ODdmNmVmZjU1N2IyMWQ5OTE3OS4u
YjI4YzBlYTIwNGY3ZWM5ODg3ODAxYzUzM2ZmMTVmM2ZlODBiYWUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHZvaWQg
V0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIHNjcmlwdFJlZiwKIH0KICNlbmRpZgogCi1zdGF0aWMgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoV0tTdHJpbmdS
ZWYsIFdLRXJyb3JSZWYsIHZvaWQqKSkKK3N0YXRpYyBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+IHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShXS1N0cmluZ1JlZiwgV0tF
cnJvclJlZiwgdm9pZCopKQogewogICAgIHJldHVybiBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0
IFN0cmluZyYgcmV0dXJuVmFsdWUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVl
KS5wdHIoKSksIGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRv
QVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjMGRiNzMz
MmIyMTcwNTYxZDk0OWU4OGYwMGIzNjQyZTU5ZjQ2YzA0Li5hOGIwNWFlZWEyOWVjMWFmYjgxZGU0
MmJiM2UzYzYxZTE2ZDgxMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjk2LDcgKzI5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1dlYlZpZXcgewogICAgIAogICAgIGludCBfYWN0aXZlQW5pbWF0ZWRSZXNpemVDb3VudDsKIAot
ICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBfc25hcHNob3RzRGVmZXJyZWREdXJp
bmdSZXNpemU7CisgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IF9zbmFwc2hvdHNE
ZWZlcnJlZER1cmluZ1Jlc2l6ZTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9zdGFi
bGVTdGF0ZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrczsKIAogICAgIFJldGFpblB0cjxXS1Bh
c3N3b3JkVmlldz4gX3Bhc3N3b3JkVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCA1OTVmZTc4OWU3NjA1MTVlZjAyM2QyZTJiMzQwNGRkM2ZlMTQ4
MTJhLi5lMmZmMzQ4NzA4MmQyYTI5ZDdkNzllOGI5M2ZhNGFhMDEwNjFiZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04NzMsMTAgKzg3MywxMCBA
QCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlcikoTlNEYXRhKik7
CiAKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6Okxp
bmtJY29uJiBsaW5rSWNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4gY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlIHsKKyAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgV1RGOjpGdW5jdGlvbjx2b2lkIChXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZSB7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJ
Y29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKIAotICAg
ICAgICAgICAgW21fd2tWaWV3IHBlcmZvcm1TZWxlY3RvcjpkZWxlZ2F0ZVNlbGVjdG9yKCkgd2l0
aE9iamVjdDpwYXJhbWV0ZXJzLmdldCgpIHdpdGhPYmplY3Q6W2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9h
ZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBbbV93a1ZpZXcgcGVyZm9ybVNlbGVj
dG9yOmRlbGVnYXRlU2VsZWN0b3IoKSB3aXRoT2JqZWN0OnBhcmFtZXRlcnMuZ2V0KCkgd2l0aE9i
amVjdDpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKT46OmZyb21DYWxs
YWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSWNv
bkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
ICAgICAgICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
IChOU0RhdGEgKik+KGxvYWRDb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKQEAgLTg4
Niw3ICs4ODYsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKLSAgICAgICAgICAgIH1dOworICAg
ICAgICAgICAgfSkuZ2V0KCldOwogICAgICAgICB9CiAKICAgICAgICAgV0tWaWV3ICptX3drVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWFQcm94eS5jcHAKaW5kZXggMWE0ZmY5NzkxZTJkM2Y0MDg4OWMzMmU4M2VkODQ4MjMz
NjljNzY4Ni4uYmRhZDJkZDU1YjQwNzhlYzBjM2VjODg1ZGI0ZjYwOTg4N2Y5OWQ0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKQEAgLTYzLDE0ICs2MywxNCBAQCBib29sIEFjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eTo6YWx3YXlzVXNlQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBh
Z2VQcm94eS5wcmVmZXJlbmNlcygpLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgJiYg
bV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS5mb3JjZUNvbXBvc2l0aW5nTW9kZSgpOwogfQog
Ci12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVy
V2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uXSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0g
ewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGU3ODkwYzgwNzg1YmEyYzQ4MTNjNDQ3MDk2MWUw
ZmJkY2M4OTcwNjcuLjc2ODNjM2YyNGE2ZDc0Y2EzMmY2MmZmNmNmMWJlNjM0ODIwOTcxYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveU5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDQyY2NmMWNjZGQ3YTFhN2Q0YWM5YjQ4MmVkODQ3YzExMmI0MGM0Njgu
LjdlZTBmZjFmYjRlMDU1ZDVkOTIzNDViZTk1MWNlZGVkOWM2YmZjNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCkBAIC05NSw5ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKIAogICAgIGJvb2wgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKTsK
LSAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgcGxhdGZv
cm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBw
bGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3QmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQppbmRleCAwZGI1NDBiYzg0NTUwNzNkM2I0MmJhMGY0MDc1YjFkOTBmNWY3
Y2MzLi5jYTc4MWQ5Y2I4NWJkNDBmNzU3YjliMjJiZmI3YjI1ZmE4ZDVkMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzUsNiArMzUs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTMwMCw1MSArMzAxLDUxIEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxp
Y2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9t
YWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJh
dGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXJdKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgeworICAgIHNv
ZnRMaW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9t
YWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCksIEJsb2NrUHRyPHZvaWQgKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGJhY2soW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
ewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBh
eW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsK
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBj
YW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5NYWtlUGF5bWVu
dHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXltZW50cyk7CiAg
ICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbHNlCiAgICAgaWYgKCFjYW5M
b2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFtjb21wbGV0aW9u
SGFuZGxlcl0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkIChCT09M
LCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIs
IGVycm9yKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyLCBjYW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5N
YWtlUGF5bWVudHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXlt
ZW50cyk7CiAgICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbmRpZgogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBp
bml0XSk7Ci0gICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50
aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBsZXRpb246W2Nv
bXBsZXRpb25IYW5kbGVyXShCT09MIHJlc3VsdCkgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCByZXN1bHRdIHsKKyAgICBbcGFzc0xpYnJhcnkg
b3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIg
ZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgfSk7Ci0g
ICAgfV07CisgICAgfSkuZ2V0KCldOwogfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGI1OWJiYjA0NzY3OGMxMjNhNDIz
Yzg5YTBjZTA4ZWQ0M2U4NGFkNTIuLjBmMDU3MGYzNmFmYWJkYjA1ODZiNGY4ZDBkZjVhODA0MzBk
MzU5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3Mv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
NDEsNyArNDEsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29u
VVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3
Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlD
bGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggMWQzMjFhMjQ5Y2Y1MGM5MWRkODc4Nzg0NmQ4
MWQ2ZGI0M2Y2Njc3ZC4uYTIyMjMwMjViZmRkZGRmY2E1ZTdlZDAwMTAyMDI0Y2I4ODk5MGMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3NLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoUGFzc0tpdCkKIApAQCAtNDAsMTMgKzQxLDEzIEBAIFNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUs
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BL
UGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVS
TFN0cmluZ3MsIHJlcXVlc3QpOwogCiAgICAgYXV0byBzaG93UGF5bWVudFVJUmVxdWVzdFNlZWQg
PSBtX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKICAgICBhdXRvIHdlYWtUaGlzID0gbV93ZWFr
UHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckNsYXNzKCkgcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRS
ZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246W3BheW1lbnRSZXF1ZXN0LCBz
aG93UGF5bWVudFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
Q2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJl
cXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJl
cXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAg
aWYgKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgz
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKICAgICAgICAgW3BheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpIGJlZ2luU2hlZXQ6
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpoaWRlUGF5bWVudFVJKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmZmUwMGY1MjFl
YzlhMWQxNTdiMzNkYTdkYTM0ZmE3MWIwMGU3NjcwLi4wNmNhOGE0MjBkYTg2YWYzYzc5YjIzMjNi
OTE0MGI3YjdiNDAzMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC05MjksNyArOTI5
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rp
b25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2lu
dGVyYWN0aW9ucycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKIAogICAgIC8vIFZhbGlkYXRl
IGFsbCBvZiB0aGUgcGFyYW1ldGVycyBiZWZvcmUgcGVyZm9ybWluZyBhbnkgaW50ZXJhY3Rpb25z
IHdpdGggdGhlIGJyb3dzaW5nIGNvbnRleHQgdW5kZXIgdGVzdC4KLSAgICBWZWN0b3I8c3RkOjpm
dW5jdGlvbjx2b2lkKCk+PiBhY3Rpb25zVG9QZXJmb3JtOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4+IGFjdGlvbnNUb1BlcmZvcm07CiAgICAgYWN0aW9uc1RvUGVyZm9ybS5yZXNl
cnZlQ2FwYWNpdHkoaW50ZXJhY3Rpb25zLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byBpbnRl
cmFjdGlvbiA6IGludGVyYWN0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYWVkMWU5MTRkYWU0OTAwNGVi
NTc3MzYzYTkyZWNiNDEyMjg0Y2RmNi4uNWEwY2MxYTlkOTJlZGU2OWI1MDdkN2VjZWNiOTA1ZGMz
MjQ3YTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5J
Y29uTG9hZGluZ0NsaWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGdl
dExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQppbmRleCAxYjkwOTI5NDQ4OTBjYjNkNmE2MTI5ZmJlNWM3YWJjZWM0NTAwYjJjLi40
OGI4MTJkYzI2YTk0YTQ2YTEzNWY2OWRiZDg1NTU1YjEyYTYxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLTlNEYXRhLmgiCiAjaW5jbHVkZSAiX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIl9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFs
LmgiCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC03MSw3ICs3Miw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+
SWNvbkxvYWRpbmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyKShOU0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGlu
Z0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYg
bGlua0ljb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPik+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIFdURjo6RnVuY3Rp
b248dm9pZCAoV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwpAQCAtODYsNyArODcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6
Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgog
CiAgICAgUmV0YWluUHRyPF9XS0xpbmtJY29uUGFyYW1ldGVycz4gcGFyYW1ldGVycyA9IGFkb3B0
TlMoW1tfV0tMaW5rSWNvblBhcmFtZXRlcnMgYWxsb2NdIF9pbml0V2l0aExpbmtJY29uOmxpbmtJ
Y29uXSk7CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93
ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpedm9pZCAoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdh
dGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAobG9hZENvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9hZENvbXBsZXRpb25I
YW5kbGVyID0gQmxvY2tfY29weShsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICAgICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQpAQCAtOTYs
NyArOTcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDAy
N2RiNTBlZjRkOTg0NjAyM2FiYmY3NWExOTZiY2YxMzg4NDQ0Y2EuLjM0NDM1NjAzMzAzYjFhNjEw
NjYzMjY3ZTJjZWM2MWZmZDFhNTczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgSEFWRShB
UFBfTElOS1MpCkBAIC0yODIsNyArMjgzLDcgQEAgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50Ojp+TmF2aWdhdGlvbkNsaWVudCgpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeUFwcExp
bmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25z
dCBTdHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4g
Y29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgdm9pZCB0cnlBcHBMaW5rKFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaW5nJiBjdXJyZW50
TWFpbkZyYW1lVVJMLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5z
aG91bGRPcGVuQXBwTGlua3MoKSkgewpAQCAtMjkwLDEzICsyOTEsMTEgQEAgc3RhdGljIHZvaWQg
dHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rp
b24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGxvY2FsQ29t
cGxldGlvbkhhbmRsZXIgPSBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlv
bkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRp
b25IYW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwg
c3VjY2Vzc10gewotICAgICAgICAgICAgKCpsb2NhbENvbXBsZXRpb25IYW5kbGVyKShzdWNjZXNz
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENvbXBsZXRpb25IYW5kbGVyOwotICAgICAgICB9
KTsKLSAgICB9XTsKKyAgICBbTFNBcHBMaW5rIG9wZW5XaXRoVVJMOm5hdmlnYXRpb25BY3Rpb24t
PnJlcXVlc3QoKS51cmwoKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChCT09MIHN1
Y2Nlc3MsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSBtdXRhYmxl
IHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgQmxv
Y2tQdHI8dm9pZCAoKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc3VjY2Vzc10geworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3VjY2Vzcyk7CisgICAgICAgIH0pLmdldCgpKTsKKyAgICB9KS5nZXQoKV07CiAjZWxz
ZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzBmOTBmNTQ3NzhhMGZmN2NkMTYx
YWY2MWZjYWYwMTMyYzQxMzJhYS4uN2IwMmYzNGQ2NmZhMjZhYTlmZTk2ZTM5ZjUzZmRlMzcxZDlj
Y2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBA
IC03Niw4ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQVBJOjpV
SUNsaWVudAogICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1Bh
Z2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBjcmVhdGVOZXdQYWdlQXN5
bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4pPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+KiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgICAgIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4gY3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248
dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OwogCiAgICAgICAgIHZvaWQgY2xvc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KaW5kZXggN2M1ZjZmYTQwOGFjNTA3YzM5ZjA4N2IwZWIxNzZiYmMzZTM1ZTMyMy4u
MzAwM2VhM2ZjZTlmYjk0ZTlhNTg3YTc2N2JiYjE3ZGJlNDZmMjE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6flVJQ2xpZW50KCkKIHsKIH0KIAotUmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBpbml0aWF0
aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+KiBjb21wbGV0aW9uSGFuZGxlcikKK1Jl
ZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2VDb21tb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJlZlB0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1Bh
Z2VDb21tb24oV2ViS2l0OjpXCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dl
YlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246
d2luZG93RmVhdHVyZXM6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICAgICAgWyhpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JO
YXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVy
ZXM6d3JhcHBlcihhcGlXaW5kb3dGZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8
dm9pZCAoV0tXZWJWaWV3ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9ICpj
b21wbGV0aW9uSGFuZGxlciwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHJlbGF0ZWRXZWJW
aWV3ID0gUmV0YWluUHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldKFdLV2Vi
VmlldyAqd2ViVmlldykgeworICAgICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBl
cihhcGlOYXZpZ2F0aW9uQWN0aW9uKSB3aW5kb3dGZWF0dXJlczp3cmFwcGVyKGFwaVdpbmRvd0Zl
YXR1cmVzKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChXS1dlYlZpZXcgKik+Ojpm
cm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCByZWxhdGVkV2ViVmlldyA9IFJldGFpblB0
cjxXS1dlYlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXShXS1dlYlZpZXcgKndlYlZpZXcp
IHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYktp
dDo6V2ViUGFnZQogICAgIHJldHVybiBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIGluaXRpYXRp
bmdGcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG51bGxwdHIpOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVh
dHVyZXMsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4p
PiBjb21wbGV0aW9uSGFuZGxlcikKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiBpbml0aWF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdURjo6
RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5k
b3dGZWF0dXJlc0FzeW5jKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsNyArMjQzLDcg
QEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIGluaXRpYXRpbmdG
cmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsICZjb21wbGV0aW9uSGFuZGxlcik7CisgICAgY3JlYXRlTmV3UGFnZUNv
bW1vbihwYWdlLCBpbml0aWF0aW5nRnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwg
d2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggM2M1
M2FhYzVmMDY1NmEzNmZmMzA4ZGM3ZjI3MGM1Mjc0N2E4OTU4NS4uN2I1ZTMwMjUwYWRhNjdiOWYy
YmVhMGU0NGEyNjQwMzNkMWMzYzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTI0MSw3ICsyNDEs
NyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAogICAgIExPRyhWaWV3R2VzdHVyZXMsICJTd2lw
ZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIG1pbGxpc2Vjb25kc1NpbmNlU3Rh
cnQsIGxvZy51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gcmVtb3ZhbENhbGxiYWNrKQordm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRz
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiByZW1vdmFsQ2FsbGJhY2spCiB7CiAgICAgbV9vdXRz
dGFuZGluZ0V2ZW50cyA9IGRlc2lyZWRFdmVudHM7CiAgICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBX
VEZNb3ZlKHJlbW92YWxDYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggY2Q3MDg3ZWFiNTdhY2Y1
YmUwOGU4NmEyZjcxZWEwNWM4YzRkYWUzYS4uYWE2OTk4MmNhMjg0YWI0NWEzZTQ2NmM3YzAzODg2
ZDM3ZGFjYTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgU25hcHNob3RSZW1vdmFsVHJhY2tlcigpOwogCi0gICAgICAgIHZvaWQgc3RhcnQo
RXZlbnRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgICAgICB2b2lkIHN0YXJ0KEV2ZW50
cywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAg
ICAgICAgYm9vbCBldmVudE9jY3VycmVkKEV2ZW50cyk7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3Ry
aW5nJiBsb2dSZWFzb24pOwogCiAgICAgICAgIEV2ZW50cyBtX291dHN0YW5kaW5nRXZlbnRzIHsg
MCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9yZW1vdmFsQ2FsbGJhY2s7Cisg
ICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3JlbW92YWxDYWxsYmFjazsKICAgICAgICAg
c3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX3N0YXJ0VGltZTsKIAogICAg
ICAgICBSdW5Mb29wOjpUaW1lcjxTbmFwc2hvdFJlbW92YWxUcmFja2VyPiBtX3dhdGNoZG9nVGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4
IDYxYzczMzJkMWY3Y2Y0NDJhYjYxZGIzNWIxZWRiZGFkYjBlZWQ5NzAuLmFkNDY4YmIyYzMxNDAx
YzQzN2Y3OWQzZDgwOWJkMTc2YmJmMTlkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BVktpdFNQSS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgotI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0yNDcsNyArMjQ2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV93aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkID0gZW5hYmxl
ZDsgfQogICAgIGJvb2wgd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDsgfQogCi0gICAgdm9pZCBw
cmVwYXJlRm9yTW92ZVRvV2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwcmVwYXJlRm9yTW92ZVRv
V2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICBOU1dpbmRvdyAqdGFyZ2V0V2luZG93Rm9yTW92ZVByZXBh
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRXaW5kb3dGb3JNb3ZlUHJlcGFyYXRpb247
IH0KIAogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDAxNTY1ZTQ3YmJkYjU0ZjVm
NTBlYzAyODA2ODYyY2UwYzNmMmZiOTkuLjI5ODZlNTNhMzJiN2QxODYyNGEzYTAxMGQ1ZGI2NTRk
ODIwZDg3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KQEAgLTIyMTAsNyArMjIxMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmVuZERlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5jKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6
OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFy
ZUZvck1vdmVUb1dpbmRvdyhOU1dpbmRvdyAqdGFyZ2V0V2luZG93LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3Nob3VsZERlZmVyVmlld0luV2lu
ZG93Q2hhbmdlcyA9IHRydWU7CiAgICAgdmlld1dpbGxNb3ZlVG9XaW5kb3codGFyZ2V0V2luZG93
KTsKQEAgLTIyMjAsNyArMjIyMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3Zl
VG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2CiAgICAgbV9z
aG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMgPSBmYWxzZTsKIAogICAgIGF1dG8gd2Vha1Ro
aXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgbV9wYWdlLT5pbnN0YWxsQWN0aXZpdHlTdGF0ZUNo
YW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXJdKCkgewor
ICAgIG1fcGFnZS0+aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihb
d2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIGlmICghd2Vha1Ro
aXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY1NDZiNmI3MWE5YjVlZjcyM2VmMTFlZDNh
YjRhNTU5ZWI0NmFmMzMuLjk2N2MyNDkwNGM3OGYyOWRkNGUxY2E1MGJlZWIxYzBiZWRlZDZhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpECiAgICAgfQogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERh
dGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaQogICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzczo6RmV0
Y2hXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgY2FsbGJhY2tJRCksIDApOwogfQog
Ci12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRl
Q2FsbGJhY2tJRCgpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRh
KHNlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBjYWxsYmFja0lEKSwgMCk7CiB9
CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNl
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTgwZDY5MTgyM2FiN2E1ZTUxMTcyYTIzMzViMGExMTg3
YWE3ZGEyMy4uNTI5OTc2NTg2MDdhMzYxNzExZWY5MTMyN2VjNDcxZTI4M2JlZjc5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
YXRhYmFzZVByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAgICAgfkRhdGFi
YXNlUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3RkOjpmdW5jdGlvbjx2b2lk
KFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV1RG
OjpGdW5jdGlvbjx2b2lkKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
IAogICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiYmKTsKIApAQCAtODgsOSArODgsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKICAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAo
V2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGVlOTdmMGM4NWExODMxMDYzZjVmNTIyY2Q2MmNjMmZk
MDYwNzNkNTUuLjVhOGE5YjdlOWI2MjMxMjU3YmE1MWQ0ODAwYjZjYTUyZDM0NWNlMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtOTAsNyArOTAs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJp
bmdEcmF3aW5nKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIEhpZGUgdGhlIGNvbnRlbnQgdW50aWwg
dGhlIGN1cnJlbnRseSBwZW5kaW5nIHVwZGF0ZSBhcnJpdmVzLgogICAgIHZpcnR1YWwgdm9pZCBo
aWRlQ29udGVudFVudGlsUGVuZGluZ1VwZGF0ZSgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
CmluZGV4IDA5YmEzMGI0ODNkMGZjODZmMTgwMTQ3OTBiNjYzYWMzZGJmMmVjNjQuLmZhMGE0ZGQz
ZjgzODgyNzUyZmJiNzVjYzk1ZDE5ZTI1ZTUyMzQ4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcApAQCAtMjIyLDEwICsyMjIsMTAg
QEAgaW50IERyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6d2ViVmlld0RyYXdD
YWxsYmFjayhEcmF3aW5nQXJlYVByb3h5SW0KICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXZvaWQg
RHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdGFydChzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFjaykKK3ZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdGFydChXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQogewogICAgIG1fc3RhcnRUaW1lID0gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKLSAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSwgImRyYXci
LCByZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2ViVmlld0RyYXdDYWxsYmFjayksIHRoaXMp
OwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDFfcyk7CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9p
ZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OmRpZERyYXcoKQogICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxMDBfbXMpOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJv
eHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZChD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2VQcm94eS5pc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKQEAgLTI2Nyw3ICsyNjcsNyBA
QCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYgogCiAgICAgaWYgKCFtX2RyYXdpbmdNb25pdG9yKQog
ICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVBy
b3h5SW1wbDo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKLSAgICBtX2RyYXdpbmdN
b25pdG9yLT5zdGFydChjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX2RyYXdpbmdNb25pdG9yLT5z
dGFydChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5o
CmluZGV4IDg5YzcxM2ZjODdhNzM1NDkzMDM4YWQxMGQ5MGRjMWNmNjA2MWQ0NTcuLjczNTMzZjQ3
MjRlNGY2NDViY2MzMzczYWE0MTA2NDllZWViMjM5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlU29vbigpOwogICAgIHZvaWQgZGlzY2Fy
ZEJhY2tpbmdTdG9yZSgpOwogCi0gICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpIG92ZXJyaWRlOwogCiAgICAgY2xhc3MgRHJhd2luZ01vbml0
b3IgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nTW9uaXRvcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBE
cmF3aW5nTW9uaXRvcihXZWJQYWdlUHJveHkmKTsKICAgICAgICAgfkRyYXdpbmdNb25pdG9yKCk7
CiAKLSAgICAgICAgdm9pZCBzdGFydChzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgICAgIHZvaWQgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgaW50IHdl
YlZpZXdEcmF3Q2FsbGJhY2soRHJhd2luZ01vbml0b3IqKTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZTsKICAgICAgICAgZG91Ymxl
IG1fc3RhcnRUaW1lIHsgMCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBtX2NhbGxiYWNrOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBtX2NhbGxiYWNrOwogICAgICAgICBSdW5Mb29wOjpUaW1lcjxE
cmF3aW5nTW9uaXRvcj4gbV90aW1lcjsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMTBmMzQyNzc2MjQxZTQ0NjRhMjIwN2MzODQwNjk5
ODBkZjJlM2VkYi4uYzQzMTExOTE3NTE3ZWFkMjQ4Mjc2OTZmMWE2MWE0OWQ4ODVjY2U3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMzAsNyArMzAs
NiBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTE5MCwxMyArMTg5LDYgQEAgcHVibGljOgogICAg
IH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90IHB1dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgIHsKLSAgICAgICAg
YXV0byBjYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6
dHlwZTo6Y3JlYXRlKFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKLSAgICAgICAg
cmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVD4KICAgICB1aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5j
dGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFj
dGl2aXR5VG9rZW4pCiAgICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxi
YWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlv
biksIGFjdGl2aXR5VG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNjc5ODFmMDg3ZWFkZDQz
ODYwZmE4ZjhkY2U3Zjc2YWI3ODI3Yzc4Li5iNTg4N2JlODcwMDczYmFlNWJjMTY0MzU4ZDk3MDVi
YjVmMDA2ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIyLDE1ICsxMjIsMTQgQEAgRG93bmxv
YWRQcm94eSogTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHIKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVE
b3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0
ZURhdGEpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0
Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9w
dGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIsIHNlc3Npb25JRF0oV2Vic2l0ZURh
dGEgd2Vic2l0ZURhdGEpIHsKKyAgICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBzZXNzaW9uSURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgUkVMRUFTRV9MT0df
SUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZG9uZSBmZXRjaGluZyBXZWJz
aXRlIGRhdGEiLCB0aGlzKTsKICAgICB9KTsKQEAgLTEzOCwyOCArMTM3LDI2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkZldGNo
V2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgY2FsbGJhY2tJ
RCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRh
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlLCAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhl
IE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEiLCB0aGlzKTsKIAotICAg
IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9uSURdIHsKKyAgICBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2Vzc2lvbklEXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9j
ZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
TmV0d29yayBwcm9jZXNzIGlzIGRvbmUgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAg
ICAgfSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdlYnNpdGVE
YXRhKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBjYWxsYmFja0lEKSwgMCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0
ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1By
b3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsg
cHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRo
aXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9u
SURdIHsKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3Mu
YWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHNlc3Npb25JRF0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHJlbGVhc2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkb25lIGRl
bGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggYzVlYjFjNmU4ODk2MzA3N2RmOGU1Zjk1NjgyYTNjNDk0ZDcxMTk1
NC4uOTljYWI1M2VkYmI5NzNkNGE2ZjYyMGY5MjE5MDU4Y2U2MzFhZDljMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAKICAgICBEb3dubG9hZFByb3h5KiBjcmVhdGVE
b3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgdm9p
ZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgc3RkOjpmdW5jdGlv
bjx2b2lkKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
Piwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmZXRjaFdl
YnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdl
YnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CkBAIC0xMjcs
OSArMTI3LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9u
UmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdl
YnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4g
bV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxi
YWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bl
bmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFwOwogICAgIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4MGMzMThjNzMxMzdhZDEw
NDI5MTI5OTA1OWI3NDBkMjQ4ZDIyMjkyLi5lZGRiYjE2NGU5ZDRjZGIxNzI3NmUyNDdhMTZkY2Jl
Y2Y5YjJhNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM2Nyw3
ICszNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9IDA7CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAppbmRleCAyNTA3NTkyNGViNWI2MzA4
ODk4NmMyYjY4ZmFkMTdkZjA2ZDliNzBkLi5lNzMyN2QwNDlkOTA1MWQyZjRiNGYwMjJmZDQyODY0
Y2NjYzRjMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmlu
Z091dEVudHJpZXNBZGRlZEFmdGVyVGkKICAgICB9KTsKIH0KIAotdm9pZCBQbHVnSW5BdXRvU3Rh
cnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3Qo
QVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0
aW9uVGltZXN0YW1wKT4gaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUpCit2b2lkIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5n
VGVzdChBUEk6OkRpY3Rpb25hcnkmIHRhYmxlLCBXVEY6OkZ1bmN0aW9uPGJvb2woZG91YmxlIGV4
cGlyYXRpb25UaW1lc3RhbXApPiYmIGlzRXhwaXJhdGlvblRpbWVBY2NlcHRhYmxlKQogewogICAg
IEFTU0VSVChpc0V4cGlyYXRpb25UaW1lQWNjZXB0YWJsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
CmluZGV4IGZlNmJjNmY1Njc5OTBmY2I1NDFlMWEyZDJiOWU5ZGY0NjU5MjdlY2IuLmNhMWIwMDQw
OTI3MDAwODkwM2QwMWNiYjc3NjAzYTVkN2RhMmIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaApA
QCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcl9oCiAKICNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjcsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sOwogCi0gICAgdm9pZCBzZXRBdXRvU3Rh
cnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChBUEk6OkRpY3Rpb25hcnkmLCBzdGQ6
OmZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPik7CisgICAgdm9pZCBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChBUEk6OkRpY3Rpb25h
cnkmLCBXVEY6OkZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPiYmKTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBdXRvU3RhcnRUYWJsZTsKICAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBBdXRvU3RhcnRUYWJsZT4gU2Vzc2lvbkF1dG9TdGFy
dFRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDZkMGJlOWZkZjMzNjFhMTFhNmU1NjE2NWY4
ZDdiOGMwYmQ1MjM1MmEuLjVlOWIzOTY3ZTFmZDQyNjg5YjBkMDA2NWRhMmFlYTZjNGY1NWE5NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAKQEAgLTk1LDIxICs5NSwyMSBAQCB2b2lkIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5QcgogICAgIG1fcGx1Z2luUHJvY2Vzc2VzLnJlbW92ZSh2ZWN0b3JJbmRleCk7CiB9CiAK
LXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmZldGNoV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4g
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNp
dGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUGx1Z2luUHJv
Y2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdp
blByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlTm9ybWFsLCBQbHVnaW5Qcm9j
ZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogCiAgICAgcGx1Z2luUHJvY2Vzcy0+ZmV0Y2hXZWJz
aXRlRGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2lu
Y2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nl
c3MocGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1R5cGVOb3JtYWwsIFBs
dWdpblByb2Nlc3NTYW5kYm94UG9saWN5Tm9ybWFsKSk7CiAKICAgICBwbHVnaW5Qcm9jZXNzLT5k
ZWxldGVXZWJzaXRlRGF0YShtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
SG9zdE5hbWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5h
bWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGhvc3ROYW1lcyxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVn
aW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlTm9y
bWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogICAgIHBsdWdpblByb2Nl
c3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGhvc3ROYW1lcywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggZGQ0NGQ2MjJjOTJjMzFlN2NkZDQx
OTkyMzFiNzk1ZTViN2ZjZTFkMi4uMmNlNDdiMzYxNjNhNzQ5YzZlNzY5ZmYxMDE4MDk1MzY1Njhk
ZDRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwg
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBs
dWdpblByb2Nlc3NQcm94eSopOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4gY29t
cGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
bmxpbmUgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBwcm9jZXNzU3VwcHJlc3Npb25E
aXNhYmxlZFRva2VuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiYWNkNzNlNTQwMzQwYTQ0MjZkNjBl
OTBlY2E3OTcxYmE1YjBkYTc5Li42ZmM3YTVjNmQzYzM5OTQxNjg1NmU1NDFhMmRlNWJjYzgzNTRi
NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblBy
b2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxT
dHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZmV0
Y2hXZWJzaXRlRGF0YShXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxs
YmFja0lEKCk7CiAgICAgbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpQbHVnaW5Qcm9jZXNzOjpHZXRTaXRlc1dpdGhEYXRhKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAot
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVk
U2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CiAgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6RGVs
ZXRlV2Vic2l0ZURhdGEobW9kaWZpZWRTaW5jZSwgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZv
ckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRh
Rm9ySG9zdE5hbWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGVmNDNlYWJiMDY4MGU3ZDcwYWVjNmFhY2IzNTNlZTMw
NWExNDc3OGMuLjcwODA2YzFlN2I2NDY5YjQwNzJkOGQyZWU5YzMzNGExZmMzMmMyZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCkBAIC03OCw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBlbmNvZGVkIGluIHRoZSBn
aXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2Yg
dGhlIGdpdmVuIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5j
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0
TmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIApAQCAtMTU3
LDIxICsxNTcsMjEgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3BlbmRp
bmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRh
Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKIAogICAg
IHN0cnVjdCBEZWxldGVXZWJzaXRlRGF0YVJlcXVlc3QgewogICAgICAgICBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2U7CiAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQ7CiAgICAgfTsKICAgICBWZWN0b3I8RGVsZXRlV2Vic2l0ZURhdGFSZXF1ZXN0
PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YVJlcXVlc3RzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2Fs
bGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1f
cGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogCiAgICAgc3RydWN0IERlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdCB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGhv
c3ROYW1lczsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRDsKICAgICB9OwogICAgIFZlY3Rv
cjxEZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lc1JlcXVlc3Q+IG1fcGVuZGluZ0RlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFt
ZXNDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
Pj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXNDYWxsYmFja3M7CiAKICAg
ICAvLyBJZiBjcmVhdGVQbHVnaW5Db25uZWN0aW9uIGlzIGNhbGxlZCB3aGlsZSB0aGUgcHJvY2Vz
cyBpcyBzdGlsbCBsYXVuY2hpbmcgd2UnbGwga2VlcCBjb3VudCBvZiBpdCBhbmQgc2VuZCBhIGJ1
bmNoIG9mIHJlcXVlc3RzCiAgICAgLy8gd2hlbiB0aGUgcHJvY2VzcyBmaW5pc2hlcyBsYXVuY2hp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlv
bi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAppbmRleCBm
YWM4NjMyNmMxNWUxNzZhOTI4NDJmNTIyYzlmNTU1NjU1NzY3ZTI2Li5jNDJlOThjZTY4YmJkMGQ4
NDFhN2I2Mjg2MTQ0YWU1Y2M2MjBjNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
cm9jZXNzQXNzZXJ0aW9uLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUHJvY2Vzc0Fzc2Vy
dGlvbl9oCiAjZGVmaW5lIFByb2Nlc3NBc3NlcnRpb25faAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIFBMQVRGT1JNKElPUykgJiYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGM4OGU2OGM5NWY0ZTVkNDhlYWE5MjE1MjhjNjZjNmI5
MDZjZjg2NmEuLjJmNmRiMGIyOWM3MWNhNGRhN2Y3ODk4ZWQzNjdiNTI5NjBlODM1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0z
OTUsNyArMzk1LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICBtX3Bh
Z2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVt
cykpOwogfQogCi1CYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tG
b3J3YXJkTGlzdFN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYpPiYgZmlsdGVyKSBjb25zdAorQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0Zv
cndhcmRMaXN0OjpiYWNrRm9yd2FyZExpc3RTdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2hh
c0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggMTc4
ZjA3ZTg3ZTgyMTk4MTQ2NTIwMjlhNmE3ODM4OTg5NmY3NTI2Ny4uYTA0MGIyMWJmZDZkMTkzNDg4
YTIzODQ3OGM1NjkxYmI0NGJkYjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGJhY2tMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkgY29u
c3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IGZvcndhcmRMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1
bnNpZ25lZCBsaW1pdCkgY29uc3Q7CiAKLSAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9y
d2FyZExpc3RTdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mKT4mKSBjb25zdDsKKyAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExp
c3RTdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJikg
Y29uc3Q7CiAgICAgdm9pZCByZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlKTsK
IAogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZGY4MDFmNDIyMDAxY2ZmNjUzMmUxZThkYTg1ZDBlZDUzYmEyNWJjMy4uNTU3
OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgxMWY4NDJlMGYxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTIyNSw3ICsy
MjUsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KIAogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KGNhbGxiYWNrKQogICAgICAgICBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5zZXQoc2Vzc2lvbklE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0yNTksOCArMjU5LDkgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnVucmVnaXN0ZXJPYnNlcnZlcihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPYnMKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGllbnQuY29va2llc0RpZENoYW5nZSh0aGlz
KTsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzLmdldChz
ZXNzaW9uSUQpKQotICAgICAgICBjYWxsYmFjaygpOworICAgIGF1dG8gbGVnYWN5SXRlcmF0b3Ig
PSBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKGxlZ2Fj
eUl0ZXJhdG9yICE9IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAoKCps
ZWdhY3lJdGVyYXRvcikudmFsdWUpKCk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb29raWVP
YnNlcnZlcnMuZmluZChzZXNzaW9uSUQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2Nvb2tpZU9i
c2VydmVycy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaAppbmRleCAyN2FhMmFjMDc5ZTdkMTgwOTZjM2Q1MDYzNDM0ZGQ2ZTk4Nzhi
YTVhLi44MmFmNzcwNjVkMmYyMWIwZjVjOTFjNjdkOWQ5NTQwYzI4YjJmNTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC04NCw3
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
V2ViQ29yZTo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgc2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFj
ayhXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9p
ZCBzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIAogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBA
IC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKLSAgICBI
YXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9sZWdh
Y3lDb29raWVPYnNlcnZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwogICAgIEhhc2hNYXA8
V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29va2llT2JzZXJ2ZXJz
OwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50IG1fY2xpZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZjA2OWMzZDM1YTQ5ZDgxMDdl
Y2ViZmNjMjA0ZWYzYzc3ZGNkZjJjLi5jODlmYzg5ZGU1MGNjZTg2MmM5NWY3MDNjOTQ3ZDRlOTg5
YWVhZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTU5Niw3ICsxNTk2LDcgQEAgSW50U2l6ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LnZpZXdTaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZh
bGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2
ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQsIFdURjo6RnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwpAQCAtMTYyMSw3ICsxNjIxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1l
bnQoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlbGVj
dGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0
ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24oU3RyaW5nKCksIGZhbHNlLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3du
KTsKQEAgLTIzNDYsMTEgKzIzNDYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29k
aW5nTmFtZSksIG1fcGFnZUlEKTsKIH0KIAotU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpPiYgZmlsdGVyKSBjb25zdAorU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0
YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZpbHRl
cikgY29uc3QKIHsKICAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogCi0gICAgc2Vzc2lv
blN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tGb3J3
YXJkTGlzdFN0YXRlKGZpbHRlcik7CisgICAgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0
YXRlID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tGb3J3YXJkTGlzdFN0YXRlKFdURk1vdmUoZmls
dGVyKSk7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBtX3BhZ2VMb2FkU3Rh
dGUucGVuZGluZ0FQSVJlcXVlc3RVUkwoKTsKICAgICBpZiAocHJvdmlzaW9uYWxVUkxTdHJpbmcu
aXNFbXB0eSgpKQpAQCAtMjgxOSw3ICsyODE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hl
cyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRp
b25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIs
IGZhbHNlLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjgzMCw3ICsy
ODMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIHNjcmlwdCwgc3RkOjpmdW5jdGlvbjwKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShzY3JpcHQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmlu
ZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NDEsNyArMjg0MSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NTMsNyArMjg1Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmlu
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJp
bmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNT
dHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC0yODc3LDcgKzI4NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQ
cm9maWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhYwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Ft
cGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CkBAIC0yODg5LDcgKzI4ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBp
c1dlYlByb2Nlc3NSZXNwb25zaXZlKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc1dl
YlByb2Nlc3NSZXNwb25zaXZlKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tGdW5j
dGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIHsKQEAgLTI4OTksNyArMjg5OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZShjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX3Byb2Nlc3Mt
PmlzUmVzcG9uc2l2ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogI2lmIEVOQUJM
RShNSFRNTCkKQEAgLTI5MTUsNyArMjkxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250
ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0
cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7CkBAIC0zODI3LDcgKzM4MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlYwogCiAgICAgfTsKIAotICAgIGlmIChtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlQXN5bmMo
dGhpcywgZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwgd2luZG93RmVhdHVyZXMs
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgaWYgKG1fdWlD
bGllbnQtPmNyZWF0ZU5ld1BhZ2VBc3luYyh0aGlzLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRh
LCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFtjb21wbGV0
aW9uSGFuZGxlcl0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgeyBjb21wbGV0aW9uSGFu
ZGxlcihuZXdQYWdlKTsgfSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IG5ld1BhZ2UgPSBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKHRoaXMsIGZyYW1lLCBz
ZWN1cml0eU9yaWdpbkRhdGEsIHJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSk7CkBAIC02Mjg1LDcgKzYyODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQog
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4
dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3JvdXAsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pLCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMo
c3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMo
V1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihFZGl0aW5nUmFuZ2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC02Mjk2LDcgKzYyOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFu
Z2VBc3luYyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwogICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRSYW5nZUFzeW5jKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJh
bmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewog
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKQEAgLTYzMDcsNyArNjMwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENh
bGxiCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFu
Z2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2lu
dEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV1RGOjpGdW5jdGlvbjx2b2lk
ICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKDAsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNjMxOCw3ICs2MzE4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHMKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRSZWN0KCksIEVkaXRpbmdS
YW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTYzNjIsNyArNjM2Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZChib29sIGVuYWJsZWQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OnRh
a2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUs
IFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtNjU4MiwxNyArNjU4MiwxNSBAQCB2b2lkKiBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUAogICAgIHJl
dHVybiBtX3BhZ2VDbGllbnQuaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhp
dFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgdHlwZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKCkpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y29waWVkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICBhdXRvIHZvaWRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtjb3BpZWRDb21w
bGV0aW9uSGFuZGxlcl0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgY29waWVkQ29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgQmxvY2tfcmVsZWFzZShjb3BpZWRDb21wbGV0aW9u
SGFuZGxlcik7CisgICAgYXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsK
ICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lE
KTsKQEAgLTY3MTYsNyArNjcxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZl
bnRUZXN0VHJpZ2dlcigpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9k
cmF3aW5nQXJlYSkgewogICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKQEAgLTY3NDYsNyArNjc0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJv
eHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikgeworICAgIG1faWNvbkxv
YWRpbmdDbGllbnQtPmdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWZQdHI8V2ViUGFnZVByb3h5Pih0aGlzKSwgbG9hZElkZW50aWZpZXJdKFdURjo6
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikgewogICAgICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYg
KGNhbGxiYWNrRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxs
cHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBlMjI0NjQxM2NmOGY0MTUxNTU4YzBiYmYzZWNhY2E1ZTIz
NWRlNzAxLi44NGRmNTgwMDA1ZjZiNTI0ZWQ5MDc3MmFjMjM0ZjNmM2M3ZWI0MDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZpZXdX
aWxsRW5kTGl2ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jiwg
c3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIAogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKICAgICB2b2lkIHJl
c3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKTsKQEAgLTQ1OCw3ICs0NTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3Ry
aW5nKCkpOwotICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIGNvbnN0IEVkaXRvclN0
YXRlJiBlZGl0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yU3RhdGU7IH0KICAgICBi
b29sIGNhbkRlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdGVkUmFuZ2UoKSAmJiBpc0Nv
bnRlbnRFZGl0YWJsZSgpOyB9CkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZSAm
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkNhcHR1cmVEZXZpY2VzQXJlTXV0ZWQ7IH0KIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7
CisgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgZG91Ymxl
IGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBl
eHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpAQCAtNTAyLDI2
ICs1MDIsMjYgQEAgcHVibGljOgogICAgIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5
ZXJUcmVlKHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8s
IHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVp
bnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hl
cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
dWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUJsb2Nr
U2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCB1aW50MzJfdCB0b3Vj
aCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsK
LSAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0UG9z
aXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
Pik7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgbW92ZVNl
bGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29y
ZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnko
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9u
RGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRv
dWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBhcHBseUF1
dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+KTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNl
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIFdURjo6RnVu
Y3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBiZWdpblNlbGVj
dGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgV1RGOjpGdW5jdGlv
bjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0
b2NvcnJlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIGJvb2wgYXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBjb250ZXh0QmVmb3Jl
LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGNvbnRl
eHRBZnRlciwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKLSAgICB2b2lk
IHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
KyAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9s
ZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2
b2lkIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJik7CkBAIC01MzIsNyArNTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwogICAgIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgdWlu
dDY0X3QgaW1hZ2VTaXplKTsKICAgICB2b2lkIGRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRv
dWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwg
ZmxvYXQgc2hyaW5rVGhyZXNob2xkKTsKLSAgICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShi
b29sIGlzRm9yd2FyZCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFs
dWVBc051bWJlcihkb3VibGUpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRl
eCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwpA
QCAtNTQ2LDEyICs1NDYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0
aWNDbGljaygpOwogICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZO
ZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdv
cnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KTsKLSAgICB2b2lk
IGdldFNlbGVjdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAg
dm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIHNldEZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0SXNTY3JvbGxpbmdPclpvb21pbmcoYm9vbCk7Ci0g
ICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwotICAgIHZvaWQgcmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChp
bnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Cisg
ICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0
KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIHZvaWQgZGlkUGVyZm9ybURhdGFJ
bnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKICAgICB2b2lkIGRp
ZEhhbmRsZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVxdWVzdChib29sIHN0YXJ0ZWQpOwpAQCAtNTkz
LDEwICs1OTMsMTAgQEAgcHVibGljOgogICAgIExheWVyT3JWaWV3KiBhY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVj
dGlvblVwZGF0ZSA9IGZhbHNlKTsKLSAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoc3RkOjpm
dW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAg
dm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBv
aW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVp
bnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9u
PHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50
QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRl
cmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5
bmMoKTsKIApAQCAtNjA3LDkgKzYwNyw5IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJp
YnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBzZXRGb250KGNvbnN0IFN0cmluZyYgZm9udEZhbWlseSwgZG91YmxlIGZv
bnRTaXplLCB1aW50NjRfdCBmb250VHJhaXRzKTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKICAgICBOU1dpbmRvdyAqcGxhdGZvcm1X
aW5kb3coKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgZXN0aW1h
dGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiA9IG51bGxw
dHIpIGNvbnN0OworICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxi
b29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgPSBudWxscHRyKSBjb25zdDsKICAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3Rh
dGUsIGJvb2wgbmF2aWdhdGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c1RleHRab29tKCkgY29uc3Q7
CkBAIC03NzgsMjIgKzc3OCwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZ01hdGNoZXMoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mIG1hdGNoUmVj
dHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsKIAotICAgIHZvaWQgZ2V0Q29u
dGVudHNBc1N0cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQg
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBpc1dlYlByb2Nlc3NSZXNwb25z
aXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4pOwor
ICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldEJ5dGVjb2RlUHJv
ZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKT4mJik7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdm9pZCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFt
ZVByb3h5KiwgQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKLSAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Cisg
ICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24s
IGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENh
bGxiYWNrPiYmKTsKIAogICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Kik7CkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9vbCYgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mKTsK
ICNlbmRpZgogCi0gICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29y
ZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3QsIFdlYkNvcmU6OkludFNp
emUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAg
ICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCk7CiAgICAgdm9pZCBuYXZpZ2F0aW9u
R2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KTsKQEAgLTEwOTAsNyArMTA5MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRl
c3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pik7CiAKLSAgICB2b2lkIGlu
c3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCheY29tcGxldGlv
bkhhbmRsZXIpKCkpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0
aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgdm9pZCBoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQpOwogICAgIHZvaWQg
ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKTsKQEAgLTExNDUsNyArMTE0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEZvciB0ZXN0aW5nCiAgICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJp
Z2dlcigpOwotICAgIHZvaWQgY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShzdGQ6OmZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBjYWxsQWZ0ZXJO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogCiAgICAgdm9pZCBkaWRSZWFjaExheW91dE1pbGVzdG9uZSh1aW50MzJfdCBs
YXlvdXRNaWxlc3RvbmVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA0MDE5ZjI3MzA4ODhlMjFlZmZhODJmN2MyZmMwYjA3MDU4OGJkNzdk
Li5jMzJjYjYzMzlmYWM4OGEyNmFiNDFiMjY2YzIxYjQ2NWU4MmUzNTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE2NSw3ICsxMTY1LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNI
b2xkaW5nTG9ja2VkRmlsZXMpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUp
PiBjYWxsYmFjaykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojppc1Jlc3BvbnNpdmUoV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKG1faXNSZXNwb25zaXZlID09IE5vT3JNYXliZTo6Tm8pIHsKICAgICAgICAgaWYgKGNh
bGxiYWNrKSB7CkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdgog
ICAgIH0KIAogICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsKKyAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1haW5UaHJlYWRQaW5nKCksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGQwMGI0
NzQ5NDk5NzQzOWMyZThkZTM0NTEzNWM5MWEyNTMxYTkyMWUuLmI1YjQ5OTNhMmViMjEyZmRmYzAw
NjgwMDZiN2ZjY2YyMmQ4NTY3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlaW5z
dGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwog
Ci0gICAgdm9pZCBpc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZSk+KTsKKyAgICB2b2lkIGlzUmVzcG9uc2l2ZShXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWFpblRocmVhZFBpbmcoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NQaW5nKCk7CiAKQEAgLTI4Nyw3ICsyODcsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
U3RyaW5nLCB1aW50NjRfdD4gbV9wYWdlVVJMUmV0YWluQ291bnRNYXA7CiAKICAgICBlbnVtIGNs
YXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwotICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNw
b25zaXZlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogCiAgICAgVmlz
aWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCBmN2I4NjVmZmVhYWNmNGE1ZmYzNTA2MjUwZmE3NDUxMzY3NTM1NjQzLi44MThkMDFkY2Zl
YTQxYWUxYTdlZjhhMDYxN2ExNGYzYjZkMzk2YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNz
aW9uSUQuaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcAppbmRleCBkMjRhMDIzOGY0NjAzOGVmNTMxYmU0MGYwMjgzZGE5
ZjVjNzI0ZTU3Li5mYmUxNDljNmYzMGJjOTZhN2IyNjg2ODJkMzY3OGMzYjkxYTBlMGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBub3RpZmllcjsKICAgICB9CiAKLSAgICB2b2lkIGFkZChEYW1hZ2UgZGFtYWdlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKKyAgICB2b2lkIGFkZChEYW1hZ2Ug
ZGFtYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBnZGtf
d2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5j
PigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CkBAIC05MywxNCArOTMsMTUgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0CiAgICAgewotICAgICAg
ICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9ucy5nZXQo
ZGFtYWdlKSkgewotICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAgICAgICAgYXV0byBp
dCA9IG1fbm90aWZ5RnVuY3Rpb25zLmZpbmQoZGFtYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
bm90aWZ5RnVuY3Rpb25zLmVuZCgpKSkgeworICAgICAgICAgICAgKCgqaXQpLnZhbHVlKSgpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIEhhc2hNYXA8RGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1f
bm90aWZ5RnVuY3Rpb25zOworICAgIEhhc2hNYXA8RGFtYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4+IG1fbm90aWZ5RnVuY3Rpb25zOwogfTsKIAogc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6Y3JlYXRlKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAppbmRleCA2YmJlYTJhOWFhMWM1MmFjNDU3NTIyMjI0ZWFjZDhkMzJl
NGQ0NGZiLi4zOGRkMTJkMWVmMDQ0NTE1OWYzMzNiNDQzNDc3ZDUyNzA2NTkyNDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0y
MDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZUF2b2lkc1Vuc2FmZUFy
ZWEoYm9vbCBhdm9pZHNVbnNhZmVBcmVhKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09L
KQotICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXgg
YjVmNjViNmIyNjQ5MzUzOTQ2ZjQ5ZWQ5ZDBmYTg3OGI3ZTFlYTgzOC4uYzc0NmI2MDlhMmNhNjUy
NjUzYWZjYjQ0ZDQ3YTQ0NTZmMzc2ODdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC04MDcsNyArODA3LDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6aGFuZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2Uo
Ym9vbCBoYXNBY3RpdmVTZXMKIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGFzc3dvcmRI
YW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KE5TU3RyaW5nICpwYXNzd29yZCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwYXNzd29y
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IDQzYmI0ZjA2Y2NkMzU3OGJkMDI0Nzk0ZTQxZTA4NWM0OTI2ODg2MDIuLjQ0M2E0OGIy
MjA4YzFjMzlkMDcyNzBkYzI2ZTg1MTYzMDhmNmU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00MjMsNyArNDIzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxheWVyVHJlZUNvbW1pdENvbXBsZXRlKCkKICAgICBtX3BhZ2VDbGll
bnQubGF5ZXJUcmVlQ29tbWl0Q29tcGxldGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNl
bGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJf
dCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMy
X3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBn
ZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIDAsIENhbGxiYWNrQmFzZTo6
RXJyb3I6OlVua25vd24pOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6
VGV4CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2Vz
dHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0
YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWlu
dDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikK
K3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwg
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1
aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6Oklu
dFBvaW50KCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDU1LDcg
KzQ1NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0
cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBt
X3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25E
YXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiwgZG91
YmxlLCB1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcm
IHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihWZWN0b3I8V2ViQ29yZTo6RmxvYXRS
ZWN0PigpLCBTdHJpbmcoKSwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBA
IC00NjYsNyArNDY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICgh
aXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBseUF1
dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29y
cmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgbwogICAgIHJl
dHVybiBhdXRvY29ycmVjdGlvbkFwcGxpZWQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxl
Y3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRo
R3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNTA2LDcgKzUwNiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2luCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2ludCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxl
Y3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51
bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRp
cmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFj
a0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgp
KSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KICAgICAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFj
a0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTUzOSw3ICs1MzksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0
UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0
aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oMCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0
aW9uIGRpcmVjdGkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2lu
U2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigwLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRl
U2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LAog
ICAgIAogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbigwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
QEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgIAogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dERpY3RhdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjbwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERpY3RhdGlvbkNv
bnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwgMCwgMCwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZUNvbnRl
eHQsIFN0cmluZyYgbWFya2UKICAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1
dG9jb3JyZWN0aW9uQ29udGV4dDo6UmVwbHkoYmVmb3JlQ29udGV4dCwgbWFya2VkVGV4dCwgc2Vs
ZWN0ZWRUZXh0LCBhZnRlckNvbnRleHQsIGxvY2F0aW9uLCBsZW5ndGgpLCBtX3BhZ2VJRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRT
ZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24oU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7CkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVR3b0Zp
bmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW4KICAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlVHdvRmluZ2VyVGFwQXRQb2lu
dChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0
dXJlU3RhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJh
Y2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy
X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2lu
dCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTcxOCw3ICs3
MTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V29yZEJhY2t3YXJkKCkKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdvcmRCYWNrd2FyZCgpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0
eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBvZmZzZXQsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxl
Y3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50MzJf
dCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0
aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oVmVjdG9yPFdl
YkNvcmU6OlNlbGVjdGlvblJlY3Q+KCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpA
QCAtNzI5LDcgKzcyOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVj
dHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcm
IHRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qg
b2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24oVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+KCksIENhbGxiYWNrQmFzZTo6
RXJyb3I6OlVua25vd24pOwpAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25z
dCBTCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0U2Vs
ZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qg
b2Zmc2V0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFj
a0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQz
Ml90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC05NTcsNyArOTU3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKICAg
ICBtX3BhZ2VDbGllbnQuZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENh
bGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFF1aWNrTG9va0QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
IHsKLSAgICBtX3BhZ2VDbGllbnQucmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQo
ZmlsZU5hbWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0oY29uc3QgU3RyaW5n
JiBwYXNzd29yZCkgeworICAgIG1fcGFnZUNsaWVudC5yZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudChmaWxlTmFtZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oY29u
c3QgU3RyaW5nJiBwYXNzd29yZCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9j
dW1lbnQocGFzc3dvcmQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2VJRCk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDFlYjBjYmZjNWI1Y2NiZTE5YjkzNmNjNmFk
YTQ1YzQ5MTA2Nzc5NDQuLmZlZDIzMmQxN2ZiZTlkOTcyMzk0YmRlMTU5ZTZjYmI5Y2Q1ZWUzZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgLy8gRm9yIG5vdywgYWxsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGJlZm9yZSBj
b21taXR0aW5nIGNoYW5nZXMsIGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhlIG9ubHkgY2xpZW50IHJl
cXVpcmVzLgogICAgIC8vIE9uY2Ugd2UgaGF2ZSBvdGhlciBjYWxsYmFja3MsIGl0IG1heSBtYWtl
IHNlbnNlIHRvIGhhdmUgYSBiZWZvcmUtY29tbWl0L2FmdGVyLWNvbW1pdCBvcHRpb24uCi0gICAg
dm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1
cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJikg
b3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJl
Y3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBhMWIyMjk5OTQ3ZmIxMjU3YzhlZTNjYzI1YjczNTli
NTNmMWZlNjc1Li5mY2M0MzVlYTg0ZjM4ZDZhZjMxNjcwZGM3OWYwN2MwMWU3NGUwMmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZSgpCiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5
U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJ
ZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQg
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAppbmRleCBmMTgyNTNmNzczMDRiZTZiMGE5N2E5
ZmE1OTQ1OWEyNzcyMTdjNTM3Li5kYTBjM2UwZjg1NDdmYzhjODIzZWYxYTIzYjk1Y2I2MjZkYWEx
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaApAQCAtNTIsNyArNTIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2FpdEZvckRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4p
IG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgd2lsbFNlbmRVcGRhdGVHZW9tZXRyeSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkubW0KaW5kZXggNzE3MzMyNDAzNjM2NzUwNDY0NmE4MGVhYmJkN2M3ZmM4
YzYyMTE3Zi4uYmU4OWU1M2YwMDAwMzExNzY0ZjM2NDczNmViYTRlMjVkNzE2YzZjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJUEM7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTIxMSwxMiArMjEyLDEyIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0CiAgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpDb21taXRUcmFuc2ll
bnRab29tKHNjYWxlLCBvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxs
YmFjaykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hB
ZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgcHJpbWFyaWx5IHVz
ZWQgZm9yIHRlc3RpbmcgaW4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuIFdlIGNvdWxkIGlu
IHRoZW9yeSB3YWl0IGZvciBhIENBIGNvbW1pdCBoZXJlLgotICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgQmxvY2tQdHI8dm9pZCAoKT46OmZyb21DYWxsYWJsZShbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewogICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKTsKLSAgICB9KTsKKyAgICB9KS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZp
bmRlckNsaWVudC5tbQppbmRleCBiNTU0ZDE3YmNlYjZiOWMxOGIxMmViN2ViNjBiNGViZjMzNjQz
ZTdmLi44NWY1ZGUyZmQzMDM3MDY0NjE3OTU2ZGI2OTYzZGRkNmRjNjI1NDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAt
MTQyLDggKzE0Miw4IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRGaW5kZXJDbGllbnQg
ewogICAgIFdlYlBhZ2VQcm94eSAqX3BhZ2U7CiAgICAgTlNWaWV3ICpfdmlldzsKLSAgICBEZXF1
ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoTlNBcnJheSAqLCBib29sIGRpZFdyYXApPj4gX2ZpbmRSZXBs
eUNhbGxiYWNrczsKLSAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoTlNJbWFnZSAqKT4+IF9p
bWFnZVJlcGx5Q2FsbGJhY2tzOworICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZChOU0FycmF5
ICosIGJvb2wgZGlkV3JhcCk+PiBfZmluZFJlcGx5Q2FsbGJhY2tzOworICAgIERlcXVlPFdURjo6
RnVuY3Rpb248dm9pZChOU0ltYWdlICopPj4gX2ltYWdlUmVwbHlDYWxsYmFja3M7CiB9CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYlBhZ2VQcm94eSYpcGFnZSB2aWV3OihOU1Zp
ZXcgKil2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggNDBmYTQxZmM2ZWJmN2E3YTg2ZTk1M2U3MmEwNjA3
Y2U2OTA0NmM1YS4uZGEzYzJiOGI4YzBjZTFiNGFkNWE3YzczZmRjNDk2Nzg0ZTQ2Y2UxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbQpAQCAtNzgsMjAgKzc4LDIwIEBAIC0gKEFQSTo6T2JqZWN0Kil1c2VyRGF0YQog
QGVuZAogCiBAaW50ZXJmYWNlIFdLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIgOiBOU09iamVjdCB7
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBfc2VsZWN0aW9uSGFuZGxlcjsKKyAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+IF9zZWxlY3Rpb25IYW5kbGVyOwogfQotLSAoaWQpaW5pdFdpdGhT
ZWxlY3Rpb25IYW5kbGVyOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KXNlbGVjdGlvbkhhbmRsZXI7
CistIChpZClpbml0V2l0aFNlbGVjdGlvbkhhbmRsZXI6KFdURjo6RnVuY3Rpb248dm9pZCAoKT4m
JilzZWxlY3Rpb25IYW5kbGVyOwogLSAodm9pZClleGVjdXRlU2VsZWN0aW9uSGFuZGxlcjsKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIKLS0gKGlkKWlu
aXRXaXRoU2VsZWN0aW9uSGFuZGxlcjooc3RkOjpmdW5jdGlvbjx2b2lkICgpPilzZWxlY3Rpb25I
YW5kbGVyCistIChpZClpbml0V2l0aFNlbGVjdGlvbkhhbmRsZXI6KFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4mJilzZWxlY3Rpb25IYW5kbGVyCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAg
ICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgX3NlbGVjdGlvbkhh
bmRsZXIgPSBzZWxlY3Rpb25IYW5kbGVyOworICAgIF9zZWxlY3Rpb25IYW5kbGVyID0gV1RGTW92
ZShzZWxlY3Rpb25IYW5kbGVyKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAxN2NjYmE0OGJm
OWU3NGQ2ZWY1MGQ5MTNjODRiYzRjNzE5NWM3NmMyLi4xYTY0ZTc5YjhjYzhkYTJiYzFkODRiMWIy
N2JmM2M4MGY0MmRlNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdS
YW5nCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJv
eHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmlu
ZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihBdHRyaWJ1dGVkU3RyaW5nKCksIEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0
cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0
cgogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc3RyaW5nLCBh
Y3R1YWxSYW5nZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPmNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2Vs
ZWN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIDAsIGZhbHNlLCBD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRl
eCAyYTYyZDA3ZWUxNDYzYjA2MzVkMWNkODljOWQzNzU5MjllZjJmNzQ3Li42MmYwNTRlNDBmNThm
ZDE0ZmY5NTQ0MGY0NTM0YTYxMTFjZDhmZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbk1ha2VQYXltZW50c1dp
dGhBY3RpdmVDYXJkUmVwbHlJRCgpCiAgICAgcmV0dXJuICsrY2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmRSZXBseUlEOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlcGx5SUQgPSBnZW5lcmF0ZUNhbk1ha2VQYXltZW50
c1dpdGhBY3RpdmVDYXJkUmVwbHlJRCgpOwogCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZU9wZW5QYXltZW50U2V0dXBSZXBseUlEKCkKICAgICByZXR1cm4gKytvcGVu
UGF5bWVudFNldHVwUmVwbHlJRDsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om9w
ZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1
dG8gcmVwbHlJRCA9IGdlbmVyYXRlT3BlblBheW1lbnRTZXR1cFJlcGx5SUQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgKaW5kZXggMDNiOWU1YjMwZWNmYjMzNDY4ZmY3MzEwMjFlYzRhZmI0NzlkYWMy
My4uZTM1M2Q2NjVlZWVlMzY4NWE4MDQyZjU0NjU0MmFlYjQxMzY2M2IyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LgogICAgIGJvb2wgc3VwcG9ydHNWZXJzaW9uKHVuc2lnbmVk
IHZlcnNpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1l
cmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBvcGVu
UGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNv
bnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUs
IFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OworICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICBib29sIHNob3dQYXltZW50VUko
Y29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhv
ZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CkBAIC04Niw4ICs4Niw4IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJQYWdlJiBtX3dlYlBhZ2U7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGJvb2wpPj4gbV9wZW5kaW5nQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4+
IG1fcGVuZGluZ09wZW5QYXltZW50U2V0dXBDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1fcGVuZGluZ0Nhbk1ha2VQYXltZW50c1dp
dGhBY3RpdmVDYXJkQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZCAoYm9vbCk+PiBtX3BlbmRpbmdPcGVuUGF5bWVudFNldHVwQ2FsbGJhY2tzOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IDJkMjMyYWNkMTcwZTVlMDFiZjFiNjBhNzNjMGE2ZWE2NWY0ZGIwYmEuLjhmZjBl
MjgyNmZmMDg2YzlkMzViOGExODIyNTJiMjA4ODAxYzY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIH0KIAogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xp
ZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAg
ICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAgIHVpbnQ2NF90IG1fc3RyZWFtSUQ7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJl
c291cmNlUmVxdWVzdCk+IG1fbG9hZENhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAo
UmVzb3VyY2VSZXF1ZXN0KT4gbV9sb2FkQ2FsbGJhY2s7CiAKICAgICAvLyBUcnVlIGlmIHRoZSBz
dHJlYW0gd2FzIGV4cGxpY2l0bHkgY2FuY2VsbGVkIGJ5IGNhbGxpbmcgY2FuY2VsKCkuCiAgICAg
Ly8gKEFzIG9wcG9zZWQgdG8gYmVpbmcgY2FuY2VsbGVkIGJ5IHRoZSB1c2VyIGhpdHRpbmcgdGhl
IHN0b3AgYnV0dG9uIGZvciBleGFtcGxlLgpAQCAtMjIxLDEyICsyMjEsMTIgQEAgc3RhdGljIHVp
bnQzMl90IGxhc3RNb2RpZmllZERhdGVNUyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcz4obGFzdE1vZGlmaWVkLnZhbHVlKCkudGltZV9zaW5jZV9lcG9jaCgpKS5jb3Vu
dCgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgZGVjaXNpb25IYW5kbGVyKQordm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGRlY2lzaW9u
SGFuZGxlcikKIHsKICAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwog
ICAgIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJs
KCk7CiAKLSAgICBtX2xvYWRDYWxsYmFjayA9IGRlY2lzaW9uSGFuZGxlcjsKKyAgICBtX2xvYWRD
YWxsYmFjayA9IFdURk1vdmUoZGVjaXNpb25IYW5kbGVyKTsKICAgICBtX3JlcXVlc3QgPSByZXF1
ZXN0OwogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbVdpbGxTZW5kUmVxdWVzdCht
X3N0cmVhbUlELCByZXF1ZXN0VVJMLCByZWRpcmVjdFJlc3BvbnNlVVJMLCByZWRpcmVjdFJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggNWFkNWI0YjJmMjEwYjkxNDc0NzVlODY3
MjE1ZjIwOTA0OTFkY2JhYS4uYTViZTUyYzVhNmQzOWY5ZDMzM2QyMTZjODQ0Mzk0ODI1MTQ2NjQw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwCkBAIC04Miw3ICs4Miw3IEBAIERyYXdpbmdBcmVhOjp+RHJhd2luZ0FyZWEoKQogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpKTsK
IH0KIAotdm9pZCBEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9s
bFBvc2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit2b2lkIERyYXdpbmdB
cmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIC8vIFNjcm9sbCBwb3NpdGlvbiB1cGRh
dGVzIGFyZSBzeW5jaHJvbm91cyBieSBkZWZhdWx0IHNvIHdlIGNhbiBqdXN0IGNhbGwgdGhlIGZ1
bmN0aW9uIHJpZ2h0IGF3YXkgaGVyZS4KICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCAzNGJkYmE3Y2EyZjYx
YmRlN2UzZGI2Yjg2ZmZiZjZmNTU5MmQ0NTUzLi5kODQ2MzlmNWYyZDA4NDFhMTZhODg2OTE4OGEz
NTI5YmMxYTU4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJG
bHVzaFRocm90dGxlU3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAgLTExNSw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwog
I2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNj
cm9sbFBvc2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDJlYjY3NWRiMWU5YzlhMGY1MmRhNzBjYzIzZTJjZWZjYjI0Y2ZhNzUuLjM2ZDA0MjA3ZmU3
NDYzYTBiMmE5Zjg5MGIxZjNmMDJjNTFjZDAyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIyMDIsNyArMjIwMiw3IEBAIGJvb2wgV2Vi
UGFnZTo6bWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkKICAgICByZXR1
cm4gIWRyYXdpbmdBcmVhKCkgfHwgZHJhd2luZ0FyZWEoKS0+bWFya0xheWVyc1ZvbGF0aWxlSW1t
ZWRpYXRlbHlJZlBvc3NpYmxlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bWFya0xheWVyc1ZvbGF0
aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
Z2U6Om1hcmtMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLSBXZWJQYWdlOjpt
YXJrTGF5ZXJzVm9sYXRpbGUoKSIsIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNWZlY2JjNzg1MTcxOWU1N2EyODk2NjJjOWYxZDFl
YzJhM2E3MzdiLi44OWIyZTBmNDU3NThkZDkxNDY4OWRiYzQ3MDhkYjUxNmEzYjRjMjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYwMyw3ICs2
MDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpIGNv
bnN0OwogCiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpOwotICAgIHZv
aWQgbWFya0xheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhh
bmRsZXIgPSB7IH0pOworICAgIHZvaWQgbWFya0xheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IHsgfSk7CiAgICAgdm9pZCBjYW5jZWxNYXJr
TGF5ZXJzVm9sYXRpbGUoKTsKIAogICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlciogbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7CkBAIC0xNTE3LDcg
KzE1MTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2xheWVy
Vm9sYXRpbGl0eVRpbWVyOwotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX21h
cmtMYXllcnNBc1ZvbGF0aWxlQ29tcGxldGlvbkhhbmRsZXJzOworICAgIFZlY3RvcjxXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+PiBtX21hcmtMYXllcnNBc1ZvbGF0aWxlQ29tcGxldGlvbkhhbmRsZXJz
OwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZFVuZGVyTG9jayB7IGZhbHNlIH07CiAKICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0
b21Db250ZW50UHJvdmlkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCmluZGV4IDk1ODMzOGEwM2VlN2M3YWRhNWYxYzNjZWI4OWI3ODE1ZGNmZmQ0NmQuLjZiMjkx
ZDQwNmZmNmNlNzE4Nzg2NTIzZDdiY2QxNjgxOWExYmJlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVu
c3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25z
dCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZmNhMjIwMzc4NTk4MjNhMzJiZWNmODZkYTUyYjhi
MGFiNjI1NDFmOC4uZGIxNDllNzkwMmRiYzI3NjQ3ODhhODEwOTNiYWE5MmQ5ZmYyNTI1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0zNTgsNyArMzU4
LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2NhbGVWaWV3VG9GaXRE
b2N1bWVudElmTmVlZGVkKCkKICAgICBtX3dlYlBhZ2Uuc2NhbGVWaWV3KHZpZXdTY2FsZSk7CiB9
CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1
cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9u
KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKIHsKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmICghbV93ZWJQYWdlLmNv
cmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKQEAgLTM3Nyw3ICszNzcsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdV
cGRhdGVkU2Nyb2xsUG9zaXRpb24ocwogICAgIC8vIChUaGUgd2ViIHBhZ2UgaXMgYWxyZWFkeSBr
ZXB0IGFsaXZlIGJ5IGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbiku
CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9ICZtX3dlYlBhZ2U7CiAKLSAgICBTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoQmFycmllcihbdGhpcywgd2ViUGFnZSwgZnVuY3Rpb25dIHsKKyAgICBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihbdGhpcywgd2ViUGFnZSwgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBEcmF3aW5nQXJlYSogZHJhd2luZ0FyZWEgPSB3
ZWJQYWdlLT5kcmF3aW5nQXJlYSgpOwogICAgICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNmI5MmY5Yzc4MjFjZDBkMTM5MWEzYWE3NGZmYWE2NjY5NjgzZmFjZi4uMDM1OWQyM2EzZTI3
MGIzODljMzU5NjdmNWY3YzNkNjMyNmVkNTVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMzk2LDcgKzEzOTYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNh
bmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24o
KSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxlKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzczo6bWFy
a0FsbExheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9j
ZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoKSIsIHRoaXMpOwogICAgIG1fcGFnZXNNYXJraW5n
TGF5ZXJzQXNWb2xhdGlsZSA9IG1fcGFnZU1hcC5zaXplKCk7CkBAIC0xNDA1LDcgKzE0MDUsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9y
IChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIHBhZ2UtPm1hcmtM
YXllcnNWb2xhdGlsZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgcGFnZS0+
bWFya0xheWVyc1ZvbGF0aWxlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICBBU1NFUlQobV9wYWdlc01hcmtpbmdMYXll
cnNBc1ZvbGF0aWxlKTsKICAgICAgICAgICAgIGlmICghLS1tX3BhZ2VzTWFya2luZ0xheWVyc0Fz
Vm9sYXRpbGUpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNzgyZDUzYmQ0NGE5NzllMGVkODE3NTRi
YjFmYTJiMmE4NTI0MzFkMC4uYWJmMDgwNDAyNDA3ZjY2ODcwMzBhZjg2Mzg3YTIzMGZiMjhjMjcz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI0MCw3ICsyNDAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJXaXRoU3RhdGVEdW1wZXIoKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBtYXJrQWxsTGF5ZXJzVm9sYXRpbGUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIG1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBjYW5jZWxN
YXJrQWxsTGF5ZXJzVm9sYXRpbGUoKTsKICAgICB2b2lkIHNldEFsbExheWVyVHJlZVN0YXRlc0Zy
b3plbihib29sKTsKICAgICB2b2lkIHByb2Nlc3NTdXNwZW5zaW9uQ2xlYW51cFRpbWVyRmlyZWQo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313182</attachid>
            <date>2017-06-16 21:17:54 -0700</date>
            <delta_ts>2017-06-16 21:44:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173504-20170616211753.patch</filename>
            <type>text/plain</type>
            <size>186930</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJlZjllZDhlNzZmNDFl
YzMwYWYxZWI4ZjAwNTljYWZkNDA2M2Y5NC4uZmM0ZTEyNzJhOTVkOGQ0YjVmMDc4NmNkNmMxZDlh
NjExNTRmM2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24g
aW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9m
IHN0ZDo6ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3Nhcnkg
Y29weWluZy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9y
OjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKwog
MjAxNy0wNi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2F0aGVyU3RhdHNGb3JMb2dnaW5nIGlz
IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMWUwMWNhMmQwNzgxYjkzYzA3ZGY2ZmZiMzFj
MmZiMDhhYTIzZTRjZS4uMTdmZTYxN2Q3MDBiNzJkZjBjMjQyNzFiMGRmNGY2MTM0NDNlOTcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVh
ZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6
ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWlu
Zy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoK
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAo
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6Om9wZW5QYXltZW50U2V0dXAp
OgorCiAyMDE3LTA2LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1MgRG5EXSBbV0sxXSBEcm9wcGluZyBsaW5rcyBvbnRvIFVJV2ViVmlld3Mg
c2hvdWxkIG5vdCB0cmlnZ2VyIG5hdmlnYXRpb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGNjZDdlOTRlOTAzMzhjMjJjYjI3ZDY0YTg1N2UwNjZhOTAwM2I0OGMuLmQyNjcxMTMyZTkz
ZWY3YTVmOWE3YTFmYTlhZjY2NGJkZGI3YmMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9uIGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBXZWJL
aXQyLworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcz
NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvIHRvIGF2
b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IGNvcHlpbmcuCisKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06OndpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKwogMjAxNy0wNi0x
NSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBb
V2luXSBXZWJLaXQgc2hvdWxkbid0IGluY2x1ZGUgdGhlIGZvcndhcmRpbmcgaGVhZGVyIG9mIFdl
YktpdCBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMDM1NDM1OThmOWFmOTU5NWU4NjVmOGM0MzQ1ZTI5
ZTVkNmRiZDI3Li4xMzJhMzRiNzExN2Q2ZTQxZTc0ODUzZTVmODkwMDljNjNmOTg1NmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTk3IEBACiAyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6
OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24g
aW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWluZy4KKworICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZVByb2Nlc3M6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKToK
KyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Omluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3Iu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXN5bmNSZXF1ZXN0OjpBc3luY1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpB
c3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcik6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVx
dWVzdC5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcCk6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3dubG9hZENs
aWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25M
b2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAodG9HZW5lcmljQ2FsbGJhY2tG
dW5jdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcg
bWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWREcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6dHJ5QXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2VD
b21tb24pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3
UGFnZUFzeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hv
dFJlbW92YWxUcmFja2VyOjpzdGFydCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxG
b2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FsbEFmdGVy
TmV4dFByZXNlbnRhdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0
UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb2N1c05leHRBc3Npc3RlZE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06
CisgICAgICAgICgtW1dLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIgaW5pdFdpdGhTZWxlY3Rpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250QXRT
ZWxlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bWFya0xheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z1VwZGF0ZWRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKworMjAxNy0wNi0xNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFtXSzJdIEFkZCBXS1Byb2Nl
c3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQgY2xpZW50IHBv
bGljaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM0NzIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODU4ODE3PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IDZlZDBkZDM4NjAyZDVmZjUxMjM0NDc2NTY1ZjA3MzdhMjhmNTZhOTQuLjBlYTVlYzM3MTBmZDU3
NDk4YjBlNjc3ZTc0OWU1MmRlMjJmY2Q1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTU1LDEyICs1NSwx
MiBAQCBib29sIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1
cm4gbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzKCk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2xpZW50LmNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jbGllbnQub3BlblBh
eW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDY3YmRkMzQwYzk0YzFlYTExZTMyZWUwNzU4
NGEwYTI2ZTRjYjhkNmIuLmIzYjRkOGY0NDg5NzIzZWRmZWQxZDY3NDZjYWQwYTZkNDIwNDhhNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNp
bmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsOCArNTIs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9u
KTsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBib29sIGhhc0FjdGl2ZVNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNlc3Npb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
aW5kZXggMTc4N2I1N2VkNGQ1MWIxZjMxZTBmNWM1NTNjZjIyMGI3YmQxMzZiYy4uODMzM2FkNjYw
MTJiNjk4Yzg1Y2EzYWI2YjAzN2I3ZmU4Y2VlN2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBA
IC00NCw4ICs0NCw4IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGNhbk1ha2VQYXltZW50cygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChi
b29sKT4gY29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlblBheW1l
bnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNob3dQYXlt
ZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJ
Y29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVlc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDcyOTQyNmNlYTJj
NGU2ZDNiMDdlNzc1Y2QxMmViNGQ0NGViYTUyYTIuLmU5MzVmZjJhOTY4ZjYxMDhlN2RiY2M1OGQw
N2RlNGY5ZjdkMTg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC00ODgsOCArNDg4LDggQEAgY2xhc3MgRW1wdHlJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yQ2xpZW50IHsKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAgICAgYm9vbCBzdXBw
b3J0c1ZlcnNpb24odW5zaWduZWQpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBj
YW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
IH0pOyB9Ci0gICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
IHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAg
ICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29u
c3QgUGF5bWVudFJlcXVlc3QmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDQ1
NjI0YzQ5ZWI0NjljMDhhNWMzZjI5OTQwMTRkOWQxOTE2NGQ1NWUuLmZmYWE3ZTVjZWUwOWE3MTM0
M2NmNzkyNjNhYWFlZGEyMmFkMjhkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtODgsMTEgKzg4LDExIEBAIGJv
b2wgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIG1fY2xpZW50LT53
aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrXShSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92
ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVz
cG9uc2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KSB7CiAgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oCmluZGV4IDI1N2M1MDEyYmU1MTEzMjg1ZWI2OWEzY2I2M2ExN2JmNjcxNjZiYmIu
LmM5ZGMxOWZmM2FiZDQ5MDg4ZDg4NjkxNDBhZTdkNzBiNGEyZDkwZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wg
aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiZDVkOGM2ZDhiZThkOWM0ZGYxYzRkZjI4NTM2
M2IxNmExNzg3OGIuLjc3NDQ2ZTFjZWU5MGUwMTA2ZjNmOTliNDQ2NjMxNjdiMjJmOGZiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAzLDcgKzQwMyw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0MzU4YjdhMTZlOTQxMGVkOWU4MTdj
OTBmNWY3ZjE3YzI1MWI3YWM5Li42ZGRhMzRhOTZhY2JlMDc2MWJhMDRlNmZkZGUzZjU0NzMxZDgx
MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtOTksNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBhNjE2MGYwZjYyNWU3NmJiYmQ4MGE4MzZmMjg5ZDQ3
MGM1YzhmMzU4Li4xNTY3ZGM4MjMyZDM3Nzk0ZTc1NjQxNzFlYzIwYjk5M2FhNjc1ZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBO
U0Vycm9yICpwbHVnaW5DYW5jZWxsZWRDb25uZWN0aW9uRXJyb3IoKSBjb25zdDsKIAogICAgIC8v
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IG1ldGhvZHMuCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVu
Y3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQppbmRleCBmMTdiNjJjZjVhMmNjZTZhNTEzMzNhYzkzYjkxZDdiYzM3M2Qw
NTliLi4wMzc1YWUwMzIwOGRhOWRkMjQwYTM5MjQ1MjU1NzQ1YTYwZTYyZjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1MCiAgICAgbV9pbnN0YW5jZS0+ZGlzY29ubmVjdFN0cmVhbSh0aGlzKTsKIH0KIAotdm9p
ZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQordm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNl
bmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhl
cmUuCiAgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYmY0MzQxNTI3
NWI0YTZmMjMzMWUxZDFkNWE3Y2VjZmJhMDhmMjQ0MC4uNzZlZTg1ZmU2N2ZlMjY4ZWVhMjE0NGMy
ODVhZDc3NGM4OTAzMTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAg
IE5TRXJyb3IgKnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNvbnN0OwogCiAgICAg
Ly8gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgbWV0aG9kcy4KLSAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICBib29sIHdhbnRzQWxsU3Ry
ZWFtcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNjY3M2E5NGRiMjQzN2YzNDEzYWNj
YzYwODBlODlhZGUzZTc1ZDlmMC4uZjZlMGFhNWVmZWExZDFlZjI4MzEzNzdkNGVmYzZmMjMwMGU5
NjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6c3RvcCgpCiAgICAgICAgIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVy
cm9yKG1fbG9hZGVyLT5jYW5jZWxsZWRFcnJvcigpKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBw
bHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IDlkMDVlZmJm
NTE4NzM2MzA0ZTVlYWVkMTE4NzY5ZTAyZWY0MGUzNWMuLmY1ZWFmZTM5NDQzYzJkNmRkYTEzZTlj
ZWVjMWViNGIxZDFlZmJhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOCw4
ICszOCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZTsKLSAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCA5MWM3NGNiYzE2NzVmN2E3ZTZkMjEzMjUwZWI0
OGQ2YmVmNzhkMDQ2Li4wOWIxYzQyZDdjZWU2OTc1ZDRmMDZkMDJkMjZmNTI0N2VlOGZkZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00OCwxNiArNDgsMTYgQEAgYm9vbCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNhbk1ha2VQYXltZW50cygpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAg
IH0pOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBkYTgzM2FhZjRmOGJhZTQ0YjQ4MDRiMzUyMWZj
ZDE3N2I4Y2FkZDRlLi4xMzg3ZmFiYjAxMGNkM2MzMGYyZTdjNjNmMTMzOTZlZTM3NTAyYzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgQ1N0cmluZyYgcmUKICAgICBkZXN0cm95U3RyZWFtKHJlc3Vs
dFN0cmluZy5pc051bGwoKSA/IE5QUkVTX05FVFdPUktfRVJSIDogTlBSRVNfRE9ORSk7CiB9CiAK
LXZvaWQgUGx1Z2luU3RyZWFtOjp3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2Fs
bGJhY2spCit2b2lkIFBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVn
LWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRl
eCA2MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFlYmQ3Li4zYjZjNzEwNWYxMDk0
YjBhMDNhMGZiM2E2MTBlNzYzOWM1OGVkMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGRlc3Ryb3lTdHJlYW0oKTsKIAogICAgICAgICAvLyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudAotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcAppbmRleCBiZmZjMzgyMTIwNzgyOTFhMjFhNjNmZGMxNTlmOTk2NGUwMDEwMTkyLi45ZGZk
NmJjMWJhOTM4NjQzNWEwM2Q2MTUyMzhjNTM4NWNmMGVmNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMjkzLDEyICsy
OTMsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VQcm9j
ZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJs
b2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gKytsYXN0UmVxdWVzdElEOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SUQsIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVycy5zZXQocmVx
dWVzdElELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkdldFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHJlcXVlc3RJRCwgZmlsZW5hbWVzKSwgMCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApp
bmRleCA5Yzk0OTE5Y2NlNDg5MTNkNjE4ODU5MGQwMTVjMzQwYTdjNWUyZDVhLi4wZDI4NjU0MTlj
Yjg0YzJmNjQ5MDVlMDZmYjNlMWIzMmRjNjg2Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+IGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCiAKIHByaXZh
dGU6CkBAIC0xMTksNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgUmVmUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPj4gbV9pZGJTZXJ2
ZXJzOwogI2VuZGlmCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
Jik+PiBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVyczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiYpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxl
cnM7CiAKICAgICBEZXF1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VUYXNrczsKICAgICBM
b2NrIG1fZGF0YWJhc2VUYXNrTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXggMjljMjY0YjRiNjRhYTM1
NDFkOTY3ZDk0ODBiMmYzODBjMDdiM2UzZS4uMTUxMjhkY2QyNzIxMzlmMGFmOTE0MDMwOGY0YjE5
NzY5MzM0YWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEUpCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IGY3
YmJlNWJhYzY4OWRjYzJhMmMyYjliMTBmNmE2NWQwOWY3ZWRlODMuLjQ1MDNmZWZmYjlmNDNlMDA1
ZjY2MmE4MDA5MWVhNTlmN2RmNjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PGNocm9ubz4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDE1ODA3OWU1NWE2MmY1ZWRkYmEwZjE0MGZiN2Y5ZTAzZDUwNTE2OTUu
Ljg1ZjI2YTJjYjk1OWFkODExM2I4OWMxNWIyZWEyMWUyYzAyYmRmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IG1lc3NhZ2UpCiAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KIAotdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VD
YWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQordWludDY0X3QgQ29ubmVj
dGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9p
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB1
aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gYwogICAgIGlmICghbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2tRdWV1ZSkKICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LklQQy5JbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tRdWV1ZSIpOwogCi0gICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
LmFkZChtX25leHRJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAg
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy5hZGQobV9uZXh0SW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJldHVybiBtX25leHRJ
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGZjZTFlNjNiYzI5ZmNiYjJlZTNiZTcyMDYxZjgzNmFiNzNm
Zjc4OWQuLjJlMGM1OTM2MTZlOWQyMDdhMjRjMDExMGY5OTQ2MmZlODI5NTlmY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEJvb3N0TWFpblRocmVhZE9uU3luY01lc3NhZ2UoYm9v
bCBiKSB7IG1fc2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2FnZSA9IGI7IH0KICNlbmRp
ZgogCi0gICAgdWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB1aW50NjRfdCBpbnN0YWxsSW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCB1bmluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2sodWludDY0X3QpOwogICAgIGJvb2wgaGFzSW5j
b21pbmdTeW5jTWVzc2FnZSgpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGVuZGluZ1N5bmNSZXBseT4gbV9wZW5kaW5nU3luY1JlcGxpZXM7CiAKICAgICBMb2Nr
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1faW5jb21p
bmdTeW5jTWVzc2FnZUNhbGxiYWNrczsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2luY29taW5n
U3luY01lc3NhZ2VDYWxsYmFja1F1ZXVlOwogICAgIHVpbnQ2NF90IG1fbmV4dEluY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja0lEIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuaAppbmRleCBmZjM3YmY5ZTU0NGU0Yjk5ZmIwMmI1
OWJhN2VlZGE5YzM5YWRjZDlmLi44YWM1ZjFjNzA2Y2JhYzQ0YTEzNzY3OTNjMjM5Mjc5YjMxZTBj
YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRN
b25pdG9yLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgR1NvY2tldE1vbml0b3JfaAogI2Rl
ZmluZSBHU29ja2V0TW9uaXRvcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGUxODU5NWQ0MzFiNTNjMWYw
YjBmNjRlMzI2MWFlOTk0ZWM4M2E4M2QuLmI0Nzc1NmNiYzE4ZDRmZWU0ZjhlZWUzN2MxOGRiODVi
ZjlhODM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAK
ICNkZWZpbmUgV2ViS2l0TG9nZ2luZ19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ01hY3Jvcy5o
PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggMjI2MTg2MTBiMGYzZjM0Y2M3MDE0YmU1NjI5ZTg2YmY4NzY5NzRkZi4u
OTYyODY0ZjcyNzkzOWEzMTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIEFQSU9iamVj
dF9oCiAjZGVmaW5lIEFQSU9iamVjdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmNwcAppbmRleCBhNGY4YjAyNWZjMWM0MjJlNWM2NmNkOGU4MTQzZmQzODk3OGJkMTFmLi5k
ZmExYTM5NzA3OWQwNWI0MTRjNTQ1ODVmYmRhM2NkN2M1ZjhlZDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXN5bmNSZXF1ZXN0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVSZXF1ZXN0SUQoKQogICAgIHJldHVybiArK3JlcXVlc3RJRDsKIH0KIAotQXN5bmNS
ZXF1ZXN0OjpBc3luY1JlcXVlc3Qoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBhYm9ydEhhbmRsZXIp
CitBc3luY1JlcXVlc3Q6OkFzeW5jUmVxdWVzdChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJv
cnRIYW5kbGVyKQogICAgIDogbV9hYm9ydEhhbmRsZXIoV1RGTW92ZShhYm9ydEhhbmRsZXIpKQog
ICAgICwgbV9yZXF1ZXN0SUQoZ2VuZXJhdGVSZXF1ZXN0SUQoKSkKIHsKQEAgLTQ5LDcgKzQ5LDcg
QEAgQXN5bmNSZXF1ZXN0Ojp+QXN5bmNSZXF1ZXN0KCkKICAgICBBU1NFUlQoIW1fYWJvcnRIYW5k
bGVyKTsKIH0KIAotdm9pZCBBc3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGhhbmRsZXIpCit2b2lkIEFzeW5jUmVxdWVzdDo6c2V0QWJvcnRIYW5kbGVy
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBoYW5kbGVyKQogewogICAgIG1fYWJvcnRIYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Bc3luY1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaApp
bmRleCAwYzRhMGEwYzQxM2IwYTFjM2JlOWVlZjVjNzc1YmNmMTIzNTViOTU1Li40Mjc3NjE2OTEz
OWM4OTdiNmMxY2EwMjYyNWU3ODc2MDNmZDU0YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5j
UmVxdWVzdC5oCkBAIC0yNyw3ICsyNyw2IEBACiAjaWZuZGVmIEFzeW5jUmVxdWVzdF9oCiAjZGVm
aW5lIEFzeW5jUmVxdWVzdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MCwxNiArMzksMTYgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcmVx
dWVzdElEKCkgeyByZXR1cm4gbV9yZXF1ZXN0SUQ7IH0KIAotICAgIHZvaWQgc2V0QWJvcnRIYW5k
bGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZvaWQgc2V0QWJvcnRIYW5kbGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QWJvcnRlZCgpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4gdm9pZCBjb21wbGV0ZVJlcXVlc3QoQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEFzeW5j
UmVxdWVzdChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcik7CisgICAgZXhwbGlj
aXQgQXN5bmNSZXF1ZXN0KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBhYm9ydEhhbmRsZXIpOwog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29tcGxldGlvbkhhbmRsZXIoKSA9IDA7CiAKLSAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fYWJvcnRIYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4gbV9hYm9ydEhhbmRsZXI7CiAKIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZXF1
ZXN0SUQ7CkBAIC02MCwxMiArNTksMTIgQEAgY2xhc3MgQXN5bmNSZXF1ZXN0SW1wbCBmaW5hbCA6
IHB1YmxpYyBBc3luY1JlcXVlc3QgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHVzaW5nIEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUsIFQsIGNvbnN0IFQmPjo6dHlwZTsKIAotICAgIHN0YXRpYyBSZWY8
QXN5bmNSZXF1ZXN0PiBjcmVhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKEFyZ3VtZW50VHlwZTxBcmd1
bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgc3RhdGljIFJlZjxBc3luY1JlcXVl
c3Q+IGNyZWF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXN5bmNSZXF1ZXN0SW1wbDxBcmd1bWVudHMuLi4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBudWxscHRyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxBc3luY1JlcXVlc3Q+IGNy
ZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21w
bGV0aW9uSGFuZGxlciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGFib3J0SGFuZGxlcikKKyAgICBz
dGF0aWMgUmVmPEFzeW5jUmVxdWVzdD4gY3JlYXRlKFdURjo6RnVuY3Rpb248dm9pZChBcmd1bWVu
dFR5cGU8QXJndW1lbnRzPi4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGFib3J0SGFuZGxlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1lbnRzLi4uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgV1RGTW92ZShhYm9ydEhhbmRsZXIpKSk7CiAgICAgfQpAQCAtODMsNyArODIsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFzeW5jUmVxdWVzdEltcGwoc3RkOjpmdW5j
dGlvbjx2b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVy
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcikKKyAgICBBc3luY1JlcXVlc3RJ
bXBsKFdURjo6RnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJvcnRIYW5kbGVyKQog
ICAgICAgICA6IEFzeW5jUmVxdWVzdChXVEZNb3ZlKGFib3J0SGFuZGxlcikpCiAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CkBA
IC05NSw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBu
dWxscHRyOwogICAgIH0KIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFy
Z3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248dm9p
ZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPiB2b2lkIEFzeW5jUmVxdWVzdDo6Y29t
cGxldGVSZXF1ZXN0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXgg
ZWQ1MmY0M2MwOGNhZDJkNzNmMzQ3OGM3NGQ4OGViMzkxZDk5MTU1MS4uZWIyYmYzYTNjYjhjNjJl
NjhmNDM2ZjcyZGNlOWEzNWJmOGYyZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGhyZWFkQ291bnRMaW1pdDsKIH07CiAKLUNv
bXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiB1cGRhdGVGdW5jdGlvbikKK0NvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5M
b29wKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCiAgICAgOiBtX3VwZGF0ZVRp
bWVyKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLnJ1bkxvb3AodGhpcyksIHRoaXMsICZDb21w
b3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3VwZGF0ZUZ1bmN0aW9u
KFdURk1vdmUodXBkYXRlRnVuY3Rpb24pKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5n
UnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IGZiODE1MTg0NDg1NWRj
MDIxNDc0YjM5OWMxMzZiOTdmOTlhZTYwZGUuLjFmODZiZmY1OTc0NTczODJjYWQyYWU0MDZjNzEy
ZjcwNzQ2MjUyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTQzLDcgKzQyLDcgQEAgY2xhc3MgQ29tcG9zaXRpbmdS
dW5Mb29wIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbXBvc2l0aW5nUnVu
TG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIENvbXBvc2l0aW5nUnVuTG9vcChG
dW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB+Q29tcG9zaXRpbmdSdW5Mb29wKCk7CiAKICAgICB2
b2lkIHBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwpAQCAtNjUsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCiAgICAgUnVuTG9vcDo6VGlt
ZXI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX3VwZGF0ZVRpbWVyOwotICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3VwZGF0
ZUZ1bmN0aW9uOwogICAgIEF0b21pYzxVcGRhdGVTdGF0ZT4gbV91cGRhdGVTdGF0ZTsKICAgICBM
b2NrIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0
Y2hTeW5jQ29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmgKaW5kZXggYTM2MTkwN2NiYjE4MzM4ODM5OGJiYmJjYTdjN2FmYjU1MDkzNDU4
Zi4uM2Y5NzlmYjg2NTNmNjE4ZDUwYWYzMWQ4YTYyOWM2YjU4MDlkYjgwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
eHRNZW51SXRlbS5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDJhN2UzYTZiYWMwODYwMjhjOGQ3
NGM3NzQ1MGFkZDZiMmEyODlhNTkuLmI1N2RkZTQwZjNhYzdkMTljMWI2MjljYmUxNzcwNGZjOTkz
NDM0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRfaAog
I2RlZmluZSBBUElEb3dubG9hZENsaWVudF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJLaXQ6OldlYlBy
b3RlY3Rpb25TcGFjZSopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gY2FsbGJhY2spIHsgY2FsbGJhY2socmVxdWVzdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFj
aykgeyBjYWxsYmFjayhyZXF1ZXN0KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
aW5kZXggNTMzMWNiYTFmODAzNGMzZDliYjhkYTRiOGU3MzA1MjJiOTNjMDVlMS4uYmQ2OTdlODI0
NDFlMmNiNTQ0ZjJlMWUxNmQzYTRiYzkwMGI2NmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxv
YWRpbmdDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4g
Y29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9y
SWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoV1RGOjpG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCmluZGV4IGE1NWNmNTlhZTQyN2NkYzIxNjEwNGFjZGFiMjE3NWEwN2M1OGUyNTYuLjEyNTM2
NDI0NzhiYjFjMTBjYWVhNmUzYTg5NDMxNDdhOGRkNmZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJX
ZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogI2lmIFBM
QVRGT1JNKElPUykKIE9CSkNfQ0xBU1MgTlNBcnJheTsKQEAgLTc0LDcgKzczLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4gY29t
cGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0
ZU5ld1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdl
YktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggMzMzMmYyMzczZjgwMTdkZTFkNTk5ODdmNmVmZjU1N2IyMWQ5OTE3OS4u
YjI4YzBlYTIwNGY3ZWM5ODg3ODAxYzUzM2ZmMTVmM2ZlODBiYWUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHZvaWQg
V0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIHNjcmlwdFJlZiwKIH0KICNlbmRpZgogCi1zdGF0aWMgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoV0tTdHJpbmdS
ZWYsIFdLRXJyb3JSZWYsIHZvaWQqKSkKK3N0YXRpYyBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+IHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShXS1N0cmluZ1JlZiwgV0tF
cnJvclJlZiwgdm9pZCopKQogewogICAgIHJldHVybiBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0
IFN0cmluZyYgcmV0dXJuVmFsdWUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVl
KS5wdHIoKSksIGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRv
QVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjMGRiNzMz
MmIyMTcwNTYxZDk0OWU4OGYwMGIzNjQyZTU5ZjQ2YzA0Li5hOGIwNWFlZWEyOWVjMWFmYjgxZGU0
MmJiM2UzYzYxZTE2ZDgxMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjk2LDcgKzI5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1dlYlZpZXcgewogICAgIAogICAgIGludCBfYWN0aXZlQW5pbWF0ZWRSZXNpemVDb3VudDsKIAot
ICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBfc25hcHNob3RzRGVmZXJyZWREdXJp
bmdSZXNpemU7CisgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IF9zbmFwc2hvdHNE
ZWZlcnJlZER1cmluZ1Jlc2l6ZTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9zdGFi
bGVTdGF0ZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrczsKIAogICAgIFJldGFpblB0cjxXS1Bh
c3N3b3JkVmlldz4gX3Bhc3N3b3JkVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCA1OTVmZTc4OWU3NjA1MTVlZjAyM2QyZTJiMzQwNGRkM2ZlMTQ4
MTJhLi5lMmZmMzQ4NzA4MmQyYTI5ZDdkNzllOGI5M2ZhNGFhMDEwNjFiZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04NzMsMTAgKzg3MywxMCBA
QCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlcikoTlNEYXRhKik7
CiAKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6Okxp
bmtJY29uJiBsaW5rSWNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4gY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlIHsKKyAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgV1RGOjpGdW5jdGlvbjx2b2lkIChXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZSB7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJ
Y29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKIAotICAg
ICAgICAgICAgW21fd2tWaWV3IHBlcmZvcm1TZWxlY3RvcjpkZWxlZ2F0ZVNlbGVjdG9yKCkgd2l0
aE9iamVjdDpwYXJhbWV0ZXJzLmdldCgpIHdpdGhPYmplY3Q6W2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9h
ZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBbbV93a1ZpZXcgcGVyZm9ybVNlbGVj
dG9yOmRlbGVnYXRlU2VsZWN0b3IoKSB3aXRoT2JqZWN0OnBhcmFtZXRlcnMuZ2V0KCkgd2l0aE9i
amVjdDpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKT46OmZyb21DYWxs
YWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSWNv
bkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
ICAgICAgICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
IChOU0RhdGEgKik+KGxvYWRDb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKQEAgLTg4
Niw3ICs4ODYsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKLSAgICAgICAgICAgIH1dOworICAg
ICAgICAgICAgfSkuZ2V0KCldOwogICAgICAgICB9CiAKICAgICAgICAgV0tWaWV3ICptX3drVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWFQcm94eS5jcHAKaW5kZXggMWE0ZmY5NzkxZTJkM2Y0MDg4OWMzMmU4M2VkODQ4MjMz
NjljNzY4Ni4uYmRhZDJkZDU1YjQwNzhlYzBjM2VjODg1ZGI0ZjYwOTg4N2Y5OWQ0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKQEAgLTYzLDE0ICs2MywxNCBAQCBib29sIEFjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eTo6YWx3YXlzVXNlQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBh
Z2VQcm94eS5wcmVmZXJlbmNlcygpLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgJiYg
bV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS5mb3JjZUNvbXBvc2l0aW5nTW9kZSgpOwogfQog
Ci12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVy
V2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uXSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0g
ewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGU3ODkwYzgwNzg1YmEyYzQ4MTNjNDQ3MDk2MWUw
ZmJkY2M4OTcwNjcuLjc2ODNjM2YyNGE2ZDc0Y2EzMmY2MmZmNmNmMWJlNjM0ODIwOTcxYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveU5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDQyY2NmMWNjZGQ3YTFhN2Q0YWM5YjQ4MmVkODQ3YzExMmI0MGM0Njgu
LjdlZTBmZjFmYjRlMDU1ZDVkOTIzNDViZTk1MWNlZGVkOWM2YmZjNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCkBAIC05NSw5ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKIAogICAgIGJvb2wgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKTsK
LSAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgcGxhdGZv
cm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBw
bGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3QmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQppbmRleCAwZGI1NDBiYzg0NTUwNzNkM2I0MmJhMGY0MDc1YjFkOTBmNWY3
Y2MzLi5jYTc4MWQ5Y2I4NWJkNDBmNzU3YjliMjJiZmI3YjI1ZmE4ZDVkMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzUsNiArMzUs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTMwMCw1MSArMzAxLDUxIEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxp
Y2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9t
YWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJh
dGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXJdKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgeworICAgIHNv
ZnRMaW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9t
YWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCksIEJsb2NrUHRyPHZvaWQgKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGJhY2soW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
ewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBh
eW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsK
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBj
YW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5NYWtlUGF5bWVu
dHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXltZW50cyk7CiAg
ICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbHNlCiAgICAgaWYgKCFjYW5M
b2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFtjb21wbGV0aW9u
SGFuZGxlcl0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkIChCT09M
LCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIs
IGVycm9yKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyLCBjYW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5N
YWtlUGF5bWVudHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXlt
ZW50cyk7CiAgICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbmRpZgogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBp
bml0XSk7Ci0gICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50
aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBsZXRpb246W2Nv
bXBsZXRpb25IYW5kbGVyXShCT09MIHJlc3VsdCkgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCByZXN1bHRdIHsKKyAgICBbcGFzc0xpYnJhcnkg
b3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIg
ZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgfSk7Ci0g
ICAgfV07CisgICAgfSkuZ2V0KCldOwogfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGI1OWJiYjA0NzY3OGMxMjNhNDIz
Yzg5YTBjZTA4ZWQ0M2U4NGFkNTIuLjBmMDU3MGYzNmFmYWJkYjA1ODZiNGY4ZDBkZjVhODA0MzBk
MzU5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3Mv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
NDEsNyArNDEsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29u
VVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3
Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlD
bGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggMWQzMjFhMjQ5Y2Y1MGM5MWRkODc4Nzg0NmQ4
MWQ2ZGI0M2Y2Njc3ZC4uYTIyMjMwMjViZmRkZGRmY2E1ZTdlZDAwMTAyMDI0Y2I4ODk5MGMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3NLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoUGFzc0tpdCkKIApAQCAtNDAsMTMgKzQxLDEzIEBAIFNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUs
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BL
UGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVS
TFN0cmluZ3MsIHJlcXVlc3QpOwogCiAgICAgYXV0byBzaG93UGF5bWVudFVJUmVxdWVzdFNlZWQg
PSBtX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKICAgICBhdXRvIHdlYWtUaGlzID0gbV93ZWFr
UHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckNsYXNzKCkgcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRS
ZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246W3BheW1lbnRSZXF1ZXN0LCBz
aG93UGF5bWVudFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
Q2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJl
cXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJl
cXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAg
aWYgKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgz
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKICAgICAgICAgW3BheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpIGJlZ2luU2hlZXQ6
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpoaWRlUGF5bWVudFVJKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmZmUwMGY1MjFl
YzlhMWQxNTdiMzNkYTdkYTM0ZmE3MWIwMGU3NjcwLi4wNmNhOGE0MjBkYTg2YWYzYzc5YjIzMjNi
OTE0MGI3YjdiNDAzMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC05MjksNyArOTI5
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rp
b25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2lu
dGVyYWN0aW9ucycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKIAogICAgIC8vIFZhbGlkYXRl
IGFsbCBvZiB0aGUgcGFyYW1ldGVycyBiZWZvcmUgcGVyZm9ybWluZyBhbnkgaW50ZXJhY3Rpb25z
IHdpdGggdGhlIGJyb3dzaW5nIGNvbnRleHQgdW5kZXIgdGVzdC4KLSAgICBWZWN0b3I8c3RkOjpm
dW5jdGlvbjx2b2lkKCk+PiBhY3Rpb25zVG9QZXJmb3JtOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4+IGFjdGlvbnNUb1BlcmZvcm07CiAgICAgYWN0aW9uc1RvUGVyZm9ybS5yZXNl
cnZlQ2FwYWNpdHkoaW50ZXJhY3Rpb25zLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byBpbnRl
cmFjdGlvbiA6IGludGVyYWN0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYWVkMWU5MTRkYWU0OTAwNGVi
NTc3MzYzYTkyZWNiNDEyMjg0Y2RmNi4uNWEwY2MxYTlkOTJlZGU2OWI1MDdkN2VjZWNiOTA1ZGMz
MjQ3YTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5J
Y29uTG9hZGluZ0NsaWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGdl
dExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQppbmRleCAxYjkwOTI5NDQ4OTBjYjNkNmE2MTI5ZmJlNWM3YWJjZWM0NTAwYjJjLi40
OGI4MTJkYzI2YTk0YTQ2YTEzNWY2OWRiZDg1NTU1YjEyYTYxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLTlNEYXRhLmgiCiAjaW5jbHVkZSAiX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIl9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFs
LmgiCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC03MSw3ICs3Miw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+
SWNvbkxvYWRpbmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyKShOU0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGlu
Z0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYg
bGlua0ljb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPik+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIFdURjo6RnVuY3Rp
b248dm9pZCAoV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwpAQCAtODYsNyArODcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6
Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgog
CiAgICAgUmV0YWluUHRyPF9XS0xpbmtJY29uUGFyYW1ldGVycz4gcGFyYW1ldGVycyA9IGFkb3B0
TlMoW1tfV0tMaW5rSWNvblBhcmFtZXRlcnMgYWxsb2NdIF9pbml0V2l0aExpbmtJY29uOmxpbmtJ
Y29uXSk7CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93
ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpedm9pZCAoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdh
dGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAobG9hZENvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9hZENvbXBsZXRpb25I
YW5kbGVyID0gQmxvY2tfY29weShsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICAgICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQpAQCAtOTYs
NyArOTcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDAy
N2RiNTBlZjRkOTg0NjAyM2FiYmY3NWExOTZiY2YxMzg4NDQ0Y2EuLjM0NDM1NjAzMzAzYjFhNjEw
NjYzMjY3ZTJjZWM2MWZmZDFhNTczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgSEFWRShB
UFBfTElOS1MpCkBAIC0yODIsNyArMjgzLDcgQEAgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50Ojp+TmF2aWdhdGlvbkNsaWVudCgpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeUFwcExp
bmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25z
dCBTdHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4g
Y29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgdm9pZCB0cnlBcHBMaW5rKFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaW5nJiBjdXJyZW50
TWFpbkZyYW1lVVJMLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5z
aG91bGRPcGVuQXBwTGlua3MoKSkgewpAQCAtMjkwLDEzICsyOTEsMTEgQEAgc3RhdGljIHZvaWQg
dHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rp
b24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGxvY2FsQ29t
cGxldGlvbkhhbmRsZXIgPSBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlv
bkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRp
b25IYW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwg
c3VjY2Vzc10gewotICAgICAgICAgICAgKCpsb2NhbENvbXBsZXRpb25IYW5kbGVyKShzdWNjZXNz
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENvbXBsZXRpb25IYW5kbGVyOwotICAgICAgICB9
KTsKLSAgICB9XTsKKyAgICBbTFNBcHBMaW5rIG9wZW5XaXRoVVJMOm5hdmlnYXRpb25BY3Rpb24t
PnJlcXVlc3QoKS51cmwoKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChCT09MIHN1
Y2Nlc3MsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSBtdXRhYmxl
IHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgQmxv
Y2tQdHI8dm9pZCAoKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc3VjY2Vzc10geworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3VjY2Vzcyk7CisgICAgICAgIH0pLmdldCgpKTsKKyAgICB9KS5nZXQoKV07CiAjZWxz
ZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzBmOTBmNTQ3NzhhMGZmN2NkMTYx
YWY2MWZjYWYwMTMyYzQxMzJhYS4uN2IwMmYzNGQ2NmZhMjZhYTlmZTk2ZTM5ZjUzZmRlMzcxZDlj
Y2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBA
IC03Niw4ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQVBJOjpV
SUNsaWVudAogICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1Bh
Z2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBjcmVhdGVOZXdQYWdlQXN5
bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4pPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+KiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgICAgIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4gY3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248
dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OwogCiAgICAgICAgIHZvaWQgY2xvc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KaW5kZXggN2M1ZjZmYTQwOGFjNTA3YzM5ZjA4N2IwZWIxNzZiYmMzZTM1ZTMyMy4u
MzAwM2VhM2ZjZTlmYjk0ZTlhNTg3YTc2N2JiYjE3ZGJlNDZmMjE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6flVJQ2xpZW50KCkKIHsKIH0KIAotUmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBpbml0aWF0
aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+KiBjb21wbGV0aW9uSGFuZGxlcikKK1Jl
ZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2VDb21tb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJlZlB0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1Bh
Z2VDb21tb24oV2ViS2l0OjpXCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dl
YlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246
d2luZG93RmVhdHVyZXM6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICAgICAgWyhpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JO
YXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVy
ZXM6d3JhcHBlcihhcGlXaW5kb3dGZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8
dm9pZCAoV0tXZWJWaWV3ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9ICpj
b21wbGV0aW9uSGFuZGxlciwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHJlbGF0ZWRXZWJW
aWV3ID0gUmV0YWluUHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldKFdLV2Vi
VmlldyAqd2ViVmlldykgeworICAgICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBl
cihhcGlOYXZpZ2F0aW9uQWN0aW9uKSB3aW5kb3dGZWF0dXJlczp3cmFwcGVyKGFwaVdpbmRvd0Zl
YXR1cmVzKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChXS1dlYlZpZXcgKik+Ojpm
cm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCByZWxhdGVkV2ViVmlldyA9IFJldGFpblB0
cjxXS1dlYlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXShXS1dlYlZpZXcgKndlYlZpZXcp
IHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYktp
dDo6V2ViUGFnZQogICAgIHJldHVybiBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIGluaXRpYXRp
bmdGcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG51bGxwdHIpOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVh
dHVyZXMsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4p
PiBjb21wbGV0aW9uSGFuZGxlcikKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiBpbml0aWF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdURjo6
RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5k
b3dGZWF0dXJlc0FzeW5jKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsNyArMjQzLDcg
QEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIGluaXRpYXRpbmdG
cmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsICZjb21wbGV0aW9uSGFuZGxlcik7CisgICAgY3JlYXRlTmV3UGFnZUNv
bW1vbihwYWdlLCBpbml0aWF0aW5nRnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwg
d2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggM2M1
M2FhYzVmMDY1NmEzNmZmMzA4ZGM3ZjI3MGM1Mjc0N2E4OTU4NS4uN2I1ZTMwMjUwYWRhNjdiOWYy
YmVhMGU0NGEyNjQwMzNkMWMzYzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTI0MSw3ICsyNDEs
NyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAogICAgIExPRyhWaWV3R2VzdHVyZXMsICJTd2lw
ZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIG1pbGxpc2Vjb25kc1NpbmNlU3Rh
cnQsIGxvZy51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gcmVtb3ZhbENhbGxiYWNrKQordm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRz
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiByZW1vdmFsQ2FsbGJhY2spCiB7CiAgICAgbV9vdXRz
dGFuZGluZ0V2ZW50cyA9IGRlc2lyZWRFdmVudHM7CiAgICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBX
VEZNb3ZlKHJlbW92YWxDYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggY2Q3MDg3ZWFiNTdhY2Y1
YmUwOGU4NmEyZjcxZWEwNWM4YzRkYWUzYS4uYWE2OTk4MmNhMjg0YWI0NWEzZTQ2NmM3YzAzODg2
ZDM3ZGFjYTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgU25hcHNob3RSZW1vdmFsVHJhY2tlcigpOwogCi0gICAgICAgIHZvaWQgc3RhcnQo
RXZlbnRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgICAgICB2b2lkIHN0YXJ0KEV2ZW50
cywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAg
ICAgICAgYm9vbCBldmVudE9jY3VycmVkKEV2ZW50cyk7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3Ry
aW5nJiBsb2dSZWFzb24pOwogCiAgICAgICAgIEV2ZW50cyBtX291dHN0YW5kaW5nRXZlbnRzIHsg
MCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9yZW1vdmFsQ2FsbGJhY2s7Cisg
ICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3JlbW92YWxDYWxsYmFjazsKICAgICAgICAg
c3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX3N0YXJ0VGltZTsKIAogICAg
ICAgICBSdW5Mb29wOjpUaW1lcjxTbmFwc2hvdFJlbW92YWxUcmFja2VyPiBtX3dhdGNoZG9nVGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4
IDYxYzczMzJkMWY3Y2Y0NDJhYjYxZGIzNWIxZWRiZGFkYjBlZWQ5NzAuLmFkNDY4YmIyYzMxNDAx
YzQzN2Y3OWQzZDgwOWJkMTc2YmJmMTlkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BVktpdFNQSS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgotI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0yNDcsNyArMjQ2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV93aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkID0gZW5hYmxl
ZDsgfQogICAgIGJvb2wgd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDsgfQogCi0gICAgdm9pZCBw
cmVwYXJlRm9yTW92ZVRvV2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwcmVwYXJlRm9yTW92ZVRv
V2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICBOU1dpbmRvdyAqdGFyZ2V0V2luZG93Rm9yTW92ZVByZXBh
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRXaW5kb3dGb3JNb3ZlUHJlcGFyYXRpb247
IH0KIAogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDAxNTY1ZTQ3YmJkYjU0ZjVm
NTBlYzAyODA2ODYyY2UwYzNmMmZiOTkuLjI5ODZlNTNhMzJiN2QxODYyNGEzYTAxMGQ1ZGI2NTRk
ODIwZDg3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KQEAgLTIyMTAsNyArMjIxMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmVuZERlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5jKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6
OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFy
ZUZvck1vdmVUb1dpbmRvdyhOU1dpbmRvdyAqdGFyZ2V0V2luZG93LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3Nob3VsZERlZmVyVmlld0luV2lu
ZG93Q2hhbmdlcyA9IHRydWU7CiAgICAgdmlld1dpbGxNb3ZlVG9XaW5kb3codGFyZ2V0V2luZG93
KTsKQEAgLTIyMjAsNyArMjIyMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3Zl
VG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2CiAgICAgbV9z
aG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMgPSBmYWxzZTsKIAogICAgIGF1dG8gd2Vha1Ro
aXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgbV9wYWdlLT5pbnN0YWxsQWN0aXZpdHlTdGF0ZUNo
YW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXJdKCkgewor
ICAgIG1fcGFnZS0+aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihb
d2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIGlmICghd2Vha1Ro
aXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY1NDZiNmI3MWE5YjVlZjcyM2VmMTFlZDNh
YjRhNTU5ZWI0NmFmMzMuLjk2N2MyNDkwNGM3OGYyOWRkNGUxY2E1MGJlZWIxYzBiZWRlZDZhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpECiAgICAgfQogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERh
dGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaQogICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzczo6RmV0
Y2hXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgY2FsbGJhY2tJRCksIDApOwogfQog
Ci12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRl
Q2FsbGJhY2tJRCgpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRh
KHNlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBjYWxsYmFja0lEKSwgMCk7CiB9
CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNl
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTgwZDY5MTgyM2FiN2E1ZTUxMTcyYTIzMzViMGExMTg3
YWE3ZGEyMy4uNTI5OTc2NTg2MDdhMzYxNzExZWY5MTMyN2VjNDcxZTI4M2JlZjc5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
YXRhYmFzZVByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAgICAgfkRhdGFi
YXNlUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3RkOjpmdW5jdGlvbjx2b2lk
KFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV1RG
OjpGdW5jdGlvbjx2b2lkKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
IAogICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiYmKTsKIApAQCAtODgsOSArODgsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKICAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAo
V2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGVlOTdmMGM4NWExODMxMDYzZjVmNTIyY2Q2MmNjMmZk
MDYwNzNkNTUuLjVhOGE5YjdlOWI2MjMxMjU3YmE1MWQ0ODAwYjZjYTUyZDM0NWNlMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtOTAsNyArOTAs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJp
bmdEcmF3aW5nKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIEhpZGUgdGhlIGNvbnRlbnQgdW50aWwg
dGhlIGN1cnJlbnRseSBwZW5kaW5nIHVwZGF0ZSBhcnJpdmVzLgogICAgIHZpcnR1YWwgdm9pZCBo
aWRlQ29udGVudFVudGlsUGVuZGluZ1VwZGF0ZSgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
CmluZGV4IDA5YmEzMGI0ODNkMGZjODZmMTgwMTQ3OTBiNjYzYWMzZGJmMmVjNjQuLmZhMGE0ZGQz
ZjgzODgyNzUyZmJiNzVjYzk1ZDE5ZTI1ZTUyMzQ4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcApAQCAtMjIyLDEwICsyMjIsMTAg
QEAgaW50IERyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6d2ViVmlld0RyYXdD
YWxsYmFjayhEcmF3aW5nQXJlYVByb3h5SW0KICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXZvaWQg
RHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdGFydChzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFjaykKK3ZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdGFydChXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQogewogICAgIG1fc3RhcnRUaW1lID0gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKLSAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSwgImRyYXci
LCByZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2ViVmlld0RyYXdDYWxsYmFjayksIHRoaXMp
OwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDFfcyk7CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9p
ZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OmRpZERyYXcoKQogICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxMDBfbXMpOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJv
eHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZChD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2VQcm94eS5pc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKQEAgLTI2Nyw3ICsyNjcsNyBA
QCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYgogCiAgICAgaWYgKCFtX2RyYXdpbmdNb25pdG9yKQog
ICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVBy
b3h5SW1wbDo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKLSAgICBtX2RyYXdpbmdN
b25pdG9yLT5zdGFydChjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX2RyYXdpbmdNb25pdG9yLT5z
dGFydChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5o
CmluZGV4IDg5YzcxM2ZjODdhNzM1NDkzMDM4YWQxMGQ5MGRjMWNmNjA2MWQ0NTcuLjczNTMzZjQ3
MjRlNGY2NDViY2MzMzczYWE0MTA2NDllZWViMjM5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlU29vbigpOwogICAgIHZvaWQgZGlzY2Fy
ZEJhY2tpbmdTdG9yZSgpOwogCi0gICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpIG92ZXJyaWRlOwogCiAgICAgY2xhc3MgRHJhd2luZ01vbml0
b3IgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nTW9uaXRvcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBE
cmF3aW5nTW9uaXRvcihXZWJQYWdlUHJveHkmKTsKICAgICAgICAgfkRyYXdpbmdNb25pdG9yKCk7
CiAKLSAgICAgICAgdm9pZCBzdGFydChzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgICAgIHZvaWQgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgaW50IHdl
YlZpZXdEcmF3Q2FsbGJhY2soRHJhd2luZ01vbml0b3IqKTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZTsKICAgICAgICAgZG91Ymxl
IG1fc3RhcnRUaW1lIHsgMCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBtX2NhbGxiYWNrOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBtX2NhbGxiYWNrOwogICAgICAgICBSdW5Mb29wOjpUaW1lcjxE
cmF3aW5nTW9uaXRvcj4gbV90aW1lcjsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMTBmMzQyNzc2MjQxZTQ0NjRhMjIwN2MzODQwNjk5
ODBkZjJlM2VkYi4uYzQzMTExOTE3NTE3ZWFkMjQ4Mjc2OTZmMWE2MWE0OWQ4ODVjY2U3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMzAsNyArMzAs
NiBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTE5MCwxMyArMTg5LDYgQEAgcHVibGljOgogICAg
IH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90IHB1dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgIHsKLSAgICAgICAg
YXV0byBjYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6
dHlwZTo6Y3JlYXRlKFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKLSAgICAgICAg
cmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVD4KICAgICB1aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5j
dGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFj
dGl2aXR5VG9rZW4pCiAgICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxi
YWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlv
biksIGFjdGl2aXR5VG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNjc5ODFmMDg3ZWFkZDQz
ODYwZmE4ZjhkY2U3Zjc2YWI3ODI3Yzc4Li5iNTg4N2JlODcwMDczYmFlNWJjMTY0MzU4ZDk3MDVi
YjVmMDA2ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIyLDE1ICsxMjIsMTQgQEAgRG93bmxv
YWRQcm94eSogTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHIKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVE
b3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0
ZURhdGEpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0
Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9w
dGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIsIHNlc3Npb25JRF0oV2Vic2l0ZURh
dGEgd2Vic2l0ZURhdGEpIHsKKyAgICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBzZXNzaW9uSURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgUkVMRUFTRV9MT0df
SUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZG9uZSBmZXRjaGluZyBXZWJz
aXRlIGRhdGEiLCB0aGlzKTsKICAgICB9KTsKQEAgLTEzOCwyOCArMTM3LDI2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkZldGNo
V2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgY2FsbGJhY2tJ
RCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRh
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlLCAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhl
IE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEiLCB0aGlzKTsKIAotICAg
IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9uSURdIHsKKyAgICBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2Vzc2lvbklEXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9j
ZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
TmV0d29yayBwcm9jZXNzIGlzIGRvbmUgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAg
ICAgfSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdlYnNpdGVE
YXRhKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBjYWxsYmFja0lEKSwgMCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0
ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1By
b3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsg
cHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRo
aXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9u
SURdIHsKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3Mu
YWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHNlc3Npb25JRF0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHJlbGVhc2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkb25lIGRl
bGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggYzVlYjFjNmU4ODk2MzA3N2RmOGU1Zjk1NjgyYTNjNDk0ZDcxMTk1
NC4uOTljYWI1M2VkYmI5NzNkNGE2ZjYyMGY5MjE5MDU4Y2U2MzFhZDljMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAKICAgICBEb3dubG9hZFByb3h5KiBjcmVhdGVE
b3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgdm9p
ZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgc3RkOjpmdW5jdGlv
bjx2b2lkKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
Piwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmZXRjaFdl
YnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdl
YnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CkBAIC0xMjcs
OSArMTI3LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9u
UmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdl
YnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4g
bV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxi
YWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bl
bmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFwOwogICAgIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4MGMzMThjNzMxMzdhZDEw
NDI5MTI5OTA1OWI3NDBkMjQ4ZDIyMjkyLi5lZGRiYjE2NGU5ZDRjZGIxNzI3NmUyNDdhMTZkY2Jl
Y2Y5YjJhNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM2Nyw3
ICszNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9IDA7CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAppbmRleCAyNTA3NTkyNGViNWI2MzA4
ODk4NmMyYjY4ZmFkMTdkZjA2ZDliNzBkLi5lNzMyN2QwNDlkOTA1MWQyZjRiNGYwMjJmZDQyODY0
Y2NjYzRjMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmlu
Z091dEVudHJpZXNBZGRlZEFmdGVyVGkKICAgICB9KTsKIH0KIAotdm9pZCBQbHVnSW5BdXRvU3Rh
cnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3Qo
QVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0
aW9uVGltZXN0YW1wKT4gaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUpCit2b2lkIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5n
VGVzdChBUEk6OkRpY3Rpb25hcnkmIHRhYmxlLCBXVEY6OkZ1bmN0aW9uPGJvb2woZG91YmxlIGV4
cGlyYXRpb25UaW1lc3RhbXApPiYmIGlzRXhwaXJhdGlvblRpbWVBY2NlcHRhYmxlKQogewogICAg
IEFTU0VSVChpc0V4cGlyYXRpb25UaW1lQWNjZXB0YWJsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
CmluZGV4IGZlNmJjNmY1Njc5OTBmY2I1NDFlMWEyZDJiOWU5ZGY0NjU5MjdlY2IuLmNhMWIwMDQw
OTI3MDAwODkwM2QwMWNiYjc3NjAzYTVkN2RhMmIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaApA
QCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcl9oCiAKICNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjcsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sOwogCi0gICAgdm9pZCBzZXRBdXRvU3Rh
cnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChBUEk6OkRpY3Rpb25hcnkmLCBzdGQ6
OmZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPik7CisgICAgdm9pZCBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChBUEk6OkRpY3Rpb25h
cnkmLCBXVEY6OkZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPiYmKTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBdXRvU3RhcnRUYWJsZTsKICAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBBdXRvU3RhcnRUYWJsZT4gU2Vzc2lvbkF1dG9TdGFy
dFRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDZkMGJlOWZkZjMzNjFhMTFhNmU1NjE2NWY4
ZDdiOGMwYmQ1MjM1MmEuLjVlOWIzOTY3ZTFmZDQyNjg5YjBkMDA2NWRhMmFlYTZjNGY1NWE5NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAKQEAgLTk1LDIxICs5NSwyMSBAQCB2b2lkIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5QcgogICAgIG1fcGx1Z2luUHJvY2Vzc2VzLnJlbW92ZSh2ZWN0b3JJbmRleCk7CiB9CiAK
LXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmZldGNoV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4g
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNp
dGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUGx1Z2luUHJv
Y2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdp
blByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlTm9ybWFsLCBQbHVnaW5Qcm9j
ZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogCiAgICAgcGx1Z2luUHJvY2Vzcy0+ZmV0Y2hXZWJz
aXRlRGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2lu
Y2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nl
c3MocGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1R5cGVOb3JtYWwsIFBs
dWdpblByb2Nlc3NTYW5kYm94UG9saWN5Tm9ybWFsKSk7CiAKICAgICBwbHVnaW5Qcm9jZXNzLT5k
ZWxldGVXZWJzaXRlRGF0YShtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
SG9zdE5hbWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5h
bWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGhvc3ROYW1lcyxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVn
aW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlTm9y
bWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogICAgIHBsdWdpblByb2Nl
c3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGhvc3ROYW1lcywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggZGQ0NGQ2MjJjOTJjMzFlN2NkZDQx
OTkyMzFiNzk1ZTViN2ZjZTFkMi4uMmNlNDdiMzYxNjNhNzQ5YzZlNzY5ZmYxMDE4MDk1MzY1Njhk
ZDRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwg
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBs
dWdpblByb2Nlc3NQcm94eSopOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4gY29t
cGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
bmxpbmUgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBwcm9jZXNzU3VwcHJlc3Npb25E
aXNhYmxlZFRva2VuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiYWNkNzNlNTQwMzQwYTQ0MjZkNjBl
OTBlY2E3OTcxYmE1YjBkYTc5Li42ZmM3YTVjNmQzYzM5OTQxNjg1NmU1NDFhMmRlNWJjYzgzNTRi
NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblBy
b2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxT
dHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZmV0
Y2hXZWJzaXRlRGF0YShXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxs
YmFja0lEKCk7CiAgICAgbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpQbHVnaW5Qcm9jZXNzOjpHZXRTaXRlc1dpdGhEYXRhKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAot
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVk
U2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CiAgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6RGVs
ZXRlV2Vic2l0ZURhdGEobW9kaWZpZWRTaW5jZSwgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZv
ckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRh
Rm9ySG9zdE5hbWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGVmNDNlYWJiMDY4MGU3ZDcwYWVjNmFhY2IzNTNlZTMw
NWExNDc3OGMuLjcwODA2YzFlN2I2NDY5YjQwNzJkOGQyZWU5YzMzNGExZmMzMmMyZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCkBAIC03OCw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBlbmNvZGVkIGluIHRoZSBn
aXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2Yg
dGhlIGdpdmVuIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5j
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0
TmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIApAQCAtMTU3
LDIxICsxNTcsMjEgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3BlbmRp
bmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRh
Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKIAogICAg
IHN0cnVjdCBEZWxldGVXZWJzaXRlRGF0YVJlcXVlc3QgewogICAgICAgICBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2U7CiAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQ7CiAgICAgfTsKICAgICBWZWN0b3I8RGVsZXRlV2Vic2l0ZURhdGFSZXF1ZXN0
PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YVJlcXVlc3RzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2Fs
bGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1f
cGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogCiAgICAgc3RydWN0IERlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdCB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGhv
c3ROYW1lczsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRDsKICAgICB9OwogICAgIFZlY3Rv
cjxEZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lc1JlcXVlc3Q+IG1fcGVuZGluZ0RlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFt
ZXNDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
Pj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXNDYWxsYmFja3M7CiAKICAg
ICAvLyBJZiBjcmVhdGVQbHVnaW5Db25uZWN0aW9uIGlzIGNhbGxlZCB3aGlsZSB0aGUgcHJvY2Vz
cyBpcyBzdGlsbCBsYXVuY2hpbmcgd2UnbGwga2VlcCBjb3VudCBvZiBpdCBhbmQgc2VuZCBhIGJ1
bmNoIG9mIHJlcXVlc3RzCiAgICAgLy8gd2hlbiB0aGUgcHJvY2VzcyBmaW5pc2hlcyBsYXVuY2hp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlv
bi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAppbmRleCBm
YWM4NjMyNmMxNWUxNzZhOTI4NDJmNTIyYzlmNTU1NjU1NzY3ZTI2Li5jNDJlOThjZTY4YmJkMGQ4
NDFhN2I2Mjg2MTQ0YWU1Y2M2MjBjNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
cm9jZXNzQXNzZXJ0aW9uLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUHJvY2Vzc0Fzc2Vy
dGlvbl9oCiAjZGVmaW5lIFByb2Nlc3NBc3NlcnRpb25faAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIFBMQVRGT1JNKElPUykgJiYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGM4OGU2OGM5NWY0ZTVkNDhlYWE5MjE1MjhjNjZjNmI5
MDZjZjg2NmEuLjJmNmRiMGIyOWM3MWNhNGRhN2Y3ODk4ZWQzNjdiNTI5NjBlODM1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0z
OTUsNyArMzk1LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICBtX3Bh
Z2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVt
cykpOwogfQogCi1CYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tG
b3J3YXJkTGlzdFN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYpPiYgZmlsdGVyKSBjb25zdAorQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0Zv
cndhcmRMaXN0OjpiYWNrRm9yd2FyZExpc3RTdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2hh
c0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggMTc4
ZjA3ZTg3ZTgyMTk4MTQ2NTIwMjlhNmE3ODM4OTg5NmY3NTI2Ny4uYTA0MGIyMWJmZDZkMTkzNDg4
YTIzODQ3OGM1NjkxYmI0NGJkYjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGJhY2tMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkgY29u
c3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IGZvcndhcmRMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1
bnNpZ25lZCBsaW1pdCkgY29uc3Q7CiAKLSAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9y
d2FyZExpc3RTdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mKT4mKSBjb25zdDsKKyAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExp
c3RTdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJikg
Y29uc3Q7CiAgICAgdm9pZCByZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlKTsK
IAogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZGY4MDFmNDIyMDAxY2ZmNjUzMmUxZThkYTg1ZDBlZDUzYmEyNWJjMy4uNTU3
OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgxMWY4NDJlMGYxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTIyNSw3ICsy
MjUsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KIAogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KGNhbGxiYWNrKQogICAgICAgICBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5zZXQoc2Vzc2lvbklE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0yNTksOCArMjU5LDkgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnVucmVnaXN0ZXJPYnNlcnZlcihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPYnMKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGllbnQuY29va2llc0RpZENoYW5nZSh0aGlz
KTsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzLmdldChz
ZXNzaW9uSUQpKQotICAgICAgICBjYWxsYmFjaygpOworICAgIGF1dG8gbGVnYWN5SXRlcmF0b3Ig
PSBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKGxlZ2Fj
eUl0ZXJhdG9yICE9IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAoKCps
ZWdhY3lJdGVyYXRvcikudmFsdWUpKCk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb29raWVP
YnNlcnZlcnMuZmluZChzZXNzaW9uSUQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2Nvb2tpZU9i
c2VydmVycy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaAppbmRleCAyN2FhMmFjMDc5ZTdkMTgwOTZjM2Q1MDYzNDM0ZGQ2ZTk4Nzhi
YTVhLi44MmFmNzcwNjVkMmYyMWIwZjVjOTFjNjdkOWQ5NTQwYzI4YjJmNTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC04NCw3
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
V2ViQ29yZTo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgc2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFj
ayhXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9p
ZCBzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIAogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBA
IC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKLSAgICBI
YXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9sZWdh
Y3lDb29raWVPYnNlcnZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwogICAgIEhhc2hNYXA8
V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29va2llT2JzZXJ2ZXJz
OwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50IG1fY2xpZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZjA2OWMzZDM1YTQ5ZDgxMDdl
Y2ViZmNjMjA0ZWYzYzc3ZGNkZjJjLi5jODlmYzg5ZGU1MGNjZTg2MmM5NWY3MDNjOTQ3ZDRlOTg5
YWVhZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTU5Niw3ICsxNTk2LDcgQEAgSW50U2l6ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LnZpZXdTaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZh
bGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2
ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQsIFdURjo6RnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwpAQCAtMTYyMSw3ICsxNjIxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1l
bnQoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlbGVj
dGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0
ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24oU3RyaW5nKCksIGZhbHNlLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3du
KTsKQEAgLTIzNDYsMTEgKzIzNDYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29k
aW5nTmFtZSksIG1fcGFnZUlEKTsKIH0KIAotU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpPiYgZmlsdGVyKSBjb25zdAorU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0
YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZpbHRl
cikgY29uc3QKIHsKICAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogCi0gICAgc2Vzc2lv
blN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tGb3J3
YXJkTGlzdFN0YXRlKGZpbHRlcik7CisgICAgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0
YXRlID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tGb3J3YXJkTGlzdFN0YXRlKFdURk1vdmUoZmls
dGVyKSk7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBtX3BhZ2VMb2FkU3Rh
dGUucGVuZGluZ0FQSVJlcXVlc3RVUkwoKTsKICAgICBpZiAocHJvdmlzaW9uYWxVUkxTdHJpbmcu
aXNFbXB0eSgpKQpAQCAtMjgxOSw3ICsyODE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hl
cyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRp
b25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIs
IGZhbHNlLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjgzMCw3ICsy
ODMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIHNjcmlwdCwgc3RkOjpmdW5jdGlvbjwKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShzY3JpcHQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmlu
ZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NDEsNyArMjg0MSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NTMsNyArMjg1Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmlu
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJp
bmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNT
dHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC0yODc3LDcgKzI4NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQ
cm9maWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhYwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Ft
cGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CkBAIC0yODg5LDcgKzI4ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBp
c1dlYlByb2Nlc3NSZXNwb25zaXZlKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc1dl
YlByb2Nlc3NSZXNwb25zaXZlKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tGdW5j
dGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIHsKQEAgLTI4OTksNyArMjg5OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZShjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX3Byb2Nlc3Mt
PmlzUmVzcG9uc2l2ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogI2lmIEVOQUJM
RShNSFRNTCkKQEAgLTI5MTUsNyArMjkxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250
ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0
cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7CkBAIC0zODI3LDcgKzM4MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlYwogCiAgICAgfTsKIAotICAgIGlmIChtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlQXN5bmMo
dGhpcywgZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwgd2luZG93RmVhdHVyZXMs
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgaWYgKG1fdWlD
bGllbnQtPmNyZWF0ZU5ld1BhZ2VBc3luYyh0aGlzLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRh
LCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFtjb21wbGV0
aW9uSGFuZGxlcl0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgeyBjb21wbGV0aW9uSGFu
ZGxlcihuZXdQYWdlKTsgfSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IG5ld1BhZ2UgPSBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKHRoaXMsIGZyYW1lLCBz
ZWN1cml0eU9yaWdpbkRhdGEsIHJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSk7CkBAIC02Mjg1LDcgKzYyODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQog
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4
dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3JvdXAsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pLCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMo
c3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMo
V1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihFZGl0aW5nUmFuZ2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC02Mjk2LDcgKzYyOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFu
Z2VBc3luYyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwogICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRSYW5nZUFzeW5jKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJh
bmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewog
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKQEAgLTYzMDcsNyArNjMwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENh
bGxiCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFu
Z2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2lu
dEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV1RGOjpGdW5jdGlvbjx2b2lk
ICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKDAsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNjMxOCw3ICs2MzE4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHMKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRSZWN0KCksIEVkaXRpbmdS
YW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTYzNjIsNyArNjM2Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZChib29sIGVuYWJsZWQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OnRh
a2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUs
IFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtNjU4MiwxNyArNjU4MiwxNSBAQCB2b2lkKiBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUAogICAgIHJl
dHVybiBtX3BhZ2VDbGllbnQuaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhp
dFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgdHlwZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKCkpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y29waWVkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICBhdXRvIHZvaWRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtjb3BpZWRDb21w
bGV0aW9uSGFuZGxlcl0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgY29waWVkQ29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgQmxvY2tfcmVsZWFzZShjb3BpZWRDb21wbGV0aW9u
SGFuZGxlcik7CisgICAgYXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsK
ICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lE
KTsKQEAgLTY3MTYsNyArNjcxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZl
bnRUZXN0VHJpZ2dlcigpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9k
cmF3aW5nQXJlYSkgewogICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKQEAgLTY3NDYsNyArNjc0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJv
eHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikgeworICAgIG1faWNvbkxv
YWRpbmdDbGllbnQtPmdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWZQdHI8V2ViUGFnZVByb3h5Pih0aGlzKSwgbG9hZElkZW50aWZpZXJdKFdURjo6
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikgewogICAgICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYg
KGNhbGxiYWNrRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxs
cHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBlMjI0NjQxM2NmOGY0MTUxNTU4YzBiYmYzZWNhY2E1ZTIz
NWRlNzAxLi44NGRmNTgwMDA1ZjZiNTI0ZWQ5MDc3MmFjMjM0ZjNmM2M3ZWI0MDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZpZXdX
aWxsRW5kTGl2ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jiwg
c3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIAogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKICAgICB2b2lkIHJl
c3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKTsKQEAgLTQ1OCw3ICs0NTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3Ry
aW5nKCkpOwotICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIGNvbnN0IEVkaXRvclN0
YXRlJiBlZGl0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yU3RhdGU7IH0KICAgICBi
b29sIGNhbkRlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdGVkUmFuZ2UoKSAmJiBpc0Nv
bnRlbnRFZGl0YWJsZSgpOyB9CkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZSAm
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkNhcHR1cmVEZXZpY2VzQXJlTXV0ZWQ7IH0KIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7
CisgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgZG91Ymxl
IGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBl
eHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpAQCAtNTAyLDI2
ICs1MDIsMjYgQEAgcHVibGljOgogICAgIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5
ZXJUcmVlKHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8s
IHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVp
bnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hl
cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
dWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUJsb2Nr
U2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCB1aW50MzJfdCB0b3Vj
aCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsK
LSAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0UG9z
aXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
Pik7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgbW92ZVNl
bGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29y
ZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnko
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9u
RGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRv
dWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBhcHBseUF1
dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+KTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNl
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIFdURjo6RnVu
Y3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBiZWdpblNlbGVj
dGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgV1RGOjpGdW5jdGlv
bjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0
b2NvcnJlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIGJvb2wgYXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBjb250ZXh0QmVmb3Jl
LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGNvbnRl
eHRBZnRlciwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKLSAgICB2b2lk
IHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
KyAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9s
ZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2
b2lkIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJik7CkBAIC01MzIsNyArNTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwogICAgIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgdWlu
dDY0X3QgaW1hZ2VTaXplKTsKICAgICB2b2lkIGRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRv
dWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwg
ZmxvYXQgc2hyaW5rVGhyZXNob2xkKTsKLSAgICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShi
b29sIGlzRm9yd2FyZCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFs
dWVBc051bWJlcihkb3VibGUpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRl
eCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwpA
QCAtNTQ2LDEyICs1NDYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0
aWNDbGljaygpOwogICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZO
ZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdv
cnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KTsKLSAgICB2b2lk
IGdldFNlbGVjdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAg
dm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIHNldEZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0SXNTY3JvbGxpbmdPclpvb21pbmcoYm9vbCk7Ci0g
ICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwotICAgIHZvaWQgcmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChp
bnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Cisg
ICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0
KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIHZvaWQgZGlkUGVyZm9ybURhdGFJ
bnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKICAgICB2b2lkIGRp
ZEhhbmRsZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVxdWVzdChib29sIHN0YXJ0ZWQpOwpAQCAtNTkz
LDEwICs1OTMsMTAgQEAgcHVibGljOgogICAgIExheWVyT3JWaWV3KiBhY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVj
dGlvblVwZGF0ZSA9IGZhbHNlKTsKLSAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoc3RkOjpm
dW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAg
dm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBv
aW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVp
bnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9u
PHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50
QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRl
cmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5
bmMoKTsKIApAQCAtNjA3LDkgKzYwNyw5IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJp
YnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBzZXRGb250KGNvbnN0IFN0cmluZyYgZm9udEZhbWlseSwgZG91YmxlIGZv
bnRTaXplLCB1aW50NjRfdCBmb250VHJhaXRzKTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKICAgICBOU1dpbmRvdyAqcGxhdGZvcm1X
aW5kb3coKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgZXN0aW1h
dGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiA9IG51bGxw
dHIpIGNvbnN0OworICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxi
b29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgPSBudWxscHRyKSBjb25zdDsKICAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3Rh
dGUsIGJvb2wgbmF2aWdhdGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c1RleHRab29tKCkgY29uc3Q7
CkBAIC03NzgsMjIgKzc3OCwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZ01hdGNoZXMoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mIG1hdGNoUmVj
dHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsKIAotICAgIHZvaWQgZ2V0Q29u
dGVudHNBc1N0cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQg
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBpc1dlYlByb2Nlc3NSZXNwb25z
aXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4pOwor
ICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldEJ5dGVjb2RlUHJv
ZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKT4mJik7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdm9pZCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFt
ZVByb3h5KiwgQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKLSAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Cisg
ICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24s
IGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENh
bGxiYWNrPiYmKTsKIAogICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Kik7CkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9vbCYgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mKTsK
ICNlbmRpZgogCi0gICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29y
ZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3QsIFdlYkNvcmU6OkludFNp
emUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAg
ICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCk7CiAgICAgdm9pZCBuYXZpZ2F0aW9u
R2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KTsKQEAgLTEwOTAsNyArMTA5MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRl
c3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pik7CiAKLSAgICB2b2lkIGlu
c3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCheY29tcGxldGlv
bkhhbmRsZXIpKCkpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0
aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgdm9pZCBoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQpOwogICAgIHZvaWQg
ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKTsKQEAgLTExNDUsNyArMTE0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEZvciB0ZXN0aW5nCiAgICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJp
Z2dlcigpOwotICAgIHZvaWQgY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShzdGQ6OmZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBjYWxsQWZ0ZXJO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogCiAgICAgdm9pZCBkaWRSZWFjaExheW91dE1pbGVzdG9uZSh1aW50MzJfdCBs
YXlvdXRNaWxlc3RvbmVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA0MDE5ZjI3MzA4ODhlMjFlZmZhODJmN2MyZmMwYjA3MDU4OGJkNzdk
Li5jMzJjYjYzMzlmYWM4OGEyNmFiNDFiMjY2YzIxYjQ2NWU4MmUzNTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE2NSw3ICsxMTY1LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNI
b2xkaW5nTG9ja2VkRmlsZXMpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUp
PiBjYWxsYmFjaykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojppc1Jlc3BvbnNpdmUoV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKG1faXNSZXNwb25zaXZlID09IE5vT3JNYXliZTo6Tm8pIHsKICAgICAgICAgaWYgKGNh
bGxiYWNrKSB7CkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdgog
ICAgIH0KIAogICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsKKyAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1haW5UaHJlYWRQaW5nKCksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGQwMGI0
NzQ5NDk5NzQzOWMyZThkZTM0NTEzNWM5MWEyNTMxYTkyMWUuLmI1YjQ5OTNhMmViMjEyZmRmYzAw
NjgwMDZiN2ZjY2YyMmQ4NTY3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlaW5z
dGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwog
Ci0gICAgdm9pZCBpc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZSk+KTsKKyAgICB2b2lkIGlzUmVzcG9uc2l2ZShXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWFpblRocmVhZFBpbmcoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NQaW5nKCk7CiAKQEAgLTI4Nyw3ICsyODcsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
U3RyaW5nLCB1aW50NjRfdD4gbV9wYWdlVVJMUmV0YWluQ291bnRNYXA7CiAKICAgICBlbnVtIGNs
YXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwotICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNw
b25zaXZlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogCiAgICAgVmlz
aWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCBmN2I4NjVmZmVhYWNmNGE1ZmYzNTA2MjUwZmE3NDUxMzY3NTM1NjQzLi44MThkMDFkY2Zl
YTQxYWUxYTdlZjhhMDYxN2ExNGYzYjZkMzk2YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNz
aW9uSUQuaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcAppbmRleCBkMjRhMDIzOGY0NjAzOGVmNTMxYmU0MGYwMjgzZGE5
ZjVjNzI0ZTU3Li5iZWRhNzVlOWIzZTgxNGNhYTYzZTA2YjZjNDE4NjJkNmUwYTMyOTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBub3RpZmllcjsKICAgICB9CiAKLSAgICB2b2lkIGFkZChEYW1hZ2UgZGFtYWdlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKKyAgICB2b2lkIGFkZChEYW1hZ2Ug
ZGFtYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBnZGtf
d2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5j
PigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CkBAIC05MywxNCArOTMsMTUgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0CiAgICAgewotICAgICAg
ICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9ucy5nZXQo
ZGFtYWdlKSkgewotICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAgICAgICAgYXV0byBp
dCA9IG1fbm90aWZ5RnVuY3Rpb25zLmZpbmQoZGFtYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
bm90aWZ5RnVuY3Rpb25zLmVuZCgpKSB7CisgICAgICAgICAgICAoKCppdCkudmFsdWUpKCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9u
b3RpZnlGdW5jdGlvbnM7CisgICAgSGFzaE1hcDxEYW1hZ2UsIFdURjo6RnVuY3Rpb248dm9pZCgp
Pj4gbV9ub3RpZnlGdW5jdGlvbnM7CiB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTE+IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IDZiYmVhMmE5YWExYzUyYWM0NTc1MjIyMjRlYWNkOGQzMmU0
ZDQ0ZmIuLjM4ZGQxMmQxZWYwNDQ1MTU5ZjMzM2I0NDM0NzdkNTI3MDY1OTI0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTIw
Miw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlQXZvaWRzVW5zYWZlQXJl
YShib29sIGF2b2lkc1Vuc2FmZUFyZWEpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
Ci0gICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBi
NWY2NWI2YjI2NDkzNTM5NDZmNDllZDlkMGZhODc4YjdlMWVhODM4Li4wMjkzMjIxMjI5OGRlMjMz
YTNlOGQ2ZWYyMjk1MjFjYmVjMjdlY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hF
Q0tfQkFTRShhc3NlcnRpb24sIG1fd2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9u
KCkpCiAKQEAgLTgwNywyMCArODA4LDIwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUFj
dGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZlU2VzCiB9CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKLXZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIHBhc3N3b3JkSGFuZGxlciA9IFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1N0cmluZyAqcGFzc3dvcmQpIHsK
KyAgICBhdXRvIHBhc3N3b3JkSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQgKCk+Ojpmcm9tQ2FsbGFi
bGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5TU3Ry
aW5nICpwYXNzd29yZCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwYXNzd29yZCk7Ci0g
ICAgfTsKKyAgICB9KTsKIAogICAgIGlmIChXS1Bhc3N3b3JkVmlldyAqcGFzc3dvcmRWaWV3ID0g
bV93ZWJWaWV3Ll9wYXNzd29yZFZpZXcpIHsKICAgICAgICAgQVNTRVJUKGZpbGVOYW1lID09IFN0
cmluZyB7IHBhc3N3b3JkVmlldy5kb2N1bWVudE5hbWUgfSk7CiAgICAgICAgIFtwYXNzd29yZFZp
ZXcgc2hvd1Bhc3N3b3JkRmFpbHVyZUFsZXJ0XTsKLSAgICAgICAgcGFzc3dvcmRWaWV3LnVzZXJE
aWRFbnRlclBhc3N3b3JkID0gcGFzc3dvcmRIYW5kbGVyOworICAgICAgICBwYXNzd29yZFZpZXcu
dXNlckRpZEVudGVyUGFzc3dvcmQgPSBwYXNzd29yZEhhbmRsZXIuZ2V0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBbbV93ZWJWaWV3IF9zaG93UGFzc3dvcmRWaWV3V2l0aERvY3Vt
ZW50TmFtZTpmaWxlTmFtZSBwYXNzd29yZEhhbmRsZXI6cGFzc3dvcmRIYW5kbGVyXTsKKyAgICBb
bV93ZWJWaWV3IF9zaG93UGFzc3dvcmRWaWV3V2l0aERvY3VtZW50TmFtZTpmaWxlTmFtZSBwYXNz
d29yZEhhbmRsZXI6cGFzc3dvcmRIYW5kbGVyLmdldCgpXTsKICAgICBOYXZpZ2F0aW9uU3RhdGU6
OmZyb21XZWJQYWdlKCptX3dlYlZpZXctPl9wYWdlKS5kaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlj
a0xvb2tEb2N1bWVudCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQzYmI0ZjA2Y2NkMzU3OGJkMDI0Nzk0ZTQx
ZTA4NWM0OTI2ODg2MDIuLjQ0M2E0OGIyMjA4YzFjMzlkMDcyNzBkYzI2ZTg1MTYzMDhmNmU3Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVyVHJlZUNvbW1pdENv
bXBsZXRlKCkKICAgICBtX3BhZ2VDbGllbnQubGF5ZXJUcmVlQ29tbWl0Q29tcGxldGUoKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRl
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCks
IDAsIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDM0LDcgKzQzNCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50
MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91
Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJy
b3I6OlVua25vd24pOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBs
YWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRU
ZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJl
Y3Q+JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bihWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PigpLCBTdHJpbmcoKSwgMCwgMCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2Nv
cnJlY3Rpb24KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFj
a0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDc3LDcg
KzQ3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0
cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFs
VGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmV4
ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIFdl
YlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24s
IGNvbnN0IFN0cmluZyYgbwogICAgIHJldHVybiBhdXRvY29ycmVjdGlvbkFwcGxpZWQ7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFs
aWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVu
a25vd24pOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0
V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2luCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFy
aXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTUxNyw3ICs1MTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRp
cmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29y
ZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6Om1v
dmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFdU
Rjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1v
dmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Z3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKIH0KICAgICAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25B
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTUzOSw3
ICs1MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSQogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YmVn
aW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01NTAs
NyArNTUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdURjo6RnVu
Y3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bigwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTU2Miw3ICs1NjIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LAogICAgIAogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
dWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigwLCBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2Vi
Q29yZTo6SW50UAogICAgIAogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlv
bkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmlu
ZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTU4NSw3ICs1ODUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBjbwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVxdWVzdERpY3RhdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVj
dGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgU3RyaW5nKCksIFN0
cmluZygpLCBTdHJpbmcoKSwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBA
IC02MDEsNyArNjAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChTdHJpbmcmIGJlZm9yZUNvbnRleHQsIFN0cmluZyYgbWFya2UKICAgICBtX3Byb2Nlc3Mt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwg
TWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1dG9jb3JyZWN0aW9uQ29udGV4dDo6UmVwbHkoYmVmb3Jl
Q29udGV4dCwgbWFya2VkVGV4dCwgc2VsZWN0ZWRUZXh0LCBhZnRlckNvbnRleHQsIGxvY2F0aW9u
LCBsZW5ndGgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rp
b25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7
CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW4KICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdl
c3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVp
bnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKQEAgLTcxOCw3ICs3MTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0
V29yZEJhY2t3YXJkKCkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
bGVjdFdvcmRCYWNrd2FyZCgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIHN0ZDo6ZnVuY3Rpb248
dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVj
dHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+KCksIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNzI5LDcgKzcyOSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29y
ZTo6VGV4dEdyCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0
c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Z3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMy
X3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2Fs
bGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlv
bk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlv
blJlY3Q+KCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNzQwLDcgKzc0MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhU
ZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNl
bGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6Om1v
dmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
VW5rbm93bik7CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKCkKICAgICBtX3BhZ2VDbGllbnQuZGlzYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2goKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9k
ZShib29sIGlzRm9yd2FyZCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRBc3Npc3Rl
ZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAt
MTE0Niw3ICsxMTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0QKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICBtX3BhZ2VDbGllbnQucmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoZmlsZU5hbWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKV0oY29uc3QgU3RyaW5nJiBwYXNzd29yZCkgeworICAgIG1fcGFnZUNsaWVudC5y
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChmaWxlTmFtZSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oY29uc3QgU3RyaW5nJiBwYXNzd29yZCkgewogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQocGFzc3dvcmQpLCBwcm90ZWN0ZWRUaGlzLT5t
X3BhZ2VJRCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDFl
YjBjYmZjNWI1Y2NiZTE5YjkzNmNjNmFkYTQ1YzQ5MTA2Nzc5NDQuLmZlZDIzMmQxN2ZiZTlkOTcy
Mzk0YmRlMTU5ZTZjYmI5Y2Q1ZWUzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCkBA
IC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gRm9yIG5vdywgYWxsIGNhbGxi
YWNrcyBhcmUgY2FsbGVkIGJlZm9yZSBjb21taXR0aW5nIGNoYW5nZXMsIGJlY2F1c2UgdGhhdCdz
IHdoYXQgdGhlIG9ubHkgY2xpZW50IHJlcXVpcmVzLgogICAgIC8vIE9uY2Ugd2UgaGF2ZSBvdGhl
ciBjYWxsYmFja3MsIGl0IG1heSBtYWtlIHNlbnNlIHRvIGhhdmUgYSBiZWZvcmUtY29tbWl0L2Fm
dGVyLWNvbW1pdCBvcHRpb24uCi0gICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBhMWIyMjk5
OTQ3ZmIxMjU3YzhlZTNjYzI1YjczNTliNTNmMWZlNjc1Li5mY2M0MzVlYTg0ZjM4ZDZhZjMxNjcw
ZGM3OWYwN2MwMWU3NGUwMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC00
NDAsNyArNDQwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0
Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpCiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV93ZWJQYWdl
UHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JP
cHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKLXZvaWQg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJh
d2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1
bmN0aW9uKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFm
dGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFs
aWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAppbmRl
eCBmMTgyNTNmNzczMDRiZTZiMGE5N2E5ZmE1OTQ1OWEyNzcyMTdjNTM3Li5kYTBjM2UwZjg1NDdm
YzhjODIzZWYxYTIzYjk1Y2I2MjZkYWExZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2lsbFNlbmRVcGRhdGVHZW9tZXRyeSgpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNzE3MzMyNDAz
NjM2NzUwNDY0NmE4MGVhYmJkN2M3ZmM4YzYyMTE3Zi4uYmU4OWU1M2YwMDAwMzExNzY0ZjM2NDcz
NmViYTRlMjVkNzE2YzZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpA
QCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5o
PgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJUEM7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTIxMSwxMiArMjEyLDEyIEBAIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIEZsb2F0CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhOjpDb21taXRUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pLCBtX3dlYlBhZ2VQ
cm94eS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFjaykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIFRoaXMg
Y2FsbGJhY2sgaXMgcHJpbWFyaWx5IHVzZWQgZm9yIHRlc3RpbmcgaW4gUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuIFdlIGNvdWxkIGluIHRoZW9yeSB3YWl0IGZvciBhIENBIGNvbW1pdCBoZXJl
LgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgQmxvY2tQdHI8dm9pZCAo
KT46OmZyb21DYWxsYWJsZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewogICAgICAg
ICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKLSAgICB9KTsKKyAgICB9KS5n
ZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCBiNTU0ZDE3YmNlYjZi
OWMxOGIxMmViN2ViNjBiNGViZjMzNjQzZTdmLi44NWY1ZGUyZmQzMDM3MDY0NjE3OTU2ZGI2OTYz
ZGRkNmRjNjI1NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dL
VGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dL
VGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMTQyLDggKzE0Miw4IEBAIEBlbmQKIEBpbXBsZW1lbnRh
dGlvbiBXS1RleHRGaW5kZXJDbGllbnQgewogICAgIFdlYlBhZ2VQcm94eSAqX3BhZ2U7CiAgICAg
TlNWaWV3ICpfdmlldzsKLSAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoTlNBcnJheSAqLCBi
b29sIGRpZFdyYXApPj4gX2ZpbmRSZXBseUNhbGxiYWNrczsKLSAgICBEZXF1ZTxzdGQ6OmZ1bmN0
aW9uPHZvaWQoTlNJbWFnZSAqKT4+IF9pbWFnZVJlcGx5Q2FsbGJhY2tzOworICAgIERlcXVlPFdU
Rjo6RnVuY3Rpb248dm9pZChOU0FycmF5ICosIGJvb2wgZGlkV3JhcCk+PiBfZmluZFJlcGx5Q2Fs
bGJhY2tzOworICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZChOU0ltYWdlICopPj4gX2ltYWdl
UmVwbHlDYWxsYmFja3M7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYlBh
Z2VQcm94eSYpcGFnZSB2aWV3OihOU1ZpZXcgKil2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggNDBmYTQx
ZmM2ZWJmN2E3YTg2ZTk1M2U3MmEwNjA3Y2U2OTA0NmM1YS4uZGEzYzJiOGI4YzBjZTFiNGFkNWE3
YzczZmRjNDk2Nzg0ZTQ2Y2UxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtNzgsMjAgKzc4LDIwIEBAIC0g
KEFQSTo6T2JqZWN0Kil1c2VyRGF0YQogQGVuZAogCiBAaW50ZXJmYWNlIFdLU2VsZWN0aW9uSGFu
ZGxlcldyYXBwZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBfc2Vs
ZWN0aW9uSGFuZGxlcjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IF9zZWxlY3Rpb25IYW5k
bGVyOwogfQotLSAoaWQpaW5pdFdpdGhTZWxlY3Rpb25IYW5kbGVyOihzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+KXNlbGVjdGlvbkhhbmRsZXI7CistIChpZClpbml0V2l0aFNlbGVjdGlvbkhhbmRsZXI6
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJilzZWxlY3Rpb25IYW5kbGVyOwogLSAodm9pZClleGVj
dXRlU2VsZWN0aW9uSGFuZGxlcjsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLU2VsZWN0aW9u
SGFuZGxlcldyYXBwZXIKLS0gKGlkKWluaXRXaXRoU2VsZWN0aW9uSGFuZGxlcjooc3RkOjpmdW5j
dGlvbjx2b2lkICgpPilzZWxlY3Rpb25IYW5kbGVyCistIChpZClpbml0V2l0aFNlbGVjdGlvbkhh
bmRsZXI6KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJilzZWxlY3Rpb25IYW5kbGVyCiB7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgCi0gICAgX3NlbGVjdGlvbkhhbmRsZXIgPSBzZWxlY3Rpb25IYW5kbGVyOworICAgIF9z
ZWxlY3Rpb25IYW5kbGVyID0gV1RGTW92ZShzZWxlY3Rpb25IYW5kbGVyKTsKICAgICByZXR1cm4g
c2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCAxN2NjYmE0OGJmOWU3NGQ2ZWY1MGQ5MTNjODRiYzRjNzE5NWM3NmMyLi4x
YTY0ZTc5YjhjYzhkYTJiYzFkODRiMWIyN2JmM2M4MGY0MmRlNTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTc0LDcgKzE3NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmFuZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmlu
ZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1
bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihBdHRyaWJ1dGVkU3RyaW5nKCksIEVkaXRpbmdS
YW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTIwMCw3ICsyMDAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2Fs
bGJhY2soY29uc3QgQXR0cmlidXRlZFN0cgogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUoc3RyaW5nLCBhY3R1YWxSYW5nZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBk
b3VibGUsIGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPmNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24oU3RyaW5nKCksIDAsIGZhbHNlLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAyYTYyZDA3ZWUxNDYzYjA2MzVkMWNkODljOWQzNzU5
MjllZjJmNzQ3Li42MmYwNTRlNDBmNThmZDE0ZmY5NTQ0MGY0NTM0YTYxMTFjZDhmZTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB1aW50NjRfdCBn
ZW5lcmF0ZUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHlJRCgpCiAgICAgcmV0dXJu
ICsrY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRSZXBseUlEOwogfQogCi12b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBt
ZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlcGx5SUQg
PSBnZW5lcmF0ZUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHlJRCgpOwogCkBAIC05
NSw3ICs5NSw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU9wZW5QYXltZW50U2V0dXBSZXBs
eUlEKCkKICAgICByZXR1cm4gKytvcGVuUGF5bWVudFNldHVwUmVwbHlJRDsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJj
aGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2
b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcmVwbHlJRCA9IGdlbmVyYXRlT3BlblBheW1lbnRT
ZXR1cFJlcGx5SUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggMDNiOWU1YjMwZWNmYjMz
NDY4ZmY3MzEwMjFlYzRhZmI0NzlkYWMyMy4uZTM1M2Q2NjVlZWVlMzY4NWE4MDQyZjU0NjU0MmFl
YjQxMzY2M2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHByaXZh
dGU6CiAgICAgLy8gV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LgogICAgIGJvb2wg
c3VwcG9ydHNWZXJzaW9uKHVuc2lnbmVkIHZlcnNpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2Fu
TWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbk1ha2VQ
YXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRW
YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CkBAIC04Niw4ICs4
Niw4IEBAIHByaXZhdGU6CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPj4gbV9wZW5kaW5nQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmRDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4+IG1fcGVuZGluZ09wZW5QYXltZW50U2V0dXBDYWxsYmFj
a3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1f
cGVuZGluZ0Nhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkQ2FsbGJhY2tzOworICAgIEhhc2hN
YXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX3BlbmRpbmdPcGVuUGF5
bWVudFNldHVwQ2FsbGJhY2tzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDJkMjMyYWNkMTcwZTVlMDFiZjFiNjBh
NzNjMGE2ZWE2NWY0ZGIwYmEuLjhmZjBlMjgyNmZmMDg2YzlkMzViOGExODIyNTJiMjA4ODAxYzY2
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIC8vIE5ldHNj
YXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAg
IHVpbnQ2NF90IG1fc3RyZWFtSUQ7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVzdCk+IG1fbG9hZENhbGxiYWNrOwor
ICAgIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1ZXN0KT4gbV9sb2FkQ2FsbGJhY2s7
CiAKICAgICAvLyBUcnVlIGlmIHRoZSBzdHJlYW0gd2FzIGV4cGxpY2l0bHkgY2FuY2VsbGVkIGJ5
IGNhbGxpbmcgY2FuY2VsKCkuCiAgICAgLy8gKEFzIG9wcG9zZWQgdG8gYmVpbmcgY2FuY2VsbGVk
IGJ5IHRoZSB1c2VyIGhpdHRpbmcgdGhlIHN0b3AgYnV0dG9uIGZvciBleGFtcGxlLgpAQCAtMjIx
LDEyICsyMjEsMTIgQEAgc3RhdGljIHVpbnQzMl90IGxhc3RNb2RpZmllZERhdGVNUyhjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0
aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4obGFzdE1vZGlmaWVkLnZhbHVlKCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVh
bTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZXNvdXJjZVJlcXVlc3QmJik+JiYgZGVjaXNpb25IYW5k
bGVyKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGRlY2lzaW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBVUkwmIHJlcXVl
c3RVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVS
TCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKLSAgICBtX2xvYWRDYWxsYmFjayA9IGRlY2lz
aW9uSGFuZGxlcjsKKyAgICBtX2xvYWRDYWxsYmFjayA9IFdURk1vdmUoZGVjaXNpb25IYW5kbGVy
KTsKICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4t
PnN0cmVhbVdpbGxTZW5kUmVxdWVzdChtX3N0cmVhbUlELCByZXF1ZXN0VVJMLCByZWRpcmVjdFJl
c3BvbnNlVVJMLCByZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXgg
NWFkNWI0YjJmMjEwYjkxNDc0NzVlODY3MjE1ZjIwOTA0OTFkY2JhYS4uYTViZTUyYzVhNmQzOWY5
ZDMzM2QyMTZjODQ0Mzk0ODI1MTQ2NjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC04Miw3ICs4Miw3IEBAIERyYXdpbmdB
cmVhOjp+RHJhd2luZ0FyZWEoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlLnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hB
ZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
ZnVuY3Rpb24pCit2b2lkIERyYXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVk
U2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAg
IC8vIFNjcm9sbCBwb3NpdGlvbiB1cGRhdGVzIGFyZSBzeW5jaHJvbm91cyBieSBkZWZhdWx0IHNv
IHdlIGNhbiBqdXN0IGNhbGwgdGhlIGZ1bmN0aW9uIHJpZ2h0IGF3YXkgaGVyZS4KICAgICBmdW5j
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAppbmRleCAzNGJkYmE3Y2EyZjYxYmRlN2UzZGI2Yjg2ZmZiZjZmNTU5MmQ0NTUzLi5kODQ2
MzlmNWYyZDA4NDFhMTZhODg2OTE4OGEzNTI5YmMxYTU4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMzQsNyArMzQsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2Ny
ZWVuLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4K
QEAgLTExNSw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xs
UG9zaXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29s
IC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3Rp
bmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDJlYjY3NWRiMWU5YzlhMGY1MmRhNzBjYzIzZTJj
ZWZjYjI0Y2ZhNzUuLjM2ZDA0MjA3ZmU3NDYzYTBiMmE5Zjg5MGIxZjNmMDJjNTFjZDAyYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIy
MDIsNyArMjIwMiw3IEBAIGJvb2wgV2ViUGFnZTo6bWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRl
bHlJZlBvc3NpYmxlKCkKICAgICByZXR1cm4gIWRyYXdpbmdBcmVhKCkgfHwgZHJhd2luZ0FyZWEo
KS0+bWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6bWFya0xheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0
aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiJXAgLSBXZWJQYWdlOjptYXJrTGF5ZXJzVm9sYXRpbGUoKSIsIHRoaXMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNWZlY2Jj
Nzg1MTcxOWU1N2EyODk2NjJjOWYxZDFlYzJhM2E3MzdiLi44OWIyZTBmNDU3NThkZDkxNDY4OWRi
YzQ3MDhkYjUxNmEzYjRjMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTYwMyw3ICs2MDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSaWNo
bHlFZGl0YWJsZVNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0
ZUlzRnJvemVuKGJvb2wpOwotICAgIHZvaWQgbWFya0xheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIgPSB7IH0pOworICAgIHZvaWQgbWFya0xheWVy
c1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IHsg
fSk7CiAgICAgdm9pZCBjYW5jZWxNYXJrTGF5ZXJzVm9sYXRpbGUoKTsKIAogICAgIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKCk7CkBAIC0xNTE3LDcgKzE1MTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBXZWJDb3JlOjpUaW1lciBtX2xheWVyVm9sYXRpbGl0eVRpbWVyOwotICAgIFZlY3RvcjxzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX21hcmtMYXllcnNBc1ZvbGF0aWxlQ29tcGxldGlvbkhhbmRs
ZXJzOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX21hcmtMYXllcnNBc1Zv
bGF0aWxlQ29tcGxldGlvbkhhbmRsZXJzOwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZFVuZGVyTG9j
ayB7IGZhbHNlIH07CiAKICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDk1ODMzOGEwM2VlN2M3YWRhNWYxYzNj
ZWI4OWI3ODE1ZGNmZmQ0NmQuLjZiMjkxZDQwNmZmNmNlNzE4Nzg2NTIzZDdiY2QxNjgxOWExYmJl
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTc3LDcg
Kzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5n
VXBkYXRlZFNjcm9sbFBvc2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6
RnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVk
QmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZmNhMjIw
Mzc4NTk4MjNhMzJiZWNmODZkYTUyYjhiMGFiNjI1NDFmOC4uZGIxNDllNzkwMmRiYzI3NjQ3ODhh
ODEwOTNiYWE5MmQ5ZmYyNTI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6c2NhbGVWaWV3VG9GaXREb2N1bWVudElmTmVlZGVkKCkKICAgICBtX3dlYlBhZ2Uu
c2NhbGVWaWV3KHZpZXdTY2FsZSk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQogICAgIGlmICghbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
IHsKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24ocwogICAgIC8vIChU
aGUgd2ViIHBhZ2UgaXMgYWxyZWFkeSBrZXB0IGFsaXZlIGJ5IGRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z1VwZGF0ZWRTY3JvbGxQb3NpdGlvbikuCiAgICAgV2ViUGFnZSogd2ViUGFnZSA9ICZtX3dlYlBh
Z2U7CiAKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihbdGhpcywgd2ViUGFn
ZSwgZnVuY3Rpb25dIHsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihbdGhp
cywgd2ViUGFnZSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBEcmF3
aW5nQXJlYSogZHJhd2luZ0FyZWEgPSB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpOwogICAgICAgICBp
ZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmI5MmY5Yzc4MjFjZDBkMTM5MWEzYWE3NGZmYWE2
NjY5NjgzZmFjZi4uMDM1OWQyM2EzZTI3MGIzODljMzU5NjdmNWY3YzNkNjMyNmVkNTVjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMzk2LDcgKzEzOTYs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlk
Q2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24oKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6bWFy
a0FsbExheWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoKSIsIHRo
aXMpOwogICAgIG1fcGFnZXNNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZSA9IG1fcGFnZU1hcC5zaXpl
KCk7CkBAIC0xNDA1LDcgKzE0MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNW
b2xhdGlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygp
KSB7Ci0gICAgICAgIHBhZ2UtPm1hcmtMYXllcnNWb2xhdGlsZShbdGhpcywgY29tcGxldGlvbkhh
bmRsZXJdIHsKKyAgICAgICAgcGFnZS0+bWFya0xheWVyc1ZvbGF0aWxlKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICBB
U1NFUlQobV9wYWdlc01hcmtpbmdMYXllcnNBc1ZvbGF0aWxlKTsKICAgICAgICAgICAgIGlmICgh
LS1tX3BhZ2VzTWFya2luZ0xheWVyc0FzVm9sYXRpbGUpCiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
NzgyZDUzYmQ0NGE5NzllMGVkODE3NTRiYjFmYTJiMmE4NTI0MzFkMC4uYWJmMDgwNDAyNDA3ZjY2
ODcwMzBhZjg2Mzg3YTIzMGZiMjhjMjczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJX
aXRoU3RhdGVEdW1wZXIoKTsKICNlbmRpZgogCi0gICAgdm9pZCBtYXJrQWxsTGF5ZXJzVm9sYXRp
bGUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIG1h
cmtBbGxMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdm9pZCBjYW5jZWxNYXJrQWxsTGF5ZXJzVm9sYXRpbGUoKTsKICAgICB2b2lk
IHNldEFsbExheWVyVHJlZVN0YXRlc0Zyb3plbihib29sKTsKICAgICB2b2lkIHByb2Nlc3NTdXNw
ZW5zaW9uQ2xlYW51cFRpbWVyRmlyZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313184</attachid>
            <date>2017-06-16 21:44:06 -0700</date>
            <delta_ts>2017-06-17 13:56:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173504-20170616214404.patch</filename>
            <type>text/plain</type>
            <size>186940</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJlZjllZDhlNzZmNDFl
YzMwYWYxZWI4ZjAwNTljYWZkNDA2M2Y5NC4uZmM0ZTEyNzJhOTVkOGQ0YjVmMDc4NmNkNmMxZDlh
NjExNTRmM2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24g
aW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9m
IHN0ZDo6ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3Nhcnkg
Y29weWluZy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9y
OjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKwog
MjAxNy0wNi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2F0aGVyU3RhdHNGb3JMb2dnaW5nIGlz
IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMWUwMWNhMmQwNzgxYjkzYzA3ZGY2ZmZiMzFj
MmZiMDhhYTIzZTRjZS4uMTdmZTYxN2Q3MDBiNzJkZjBjMjQyNzFiMGRmNGY2MTM0NDNlOTcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVh
ZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6
ZnVuY3Rpb24gaW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWlu
Zy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoK
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAo
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6Om9wZW5QYXltZW50U2V0dXAp
OgorCiAyMDE3LTA2LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1MgRG5EXSBbV0sxXSBEcm9wcGluZyBsaW5rcyBvbnRvIFVJV2ViVmlld3Mg
c2hvdWxkIG5vdCB0cmlnZ2VyIG5hdmlnYXRpb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGNjZDdlOTRlOTAzMzhjMjJjYjI3ZDY0YTg1N2UwNjZhOTAwM2I0OGMuLmQyNjcxMTMyZTkz
ZWY3YTVmOWE3YTFmYTlhZjY2NGJkZGI3YmMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9uIGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBXZWJL
aXQyLworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcz
NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdlYktpdDIvIHRvIGF2
b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IGNvcHlpbmcuCisKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06OndpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKwogMjAxNy0wNi0x
NSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBb
V2luXSBXZWJLaXQgc2hvdWxkbid0IGluY2x1ZGUgdGhlIGZvcndhcmRpbmcgaGVhZGVyIG9mIFdl
YktpdCBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMDM1NDM1OThmOWFmOTU5NWU4NjVmOGM0MzQ1ZTI5
ZTVkNmRiZDI3Li4xMzJhMzRiNzExN2Q2ZTQxZTc0ODUzZTVmODkwMDljNjNmOTg1NmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTk3IEBACiAyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6
OmZ1bmN0aW9uIGluIFdlYktpdDIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzM1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24g
aW4gV2ViS2l0Mi8gdG8gYXZvaWQKKyAgICAgICAgdW5uZWNlc3NhcnkgY29weWluZy4KKworICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZVByb2Nlc3M6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKToK
KyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Omluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3Iu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXN5bmNSZXF1ZXN0OjpBc3luY1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpB
c3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcik6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVx
dWVzdC5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcCk6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3dubG9hZENs
aWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25M
b2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAodG9HZW5lcmljQ2FsbGJhY2tG
dW5jdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcg
bWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWREcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6dHJ5QXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2VD
b21tb24pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3
UGFnZUFzeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hv
dFJlbW92YWxUcmFja2VyOjpzdGFydCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluaXRpYWxG
b2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FsbEFmdGVy
TmV4dFByZXNlbnRhdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0
UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb2N1c05leHRBc3Npc3RlZE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06
CisgICAgICAgICgtW1dLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIgaW5pdFdpdGhTZWxlY3Rpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250QXRT
ZWxlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6
d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bWFya0xheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z1VwZGF0ZWRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKworMjAxNy0wNi0xNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFtXSzJdIEFkZCBXS1Byb2Nl
c3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQgY2xpZW50IHBv
bGljaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM0NzIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODU4ODE3PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IDZlZDBkZDM4NjAyZDVmZjUxMjM0NDc2NTY1ZjA3MzdhMjhmNTZhOTQuLjBlYTVlYzM3MTBmZDU3
NDk4YjBlNjc3ZTc0OWU1MmRlMjJmY2Q1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTU1LDEyICs1NSwx
MiBAQCBib29sIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1
cm4gbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzKCk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2xpZW50LmNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jbGllbnQub3BlblBh
eW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDY3YmRkMzQwYzk0YzFlYTExZTMyZWUwNzU4
NGEwYTI2ZTRjYjhkNmIuLmIzYjRkOGY0NDg5NzIzZWRmZWQxZDY3NDZjYWQwYTZkNDIwNDhhNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNp
bmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsOCArNTIs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9u
KTsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBib29sIGhhc0FjdGl2ZVNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNlc3Npb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
aW5kZXggMTc4N2I1N2VkNGQ1MWIxZjMxZTBmNWM1NTNjZjIyMGI3YmQxMzZiYy4uODMzM2FkNjYw
MTJiNjk4Yzg1Y2EzYWI2YjAzN2I3ZmU4Y2VlN2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBA
IC00NCw4ICs0NCw4IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGNhbk1ha2VQYXltZW50cygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChi
b29sKT4gY29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlblBheW1l
bnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNob3dQYXlt
ZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJ
Y29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVlc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDcyOTQyNmNlYTJj
NGU2ZDNiMDdlNzc1Y2QxMmViNGQ0NGViYTUyYTIuLmU5MzVmZjJhOTY4ZjYxMDhlN2RiY2M1OGQw
N2RlNGY5ZjdkMTg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC00ODgsOCArNDg4LDggQEAgY2xhc3MgRW1wdHlJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yQ2xpZW50IHsKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAgICAgYm9vbCBzdXBw
b3J0c1ZlcnNpb24odW5zaWduZWQpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBj
YW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
IH0pOyB9Ci0gICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
IHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOyB9KTsgfQorICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0geyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAg
ICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29u
c3QgUGF5bWVudFJlcXVlc3QmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDQ1
NjI0YzQ5ZWI0NjljMDhhNWMzZjI5OTQwMTRkOWQxOTE2NGQ1NWUuLmZmYWE3ZTVjZWUwOWE3MTM0
M2NmNzkyNjNhYWFlZGEyMmFkMjhkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtODgsMTEgKzg4LDExIEBAIGJv
b2wgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIG1fY2xpZW50LT53
aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrXShSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92
ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMsIHJlZGlyZWN0UmVz
cG9uc2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KSB7CiAgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oCmluZGV4IDI1N2M1MDEyYmU1MTEzMjg1ZWI2OWEzY2I2M2ExN2JmNjcxNjZiYmIu
LmM5ZGMxOWZmM2FiZDQ5MDg4ZDg4NjkxNDBhZTdkNzBiNGEyZDkwZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wg
aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiZDVkOGM2ZDhiZThkOWM0ZGYxYzRkZjI4NTM2
M2IxNmExNzg3OGIuLjc3NDQ2ZTFjZWU5MGUwMTA2ZjNmOTliNDQ2NjMxNjdiMjJmOGZiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAzLDcgKzQwMyw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0MzU4YjdhMTZlOTQxMGVkOWU4MTdj
OTBmNWY3ZjE3YzI1MWI3YWM5Li42ZGRhMzRhOTZhY2JlMDc2MWJhMDRlNmZkZGUzZjU0NzMxZDgx
MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtOTksNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBhNjE2MGYwZjYyNWU3NmJiYmQ4MGE4MzZmMjg5ZDQ3
MGM1YzhmMzU4Li4xNTY3ZGM4MjMyZDM3Nzk0ZTc1NjQxNzFlYzIwYjk5M2FhNjc1ZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBO
U0Vycm9yICpwbHVnaW5DYW5jZWxsZWRDb25uZWN0aW9uRXJyb3IoKSBjb25zdDsKIAogICAgIC8v
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IG1ldGhvZHMuCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVu
Y3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICBi
b29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQppbmRleCBmMTdiNjJjZjVhMmNjZTZhNTEzMzNhYzkzYjkxZDdiYzM3M2Qw
NTliLi4wMzc1YWUwMzIwOGRhOWRkMjQwYTM5MjQ1MjU1NzQ1YTYwZTYyZjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1MCiAgICAgbV9pbnN0YW5jZS0+ZGlzY29ubmVjdFN0cmVhbSh0aGlzKTsKIH0KIAotdm9p
ZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQordm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNl
bmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhl
cmUuCiAgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYmY0MzQxNTI3
NWI0YTZmMjMzMWUxZDFkNWE3Y2VjZmJhMDhmMjQ0MC4uNzZlZTg1ZmU2N2ZlMjY4ZWVhMjE0NGMy
ODVhZDc3NGM4OTAzMTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAg
IE5TRXJyb3IgKnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNvbnN0OwogCiAgICAg
Ly8gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgbWV0aG9kcy4KLSAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICBib29sIHdhbnRzQWxsU3Ry
ZWFtcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNjY3M2E5NGRiMjQzN2YzNDEzYWNj
YzYwODBlODlhZGUzZTc1ZDlmMC4uZjZlMGFhNWVmZWExZDFlZjI4MzEzNzdkNGVmYzZmMjMwMGU5
NjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6c3RvcCgpCiAgICAgICAgIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVy
cm9yKG1fbG9hZGVyLT5jYW5jZWxsZWRFcnJvcigpKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBw
bHVnLWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IDlkMDVlZmJm
NTE4NzM2MzA0ZTVlYWVkMTE4NzY5ZTAyZWY0MGUzNWMuLmY1ZWFmZTM5NDQzYzJkNmRkYTEzZTlj
ZWVjMWViNGIxZDFlZmJhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOCw4
ICszOCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZTsKLSAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCA5MWM3NGNiYzE2NzVmN2E3ZTZkMjEzMjUwZWI0
OGQ2YmVmNzhkMDQ2Li4wOWIxYzQyZDdjZWU2OTc1ZDRmMDZkMDJkMjZmNTI0N2VlOGZkZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00OCwxNiArNDgsMTYgQEAgYm9vbCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNhbk1ha2VQYXltZW50cygpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvckNsaWVudDo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAg
IH0pOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBkYTgzM2FhZjRmOGJhZTQ0YjQ4MDRiMzUyMWZj
ZDE3N2I4Y2FkZDRlLi4xMzg3ZmFiYjAxMGNkM2MzMGYyZTdjNjNmMTMzOTZlZTM3NTAyYzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgQ1N0cmluZyYgcmUKICAgICBkZXN0cm95U3RyZWFtKHJlc3Vs
dFN0cmluZy5pc051bGwoKSA/IE5QUkVTX05FVFdPUktfRVJSIDogTlBSRVNfRE9ORSk7CiB9CiAK
LXZvaWQgUGx1Z2luU3RyZWFtOjp3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2Fs
bGJhY2spCit2b2lkIFBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVn
LWluIHdpdGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCiAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRl
eCA2MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFlYmQ3Li4zYjZjNzEwNWYxMDk0
YjBhMDNhMGZiM2E2MTBlNzYzOWM1OGVkMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGRlc3Ryb3lTdHJlYW0oKTsKIAogICAgICAgICAvLyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudAotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGYWlsKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcAppbmRleCBiZmZjMzgyMTIwNzgyOTFhMjFhNjNmZGMxNTlmOTk2NGUwMDEwMTkyLi45ZGZk
NmJjMWJhOTM4NjQzNWEwM2Q2MTUyMzhjNTM4NWNmMGVmNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMjkzLDEyICsy
OTMsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VQcm9j
ZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJs
b2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gKytsYXN0UmVxdWVzdElEOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzLnNldChyZXF1ZXN0SUQsIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVycy5zZXQocmVx
dWVzdElELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkdldFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHJlcXVlc3RJRCwgZmlsZW5hbWVzKSwgMCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApp
bmRleCA5Yzk0OTE5Y2NlNDg5MTNkNjE4ODU5MGQwMTVjMzQwYTdjNWUyZDVhLi4wZDI4NjU0MTlj
Yjg0YzJmNjQ5MDVlMDZmYjNlMWIzMmRjNjg2Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+IGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogI2VuZGlmCiAKIHByaXZh
dGU6CkBAIC0xMTksNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgUmVmUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPj4gbV9pZGJTZXJ2
ZXJzOwogI2VuZGlmCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
Jik+PiBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVyczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiYpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxl
cnM7CiAKICAgICBEZXF1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VUYXNrczsKICAgICBM
b2NrIG1fZGF0YWJhc2VUYXNrTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXggMjljMjY0YjRiNjRhYTM1
NDFkOTY3ZDk0ODBiMmYzODBjMDdiM2UzZS4uMTUxMjhkY2QyNzIxMzlmMGFmOTE0MDMwOGY0YjE5
NzY5MzM0YWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEUpCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IGY3
YmJlNWJhYzY4OWRjYzJhMmMyYjliMTBmNmE2NWQwOWY3ZWRlODMuLjQ1MDNmZWZmYjlmNDNlMDA1
ZjY2MmE4MDA5MWVhNTlmN2RmNjgyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PGNocm9ubz4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDE1ODA3OWU1NWE2MmY1ZWRkYmEwZjE0MGZiN2Y5ZTAzZDUwNTE2OTUu
Ljg1ZjI2YTJjYjk1OWFkODExM2I4OWMxNWIyZWEyMWUyYzAyYmRmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IG1lc3NhZ2UpCiAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KIAotdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VD
YWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQordWludDY0X3QgQ29ubmVj
dGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9p
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB1
aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gYwogICAgIGlmICghbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2tRdWV1ZSkKICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LklQQy5JbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tRdWV1ZSIpOwogCi0gICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
LmFkZChtX25leHRJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAg
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy5hZGQobV9uZXh0SW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJldHVybiBtX25leHRJ
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGZjZTFlNjNiYzI5ZmNiYjJlZTNiZTcyMDYxZjgzNmFiNzNm
Zjc4OWQuLjJlMGM1OTM2MTZlOWQyMDdhMjRjMDExMGY5OTQ2MmZlODI5NTlmY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEJvb3N0TWFpblRocmVhZE9uU3luY01lc3NhZ2UoYm9v
bCBiKSB7IG1fc2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2FnZSA9IGI7IH0KICNlbmRp
ZgogCi0gICAgdWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB1aW50NjRfdCBpbnN0YWxsSW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCB1bmluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2sodWludDY0X3QpOwogICAgIGJvb2wgaGFzSW5j
b21pbmdTeW5jTWVzc2FnZSgpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGVuZGluZ1N5bmNSZXBseT4gbV9wZW5kaW5nU3luY1JlcGxpZXM7CiAKICAgICBMb2Nr
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1faW5jb21p
bmdTeW5jTWVzc2FnZUNhbGxiYWNrczsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2luY29taW5n
U3luY01lc3NhZ2VDYWxsYmFja1F1ZXVlOwogICAgIHVpbnQ2NF90IG1fbmV4dEluY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja0lEIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuaAppbmRleCBmZjM3YmY5ZTU0NGU0Yjk5ZmIwMmI1
OWJhN2VlZGE5YzM5YWRjZDlmLi44YWM1ZjFjNzA2Y2JhYzQ0YTEzNzY3OTNjMjM5Mjc5YjMxZTBj
YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRN
b25pdG9yLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgR1NvY2tldE1vbml0b3JfaAogI2Rl
ZmluZSBHU29ja2V0TW9uaXRvcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGUxODU5NWQ0MzFiNTNjMWYw
YjBmNjRlMzI2MWFlOTk0ZWM4M2E4M2QuLmI0Nzc1NmNiYzE4ZDRmZWU0ZjhlZWUzN2MxOGRiODVi
ZjlhODM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAK
ICNkZWZpbmUgV2ViS2l0TG9nZ2luZ19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ01hY3Jvcy5o
PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggMjI2MTg2MTBiMGYzZjM0Y2M3MDE0YmU1NjI5ZTg2YmY4NzY5NzRkZi4u
OTYyODY0ZjcyNzkzOWEzMTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIEFQSU9iamVj
dF9oCiAjZGVmaW5lIEFQSU9iamVjdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmNwcAppbmRleCBhNGY4YjAyNWZjMWM0MjJlNWM2NmNkOGU4MTQzZmQzODk3OGJkMTFmLi5k
ZmExYTM5NzA3OWQwNWI0MTRjNTQ1ODVmYmRhM2NkN2M1ZjhlZDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXN5bmNSZXF1ZXN0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVSZXF1ZXN0SUQoKQogICAgIHJldHVybiArK3JlcXVlc3RJRDsKIH0KIAotQXN5bmNS
ZXF1ZXN0OjpBc3luY1JlcXVlc3Qoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBhYm9ydEhhbmRsZXIp
CitBc3luY1JlcXVlc3Q6OkFzeW5jUmVxdWVzdChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJv
cnRIYW5kbGVyKQogICAgIDogbV9hYm9ydEhhbmRsZXIoV1RGTW92ZShhYm9ydEhhbmRsZXIpKQog
ICAgICwgbV9yZXF1ZXN0SUQoZ2VuZXJhdGVSZXF1ZXN0SUQoKSkKIHsKQEAgLTQ5LDcgKzQ5LDcg
QEAgQXN5bmNSZXF1ZXN0Ojp+QXN5bmNSZXF1ZXN0KCkKICAgICBBU1NFUlQoIW1fYWJvcnRIYW5k
bGVyKTsKIH0KIAotdm9pZCBBc3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGhhbmRsZXIpCit2b2lkIEFzeW5jUmVxdWVzdDo6c2V0QWJvcnRIYW5kbGVy
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBoYW5kbGVyKQogewogICAgIG1fYWJvcnRIYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Bc3luY1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaApp
bmRleCAwYzRhMGEwYzQxM2IwYTFjM2JlOWVlZjVjNzc1YmNmMTIzNTViOTU1Li40Mjc3NjE2OTEz
OWM4OTdiNmMxY2EwMjYyNWU3ODc2MDNmZDU0YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5j
UmVxdWVzdC5oCkBAIC0yNyw3ICsyNyw2IEBACiAjaWZuZGVmIEFzeW5jUmVxdWVzdF9oCiAjZGVm
aW5lIEFzeW5jUmVxdWVzdF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MCwxNiArMzksMTYgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgcmVx
dWVzdElEKCkgeyByZXR1cm4gbV9yZXF1ZXN0SUQ7IH0KIAotICAgIHZvaWQgc2V0QWJvcnRIYW5k
bGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZvaWQgc2V0QWJvcnRIYW5kbGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QWJvcnRlZCgpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4gdm9pZCBjb21wbGV0ZVJlcXVlc3QoQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEFzeW5j
UmVxdWVzdChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcik7CisgICAgZXhwbGlj
aXQgQXN5bmNSZXF1ZXN0KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBhYm9ydEhhbmRsZXIpOwog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29tcGxldGlvbkhhbmRsZXIoKSA9IDA7CiAKLSAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fYWJvcnRIYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4gbV9hYm9ydEhhbmRsZXI7CiAKIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZXF1
ZXN0SUQ7CkBAIC02MCwxMiArNTksMTIgQEAgY2xhc3MgQXN5bmNSZXF1ZXN0SW1wbCBmaW5hbCA6
IHB1YmxpYyBBc3luY1JlcXVlc3QgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHVzaW5nIEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUsIFQsIGNvbnN0IFQmPjo6dHlwZTsKIAotICAgIHN0YXRpYyBSZWY8
QXN5bmNSZXF1ZXN0PiBjcmVhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKEFyZ3VtZW50VHlwZTxBcmd1
bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgc3RhdGljIFJlZjxBc3luY1JlcXVl
c3Q+IGNyZWF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXN5bmNSZXF1ZXN0SW1wbDxBcmd1bWVudHMuLi4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBudWxscHRyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxBc3luY1JlcXVlc3Q+IGNy
ZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21w
bGV0aW9uSGFuZGxlciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGFib3J0SGFuZGxlcikKKyAgICBz
dGF0aWMgUmVmPEFzeW5jUmVxdWVzdD4gY3JlYXRlKFdURjo6RnVuY3Rpb248dm9pZChBcmd1bWVu
dFR5cGU8QXJndW1lbnRzPi4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGFib3J0SGFuZGxlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1lbnRzLi4uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgV1RGTW92ZShhYm9ydEhhbmRsZXIpKSk7CiAgICAgfQpAQCAtODMsNyArODIsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFzeW5jUmVxdWVzdEltcGwoc3RkOjpmdW5j
dGlvbjx2b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVy
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcikKKyAgICBBc3luY1JlcXVlc3RJ
bXBsKFdURjo6RnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgYWJvcnRIYW5kbGVyKQog
ICAgICAgICA6IEFzeW5jUmVxdWVzdChXVEZNb3ZlKGFib3J0SGFuZGxlcikpCiAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CkBA
IC05NSw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBu
dWxscHRyOwogICAgIH0KIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFy
Z3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248dm9p
ZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPiB2b2lkIEFzeW5jUmVxdWVzdDo6Y29t
cGxldGVSZXF1ZXN0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXgg
ZWQ1MmY0M2MwOGNhZDJkNzNmMzQ3OGM3NGQ4OGViMzkxZDk5MTU1MS4uZWIyYmYzYTNjYjhjNjJl
NjhmNDM2ZjcyZGNlOWEzNWJmOGYyZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGhyZWFkQ291bnRMaW1pdDsKIH07CiAKLUNv
bXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiB1cGRhdGVGdW5jdGlvbikKK0NvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5M
b29wKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCiAgICAgOiBtX3VwZGF0ZVRp
bWVyKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLnJ1bkxvb3AodGhpcyksIHRoaXMsICZDb21w
b3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3VwZGF0ZUZ1bmN0aW9u
KFdURk1vdmUodXBkYXRlRnVuY3Rpb24pKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5n
UnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IGZiODE1MTg0NDg1NWRj
MDIxNDc0YjM5OWMxMzZiOTdmOTlhZTYwZGUuLjFmODZiZmY1OTc0NTczODJjYWQyYWU0MDZjNzEy
ZjcwNzQ2MjUyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTQzLDcgKzQyLDcgQEAgY2xhc3MgQ29tcG9zaXRpbmdS
dW5Mb29wIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbXBvc2l0aW5nUnVu
TG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIENvbXBvc2l0aW5nUnVuTG9vcChG
dW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB+Q29tcG9zaXRpbmdSdW5Mb29wKCk7CiAKICAgICB2
b2lkIHBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwpAQCAtNjUsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCiAgICAgUnVuTG9vcDo6VGlt
ZXI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX3VwZGF0ZVRpbWVyOwotICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3VwZGF0
ZUZ1bmN0aW9uOwogICAgIEF0b21pYzxVcGRhdGVTdGF0ZT4gbV91cGRhdGVTdGF0ZTsKICAgICBM
b2NrIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0
Y2hTeW5jQ29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmgKaW5kZXggYTM2MTkwN2NiYjE4MzM4ODM5OGJiYmJjYTdjN2FmYjU1MDkzNDU4
Zi4uM2Y5NzlmYjg2NTNmNjE4ZDUwYWYzMWQ4YTYyOWM2YjU4MDlkYjgwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
eHRNZW51SXRlbS5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDJhN2UzYTZiYWMwODYwMjhjOGQ3
NGM3NzQ1MGFkZDZiMmEyODlhNTkuLmI1N2RkZTQwZjNhYzdkMTljMWI2MjljYmUxNzcwNGZjOTkz
NDM0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRfaAog
I2RlZmluZSBBUElEb3dubG9hZENsaWVudF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJLaXQ6OldlYlBy
b3RlY3Rpb25TcGFjZSopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gY2FsbGJhY2spIHsgY2FsbGJhY2socmVxdWVzdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFj
aykgeyBjYWxsYmFjayhyZXF1ZXN0KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
aW5kZXggNTMzMWNiYTFmODAzNGMzZDliYjhkYTRiOGU3MzA1MjJiOTNjMDVlMS4uYmQ2OTdlODI0
NDFlMmNiNTQ0ZjJlMWUxNmQzYTRiYzkwMGI2NmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxv
YWRpbmdDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4g
Y29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9y
SWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoV1RGOjpG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCmluZGV4IGE1NWNmNTlhZTQyN2NkYzIxNjEwNGFjZGFiMjE3NWEwN2M1OGUyNTYuLjEyNTM2
NDI0NzhiYjFjMTBjYWVhNmUzYTg5NDMxNDdhOGRkNmZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJX
ZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogI2lmIFBM
QVRGT1JNKElPUykKIE9CSkNfQ0xBU1MgTlNBcnJheTsKQEAgLTc0LDcgKzczLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJL
aXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4gY29t
cGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0
ZU5ld1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdl
YktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggMzMzMmYyMzczZjgwMTdkZTFkNTk5ODdmNmVmZjU1N2IyMWQ5OTE3OS4u
YjI4YzBlYTIwNGY3ZWM5ODg3ODAxYzUzM2ZmMTVmM2ZlODBiYWUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHZvaWQg
V0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIHNjcmlwdFJlZiwKIH0KICNlbmRpZgogCi1zdGF0aWMgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoV0tTdHJpbmdS
ZWYsIFdLRXJyb3JSZWYsIHZvaWQqKSkKK3N0YXRpYyBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+IHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb24odm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShXS1N0cmluZ1JlZiwgV0tF
cnJvclJlZiwgdm9pZCopKQogewogICAgIHJldHVybiBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0
IFN0cmluZyYgcmV0dXJuVmFsdWUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKHJldHVyblZhbHVl
KS5wdHIoKSksIGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRv
QVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjMGRiNzMz
MmIyMTcwNTYxZDk0OWU4OGYwMGIzNjQyZTU5ZjQ2YzA0Li5hOGIwNWFlZWEyOWVjMWFmYjgxZGU0
MmJiM2UzYzYxZTE2ZDgxMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjk2LDcgKzI5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1dlYlZpZXcgewogICAgIAogICAgIGludCBfYWN0aXZlQW5pbWF0ZWRSZXNpemVDb3VudDsKIAot
ICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBfc25hcHNob3RzRGVmZXJyZWREdXJp
bmdSZXNpemU7CisgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IF9zbmFwc2hvdHNE
ZWZlcnJlZER1cmluZ1Jlc2l6ZTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9zdGFi
bGVTdGF0ZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrczsKIAogICAgIFJldGFpblB0cjxXS1Bh
c3N3b3JkVmlldz4gX3Bhc3N3b3JkVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCA1OTVmZTc4OWU3NjA1MTVlZjAyM2QyZTJiMzQwNGRkM2ZlMTQ4
MTJhLi5lMmZmMzQ4NzA4MmQyYTI5ZDdkNzllOGI5M2ZhNGFhMDEwNjFiZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04NzMsMTAgKzg3MywxMCBA
QCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlcikoTlNEYXRhKik7
CiAKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6Okxp
bmtJY29uJiBsaW5rSWNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+KT4gY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlIHsKKyAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgV1RGOjpGdW5jdGlvbjx2b2lkIChXVEY6
OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZSB7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJ
Y29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKIAotICAg
ICAgICAgICAgW21fd2tWaWV3IHBlcmZvcm1TZWxlY3RvcjpkZWxlZ2F0ZVNlbGVjdG9yKCkgd2l0
aE9iamVjdDpwYXJhbWV0ZXJzLmdldCgpIHdpdGhPYmplY3Q6W2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9h
ZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBbbV93a1ZpZXcgcGVyZm9ybVNlbGVj
dG9yOmRlbGVnYXRlU2VsZWN0b3IoKSB3aXRoT2JqZWN0OnBhcmFtZXRlcnMuZ2V0KCkgd2l0aE9i
amVjdDpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKT46OmZyb21DYWxs
YWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSWNv
bkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
ICAgICAgICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
IChOU0RhdGEgKik+KGxvYWRDb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKQEAgLTg4
Niw3ICs4ODYsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKLSAgICAgICAgICAgIH1dOworICAg
ICAgICAgICAgfSkuZ2V0KCldOwogICAgICAgICB9CiAKICAgICAgICAgV0tWaWV3ICptX3drVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWFQcm94eS5jcHAKaW5kZXggMWE0ZmY5NzkxZTJkM2Y0MDg4OWMzMmU4M2VkODQ4MjMz
NjljNzY4Ni4uYmRhZDJkZDU1YjQwNzhlYzBjM2VjODg1ZGI0ZjYwOTg4N2Y5OWQ0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKQEAgLTYzLDE0ICs2MywxNCBAQCBib29sIEFjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eTo6YWx3YXlzVXNlQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBh
Z2VQcm94eS5wcmVmZXJlbmNlcygpLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgJiYg
bV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS5mb3JjZUNvbXBvc2l0aW5nTW9kZSgpOwogfQog
Ci12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRl
ckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVy
V2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uXSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0g
ewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGU3ODkwYzgwNzg1YmEyYzQ4MTNjNDQ3MDk2MWUw
ZmJkY2M4OTcwNjcuLjc2ODNjM2YyNGE2ZDc0Y2EzMmY2MmZmNmNmMWJlNjM0ODIwOTcxYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveU5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBEcmF3aW5nQXJlYVByb3h5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDQyY2NmMWNjZGQ3YTFhN2Q0YWM5YjQ4MmVkODQ3YzExMmI0MGM0Njgu
LjdlZTBmZjFmYjRlMDU1ZDVkOTIzNDViZTk1MWNlZGVkOWM2YmZjNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCkBAIC05NSw5ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKIAogICAgIGJvb2wgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKTsK
LSAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgcGxhdGZv
cm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBw
bGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3QmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQppbmRleCAwZGI1NDBiYzg0NTUwNzNkM2I0MmJhMGY0MDc1YjFkOTBmNWY3
Y2MzLi5jYTc4MWQ5Y2I4NWJkNDBmNzU3YjliMjJiZmI3YjI1ZmE4ZDVkMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzUsNiArMzUs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTMwMCw1MSArMzAxLDUxIEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxp
Y2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9t
YWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJh
dGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXJdKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgeworICAgIHNv
ZnRMaW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9t
YWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCksIEJsb2NrUHRyPHZvaWQgKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGJhY2soW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
ewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBh
eW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsK
IAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBj
YW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5NYWtlUGF5bWVu
dHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXltZW50cyk7CiAg
ICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbHNlCiAgICAgaWYgKCFjYW5M
b2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFtjb21wbGV0aW9u
SGFuZGxlcl0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkIChCT09M
LCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIs
IGVycm9yKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyLCBjYW5NYWtlUGF5bWVudHNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjYW5N
YWtlUGF5bWVudHNdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXlt
ZW50cyk7CiAgICAgICAgIH0pOwotICAgIH0pOworICAgIH0pLmdldCgpKTsKICNlbmRpZgogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBp
bml0XSk7Ci0gICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50
aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBsZXRpb246W2Nv
bXBsZXRpb25IYW5kbGVyXShCT09MIHJlc3VsdCkgewotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCByZXN1bHRdIHsKKyAgICBbcGFzc0xpYnJhcnkg
b3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIg
ZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgfSk7Ci0g
ICAgfV07CisgICAgfSkuZ2V0KCldOwogfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGI1OWJiYjA0NzY3OGMxMjNhNDIz
Yzg5YTBjZTA4ZWQ0M2U4NGFkNTIuLjBmMDU3MGYzNmFmYWJkYjA1ODZiNGY4ZDBkZjVhODA0MzBk
MzU5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9pb3Mv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
NDEsNyArNDEsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29u
VVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3
Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlD
bGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggMWQzMjFhMjQ5Y2Y1MGM5MWRkODc4Nzg0NmQ4
MWQ2ZGI0M2Y2Njc3ZC4uYTIyMjMwMjViZmRkZGRmY2E1ZTdlZDAwMTAyMDI0Y2I4ODk5MGMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3NLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoUGFzc0tpdCkKIApAQCAtNDAsMTMgKzQxLDEzIEBAIFNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUs
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BL
UGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVS
TFN0cmluZ3MsIHJlcXVlc3QpOwogCiAgICAgYXV0byBzaG93UGF5bWVudFVJUmVxdWVzdFNlZWQg
PSBtX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKICAgICBhdXRvIHdlYWtUaGlzID0gbV93ZWFr
UHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckNsYXNzKCkgcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRS
ZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246W3BheW1lbnRSZXF1ZXN0LCBz
aG93UGF5bWVudFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
Q2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJl
cXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJl
cXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAg
aWYgKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgz
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKICAgICAgICAgW3BheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpIGJlZ2luU2hlZXQ6
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpoaWRlUGF5bWVudFVJKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmZmUwMGY1MjFl
YzlhMWQxNTdiMzNkYTdkYTM0ZmE3MWIwMGU3NjcwLi4wNmNhOGE0MjBkYTg2YWYzYzc5YjIzMjNi
OTE0MGI3YjdiNDAzMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC05MjksNyArOTI5
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rp
b25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2lu
dGVyYWN0aW9ucycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKIAogICAgIC8vIFZhbGlkYXRl
IGFsbCBvZiB0aGUgcGFyYW1ldGVycyBiZWZvcmUgcGVyZm9ybWluZyBhbnkgaW50ZXJhY3Rpb25z
IHdpdGggdGhlIGJyb3dzaW5nIGNvbnRleHQgdW5kZXIgdGVzdC4KLSAgICBWZWN0b3I8c3RkOjpm
dW5jdGlvbjx2b2lkKCk+PiBhY3Rpb25zVG9QZXJmb3JtOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4+IGFjdGlvbnNUb1BlcmZvcm07CiAgICAgYWN0aW9uc1RvUGVyZm9ybS5yZXNl
cnZlQ2FwYWNpdHkoaW50ZXJhY3Rpb25zLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byBpbnRl
cmFjdGlvbiA6IGludGVyYWN0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYWVkMWU5MTRkYWU0OTAwNGVi
NTc3MzYzYTkyZWNiNDEyMjg0Y2RmNi4uNWEwY2MxYTlkOTJlZGU2OWI1MDdkN2VjZWNiOTA1ZGMz
MjQ3YTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5J
Y29uTG9hZGluZ0NsaWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+KT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGdl
dExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQppbmRleCAxYjkwOTI5NDQ4OTBjYjNkNmE2MTI5ZmJlNWM3YWJjZWM0NTAwYjJjLi40
OGI4MTJkYzI2YTk0YTQ2YTEzNWY2OWRiZDg1NTU1YjEyYTYxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLTlNEYXRhLmgiCiAjaW5jbHVkZSAiX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIl9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFs
LmgiCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC03MSw3ICs3Miw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+
SWNvbkxvYWRpbmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyKShOU0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGlu
Z0NsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYg
bGlua0ljb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPik+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIFdURjo6RnVuY3Rp
b248dm9pZCAoV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwpAQCAtODYsNyArODcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6
Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgog
CiAgICAgUmV0YWluUHRyPF9XS0xpbmtJY29uUGFyYW1ldGVycz4gcGFyYW1ldGVycyA9IGFkb3B0
TlMoW1tfV0tMaW5rSWNvblBhcmFtZXRlcnMgYWxsb2NdIF9pbml0V2l0aExpbmtJY29uOmxpbmtJ
Y29uXSk7CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93
ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpedm9pZCAoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdh
dGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAobG9hZENvbXBsZXRpb25I
YW5kbGVyKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9hZENvbXBsZXRpb25I
YW5kbGVyID0gQmxvY2tfY29weShsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICAgICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQpAQCAtOTYs
NyArOTcsNyBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Ci0gICAg
fV07CisgICAgfSkuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDAy
N2RiNTBlZjRkOTg0NjAyM2FiYmY3NWExOTZiY2YxMzg4NDQ0Y2EuLjM0NDM1NjAzMzAzYjFhNjEw
NjYzMjY3ZTJjZWM2MWZmZDFhNTczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjcsNiArNjcsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgSEFWRShB
UFBfTElOS1MpCkBAIC0yODIsNyArMjgzLDcgQEAgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50Ojp+TmF2aWdhdGlvbkNsaWVudCgpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeUFwcExp
bmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25z
dCBTdHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4g
Y29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgdm9pZCB0cnlBcHBMaW5rKFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaW5nJiBjdXJyZW50
TWFpbkZyYW1lVVJMLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5z
aG91bGRPcGVuQXBwTGlua3MoKSkgewpAQCAtMjkwLDEzICsyOTEsMTEgQEAgc3RhdGljIHZvaWQg
dHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rp
b24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGxvY2FsQ29t
cGxldGlvbkhhbmRsZXIgPSBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlv
bkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRp
b25IYW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwg
c3VjY2Vzc10gewotICAgICAgICAgICAgKCpsb2NhbENvbXBsZXRpb25IYW5kbGVyKShzdWNjZXNz
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENvbXBsZXRpb25IYW5kbGVyOwotICAgICAgICB9
KTsKLSAgICB9XTsKKyAgICBbTFNBcHBMaW5rIG9wZW5XaXRoVVJMOm5hdmlnYXRpb25BY3Rpb24t
PnJlcXVlc3QoKS51cmwoKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChCT09MIHN1
Y2Nlc3MsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSBtdXRhYmxl
IHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgQmxv
Y2tQdHI8dm9pZCAoKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc3VjY2Vzc10geworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3VjY2Vzcyk7CisgICAgICAgIH0pLmdldCgpKTsKKyAgICB9KS5nZXQoKV07CiAjZWxz
ZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzBmOTBmNTQ3NzhhMGZmN2NkMTYx
YWY2MWZjYWYwMTMyYzQxMzJhYS4uN2IwMmYzNGQ2NmZhMjZhYTlmZTk2ZTM5ZjUzZmRlMzcxZDlj
Y2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBA
IC03Niw4ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQVBJOjpV
SUNsaWVudAogICAgICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1Bh
Z2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBjcmVhdGVOZXdQYWdlQXN5
bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4pPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+KiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgICAgIGJvb2wgY3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4gY3JlYXRlTmV3UGFnZUNvbW1vbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248
dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OwogCiAgICAgICAgIHZvaWQgY2xvc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KaW5kZXggN2M1ZjZmYTQwOGFjNTA3YzM5ZjA4N2IwZWIxNzZiYmMzZTM1ZTMyMy4u
MzAwM2VhM2ZjZTlmYjk0ZTlhNTg3YTc2N2JiYjE3ZGJlNDZmMjE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6flVJQ2xpZW50KCkKIHsKIH0KIAotUmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBpbml0aWF0
aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+KiBjb21wbGV0aW9uSGFuZGxlcikKK1Jl
ZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2VDb21tb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJlZlB0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1Bh
Z2VDb21tb24oV2ViS2l0OjpXCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dl
YlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246
d2luZG93RmVhdHVyZXM6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICAgICAgWyhpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JO
YXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVy
ZXM6d3JhcHBlcihhcGlXaW5kb3dGZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8
dm9pZCAoV0tXZWJWaWV3ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9ICpj
b21wbGV0aW9uSGFuZGxlciwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHJlbGF0ZWRXZWJW
aWV3ID0gUmV0YWluUHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldKFdLV2Vi
VmlldyAqd2ViVmlldykgeworICAgICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBl
cihhcGlOYXZpZ2F0aW9uQWN0aW9uKSB3aW5kb3dGZWF0dXJlczp3cmFwcGVyKGFwaVdpbmRvd0Zl
YXR1cmVzKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChXS1dlYlZpZXcgKik+Ojpm
cm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCByZWxhdGVkV2ViVmlldyA9IFJldGFpblB0
cjxXS1dlYlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXShXS1dlYlZpZXcgKndlYlZpZXcp
IHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYktp
dDo6V2ViUGFnZQogICAgIHJldHVybiBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIGluaXRpYXRp
bmdGcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG51bGxwdHIpOwogfQogCi1ib29sIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVh
dHVyZXMsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4p
PiBjb21wbGV0aW9uSGFuZGxlcikKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5l
d1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiBpbml0aWF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdURjo6
RnVuY3Rpb248dm9pZCAoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5k
b3dGZWF0dXJlc0FzeW5jKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsNyArMjQzLDcg
QEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKFdlYktpdDo6
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJLaXQKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIGluaXRpYXRpbmdG
cmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRhLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsICZjb21wbGV0aW9uSGFuZGxlcik7CisgICAgY3JlYXRlTmV3UGFnZUNv
bW1vbihwYWdlLCBpbml0aWF0aW5nRnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwg
d2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggM2M1
M2FhYzVmMDY1NmEzNmZmMzA4ZGM3ZjI3MGM1Mjc0N2E4OTU4NS4uN2I1ZTMwMjUwYWRhNjdiOWYy
YmVhMGU0NGEyNjQwMzNkMWMzYzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTI0MSw3ICsyNDEs
NyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAogICAgIExPRyhWaWV3R2VzdHVyZXMsICJTd2lw
ZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIG1pbGxpc2Vjb25kc1NpbmNlU3Rh
cnQsIGxvZy51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gcmVtb3ZhbENhbGxiYWNrKQordm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRz
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiByZW1vdmFsQ2FsbGJhY2spCiB7CiAgICAgbV9vdXRz
dGFuZGluZ0V2ZW50cyA9IGRlc2lyZWRFdmVudHM7CiAgICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBX
VEZNb3ZlKHJlbW92YWxDYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggY2Q3MDg3ZWFiNTdhY2Y1
YmUwOGU4NmEyZjcxZWEwNWM4YzRkYWUzYS4uYWE2OTk4MmNhMjg0YWI0NWEzZTQ2NmM3YzAzODg2
ZDM3ZGFjYTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgU25hcHNob3RSZW1vdmFsVHJhY2tlcigpOwogCi0gICAgICAgIHZvaWQgc3RhcnQo
RXZlbnRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgICAgICB2b2lkIHN0YXJ0KEV2ZW50
cywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAg
ICAgICAgYm9vbCBldmVudE9jY3VycmVkKEV2ZW50cyk7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3Ry
aW5nJiBsb2dSZWFzb24pOwogCiAgICAgICAgIEV2ZW50cyBtX291dHN0YW5kaW5nRXZlbnRzIHsg
MCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9yZW1vdmFsQ2FsbGJhY2s7Cisg
ICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3JlbW92YWxDYWxsYmFjazsKICAgICAgICAg
c3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX3N0YXJ0VGltZTsKIAogICAg
ICAgICBSdW5Mb29wOjpUaW1lcjxTbmFwc2hvdFJlbW92YWxUcmFja2VyPiBtX3dhdGNoZG9nVGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4
IDYxYzczMzJkMWY3Y2Y0NDJhYjYxZGIzNWIxZWRiZGFkYjBlZWQ5NzAuLmFkNDY4YmIyYzMxNDAx
YzQzN2Y3OWQzZDgwOWJkMTc2YmJmMTlkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BVktpdFNQSS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgotI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0yNDcsNyArMjQ2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV93aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkID0gZW5hYmxl
ZDsgfQogICAgIGJvb2wgd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDsgfQogCi0gICAgdm9pZCBw
cmVwYXJlRm9yTW92ZVRvV2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwcmVwYXJlRm9yTW92ZVRv
V2luZG93KE5TV2luZG93ICp0YXJnZXRXaW5kb3csIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICBOU1dpbmRvdyAqdGFyZ2V0V2luZG93Rm9yTW92ZVByZXBh
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRXaW5kb3dGb3JNb3ZlUHJlcGFyYXRpb247
IH0KIAogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDAxNTY1ZTQ3YmJkYjU0ZjVm
NTBlYzAyODA2ODYyY2UwYzNmMmZiOTkuLjI5ODZlNTNhMzJiN2QxODYyNGEzYTAxMGQ1ZGI2NTRk
ODIwZDg3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KQEAgLTIyMTAsNyArMjIxMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmVuZERlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5jKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6
OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFy
ZUZvck1vdmVUb1dpbmRvdyhOU1dpbmRvdyAqdGFyZ2V0V2luZG93LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3Nob3VsZERlZmVyVmlld0luV2lu
ZG93Q2hhbmdlcyA9IHRydWU7CiAgICAgdmlld1dpbGxNb3ZlVG9XaW5kb3codGFyZ2V0V2luZG93
KTsKQEAgLTIyMjAsNyArMjIyMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3Zl
VG9XaW5kb3coTlNXaW5kb3cgKnRhcmdldFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2CiAgICAgbV9z
aG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMgPSBmYWxzZTsKIAogICAgIGF1dG8gd2Vha1Ro
aXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgbV9wYWdlLT5pbnN0YWxsQWN0aXZpdHlTdGF0ZUNo
YW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXJdKCkgewor
ICAgIG1fcGFnZS0+aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihb
d2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIGlmICghd2Vha1Ro
aXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY1NDZiNmI3MWE5YjVlZjcyM2VmMTFlZDNh
YjRhNTU5ZWI0NmFmMzMuLjk2N2MyNDkwNGM3OGYyOWRkNGUxY2E1MGJlZWIxYzBiZWRlZDZhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpECiAgICAgfQogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERh
dGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaQogICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzczo6RmV0
Y2hXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgY2FsbGJhY2tJRCksIDApOwogfQog
Ci12b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRl
Q2FsbGJhY2tJRCgpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRh
KHNlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBjYWxsYmFja0lEKSwgMCk7CiB9
CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNl
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTgwZDY5MTgyM2FiN2E1ZTUxMTcyYTIzMzViMGExMTg3
YWE3ZGEyMy4uNTI5OTc2NTg2MDdhMzYxNzExZWY5MTMyN2VjNDcxZTI4M2JlZjc5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
YXRhYmFzZVByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAgICAgfkRhdGFi
YXNlUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3RkOjpmdW5jdGlvbjx2b2lk
KFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV1RG
OjpGdW5jdGlvbjx2b2lkKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
IAogICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiYmKTsKIApAQCAtODgsOSArODgsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKICAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9w
ZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAo
V2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGVlOTdmMGM4NWExODMxMDYzZjVmNTIyY2Q2MmNjMmZk
MDYwNzNkNTUuLjVhOGE5YjdlOWI2MjMxMjU3YmE1MWQ0ODAwYjZjYTUyZDM0NWNlMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtOTAsNyArOTAs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJp
bmdEcmF3aW5nKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIEhpZGUgdGhlIGNvbnRlbnQgdW50aWwg
dGhlIGN1cnJlbnRseSBwZW5kaW5nIHVwZGF0ZSBhcnJpdmVzLgogICAgIHZpcnR1YWwgdm9pZCBo
aWRlQ29udGVudFVudGlsUGVuZGluZ1VwZGF0ZSgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
CmluZGV4IDA5YmEzMGI0ODNkMGZjODZmMTgwMTQ3OTBiNjYzYWMzZGJmMmVjNjQuLmZhMGE0ZGQz
ZjgzODgyNzUyZmJiNzVjYzk1ZDE5ZTI1ZTUyMzQ4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcApAQCAtMjIyLDEwICsyMjIsMTAg
QEAgaW50IERyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6d2ViVmlld0RyYXdD
YWxsYmFjayhEcmF3aW5nQXJlYVByb3h5SW0KICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXZvaWQg
RHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdGFydChzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFjaykKK3ZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdGFydChXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQogewogICAgIG1fc3RhcnRUaW1lID0gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKLSAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSwgImRyYXci
LCByZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2ViVmlld0RyYXdDYWxsYmFjayksIHRoaXMp
OwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDFfcyk7CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9p
ZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OmRpZERyYXcoKQogICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxMDBfbXMpOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJv
eHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZChD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2VQcm94eS5pc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKQEAgLTI2Nyw3ICsyNjcsNyBA
QCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYgogCiAgICAgaWYgKCFtX2RyYXdpbmdNb25pdG9yKQog
ICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVBy
b3h5SW1wbDo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKLSAgICBtX2RyYXdpbmdN
b25pdG9yLT5zdGFydChjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX2RyYXdpbmdNb25pdG9yLT5z
dGFydChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5o
CmluZGV4IDg5YzcxM2ZjODdhNzM1NDkzMDM4YWQxMGQ5MGRjMWNmNjA2MWQ0NTcuLjczNTMzZjQ3
MjRlNGY2NDViY2MzMzczYWE0MTA2NDllZWViMjM5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlU29vbigpOwogICAgIHZvaWQgZGlzY2Fy
ZEJhY2tpbmdTdG9yZSgpOwogCi0gICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpIG92ZXJyaWRlOwogCiAgICAgY2xhc3MgRHJhd2luZ01vbml0
b3IgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nTW9uaXRvcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBE
cmF3aW5nTW9uaXRvcihXZWJQYWdlUHJveHkmKTsKICAgICAgICAgfkRyYXdpbmdNb25pdG9yKCk7
CiAKLSAgICAgICAgdm9pZCBzdGFydChzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgICAgIHZvaWQgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgaW50IHdl
YlZpZXdEcmF3Q2FsbGJhY2soRHJhd2luZ01vbml0b3IqKTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZTsKICAgICAgICAgZG91Ymxl
IG1fc3RhcnRUaW1lIHsgMCB9OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBtX2NhbGxiYWNrOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBtX2NhbGxiYWNrOwogICAgICAgICBSdW5Mb29wOjpUaW1lcjxE
cmF3aW5nTW9uaXRvcj4gbV90aW1lcjsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMTBmMzQyNzc2MjQxZTQ0NjRhMjIwN2MzODQwNjk5
ODBkZjJlM2VkYi4uYzQzMTExOTE3NTE3ZWFkMjQ4Mjc2OTZmMWE2MWE0OWQ4ODVjY2U3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMzAsNyArMzAs
NiBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTE5MCwxMyArMTg5LDYgQEAgcHVibGljOgogICAg
IH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90IHB1dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgIHsKLSAgICAgICAg
YXV0byBjYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6
dHlwZTo6Y3JlYXRlKFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKLSAgICAgICAg
cmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVD4KICAgICB1aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5j
dGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFj
dGl2aXR5VG9rZW4pCiAgICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxi
YWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlv
biksIGFjdGl2aXR5VG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwNjc5ODFmMDg3ZWFkZDQz
ODYwZmE4ZjhkY2U3Zjc2YWI3ODI3Yzc4Li5iNTg4N2JlODcwMDczYmFlNWJjMTY0MzU4ZDk3MDVi
YjVmMDA2ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIyLDE1ICsxMjIsMTQgQEAgRG93bmxv
YWRQcm94eSogTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHIKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVE
b3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0
ZURhdGEpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0
Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9w
dGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIsIHNlc3Npb25JRF0oV2Vic2l0ZURh
dGEgd2Vic2l0ZURhdGEpIHsKKyAgICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBzZXNzaW9uSURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgUkVMRUFTRV9MT0df
SUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgZG9uZSBmZXRjaGluZyBXZWJz
aXRlIGRhdGEiLCB0aGlzKTsKICAgICB9KTsKQEAgLTEzOCwyOCArMTM3LDI2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkZldGNo
V2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgY2FsbGJhY2tJ
RCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRh
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlLCAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhl
IE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEiLCB0aGlzKTsKIAotICAg
IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9uSURdIHsKKyAgICBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIHRva2VuID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2Vzc2lvbklEXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9j
ZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
TmV0d29yayBwcm9jZXNzIGlzIGRvbmUgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAg
ICAgfSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdlYnNpdGVE
YXRhKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBjYWxsYmFja0lEKSwgMCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0
ZUNhbGxiYWNrSUQoKTsKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1By
b3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsg
cHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRo
aXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lELCBbdGhpcywgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyLCBzZXNzaW9u
SURdIHsKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3Mu
YWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHNlc3Npb25JRF0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHJlbGVhc2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkb25lIGRl
bGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggYzVlYjFjNmU4ODk2MzA3N2RmOGU1Zjk1NjgyYTNjNDk0ZDcxMTk1
NC4uOTljYWI1M2VkYmI5NzNkNGE2ZjYyMGY5MjE5MDU4Y2U2MzFhZDljMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAKICAgICBEb3dubG9hZFByb3h5KiBjcmVhdGVE
b3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgdm9p
ZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgc3RkOjpmdW5jdGlv
bjx2b2lkKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
Piwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmZXRjaFdl
YnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdl
YnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CkBAIC0xMjcs
OSArMTI3LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9u
UmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdl
YnNpdGVEYXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4g
bV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxi
YWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bl
bmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RG93bmxvYWRQcm94eU1hcD4gbV9kb3dubG9hZFByb3h5TWFwOwogICAgIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4MGMzMThjNzMxMzdhZDEw
NDI5MTI5OTA1OWI3NDBkMjQ4ZDIyMjkyLi5lZGRiYjE2NGU5ZDRjZGIxNzI3NmUyNDdhMTZkY2Jl
Y2Y5YjJhNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM2Nyw3
ICszNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9IDA7CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAppbmRleCAyNTA3NTkyNGViNWI2MzA4
ODk4NmMyYjY4ZmFkMTdkZjA2ZDliNzBkLi5lNzMyN2QwNDlkOTA1MWQyZjRiNGYwMjJmZDQyODY0
Y2NjYzRjMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmlu
Z091dEVudHJpZXNBZGRlZEFmdGVyVGkKICAgICB9KTsKIH0KIAotdm9pZCBQbHVnSW5BdXRvU3Rh
cnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3Qo
QVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0
aW9uVGltZXN0YW1wKT4gaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUpCit2b2lkIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5n
VGVzdChBUEk6OkRpY3Rpb25hcnkmIHRhYmxlLCBXVEY6OkZ1bmN0aW9uPGJvb2woZG91YmxlIGV4
cGlyYXRpb25UaW1lc3RhbXApPiYmIGlzRXhwaXJhdGlvblRpbWVBY2NlcHRhYmxlKQogewogICAg
IEFTU0VSVChpc0V4cGlyYXRpb25UaW1lQWNjZXB0YWJsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
CmluZGV4IGZlNmJjNmY1Njc5OTBmY2I1NDFlMWEyZDJiOWU5ZGY0NjU5MjdlY2IuLmNhMWIwMDQw
OTI3MDAwODkwM2QwMWNiYjc3NjAzYTVkN2RhMmIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaApA
QCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcl9oCiAKICNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjcsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sOwogCi0gICAgdm9pZCBzZXRBdXRvU3Rh
cnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChBUEk6OkRpY3Rpb25hcnkmLCBzdGQ6
OmZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPik7CisgICAgdm9pZCBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChBUEk6OkRpY3Rpb25h
cnkmLCBXVEY6OkZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPiYmKTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBdXRvU3RhcnRUYWJsZTsKICAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBBdXRvU3RhcnRUYWJsZT4gU2Vzc2lvbkF1dG9TdGFy
dFRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDZkMGJlOWZkZjMzNjFhMTFhNmU1NjE2NWY4
ZDdiOGMwYmQ1MjM1MmEuLjVlOWIzOTY3ZTFmZDQyNjg5YjBkMDA2NWRhMmFlYTZjNGY1NWE5NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAKQEAgLTk1LDIxICs5NSwyMSBAQCB2b2lkIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5QcgogICAgIG1fcGx1Z2luUHJvY2Vzc2VzLnJlbW92ZSh2ZWN0b3JJbmRleCk7CiB9CiAK
LXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmZldGNoV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4g
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRjaFdlYnNp
dGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUGx1Z2luUHJv
Y2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdp
blByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlTm9ybWFsLCBQbHVnaW5Qcm9j
ZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogCiAgICAgcGx1Z2luUHJvY2Vzcy0+ZmV0Y2hXZWJz
aXRlRGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2lu
Y2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nl
c3MocGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1R5cGVOb3JtYWwsIFBs
dWdpblByb2Nlc3NTYW5kYm94UG9saWN5Tm9ybWFsKSk7CiAKICAgICBwbHVnaW5Qcm9jZXNzLT5k
ZWxldGVXZWJzaXRlRGF0YShtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
SG9zdE5hbWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5h
bWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGhvc3ROYW1lcyxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVn
aW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlTm9y
bWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeU5vcm1hbCkpOwogICAgIHBsdWdpblByb2Nl
c3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGhvc3ROYW1lcywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggZGQ0NGQ2MjJjOTJjMzFlN2NkZDQx
OTkyMzFiNzk1ZTViN2ZjZTFkMi4uMmNlNDdiMzYxNjNhNzQ5YzZlNzY5ZmYxMDE4MDk1MzY1Njhk
ZDRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwg
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBs
dWdpblByb2Nlc3NQcm94eSopOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4gY29t
cGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMsIFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
bmxpbmUgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBwcm9jZXNzU3VwcHJlc3Npb25E
aXNhYmxlZFRva2VuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiYWNkNzNlNTQwMzQwYTQ0MjZkNjBl
OTBlY2E3OTcxYmE1YjBkYTc5Li42ZmM3YTVjNmQzYzM5OTQxNjg1NmU1NDFhMmRlNWJjYzgzNTRi
NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFBsdWdpblBy
b2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxT
dHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZmV0
Y2hXZWJzaXRlRGF0YShXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxs
YmFja0lEKCk7CiAgICAgbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpQbHVnaW5Qcm9jZXNzOjpHZXRTaXRlc1dpdGhEYXRhKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAot
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVk
U2luY2UsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CiAgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzczo6RGVs
ZXRlV2Vic2l0ZURhdGEobW9kaWZpZWRTaW5jZSwgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZv
ckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRh
Rm9ySG9zdE5hbWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGVmNDNlYWJiMDY4MGU3ZDcwYWVjNmFhY2IzNTNlZTMw
NWExNDc3OGMuLjcwODA2YzFlN2I2NDY5YjQwNzJkOGQyZWU5YzMzNGExZmMzMmMyZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCkBAIC03OCw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBlbmNvZGVkIGluIHRoZSBn
aXZlbiBhcmd1bWVudCBlbmNvZGVyIGFuZCBzZW50IGJhY2sgdG8gdGhlIGNvbm5lY3Rpb24gb2Yg
dGhlIGdpdmVuIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCi0gICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5j
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0
TmFtZXMsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIApAQCAtMTU3
LDIxICsxNTcsMjEgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3BlbmRp
bmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChWZWN0b3I8U3RyaW5nPik+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRh
Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKIAogICAg
IHN0cnVjdCBEZWxldGVXZWJzaXRlRGF0YVJlcXVlc3QgewogICAgICAgICBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2U7CiAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQ7CiAgICAgfTsKICAgICBWZWN0b3I8RGVsZXRlV2Vic2l0ZURhdGFSZXF1ZXN0
PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YVJlcXVlc3RzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2Fs
bGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1f
cGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogCiAgICAgc3RydWN0IERlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdCB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGhv
c3ROYW1lczsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRDsKICAgICB9OwogICAgIFZlY3Rv
cjxEZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lc1JlcXVlc3Q+IG1fcGVuZGluZ0RlbGV0ZVdl
YnNpdGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFt
ZXNDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
Pj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXNDYWxsYmFja3M7CiAKICAg
ICAvLyBJZiBjcmVhdGVQbHVnaW5Db25uZWN0aW9uIGlzIGNhbGxlZCB3aGlsZSB0aGUgcHJvY2Vz
cyBpcyBzdGlsbCBsYXVuY2hpbmcgd2UnbGwga2VlcCBjb3VudCBvZiBpdCBhbmQgc2VuZCBhIGJ1
bmNoIG9mIHJlcXVlc3RzCiAgICAgLy8gd2hlbiB0aGUgcHJvY2VzcyBmaW5pc2hlcyBsYXVuY2hp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlv
bi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAppbmRleCBm
YWM4NjMyNmMxNWUxNzZhOTI4NDJmNTIyYzlmNTU1NjU1NzY3ZTI2Li5jNDJlOThjZTY4YmJkMGQ4
NDFhN2I2Mjg2MTQ0YWU1Y2M2MjBjNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
cm9jZXNzQXNzZXJ0aW9uLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUHJvY2Vzc0Fzc2Vy
dGlvbl9oCiAjZGVmaW5lIFByb2Nlc3NBc3NlcnRpb25faAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIFBMQVRGT1JNKElPUykgJiYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGM4OGU2OGM5NWY0ZTVkNDhlYWE5MjE1MjhjNjZjNmI5
MDZjZjg2NmEuLjJmNmRiMGIyOWM3MWNhNGRhN2Y3ODk4ZWQzNjdiNTI5NjBlODM1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0z
OTUsNyArMzk1LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICBtX3Bh
Z2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVt
cykpOwogfQogCi1CYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tG
b3J3YXJkTGlzdFN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYpPiYgZmlsdGVyKSBjb25zdAorQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0Zv
cndhcmRMaXN0OjpiYWNrRm9yd2FyZExpc3RTdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2hh
c0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggMTc4
ZjA3ZTg3ZTgyMTk4MTQ2NTIwMjlhNmE3ODM4OTg5NmY3NTI2Ny4uYTA0MGIyMWJmZDZkMTkzNDg4
YTIzODQ3OGM1NjkxYmI0NGJkYjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGJhY2tMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkgY29u
c3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IGZvcndhcmRMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1
bnNpZ25lZCBsaW1pdCkgY29uc3Q7CiAKLSAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9y
d2FyZExpc3RTdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mKT4mKSBjb25zdDsKKyAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExp
c3RTdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJikg
Y29uc3Q7CiAgICAgdm9pZCByZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlKTsK
IAogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZGY4MDFmNDIyMDAxY2ZmNjUzMmUxZThkYTg1ZDBlZDUzYmEyNWJjMy4uNTU3
OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgxMWY4NDJlMGYxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTIyNSw3ICsy
MjUsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KIAogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KGNhbGxiYWNrKQogICAgICAgICBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5zZXQoc2Vzc2lvbklE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0yNTksOCArMjU5LDkgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnVucmVnaXN0ZXJPYnNlcnZlcihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPYnMKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGllbnQuY29va2llc0RpZENoYW5nZSh0aGlz
KTsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzLmdldChz
ZXNzaW9uSUQpKQotICAgICAgICBjYWxsYmFjaygpOworICAgIGF1dG8gbGVnYWN5SXRlcmF0b3Ig
PSBtX2xlZ2FjeUNvb2tpZU9ic2VydmVycy5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKGxlZ2Fj
eUl0ZXJhdG9yICE9IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAoKCps
ZWdhY3lJdGVyYXRvcikudmFsdWUpKCk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb29raWVP
YnNlcnZlcnMuZmluZChzZXNzaW9uSUQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2Nvb2tpZU9i
c2VydmVycy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaAppbmRleCAyN2FhMmFjMDc5ZTdkMTgwOTZjM2Q1MDYzNDM0ZGQ2ZTk4Nzhi
YTVhLi44MmFmNzcwNjVkMmYyMWIwZjVjOTFjNjdkOWQ5NTQwYzI4YjJmNTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC04NCw3
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
V2ViQ29yZTo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgc2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFj
ayhXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9p
ZCBzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIAogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBA
IC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKLSAgICBI
YXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9sZWdh
Y3lDb29raWVPYnNlcnZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwogICAgIEhhc2hNYXA8
V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29va2llT2JzZXJ2ZXJz
OwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50IG1fY2xpZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZjA2OWMzZDM1YTQ5ZDgxMDdl
Y2ViZmNjMjA0ZWYzYzc3ZGNkZjJjLi5jODlmYzg5ZGU1MGNjZTg2MmM5NWY3MDNjOTQ3ZDRlOTg5
YWVhZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTU5Niw3ICsxNTk2LDcgQEAgSW50U2l6ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LnZpZXdTaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZh
bGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2
ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQsIFdURjo6RnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwpAQCAtMTYyMSw3ICsxNjIxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1l
bnQoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlbGVj
dGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0
ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24oU3RyaW5nKCksIGZhbHNlLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3du
KTsKQEAgLTIzNDYsMTEgKzIzNDYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29k
aW5nTmFtZSksIG1fcGFnZUlEKTsKIH0KIAotU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpPiYgZmlsdGVyKSBjb25zdAorU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0
YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZpbHRl
cikgY29uc3QKIHsKICAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogCi0gICAgc2Vzc2lv
blN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tGb3J3
YXJkTGlzdFN0YXRlKGZpbHRlcik7CisgICAgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0
YXRlID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tGb3J3YXJkTGlzdFN0YXRlKFdURk1vdmUoZmls
dGVyKSk7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBtX3BhZ2VMb2FkU3Rh
dGUucGVuZGluZ0FQSVJlcXVlc3RVUkwoKTsKICAgICBpZiAocHJvdmlzaW9uYWxVUkxTdHJpbmcu
aXNFbXB0eSgpKQpAQCAtMjgxOSw3ICsyODE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hl
cyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRp
b25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIs
IGZhbHNlLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtMjgzMCw3ICsy
ODMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIHNjcmlwdCwgc3RkOjpmdW5jdGlvbjwKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShzY3JpcHQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmlu
ZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NDEsNyArMjg0MSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0
cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTI4NTMsNyArMjg1Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmlu
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJp
bmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNT
dHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC0yODc3LDcgKzI4NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQ
cm9maWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhYwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Ft
cGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CkBAIC0yODg5LDcgKzI4ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBp
c1dlYlByb2Nlc3NSZXNwb25zaXZlKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc1dl
YlByb2Nlc3NSZXNwb25zaXZlKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tGdW5j
dGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIHsKQEAgLTI4OTksNyArMjg5OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZShjYWxsYmFja0Z1bmN0aW9uKTsKKyAgICBtX3Byb2Nlc3Mt
PmlzUmVzcG9uc2l2ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogI2lmIEVOQUJM
RShNSFRNTCkKQEAgLTI5MTUsNyArMjkxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250
ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0
cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7CkBAIC0zODI3LDcgKzM4MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlYwogCiAgICAgfTsKIAotICAgIGlmIChtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlQXN5bmMo
dGhpcywgZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YSwgcmVxdWVzdCwgd2luZG93RmVhdHVyZXMs
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgaWYgKG1fdWlD
bGllbnQtPmNyZWF0ZU5ld1BhZ2VBc3luYyh0aGlzLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW5EYXRh
LCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFtjb21wbGV0
aW9uSGFuZGxlcl0oUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgeyBjb21wbGV0aW9uSGFu
ZGxlcihuZXdQYWdlKTsgfSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IG5ld1BhZ2UgPSBtX3VpQ2xpZW50LT5jcmVhdGVOZXdQYWdlKHRoaXMsIGZyYW1lLCBz
ZWN1cml0eU9yaWdpbkRhdGEsIHJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSk7CkBAIC02Mjg1LDcgKzYyODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQog
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4
dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJVbmRvR3JvdXAsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pLCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMo
c3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMo
V1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihFZGl0aW5nUmFuZ2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CkBAIC02Mjk2LDcgKzYyOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFu
Z2VBc3luYyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwogICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRSYW5nZUFzeW5jKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJh
bmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewog
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKQEAgLTYzMDcsNyArNjMwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENh
bGxiCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFu
Z2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNh
bGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2lu
dEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV1RGOjpGdW5jdGlvbjx2b2lk
ICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKDAsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNjMxOCw3ICs2MzE4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHMKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRSZWN0KCksIEVkaXRpbmdS
YW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTYzNjIsNyArNjM2Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZChib29sIGVuYWJsZWQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OnRh
a2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUs
IFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtNjU4MiwxNyArNjU4MiwxNSBAQCB2b2lkKiBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUAogICAgIHJl
dHVybiBtX3BhZ2VDbGllbnQuaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhp
dFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgdHlwZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKCkpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y29waWVkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICBhdXRvIHZvaWRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtjb3BpZWRDb21w
bGV0aW9uSGFuZGxlcl0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgY29waWVkQ29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgQmxvY2tfcmVsZWFzZShjb3BpZWRDb21wbGV0aW9u
SGFuZGxlcik7CisgICAgYXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsK
ICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lE
KTsKQEAgLTY3MTYsNyArNjcxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZl
bnRUZXN0VHJpZ2dlcigpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9k
cmF3aW5nQXJlYSkgewogICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKQEAgLTY3NDYsNyArNjc0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJv
eHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikgeworICAgIG1faWNvbkxv
YWRpbmdDbGllbnQtPmdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWZQdHI8V2ViUGFnZVByb3h5Pih0aGlzKSwgbG9hZElkZW50aWZpZXJdKFdURjo6
RnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikgewogICAgICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYg
KGNhbGxiYWNrRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxs
cHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBlMjI0NjQxM2NmOGY0MTUxNTU4YzBiYmYzZWNhY2E1ZTIz
NWRlNzAxLi44NGRmNTgwMDA1ZjZiNTI0ZWQ5MDc3MmFjMjM0ZjNmM2M3ZWI0MDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZpZXdX
aWxsRW5kTGl2ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jiwg
c3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIAogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKICAgICB2b2lkIHJl
c3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKTsKQEAgLTQ1OCw3ICs0NTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3Ry
aW5nKCkpOwotICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIGNvbnN0IEVkaXRvclN0
YXRlJiBlZGl0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yU3RhdGU7IH0KICAgICBi
b29sIGNhbkRlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1NlbGVjdGVkUmFuZ2UoKSAmJiBpc0Nv
bnRlbnRFZGl0YWJsZSgpOyB9CkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZSAm
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkNhcHR1cmVEZXZpY2VzQXJlTXV0ZWQ7IH0KIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7
CisgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgZG91Ymxl
IGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBl
eHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpAQCAtNTAyLDI2
ICs1MDIsMjYgQEAgcHVibGljOgogICAgIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5
ZXJUcmVlKHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8s
IHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVp
bnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hl
cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
dWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUJsb2Nr
U2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCB1aW50MzJfdCB0b3Vj
aCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsK
LSAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgc2VsZWN0UG9z
aXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
Pik7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgbW92ZVNl
bGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29y
ZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4pOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnko
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQ2NF90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9u
RGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRv
dWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBhcHBseUF1
dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+KTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNl
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIFdURjo6RnVu
Y3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBiZWdpblNlbGVj
dGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgV1RGOjpGdW5jdGlv
bjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0
b2NvcnJlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIGJvb2wgYXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBjb250ZXh0QmVmb3Jl
LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGNvbnRl
eHRBZnRlciwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKLSAgICB2b2lk
IHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
KyAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9s
ZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2
b2lkIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJik7CkBAIC01MzIsNyArNTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwogICAgIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgdWlu
dDY0X3QgaW1hZ2VTaXplKTsKICAgICB2b2lkIGRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRv
dWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwg
ZmxvYXQgc2hyaW5rVGhyZXNob2xkKTsKLSAgICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShi
b29sIGlzRm9yd2FyZCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFs
dWVBc051bWJlcihkb3VibGUpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRl
eCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwpA
QCAtNTQ2LDEyICs1NDYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0
aWNDbGljaygpOwogICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZO
ZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdv
cnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KTsKLSAgICB2b2lk
IGdldFNlbGVjdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAg
dm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIHNldEZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0SXNTY3JvbGxpbmdPclpvb21pbmcoYm9vbCk7Ci0g
ICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwotICAgIHZvaWQgcmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChp
bnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Cisg
ICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0
KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIHZvaWQgZGlkUGVyZm9ybURhdGFJ
bnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKICAgICB2b2lkIGRp
ZEhhbmRsZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVxdWVzdChib29sIHN0YXJ0ZWQpOwpAQCAtNTkz
LDEwICs1OTMsMTAgQEAgcHVibGljOgogICAgIExheWVyT3JWaWV3KiBhY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVj
dGlvblVwZGF0ZSA9IGZhbHNlKTsKLSAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoc3RkOjpm
dW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAg
dm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBv
aW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVp
bnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9u
PHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQg
Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50
QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRl
cmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5
bmMoKTsKIApAQCAtNjA3LDkgKzYwNyw5IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPik7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJp
YnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBzZXRGb250KGNvbnN0IFN0cmluZyYgZm9udEZhbWlseSwgZG91YmxlIGZv
bnRTaXplLCB1aW50NjRfdCBmb250VHJhaXRzKTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKICAgICBOU1dpbmRvdyAqcGxhdGZvcm1X
aW5kb3coKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgZXN0aW1h
dGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiA9IG51bGxw
dHIpIGNvbnN0OworICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxi
b29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgPSBudWxscHRyKSBjb25zdDsKICAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3Rh
dGUsIGJvb2wgbmF2aWdhdGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c1RleHRab29tKCkgY29uc3Q7
CkBAIC03NzgsMjIgKzc3OCwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZ01hdGNoZXMoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mIG1hdGNoUmVj
dHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsKIAotICAgIHZvaWQgZ2V0Q29u
dGVudHNBc1N0cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQg
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBpc1dlYlByb2Nlc3NSZXNwb25z
aXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4pOwor
ICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldEJ5dGVjb2RlUHJv
ZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKT4mJik7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdm9pZCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFt
ZVByb3h5KiwgQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKLSAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Cisg
ICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKTsKKyAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24s
IGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENh
bGxiYWNrPiYmKTsKIAogICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Kik7CkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9vbCYgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mKTsK
ICNlbmRpZgogCi0gICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29y
ZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4p
OworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3QsIFdlYkNvcmU6OkludFNp
emUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAg
ICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCk7CiAgICAgdm9pZCBuYXZpZ2F0aW9u
R2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KTsKQEAgLTEwOTAsNyArMTA5MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRl
c3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pik7CiAKLSAgICB2b2lkIGlu
c3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCheY29tcGxldGlv
bkhhbmRsZXIpKCkpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0
aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgdm9pZCBoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQpOwogICAgIHZvaWQg
ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKTsKQEAgLTExNDUsNyArMTE0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEZvciB0ZXN0aW5nCiAgICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJp
Z2dlcigpOwotICAgIHZvaWQgY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShzdGQ6OmZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBjYWxsQWZ0ZXJO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogCiAgICAgdm9pZCBkaWRSZWFjaExheW91dE1pbGVzdG9uZSh1aW50MzJfdCBs
YXlvdXRNaWxlc3RvbmVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA0MDE5ZjI3MzA4ODhlMjFlZmZhODJmN2MyZmMwYjA3MDU4OGJkNzdk
Li5jMzJjYjYzMzlmYWM4OGEyNmFiNDFiMjY2YzIxYjQ2NWU4MmUzNTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE2NSw3ICsxMTY1LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNI
b2xkaW5nTG9ja2VkRmlsZXMpCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUp
PiBjYWxsYmFjaykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojppc1Jlc3BvbnNpdmUoV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKG1faXNSZXNwb25zaXZlID09IE5vT3JNYXliZTo6Tm8pIHsKICAgICAgICAgaWYgKGNh
bGxiYWNrKSB7CkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdgog
ICAgIH0KIAogICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsKKyAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1haW5UaHJlYWRQaW5nKCksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGQwMGI0
NzQ5NDk5NzQzOWMyZThkZTM0NTEzNWM5MWEyNTMxYTkyMWUuLmI1YjQ5OTNhMmViMjEyZmRmYzAw
NjgwMDZiN2ZjY2YyMmQ4NTY3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlaW5z
dGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwog
Ci0gICAgdm9pZCBpc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZSk+KTsKKyAgICB2b2lkIGlzUmVzcG9uc2l2ZShXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWFpblRocmVhZFBpbmcoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NQaW5nKCk7CiAKQEAgLTI4Nyw3ICsyODcsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
U3RyaW5nLCB1aW50NjRfdD4gbV9wYWdlVVJMUmV0YWluQ291bnRNYXA7CiAKICAgICBlbnVtIGNs
YXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwotICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNw
b25zaXZlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogCiAgICAgVmlz
aWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCBmN2I4NjVmZmVhYWNmNGE1ZmYzNTA2MjUwZmE3NDUxMzY3NTM1NjQzLi44MThkMDFkY2Zl
YTQxYWUxYTdlZjhhMDYxN2ExNGYzYjZkMzk2YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNz
aW9uSUQuaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcAppbmRleCBkMjRhMDIzOGY0NjAzOGVmNTMxYmU0MGYwMjgzZGE5
ZjVjNzI0ZTU3Li5iZWRhNzVlOWIzZTgxNGNhYTYzZTA2YjZjNDE4NjJkNmUwYTMyOTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBub3RpZmllcjsKICAgICB9CiAKLSAgICB2b2lkIGFkZChEYW1hZ2UgZGFtYWdlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKKyAgICB2b2lkIGFkZChEYW1hZ2Ug
ZGFtYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBnZGtf
d2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5j
PigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CkBAIC05MywxNCArOTMsMTUgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0CiAgICAgewotICAgICAg
ICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9ucy5nZXQo
ZGFtYWdlKSkgewotICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAgICAgICAgYXV0byBp
dCA9IG1fbm90aWZ5RnVuY3Rpb25zLmZpbmQoZGFtYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
bm90aWZ5RnVuY3Rpb25zLmVuZCgpKSB7CisgICAgICAgICAgICAoKCppdCkudmFsdWUpKCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9u
b3RpZnlGdW5jdGlvbnM7CisgICAgSGFzaE1hcDxEYW1hZ2UsIFdURjo6RnVuY3Rpb248dm9pZCgp
Pj4gbV9ub3RpZnlGdW5jdGlvbnM7CiB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTE+IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IDZiYmVhMmE5YWExYzUyYWM0NTc1MjIyMjRlYWNkOGQzMmU0
ZDQ0ZmIuLjM4ZGQxMmQxZWYwNDQ1MTU5ZjMzM2I0NDM0NzdkNTI3MDY1OTI0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTIw
Miw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlQXZvaWRzVW5zYWZlQXJl
YShib29sIGF2b2lkc1Vuc2FmZUFyZWEpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
Ci0gICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBi
NWY2NWI2YjI2NDkzNTM5NDZmNDllZDlkMGZhODc4YjdlMWVhODM4Li5hOThiODU3MmZlNTNhYzlj
OWZjODJhNWY0MTU1OTFjOTVlYjk2MWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hF
Q0tfQkFTRShhc3NlcnRpb24sIG1fd2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9u
KCkpCiAKQEAgLTgwNywyMCArODA4LDIwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUFj
dGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZlU2VzCiB9CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKLXZvaWQgUGFnZUNsaWVudEltcGw6OnJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIHBhc3N3b3JkSGFuZGxlciA9IFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1N0cmluZyAqcGFzc3dvcmQpIHsK
KyAgICBhdXRvIHBhc3N3b3JkSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQgKE5TU3RyaW5nICopPjo6
ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShOU1N0cmluZyAqcGFzc3dvcmQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFz
c3dvcmQpOwotICAgIH07CisgICAgfSk7CiAKICAgICBpZiAoV0tQYXNzd29yZFZpZXcgKnBhc3N3
b3JkVmlldyA9IG1fd2ViVmlldy5fcGFzc3dvcmRWaWV3KSB7CiAgICAgICAgIEFTU0VSVChmaWxl
TmFtZSA9PSBTdHJpbmcgeyBwYXNzd29yZFZpZXcuZG9jdW1lbnROYW1lIH0pOwogICAgICAgICBb
cGFzc3dvcmRWaWV3IHNob3dQYXNzd29yZEZhaWx1cmVBbGVydF07Ci0gICAgICAgIHBhc3N3b3Jk
Vmlldy51c2VyRGlkRW50ZXJQYXNzd29yZCA9IHBhc3N3b3JkSGFuZGxlcjsKKyAgICAgICAgcGFz
c3dvcmRWaWV3LnVzZXJEaWRFbnRlclBhc3N3b3JkID0gcGFzc3dvcmRIYW5kbGVyLmdldCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgW21fd2ViVmlldyBfc2hvd1Bhc3N3b3JkVmll
d1dpdGhEb2N1bWVudE5hbWU6ZmlsZU5hbWUgcGFzc3dvcmRIYW5kbGVyOnBhc3N3b3JkSGFuZGxl
cl07CisgICAgW21fd2ViVmlldyBfc2hvd1Bhc3N3b3JkVmlld1dpdGhEb2N1bWVudE5hbWU6Zmls
ZU5hbWUgcGFzc3dvcmRIYW5kbGVyOnBhc3N3b3JkSGFuZGxlci5nZXQoKV07CiAgICAgTmF2aWdh
dGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqbV93ZWJWaWV3LT5fcGFnZSkuZGlkUmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0M2JiNGYwNmNjZDM1Nzhi
ZDAyNDc5NGU0MWUwODVjNDkyNjg4NjAyLi40NDNhNDhiMjIwOGMxYzM5ZDA3MjcwZGMyNmU4NTE2
MzA4ZjZlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllclRy
ZWVDb21taXRDb21wbGV0ZSgpCiAgICAgbV9wYWdlQ2xpZW50LmxheWVyVHJlZUNvbW1pdENvbXBs
ZXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0
V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
dWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJ
bnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTQz
NCw3ICs0MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleAogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50MzJfdCln
cmFudWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVp
bnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0
cmluZyYgbmV3VAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFj
ZVNlbGVjdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRG
b3JBdXRvY29ycmVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24s
IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBj
b25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4oKSwgU3RyaW5nKCksIDAsIDAs
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4
dEZvckF1dG9jb3JyZWN0aW9uCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4
dCwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0
aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQs
IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBj
YWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
QEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgbwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9u
LCBvcmlnaW5hbFRleHQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC00OTUsNyArNDk1LDcg
QEAgYm9vbCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICByZXR1cm4gYXV0b2NvcnJlY3Rpb25BcHBs
aWVkOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
aWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQg
cG9pbgogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxh
cml0eSksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01MTcs
NyArNTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
cG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248
dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNTI4LDcgKzUyOCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiks
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7
CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7
CkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChwb2ludCwg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDY0
X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewog
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24p
OwpAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKGRp
cmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgc3RkOjpmdW5jdGlvbjx2
b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01NjIsNyAr
NTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwKICAgICAKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnko
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
MCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01NzQsNyArNTc0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5
KGNvbnN0IFdlYkNvcmU6OkludFAKICAgICAKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3REaWN0YXRpb25Db250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlm
ICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIFN0cmlu
ZygpLCBTdHJpbmcoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC01ODUsNyAr
NTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVp
bnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIFN0
cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVu
a25vd24pOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBdXRvY29y
cmVjdGlvbkNvbnRleHQoU3RyaW5nJiBiZWZvcmVDb250ZXh0LCBTdHJpbmcmIG1hcmtlCiAgICAg
bV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQ6OlJl
cGx5KGJlZm9yZUNvbnRleHQsIG1hcmtlZFRleHQsIHNlbGVjdGVkVGV4dCwgYWZ0ZXJDb250ZXh0
LCBsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0aW9uQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBTdHJpbmcoKSwg
U3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwpAQCAtNjE3LDcgKzYxNyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWluCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCksIG1f
cGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50
MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJv
bSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgMCwgMCwgMCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXb3JkQmFja3dhcmQoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0LCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewog
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0Pigp
LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTcyOSw3ICs3MjksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zm
c2V0KFdlYkNvcmU6OlRleHRHcgogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRo
VGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3Rz
QXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBp
ZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFZlY3RvcjxXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0PigpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKQEAgLTc0
MCw3ICs3NDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25P
ZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgUwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KG9m
ZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCiAgICAgbV9wYWdlQ2xpZW50LmRpc2FibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNO
ZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBRdWlja0xvb2tECiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LnJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGZpbGVOYW1lLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyldKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKKyAgICBtX3Bh
Z2VDbGllbnQucmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoZmlsZU5hbWUsIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KHBhc3N3b3JkKSwgcHJvdGVj
dGVkVGhpcy0+bV9wYWdlSUQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aAppbmRleCAxZWIwY2JmYzViNWNjYmUxOWI5MzZjYzZhZGE0NWM0OTEwNjc3OTQ0Li5mZWQyMzJk
MTdmYmU5ZDk3MjM5NGJkZTE1OWU2Y2JiOWNkNWVlM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIEZvciBub3cs
IGFsbCBjYWxsYmFja3MgYXJlIGNhbGxlZCBiZWZvcmUgY29tbWl0dGluZyBjaGFuZ2VzLCBiZWNh
dXNlIHRoYXQncyB3aGF0IHRoZSBvbmx5IGNsaWVudCByZXF1aXJlcy4KICAgICAvLyBPbmNlIHdl
IGhhdmUgb3RoZXIgY2FsbGJhY2tzLCBpdCBtYXkgbWFrZSBzZW5zZSB0byBoYXZlIGEgYmVmb3Jl
LWNvbW1pdC9hZnRlci1jb21taXQgb3B0aW9uLgotICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5k
ZXggYTFiMjI5OTk0N2ZiMTI1N2M4ZWUzY2MyNWI3MzU5YjUzZjFmZTY3NS4uZmNjNDM1ZWE4NGYz
OGQ2YWYzMTY3MGRjNzlmMDdjMDFlNzRlMDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogICAgIG1fd2ViUGFnZVByb3h5
LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1l
c3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+
KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBD
OjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwog
fQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2VQ
cm94eS5pc1ZhbGlkKCkpIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6
OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5LmgKaW5kZXggZjE4MjUzZjc3MzA0YmU2YjBhOTdhOWZhNTk0NTlhMjc3MjE3YzUzNy4uZGEw
YzNlMGY4NTQ3ZmM4YzgyM2VmMWEyM2I5NWNiNjI2ZGFhMWY5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxTZW5kVXBkYXRlR2VvbWV0
cnkoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4
IDcxNzMzMjQwMzYzNjc1MDQ2NDZhODBlYWJiZDdjN2ZjOGM2MjExN2YuLmJlODllNTNmMDAwMDMx
MTc2NGYzNjQ3MzZlYmE0ZTI1ZDcxNmM2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0
ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SVBDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMTEsMTIgKzIxMiwxMiBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBGbG9hdAogICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29tbWl0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSwg
bV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2spCit2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RG
OjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAg
ICAvLyBUaGlzIGNhbGxiYWNrIGlzIHByaW1hcmlseSB1c2VkIGZvciB0ZXN0aW5nIGluIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLiBXZSBjb3VsZCBpbiB0aGVvcnkgd2FpdCBmb3IgYSBDQSBj
b21taXQgaGVyZS4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2Nr
UHRyPHZvaWQgKCk+Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IHsKICAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7Ci0gICAgfSk7
CisgICAgfSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggYjU1
NGQxN2JjZWI2YjljMThiMTJlYjdlYjYwYjRlYmYzMzY0M2U3Zi4uODVmNWRlMmZkMzAzNzA2NDYx
Nzk1NmRiNjk2M2RkZDZkYzYyNTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTE0Miw4ICsxNDIsOCBAQCBAZW5kCiBA
aW1wbGVtZW50YXRpb24gV0tUZXh0RmluZGVyQ2xpZW50IHsKICAgICBXZWJQYWdlUHJveHkgKl9w
YWdlOwogICAgIE5TVmlldyAqX3ZpZXc7Ci0gICAgRGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKE5T
QXJyYXkgKiwgYm9vbCBkaWRXcmFwKT4+IF9maW5kUmVwbHlDYWxsYmFja3M7Ci0gICAgRGVxdWU8
c3RkOjpmdW5jdGlvbjx2b2lkKE5TSW1hZ2UgKik+PiBfaW1hZ2VSZXBseUNhbGxiYWNrczsKKyAg
ICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoTlNBcnJheSAqLCBib29sIGRpZFdyYXApPj4gX2Zp
bmRSZXBseUNhbGxiYWNrczsKKyAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoTlNJbWFnZSAq
KT4+IF9pbWFnZVJlcGx5Q2FsbGJhY2tzOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQ
YWdlOihXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCmlu
ZGV4IDQwZmE0MWZjNmViZjdhN2E4NmU5NTNlNzJhMDYwN2NlNjkwNDZjNWEuLmRhM2MyYjhiOGMw
Y2UxYjRhZDVhN2M3M2ZkYzQ5Njc4NGU0NmNlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KQEAgLTc4LDIwICs3
OCwyMCBAQCAtIChBUEk6Ok9iamVjdCopdXNlckRhdGEKIEBlbmQKIAogQGludGVyZmFjZSBXS1Nl
bGVjdGlvbkhhbmRsZXJXcmFwcGVyIDogTlNPYmplY3QgewotICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4gX3NlbGVjdGlvbkhhbmRsZXI7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBfc2Vs
ZWN0aW9uSGFuZGxlcjsKIH0KLS0gKGlkKWluaXRXaXRoU2VsZWN0aW9uSGFuZGxlcjooc3RkOjpm
dW5jdGlvbjx2b2lkICgpPilzZWxlY3Rpb25IYW5kbGVyOworLSAoaWQpaW5pdFdpdGhTZWxlY3Rp
b25IYW5kbGVyOihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpc2VsZWN0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpZXhlY3V0ZVNlbGVjdGlvbkhhbmRsZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
S1NlbGVjdGlvbkhhbmRsZXJXcmFwcGVyCi0tIChpZClpbml0V2l0aFNlbGVjdGlvbkhhbmRsZXI6
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pc2VsZWN0aW9uSGFuZGxlcgorLSAoaWQpaW5pdFdpdGhT
ZWxlY3Rpb25IYW5kbGVyOihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpc2VsZWN0aW9uSGFuZGxl
cgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIF9zZWxlY3Rpb25IYW5kbGVyID0gc2VsZWN0aW9uSGFuZGxl
cjsKKyAgICBfc2VsZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VsZWN0aW9uSGFuZGxlcik7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMTdjY2JhNDhiZjllNzRkNmVmNTBkOTEzYzg0YmM0Yzcx
OTVjNzZjMi4uMWE2NGU3OWI4Y2M4ZGEyYmMxZDg0YjFiMjdiZjNjODBmNDJkZTU5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJp
YnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2Um
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICgh
aXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQXR0cmlidXRlZFN0cmluZygp
LCBFZGl0aW5nUmFuZ2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CkBAIC0yMDAs
NyArMjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHIKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHN0cmluZywgYWN0dWFsUmFuZ2UpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT5jYWxsYmFja0Z1bmN0
aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKFN0cmluZygpLCAwLCBmYWxzZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggMmE2MmQwN2VlMTQ2M2IwNjM1ZDFj
ZDg5YzlkMzc1OTI5ZWYyZjc0Ny4uNjJmMDU0ZTQwZjU4ZmQxNGZmOTU0NDBmNDUzNGE2MTExY2Q4
ZmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGF0aWMg
dWludDY0X3QgZ2VuZXJhdGVDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZFJlcGx5SUQoKQog
ICAgIHJldHVybiArK2Nhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHlJRDsKIH0KIAot
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5h
bWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0
IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0
byByZXBseUlEID0gZ2VuZXJhdGVDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZFJlcGx5SUQo
KTsKIApAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVPcGVuUGF5bWVu
dFNldHVwUmVwbHlJRCgpCiAgICAgcmV0dXJuICsrb3BlblBheW1lbnRTZXR1cFJlcGx5SUQ7CiB9
CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlcGx5SUQgPSBnZW5lcmF0ZU9w
ZW5QYXltZW50U2V0dXBSZXBseUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDAzYjll
NWIzMGVjZmIzMzQ2OGZmNzMxMDIxZWM0YWZiNDc5ZGFjMjMuLmUzNTNkNjY1ZWVlZTM2ODVhODA0
MmY1NDY1NDJhZWI0MTM2NjNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTUsOCArNTUs
OCBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudC4K
ICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKSBvdmVycmlkZTsKICAg
ICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJp
bmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIG9wZW5QYXltZW50
U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9t
YWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3Jp
Z2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIG92ZXJyaWRlOwpA
QCAtODYsOCArODYsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCi0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4+IG1fcGVuZGlu
Z0Nhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkQ2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX3BlbmRpbmdPcGVuUGF5bWVudFNl
dHVwQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAo
Ym9vbCk+PiBtX3BlbmRpbmdDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZENhbGxiYWNrczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPj4gbV9wZW5k
aW5nT3BlblBheW1lbnRTZXR1cENhbGxiYWNrczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyZDIzMmFjZDE3MGU1
ZTAxYmYxYjYwYTczYzBhNmVhNjVmNGRiMGJhLi44ZmYwZTI4MjZmZjA4NmM5ZDM1YjhhMTgyMjUy
YjIwODgwMWM2NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICAvLyBOZXRzY2FwZVBsdWdpblN0cmVhbUxvYWRlckNsaWVudAotICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2lu
VmlldzsKICAgICB1aW50NjRfdCBtX3N0cmVhbUlEOwogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChSZXNvdXJjZVJlcXVlc3QpPiBtX2xvYWRD
YWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFJlc291cmNlUmVxdWVzdCk+IG1fbG9h
ZENhbGxiYWNrOwogCiAgICAgLy8gVHJ1ZSBpZiB0aGUgc3RyZWFtIHdhcyBleHBsaWNpdGx5IGNh
bmNlbGxlZCBieSBjYWxsaW5nIGNhbmNlbCgpLgogICAgIC8vIChBcyBvcHBvc2VkIHRvIGJlaW5n
IGNhbmNlbGxlZCBieSB0aGUgdXNlciBoaXR0aW5nIHRoZSBzdG9wIGJ1dHRvbiBmb3IgZXhhbXBs
ZS4KQEAgLTIyMSwxMiArMjIxLDEyIEBAIHN0YXRpYyB1aW50MzJfdCBsYXN0TW9kaWZpZWREYXRl
TVMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgcmV0dXJuIHN0ZDo6Y2hy
b25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGxhc3RNb2RpZmll
ZC52YWx1ZSgpLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKIH0KIAotdm9pZCBQbHVnaW5W
aWV3OjpTdHJlYW06OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGRl
Y2lzaW9uSGFuZGxlcikKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjp3aWxsU2VuZFJlcXVlc3Qo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFJlc291cmNlUmVxdWVzdCYmKT4mJiBkZWNpc2lvbkhhbmRsZXIpCiB7CiAgICAgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBjb25zdCBVUkwmIHJlZGlyZWN0
UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCi0gICAgbV9sb2FkQ2FsbGJh
Y2sgPSBkZWNpc2lvbkhhbmRsZXI7CisgICAgbV9sb2FkQ2FsbGJhY2sgPSBXVEZNb3ZlKGRlY2lz
aW9uSGFuZGxlcik7CiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBtX3BsdWdpblZpZXct
Pm1fcGx1Z2luLT5zdHJlYW1XaWxsU2VuZFJlcXVlc3QobV9zdHJlYW1JRCwgcmVxdWVzdFVSTCwg
cmVkaXJlY3RSZXNwb25zZVVSTCwgcmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwCmluZGV4IDVhZDViNGIyZjIxMGI5MTQ3NDc1ZTg2NzIxNWYyMDkwNDkxZGNiYWEuLmE1YmU1
MmM1YTZkMzlmOWQzMzNkMjE2Yzg0NDM5NDgyNTE0NjY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtODIsNyArODIsNyBA
QCBEcmF3aW5nQXJlYTo6fkRyYXdpbmdBcmVhKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWE6
OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IGZ1bmN0aW9uKQordm9pZCBEcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKIHsKICAgICAvLyBTY3JvbGwgcG9zaXRpb24gdXBkYXRlcyBhcmUgc3luY2hyb25vdXMgYnkg
ZGVmYXVsdCBzbyB3ZSBjYW4ganVzdCBjYWxsIHRoZSBmdW5jdGlvbiByaWdodCBhd2F5IGhlcmUu
CiAgICAgZnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmgKaW5kZXggMzRiZGJhN2NhMmY2MWJkZTdlM2RiNmI4NmZmYmY2ZjU1OTJk
NDU1My4uZDg0NjM5ZjVmMmQwODQxYTE2YTg4NjkxODhhMzUyOWJjMWE1ODgyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVNjcmVlbi5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CkBAIC0xMTUsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25p
dG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBk
YXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyZWI2NzVkYjFlOWM5YTBmNTJk
YTcwY2MyM2UyY2VmY2IyNGNmYTc1Li4zNmQwNDIwN2ZlNzQ2M2EwYjJhOWY4OTBiMWYzZjAyYzUx
Y2QwMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0yMjAyLDcgKzIyMDIsNyBAQCBib29sIFdlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGls
ZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpCiAgICAgcmV0dXJuICFkcmF3aW5nQXJlYSgpIHx8IGRy
YXdpbmdBcmVhKCktPm1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpOwog
fQogCi12b2lkIFdlYlBhZ2U6Om1hcmtMYXllcnNWb2xhdGlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjptYXJrTGF5ZXJzVm9sYXRpbGUo
V1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIiVwIC0gV2ViUGFnZTo6bWFya0xheWVyc1ZvbGF0aWxlKCkiLCB0
aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggYTVmZWNiYzc4NTE3MTllNTdhMjg5NjYyYzlmMWQxZWMyYTNhNzM3Yi4uODliMmUwZjQ1NzU4
ZGQ5MTQ2ODlkYmM0NzA4ZGI1MTZhM2I0YzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MDMsNyArNjAzLDcgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQgc2V0TGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKTsKLSAgICB2b2lkIG1hcmtMYXllcnNWb2xhdGlsZShz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyID0geyB9KTsKKyAgICB2b2lk
IG1hcmtMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIgPSB7IH0pOwogICAgIHZvaWQgY2FuY2VsTWFya0xheWVyc1ZvbGF0aWxlKCk7CiAKICAg
ICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcigpOwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9sYXllclZvbGF0aWxpdHlUaW1lcjsKLSAgICBW
ZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9tYXJrTGF5ZXJzQXNWb2xhdGlsZUNvbXBs
ZXRpb25IYW5kbGVyczsKKyAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9tYXJr
TGF5ZXJzQXNWb2xhdGlsZUNvbXBsZXRpb25IYW5kbGVyczsKICAgICBib29sIG1faXNTdXNwZW5k
ZWRVbmRlckxvY2sgeyBmYWxzZSB9OwogCiAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA5NTgzMzhhMDNlZTdj
N2FkYTVmMWMzY2ViODliNzgxNWRjZmZkNDZkLi42YjI5MWQ0MDZmZjZjZTcxODc4NjUyM2Q3YmNk
MTY4MTlhMWJiZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNTY3Jv
bGxpbmcoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGRpc3BhdGNoQWZ0
ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3Np
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91
bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3Kikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmlu
ZGV4IGZjYTIyMDM3ODU5ODIzYTMyYmVjZjg2ZGE1MmI4YjBhYjYyNTQxZjguLmRiMTQ5ZTc5MDJk
YmMyNzY0Nzg4YTgxMDkzYmFhOTJkOWZmMjUyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNjYWxlVmlld1RvRml0RG9jdW1lbnRJZk5lZWRlZCgpCiAgICAg
bV93ZWJQYWdlLnNjYWxlVmlldyh2aWV3U2NhbGUpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRp
b24oc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlv
bihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKICAgICBpZiAoIW1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKSB7CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKHMK
ICAgICAvLyAoVGhlIHdlYiBwYWdlIGlzIGFscmVhZHkga2VwdCBhbGl2ZSBieSBkaXNwYXRjaEFm
dGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24pLgogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSAmbV93ZWJQYWdlOwogCi0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoW3Ro
aXMsIHdlYlBhZ2UsIGZ1bmN0aW9uXSB7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJh
cnJpZXIoW3RoaXMsIHdlYlBhZ2UsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAg
ICAgICAgRHJhd2luZ0FyZWEqIGRyYXdpbmdBcmVhID0gd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKTsK
ICAgICAgICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDZiOTJmOWM3ODIxY2QwZDEzOTFh
M2FhNzRmZmFhNjY2OTY4M2ZhY2YuLjAzNTlkMjNhM2UyNzBiMzg5YzM1OTY3ZjVmN2MzZDYzMjZl
ZDU1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTM5
Niw3ICsxMzk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCksIDApOwogfQogCi12b2lkIFdlYlBy
b2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0
aWxlKCkiLCB0aGlzKTsKICAgICBtX3BhZ2VzTWFya2luZ0xheWVyc0FzVm9sYXRpbGUgPSBtX3Bh
Z2VNYXAuc2l6ZSgpOwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjptYXJr
QWxsTGF5ZXJzVm9sYXRpbGUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1h
cC52YWx1ZXMoKSkgewotICAgICAgICBwYWdlLT5tYXJrTGF5ZXJzVm9sYXRpbGUoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHBhZ2UtPm1hcmtMYXllcnNWb2xhdGlsZShbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAg
ICAgICAgICAgQVNTRVJUKG1fcGFnZXNNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZSk7CiAgICAgICAg
ICAgICBpZiAoIS0tbV9wYWdlc01hcmtpbmdMYXllcnNBc1ZvbGF0aWxlKQogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IDc4MmQ1M2JkNDRhOTc5ZTBlZDgxNzU0YmIxZmEyYjJhODUyNDMxZDAuLmFiZjA4
MDQwMjQwN2Y2Njg3MDMwYWY4NjM4N2EyMzBmYjI4YzI3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yNDAsNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZ2lzdGVyV2l0aFN0YXRlRHVtcGVyKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgbWFya0FsbExh
eWVyc1ZvbGF0aWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgdm9pZCBtYXJrQWxsTGF5ZXJzVm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgY2FuY2VsTWFya0FsbExheWVyc1ZvbGF0aWxlKCk7
CiAgICAgdm9pZCBzZXRBbGxMYXllclRyZWVTdGF0ZXNGcm96ZW4oYm9vbCk7CiAgICAgdm9pZCBw
cm9jZXNzU3VzcGVuc2lvbkNsZWFudXBUaW1lckZpcmVkKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>