<?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>199247</bug_id>
          
          <creation_ts>2019-06-26 16:58:40 -0700</creation_ts>
          <short_desc>Adopt simple structured bindings in more places</short_desc>
          <delta_ts>2019-07-03 13:47:16 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1548236</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-26 16:58:40 -0700</bug_when>
    <thetext>Adopt simple structured bindings in more places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548309</commentid>
    <comment_count>1</comment_count>
      <attachid>372988</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-26 18:38:29 -0700</bug_when>
    <thetext>Created attachment 372988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548310</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 18:41:27 -0700</bug_when>
    <thetext>Attachment 372988 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1179:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:370:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:380:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 24 in 34 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>1548325</commentid>
    <comment_count>3</comment_count>
      <attachid>372992</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-26 19:02:28 -0700</bug_when>
    <thetext>Created attachment 372992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548328</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 19:04:52 -0700</bug_when>
    <thetext>Attachment 372992 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1179:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:370:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:380:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 24 in 34 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>1548339</commentid>
    <comment_count>5</comment_count>
      <attachid>372996</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-26 19:55:50 -0700</bug_when>
    <thetext>Created attachment 372996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548342</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 19:57:23 -0700</bug_when>
    <thetext>Attachment 372996 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1179:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 34 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>1548458</commentid>
    <comment_count>7</comment_count>
      <attachid>373027</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-27 06:34:59 -0700</bug_when>
    <thetext>Created attachment 373027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548460</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-27 06:37:33 -0700</bug_when>
    <thetext>Attachment 373027 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1182:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 34 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>1548493</commentid>
    <comment_count>9</comment_count>
      <attachid>373033</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-27 09:12:41 -0700</bug_when>
    <thetext>Created attachment 373033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548494</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-27 09:14:26 -0700</bug_when>
    <thetext>Attachment 373033 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1182:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 34 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>1549113</commentid>
    <comment_count>11</comment_count>
      <attachid>373200</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-30 19:26:25 -0700</bug_when>
    <thetext>Created attachment 373200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549114</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-30 19:28:55 -0700</bug_when>
    <thetext>Attachment 373200 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1200:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 34 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>1549130</commentid>
    <comment_count>13</comment_count>
      <attachid>373206</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-30 20:20:15 -0700</bug_when>
    <thetext>Created attachment 373206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549131</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-30 20:21:45 -0700</bug_when>
    <thetext>Attachment 373206 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1200:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 34 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>1549582</commentid>
    <comment_count>15</comment_count>
      <attachid>373327</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-02 08:57:02 -0700</bug_when>
    <thetext>Created attachment 373327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549583</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-02 08:58:49 -0700</bug_when>
    <thetext>Attachment 373327 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1202:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 33 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>1549621</commentid>
    <comment_count>17</comment_count>
      <attachid>373338</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-02 10:38:57 -0700</bug_when>
    <thetext>Created attachment 373338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549623</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-02 10:41:26 -0700</bug_when>
    <thetext>Attachment 373338 did not pass style-queue:


ERROR: Source/WebCore/rendering/InlineTextBox.cpp:183:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/InlineTextBox.cpp:439:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp:293:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/runtime/PromiseDeferredTimer.cpp:57:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:86:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/WidthIterator.cpp:279:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:1202:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1311:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1411:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1547:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:85:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:430:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:454:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:205:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:113:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:583:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/PathUtilities.cpp:586:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/svg/animation/SVGSMILElement.cpp:222:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp:101:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/platform/graphics/ComplexTextController.cpp:791:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/WebCore/style/StyleResolveForDocument.cpp:120:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp:80:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 22 in 33 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>1549978</commentid>
    <comment_count>19</comment_count>
      <attachid>373338</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-03 13:46:47 -0700</bug_when>
    <thetext>Comment on attachment 373338
Patch

Clearing flags on attachment: 373338

Committed r247102: &lt;https://trac.webkit.org/changeset/247102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549979</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-03 13:46:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549981</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-03 13:47:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/52608473&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372988</attachid>
            <date>2019-06-26 18:38:29 -0700</date>
            <delta_ts>2019-06-26 19:02:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190626183828.patch</filename>
            <type>text/plain</type>
            <size>62906</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjYgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgc3BlY2llc0NvbnN0
cnVjdCBuZWVkcyB0byB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGEgRGF0YVZpZXcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRU
aW1lci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQs
NyBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAg
ICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJl
ZCogdGlja2V0OwotICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwg
dGFzaykgPSBtX3Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJl
ZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxl
ZCB0aGVzZSBwcm9taXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihTaWduYWwsIAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7
CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAg
ICAgICAgICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gW3N0YXJ0LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50
ZXIoZW5kKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3Vu
ZCBtYXRjaCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw5ICs4Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3Qq
LCAKIEFMV0FZU19JTkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21W
YWx1ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90
KiBkYXRhOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRh
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90
KiBiYXNlOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpW
YWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0
IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNv
bWV0aGluZyB3aWxsIE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHls
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJp
bmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFu
Y2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZh
bGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29va2llRGF0YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6Y29uc3RydWN0QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMjYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bXBsZW1lbnQgY29uc29sZS5jb3VudFJlc2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsOSArMTE3Niw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JP
cmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0
aW9uIGZvbnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9u
KSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAKICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9y
aWVudGF0aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0g
Z2x5cGhPcmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZVMKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9u
bHlQb2xpY2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZv
dW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTY3JpcHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cyk7CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJ
blJlcG9ydE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0
SGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwog
ICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRP
bmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
X292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBi
b29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2ll
cywgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAg
ICBpZiAodHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24g
fHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0
cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4
cGFuc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBh
bmRSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJp
ZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlk
VHJhaWxpbmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlv
dXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgw
LDE0ICs1ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAg
IHN0ZDo6dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29y
bmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2Us
IHJhZGl1cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAg
ICBGbG9hdFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6
dGllKGNwMSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21F
ZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQ
b2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAg
ICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0K
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGgg
fHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZl
bmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAg
ICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFu
ZExlZnQsIGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRB
c1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhw
YW5zaW9uLCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBm
b3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5k
TGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFz
U3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24sIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVm
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2Vl
bkZhbWlsaWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVk
RmFtaWx5TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
QEAgLTE0MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm8KICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250
ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAg
IGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
c3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBs
YXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0
ZXJuYXRlRm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRm
b3JtRGF0YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogCkBAIC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdo
aWNoIHJlcHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAg
c3RkOjp0aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNz
YXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50
aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRh
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRv
IFtjb29raWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5
KTsKICAgICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vz
c2VkIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAh
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAg
ICAgICAgc3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25T
dGFydEVuZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0
cnVjdCBJbmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRl
eHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gpCiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0g
Ym94LnNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9
IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlv
biA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcs
NyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
JmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9y
aWVudGF0aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsK
LSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1l
bnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDggKzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAg
ICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFt
ZSgpOwogCi0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShw
cmVmaXgsIGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNjEgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBz
aW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBu
b3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFs
IGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQg
YmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFy
RXhwaXJlZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9y
Rm9yVGFyZ2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGF5bWVudENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0
dGluZ0xvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZp
ZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXll
ckZyYW1lRmVuY2VkKToKKwogMjAxOS0wNi0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyBzaG91bGQgd2FpdCBmb3IgY29va2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDgg
KzU5LDggQEAgc3RhdGljIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGFsbFNwZWN1bAogc3RhdGlj
IHZvaWQgcHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZUNvdW50cygpCiB7
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIi0tIFNwZWN1bGF0
aXZlIGxvYWRpbmcgc3RhdGlzdGljcyAtLSIpOwotICAgIGZvciAoYXV0byYgcGFpciA6IGFsbFNw
ZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlcygpKQotICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiJXM6ICV1IiwgcGFpci5rZXkudXRmOCgpLmRh
dGEoKSwgcGFpci52YWx1ZSk7CisgICAgZm9yIChhdXRvJiBbbWVzc2FnZSwgY291bnRdIDogYWxs
U3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2VzKCkpCisgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIlczogJXUiLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIGNvdW50KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAJKHJldmlzaW9uIDI0Njg1
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCAKIAogdm9pZCBQcmVmZXRjaENhY2hlOjpjbGVhckV4cGlyZWRF
bnRyaWVzKCkKIHsKLSAgICBVUkwgcmVxdWVzdFVybDsKLSAgICBXYWxsVGltZSB0aW1lc3RhbXA7
CiAgICAgYXV0byB0aW1lb3V0ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIHdoaWxlICghbV9zZXNz
aW9uRXhwaXJhdGlvbkxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0ZDo6dGllKHJlcXVlc3RV
cmwsIHRpbWVzdGFtcCkgPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOworICAgICAg
ICBhdXRvIFtyZXF1ZXN0VXJsLCB0aW1lc3RhbXBdID0gbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3Qu
Zmlyc3QoKTsKICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcyk7CiAgICAgICAgIEFTU0VSVChyZXNvdXJj
ZXMtPmNvbnRhaW5zKHJlcXVlc3RVcmwpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMjIgKzgwLDIyIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmUKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Z1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1l
QW5kUmVjZWl2ZXIgOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKLSAgICAgICAgaWYgKG5h
bWVBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xv
YmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWVBbmRSZWNlaXZlci5rZXkpOworICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewor
ICAgICAgICBpZiAobmFtZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgZ2xvYmFs
UmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHJlY2VpdmVyKTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJz
VG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1lQW5kSWRBbmRSZWNlaXZlciA6IG1fbWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZElkQW5kUmVjZWl2ZXIudmFsdWUgPT0g
Jm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihuYW1lQW5kSWRBbmRSZWNlaXZlci5rZXkuZmlyc3QsIG5hbWVBbmRJZEFu
ZFJlY2VpdmVyLmtleS5zZWNvbmQpKTsKKyAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRp
b25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNl
aXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5k
RGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJlY2VpdmVy
VG9SZW1vdmUgOiByZWNlaXZlcnNUb1JlbW92ZSkKLSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKHJlY2VpdmVyVG9SZW1vdmUuZmlyc3QsIHJlY2VpdmVyVG9SZW1vdmUuc2Vjb25kKTsKKyAg
ICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQor
ICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAK
IHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIwLDEzICszMjAsOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxp
CiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xp
ZW50Q291bnRzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52
YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0K
KyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IGNvbnRleHRNYXAudmFsdWVzKCkp
CiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgIH0KIH0KIAogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4
dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogY29u
dGV4dE1hcC52YWx1ZXMoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAg
ICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
ICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwpAQCAtMzU2LDE0ICszNTIsMTQg
QEAgICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0
PDE+KHR1cGxlKS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBp
bnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUp
LT5oYXNNb2RlKG1vZGUpKQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbnRlcmZhY2UtPmhhc01vZGUobW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzcxLDggKzM2Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNN
b2QKIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxl
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBs
ZSktPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgZm9y
IChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCisgICAg
ICAgIGlmIChpbnRlcmZhY2UtPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0
dXJlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzgxLDggKzM3Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpt
YXlBdXQKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiBib29sIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigp
IGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUpLT5pc1BsYXlpbmdWaWRlb0luRW5oYW5j
ZWRGdWxsc2NyZWVuKCkpCisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2Nv
bnRleHRNYXAudmFsdWVzKCkpCisgICAgICAgIGlmIChpbnRlcmZhY2UtPmlzUGxheWluZ1ZpZGVv
SW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICAKQEAgLTM5OSw4ICszOTUsOCBAQCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSogVmlkZW9GCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1h
cC52YWx1ZXMoKSkKLSAgICAgICAgc3RkOjpnZXQ8MT4odHVwbGUpLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOworICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250
ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBpbnRlcmZhY2UtPmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0
Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYm
IGNhbGxiYWNrKQpAQCAtNDczLDEwICs0NjksOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6c2V0dXBGCiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsK
IAogICAgIEFTU0VSVCh2aWRlb0xheWVySUQpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZT4gaW50ZXJmYWNlOwogCi0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50
ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAgICAgYWRkQ2xp
ZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAgUmV0YWluUHRyPFdLTGF5ZXJIb3N0Vmll
dz4gdmlldyA9IHN0YXRpY19jYXN0PFdLTGF5ZXJIb3N0Vmlldyo+KG1vZGVsLT5sYXllckhvc3RW
aWV3KCkpOwpAQCAtNjY1LDcgKzY1OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRDbGUKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBtb2Rl
bDsKICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFj
ZTsKIAotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVN
b2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hd
OwogICAgIFttb2RlbC0+bGF5ZXJIb3N0VmlldygpIHJlbW92ZUZyb21TdXBlcnZpZXddOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05NywxMCArOTcsNyBAQCBkb3VibGUgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6em9vCiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIHNvbWUgb2YgdGhpcyBjb2RlIHdpdGgg
ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZT8KIAotICAgIEZs
b2F0UmVjdCBhZGp1c3RlZFRhcmdldFJlY3Q7Ci0gICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IHZp
ZXdwb3J0TWluaW11bVNjYWxlOwotICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3cG9ydE1h
eGltdW1TY2FsZTsKLSAgICBzdGQ6OnRpZShhZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2Fs
ZSwgbWF4aW11bVNjYWxlKSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2Nh
bGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2Fs
ZSwgIWZpdEVudGlyZVJlY3QpOworICAgIGF1dG8gW2FkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11
bVNjYWxlLCBtYXhpbXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpv
b21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11
bVNjYWxlLCAhZml0RW50aXJlUmVjdCk7CiAKICAgICBkb3VibGUgY3VycmVudFNjYWxlID0gW21f
Y29udGVudFZpZXcgX2NvbnRlbnRab29tU2NhbGVdOwogICAgIGRvdWJsZSB0YXJnZXRTY2FsZSA9
IFttX2NvbnRlbnRWaWV3IF90YXJnZXRDb250ZW50Wm9vbVNjYWxlRm9yUmVjdDphZGp1c3RlZFRh
cmdldFJlY3QgY3VycmVudFNjYWxlOmN1cnJlbnRTY2FsZSBmaXRFbnRpcmVSZWN0OmZpdEVudGly
ZVJlY3QgbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxl
XTsKQEAgLTExOCwxMCArMTE1LDcgQEAgdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
OjpkaWRDbwogICAgICAgICBbbV9jb250ZW50VmlldyBfem9vbVRvSW5pdGlhbFNjYWxlV2l0aE9y
aWdpbjpvcmlnaW5dOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFRhcmdldFJlY3Q7Ci0gICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IHZpZXdwb3J0TWluaW11
bVNjYWxlOwotICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3cG9ydE1heGltdW1TY2FsZTsK
LSAgICBzdGQ6OnRpZShhZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNj
YWxlKSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJl
Y3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgIWZpdEVudGly
ZVJlY3QpOworICAgIGF1dG8gW2FkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhp
bXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFy
Z2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0
RW50aXJlUmVjdCk7CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2Fu
dHMgdG8gY29uc3VtZSB0aGUgZG91YmxlIHRhcCBiZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0
aW9uLgogCkBAIC0xNDcsMTAgKzE0MSw3IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6ZGlkQ28KIAogdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5
KEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgRmxvYXRSZWN0IHZpc2li
bGVDb250ZW50UmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3Bv
cnRNYXhpbXVtU2NhbGUpCiB7Ci0gICAgRmxvYXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsKLSAg
ICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRNYXhpbXVtU2NhbGU7Ci0gICAgZG91Ymxl
IG1pbmltdW1TY2FsZSA9IHZpZXdwb3J0TWluaW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFkanVz
dGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWduaWZp
Y2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVt
U2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCB0cnVlKTsKKyAgICBhdXRvIFthZGp1c3RlZFRh
cmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlv
blRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxl
LCB2aWV3cG9ydE1heGltdW1TY2FsZSwgdHJ1ZSk7CiAKICAgICBbbV9jb250ZW50VmlldyBfem9v
bVRvUmVjdDphZGp1c3RlZFRhcmdldFJlY3Qgd2l0aE9yaWdpbjpvcmlnaW4gZml0RW50aXJlUmVj
dDpOTyBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGUg
bWluaW11bVNjcm9sbERpc3RhbmNlOjBdOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyNDY4NTYpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDk0LDkgKzIwOTQsNyBAQCBzdGQ6OnR1cGxlPFN0cmluZywgUERGU2Vs
ZWN0aW9uICosIE5TRGljCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbi5zdHJpbmcsIHNlbGVj
dGlvbiwgbmlsIH07CiAgICAgfQogCi0gICAgTlNTdHJpbmcgKmxvb2t1cFRleHQ7Ci0gICAgTlNE
aWN0aW9uYXJ5ICpvcHRpb25zOwotICAgIHN0ZDo6dGllKGxvb2t1cFRleHQsIG9wdGlvbnMpID0g
RGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9yUERGU2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAg
YXV0byBbbG9va3VwVGV4dCwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQ
REZTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAgICBpZiAoIWxvb2t1cFRleHQubGVuZ3RoKQogICAg
ICAgICByZXR1cm4geyBlbXB0eVN0cmluZygpLCBzZWxlY3Rpb24sIG5pbCB9OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1
LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TAogICAgIAogICAg
IC8vIEZpbmQgdGhlIGZyYW1lIHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0
QXRQb2ludChtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhyb3Vu
ZGVkSW50UG9pbnQoZmxvYXRQb2ludCkpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShyYW5nZSwgb3B0aW9ucykgPSBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChyZXN1bHQpOworICAgIGF1dG8g
W3JhbmdlLCBvcHRpb25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0
KHJlc3VsdCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMTAw
LDkgKzk4LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TAogCiB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKEZyYW1lJiBm
cmFtZSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uKQogewotICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAg
c3RkOjp0aWUoc2VsZWN0ZWRSYW5nZSwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOworICAgIGF1dG8gW3NlbGVjdGVkUmFuZ2UsIG9wdGlv
bnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAg
ICBpZiAoc2VsZWN0ZWRSYW5nZSkKICAgICAgICAgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JS
YW5nZShmcmFtZSwgKnNlbGVjdGVkUmFuZ2UsIG9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRp
b24pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBs
YXliYWNrU2Vzc2lvbk0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIoKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVz
KCkpIHsKLSAgICAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGlu
dGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKKyAg
ICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewogICAgICAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogICAgICAgICBtb2Rl
bC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwogCkBAIC0yMjksOSArMjI2LDcgQEAgUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgUGxheWJhYwogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0
cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Cisg
ICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKIAogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQgPSBt
b2RlbC0+bWVkaWFFbGVtZW50KCk7CiAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRy
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDExICsxMjIsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpWaWRlb0Z1
bGxzY3JlZW5NCiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKCkKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7
Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7
Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZh
Y2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0KKyAgICBm
b3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewog
ICAgICAgICBtb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBtb2RlbC0+
cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogCkBAIC0xODAsOSArMTc2LDcgQEAgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dCYgVmlkZW9GdQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAg
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+cmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChjb250ZXh0SWQpOwogCkBAIC0yNTAsOSArMjQ0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRgogICAgIFVOVVNFRF9QQVJBTShhZGRSZXN1bHQpOwogICAg
IEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGNvbnRleHRJZCk7CiAKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogICAgIGlm
ICghaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpCiAgICAgICAgIGludGVyZmFjZS0+
c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbEhvc3RpbmdQcm9jZXNzKCkpOwpAQCAtMzY5LDkgKzM2MSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGEKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJl
ZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRy
PFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRp
ZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7
CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKIAogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVy
SG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CiAKQEAgLTM4NSw5ICszNzUsNyBAQCAgICAg
Q0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5CiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0g
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAg
ICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJ
bnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxp
bmVUaGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElk
LCBtb2RlbF0gKCkgbXV0YWJsZSB7IC8vIG5lZWQgdGhpcyBmb3IgcmV0dXJuIHZpZGVvIGxheWVy
CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkLCBtb2Rl
bF0gKCkgbXV0YWJsZSB7CkBAIC00MDYsOSArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRTZXR1cEZ1bAogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwog
CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFj
ZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewpA
QCAtNDMxLDkgKzQxNyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRG
dWwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxF
eGl0RnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAg
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2Rl
bC0+dmlkZW9FbGVtZW50KCk7CiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCkBAIC00NTAsOSArNDM0
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bAogewogICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVu
KCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAg
aW50ZXJmYWNlLT5zZXRJc0FuaW1hdGluZyhmYWxzZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRJc0Z1
bGxzY3JlZW4oZmFsc2UpOwpAQCAtNDc5LDkgKzQ2MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkRXhpdEZ1bGwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQp
OwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsK
LSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwot
ICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFu
ZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CkBAIC01MTAsOSArNDkw
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRgogewogICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2Rl
bCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAg
ICBpZiAoaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaW50ZXJm
YWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKQEAgLTU3
Miw5ICs1NTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1
cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJm
YWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoc3Rk
Ojppc25hbihib3VuZHMueCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy55KCkpIHx8IHN0ZDo6aXNu
YW4oYm91bmRzLndpZHRoKCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLmhlaWdodCgpKSkgewogICAg
ICAgICBhdXRvIHZpZGVvUmVjdCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLT52aWRlb0VsZW1l
bnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDY4NTYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9yZSBwbGFj
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTI0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2VzIHNpbXBsZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLiBE
b2VzIG5vdCB0b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUgbm90IGlu
aXRpYWwgZGVjbGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAgc3RydWN0
dXJlZCBiaW5kaW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dl
YkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6
CisKIDIwMTktMDYtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBBdG9taWNTdHJpbmcgdG8gQXRvbVN0cmluZwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01NTgsOSArNTU4LDcgQEAgLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQdHI8
UmFuZ2U+IGRpY3Rpb25hcnlSYW5nZTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAg
c3RkOjp0aWUoZGljdGlvbmFyeVJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlQXRIaXRUZXN0UmVzdWx0KF9oaXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIFtkaWN0aW9uYXJ5
UmFuZ2UsIG9wdGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQo
X2hpdFRlc3RSZXN1bHQpOwogICAgIGlmICghZGljdGlvbmFyeVJhbmdlKQogICAgICAgICByZXR1
cm4gbmlsOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDY4NjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcGxhY2VzIHNpbXBsZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRp
bmdzLiBEb2VzIG5vdCB0b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUg
bm90IGluaXRpYWwgZGVjbGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAg
c3RydWN0dXJlZCBiaW5kaW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW06
CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlRmlsZVByb21pc2VSZWNlaXZlciByZWNlaXZlUHJv
bWlzZWRGaWxlc0F0RGVzdGluYXRpb246b3B0aW9uczpvcGVyYXRpb25RdWV1ZTpyZWFkZXI6XSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wNi0yNiAgQWFrYXNoIEphaW4g
IDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3cy1idWlsZF0gQWRkIGNvbmZp
Z3VyYXRpb24gYW5kIGFyY2hpdGVjdHVyZSBmb3IgV1BFIGFuZCBHVEsgYnVpbGRlcnMKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFn
Z2luZ0luZm8ubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDkg
KzEyMiw3IEBAIC0gKHZvaWQpcmVjZWl2ZVByb21pc2VkRmlsZXNBdERlc3RpbmF0aW8KICAgICBO
U0FycmF5PE5TVVJMICo+ICpzb3VyY2VVUkxzID0gX2RyYWdnaW5nU291cmNlLnByb21pc2VkRmls
ZVVSTHM7CiAgICAgZm9yIChOU1VSTCAqc291cmNlVVJMIGluIHNvdXJjZVVSTHMpIHsKICAgICAg
ICAgW29wZXJhdGlvblF1ZXVlIGFkZE9wZXJhdGlvbldpdGhCbG9jazpeewotICAgICAgICAgICAg
TlNFcnJvciAqZXJyb3I7Ci0gICAgICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkw7Ci0gICAg
ICAgICAgICBzdGQ6OnRpZShkZXN0aW5hdGlvblVSTCwgZXJyb3IpID0gY29weUZpbGUoc291cmNl
VVJMLCBkZXN0aW5hdGlvbkRpcmVjdG9yeSk7CisgICAgICAgICAgICBhdXRvIFtkZXN0aW5hdGlv
blVSTCwgZXJyb3JdID0gY29weUZpbGUoc291cmNlVVJMLCBkZXN0aW5hdGlvbkRpcmVjdG9yeSk7
CiAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb25VUkwpIHsKICAgICAgICAgICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICAgICAgICAg
ICAgICBbX2Rlc3RpbmF0aW9uVVJMcyBhZGRPYmplY3Q6ZGVzdGluYXRpb25VUkxdOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0JKHJl
dmlzaW9uIDI0Njg1NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRl
bnRNb2RlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsMzAgKzIxNywzMiBAQCBURVNUKFByZWZl
cnJlZENvbnRlbnRNb2RlLCBTZXREZWZhdWx0V2ViCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VT
d2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwotICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVm
ZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50
TW9kZVJlY29tbWVuZGVkLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUp
OwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVz
ZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZp
ZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKLQotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRl
KSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxw
cmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0
aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5k
ZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZh
dWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7
Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFp
blN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1d
KTsKKyAgICB7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAgIFt3
ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRl
ZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNU
X0VRKFdLQ29udGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJl
ZENvbnRlbnRNb2RlKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAg
ICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAi
TW96aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUSgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAg
IH0KIAotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAg
ICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVm
ZXJyZWRDb250ZW50TW9kZSk7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENv
bnRlbnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGVdKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcg
bmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChp
UCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07Ci0gICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG5h
dmlnYXRvclBsYXRmb3JtXSBjb250YWluc1N0cmluZzpAImlQIl0pOworICAgIHsKKyAgICAgICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOworICAgICAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNp
b25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpk
ZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENv
bnRlbnRNb2RlKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAg
IFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96
aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworCisgICAg
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAg
RVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVy
cmVkQ29udGVudE1vZGUpOworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCBbV0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRo
Q29udGVudE1vZGU6V0tDb250ZW50TW9kZU1vYmlsZV0pOworICAgICAgICB9XTsKKyAgICAgICAg
W1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3pp
bGxhLzUuMCAoaVAiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfVFJV
RShbW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dIGNvbnRhaW5zU3RyaW5nOkAiaVAiXSk7Cisg
ICAgfQogfQogCiBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVdpdGhvdXRO
YXZpZ2F0aW9uRGVsZWdhdGUpCkBAIC0yNjQsOSArMjY2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250
ZW50TW9kZSwgRGVza3RvcE1vZGVPbgogewogICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxl
ciBpUGhvbmVVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRl
OwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oKTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+
IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRs
ZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsK
ICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZl
cmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBbV0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVy
ZW5jZXNXaXRoQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3BdKTsKQEAgLTI4Niw5ICsy
ODYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVRvCiB7CiAgICAg
SVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pigp
OworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBfX2Jsb2NrIEJPT0wgZGVj
aWRlZFBvbGljeUZvck1haW5GcmFtZSA9IE5POwogICAgIF9fYmxvY2sgQk9PTCBkZWNpZGVkUG9s
aWN5Rm9yU3ViRnJhbWUgPSBOTzsKQEAgLTMxNCw5ICszMTIsNyBAQCBURVNUKFByZWZlcnJlZENv
bnRlbnRNb2RlLCBEZXNrdG9wTW9kZVVzCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxl
ciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7
Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsK
LSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0
aFBvbGljeURlY2lzaW9uSGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tD
b250ZW50TW9kZURlc2t0b3ApXTsKICAgICBFWFBFQ1RfRVEoMTAyNCwgW1t3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbm5lcldpZHRoIl0gaW50VmFsdWVdKTsKQEAgLTMz
NCw5ICszMzAsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBDdXN0b21Vc2VyQWdlCiB7
CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAg
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50
TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywg
ZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRl
c3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBk
ZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVz
dFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwogCiAgICAgTlNTdHJpbmcgKmN1c3Rv
bVVzZXJBZ2VudCA9IEAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkg
QXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzcxLjAuMzU3OC45
OCBTYWZhcmkvNTM3LjM2IjsKICAgICBbd2ViVmlldyBzZXRDdXN0b21Vc2VyQWdlbnQ6Y3VzdG9t
VXNlckFnZW50XTsKQEAgLTM1Miw5ICszNDYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2Rl
LCBEb05vdEFsbG93Q2hhCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNl
ckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAg
IFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAg
c3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwogCiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRl
ZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewogICAgICAgICBFWFBFQ1RfRVEo
V0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50
TW9kZSk7CkBAIC0zNzQsOSArMzY2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRWZm
ZWN0aXZlQ29udAogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRl
cmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRh
aW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6
dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZl
Y3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOm5pbF07CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIiBh
bmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm1ha2VDb250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRl
bnRNb2RlRGVza3RvcCldOwpAQCAtMzg3LDkgKzM3Nyw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVu
dE1vZGUsIEVmZmVjdGl2ZUNvbnQKIHsKICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIg
aVBob25lVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdh
dGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PigpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGUgd2l0aFBv
bGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAic2ltcGxlMiIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURl
c2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhh
bmRsZXIoV0tDb250ZW50TW9kZURlc2t0b3ApXTsKQEAgLTQwMCw5ICszODgsNyBAQCBURVNUKFBy
ZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZh
Y2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0
ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7
IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0Nv
bnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxh
LzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDIwICs0
MDUsMjAgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogewogICAg
IElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVn
YXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KCk7Ci0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBk
ZWZhdWx0UHJlZmVyZW5jZXMuX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5D
b21wYXRpYmlsaXR5ID0gQCJEZXNrdG9wQnJvd3NlciI7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAg
ICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3Ry
aW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIkRlc2t0b3BCcm93c2VyIiwgbmlsXTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZv
cm1dKTsKKyAgICB7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZh
dWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIGRlZmF1bHRQ
cmVmZXJlbmNlcy5fYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50V2l0aE1vZGVybkNvbXBhdGli
aWxpdHkgPSBAIkRlc2t0b3BCcm93c2VyIjsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAg
ICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRh
aW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiRGVza3RvcEJyb3dzZXIiLCBu
aWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdh
dG9yUGxhdGZvcm1dKTsKKyAgICB9CiAKICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQg
dG8gY2hhbmdlIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgc3RpbGwgb3B0IGludG8gZGVza3Rv
cC1jbGFzcyBicm93c2luZzsKICAgICAgICAgLy8gdGhlIGFwcGxpY2F0aW9uIG5hbWUgc2hvdWxk
IG5vdCBkZWZhdWx0IHRvICJNb2JpbGUvMTVFMTQ4Ii4KLSAgICAgICAgc3RkOjp0aWUod2ViVmll
dywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgfSk7CisgICAgICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7IH0pOwogICAgICAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxl
cjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9y
VXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJp
bmc6QCJNb2JpbGUiXSk7CkBAIC00NDEsNyArNDI3LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgQXBwbGljYXRpb25OYQogICAgIHsKICAgICAgICAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBj
aGFuZ2UgdGhlIGFwcGxpY2F0aW9uIG5hbWUsIGJ1dCB0aGlzIHRpbWUsIG9wdCBpbnRvIG1vYmls
ZSBjb250ZW50LiBUaGUgYXBwbGljYXRpb24KICAgICAgICAgLy8gbmFtZSBzaG91bGQgZGVmYXVs
dCB0byAiTW9iaWxlLzE1RTE0OCIuCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRl
KSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVNb2JpbGUsIHsgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KFdLQ29udGVudE1vZGVNb2JpbGUsIHsgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAg
ICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0p
OwpAQCAtNDQ5LDcgKzQzNSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0
aW9uTmEKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0
aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUx
NDguCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNr
dG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOwogICAgICAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFu
ZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdh
dG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0
cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ1Nyw3ICs0NDMsNyBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkg
c2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIG5pbC4KLSAgICAgICAg
c3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7IH19KTsK
KyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7
IH19KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9
IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9GQUxTRShbdXNl
ckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372992</attachid>
            <date>2019-06-26 19:02:28 -0700</date>
            <delta_ts>2019-06-26 19:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190626190228.patch</filename>
            <type>text/plain</type>
            <size>62906</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjYgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgc3BlY2llc0NvbnN0
cnVjdCBuZWVkcyB0byB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGEgRGF0YVZpZXcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRU
aW1lci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQs
NyBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAg
ICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJl
ZCogdGlja2V0OwotICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwg
dGFzaykgPSBtX3Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJl
ZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxl
ZCB0aGVzZSBwcm9taXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihTaWduYWwsIAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7
CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAg
ICAgICAgICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gW3N0YXJ0LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50
ZXIoZW5kKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3Vu
ZCBtYXRjaCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw5ICs4Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3Qq
LCAKIEFMV0FZU19JTkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21W
YWx1ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90
KiBkYXRhOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRh
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90
KiBiYXNlOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpW
YWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0
IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNv
bWV0aGluZyB3aWxsIE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHls
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJp
bmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFu
Y2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZh
bGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29va2llRGF0YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6Y29uc3RydWN0QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMjYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bXBsZW1lbnQgY29uc29sZS5jb3VudFJlc2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsOSArMTE3Niw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JP
cmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0
aW9uIGZvbnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9u
KSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAKICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9y
aWVudGF0aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0g
Z2x5cGhPcmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZVMKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9u
bHlQb2xpY2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZv
dW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTY3JpcHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cyk7CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJ
blJlcG9ydE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0
SGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwog
ICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRP
bmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
X292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBi
b29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2ll
cywgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAg
ICBpZiAodHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24g
fHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0
cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4
cGFuc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBh
bmRSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJp
ZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlk
VHJhaWxpbmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlv
dXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgw
LDE0ICs1ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAg
IHN0ZDo6dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29y
bmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2Us
IHJhZGl1cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAg
ICBGbG9hdFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6
dGllKGNwMSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21F
ZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQ
b2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAg
ICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0K
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGgg
fHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZl
bmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAg
ICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFu
ZExlZnQsIGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRB
c1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhw
YW5zaW9uLCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBm
b3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5k
TGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFz
U3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24sIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVm
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2Vl
bkZhbWlsaWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVk
RmFtaWx5TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
QEAgLTE0MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm8KICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250
ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAg
IGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
c3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBs
YXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0
ZXJuYXRlRm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRm
b3JtRGF0YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogCkBAIC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdo
aWNoIHJlcHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAg
c3RkOjp0aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNz
YXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50
aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRh
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRv
IFtjb29raWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5
KTsKICAgICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vz
c2VkIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAh
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAg
ICAgICAgc3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25T
dGFydEVuZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0
cnVjdCBJbmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRl
eHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gpCiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0g
Ym94LnNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9
IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlv
biA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcs
NyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
JmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9y
aWVudGF0aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsK
LSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1l
bnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDggKzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAg
ICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFt
ZSgpOwogCi0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShw
cmVmaXgsIGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNjEgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBz
aW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBu
b3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFs
IGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQg
YmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFy
RXhwaXJlZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9y
Rm9yVGFyZ2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGF5bWVudENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0
dGluZ0xvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZp
ZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXll
ckZyYW1lRmVuY2VkKToKKwogMjAxOS0wNi0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyBzaG91bGQgd2FpdCBmb3IgY29va2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDgg
KzU5LDggQEAgc3RhdGljIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGFsbFNwZWN1bAogc3RhdGlj
IHZvaWQgcHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZUNvdW50cygpCiB7
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIi0tIFNwZWN1bGF0
aXZlIGxvYWRpbmcgc3RhdGlzdGljcyAtLSIpOwotICAgIGZvciAoYXV0byYgcGFpciA6IGFsbFNw
ZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlcygpKQotICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiJXM6ICV1IiwgcGFpci5rZXkudXRmOCgpLmRh
dGEoKSwgcGFpci52YWx1ZSk7CisgICAgZm9yIChhdXRvJiBbbWVzc2FnZSwgY291bnRdIDogYWxs
U3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2VzKCkpCisgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIlczogJXUiLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIGNvdW50KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAJKHJldmlzaW9uIDI0Njg1
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCAKIAogdm9pZCBQcmVmZXRjaENhY2hlOjpjbGVhckV4cGlyZWRF
bnRyaWVzKCkKIHsKLSAgICBVUkwgcmVxdWVzdFVybDsKLSAgICBXYWxsVGltZSB0aW1lc3RhbXA7
CiAgICAgYXV0byB0aW1lb3V0ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIHdoaWxlICghbV9zZXNz
aW9uRXhwaXJhdGlvbkxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0ZDo6dGllKHJlcXVlc3RV
cmwsIHRpbWVzdGFtcCkgPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOworICAgICAg
ICBhdXRvIFtyZXF1ZXN0VXJsLCB0aW1lc3RhbXBdID0gbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3Qu
Zmlyc3QoKTsKICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcyk7CiAgICAgICAgIEFTU0VSVChyZXNvdXJj
ZXMtPmNvbnRhaW5zKHJlcXVlc3RVcmwpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMjIgKzgwLDIyIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmUKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Z1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1l
QW5kUmVjZWl2ZXIgOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKLSAgICAgICAgaWYgKG5h
bWVBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xv
YmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWVBbmRSZWNlaXZlci5rZXkpOworICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewor
ICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKKyAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJz
VG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1lQW5kSWRBbmRSZWNlaXZlciA6IG1fbWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZElkQW5kUmVjZWl2ZXIudmFsdWUgPT0g
Jm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihuYW1lQW5kSWRBbmRSZWNlaXZlci5rZXkuZmlyc3QsIG5hbWVBbmRJZEFu
ZFJlY2VpdmVyLmtleS5zZWNvbmQpKTsKKyAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRp
b25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNl
aXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5k
RGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJlY2VpdmVy
VG9SZW1vdmUgOiByZWNlaXZlcnNUb1JlbW92ZSkKLSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKHJlY2VpdmVyVG9SZW1vdmUuZmlyc3QsIHJlY2VpdmVyVG9SZW1vdmUuc2Vjb25kKTsKKyAg
ICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQor
ICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAK
IHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIwLDEzICszMjAsOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxp
CiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xp
ZW50Q291bnRzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52
YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0K
KyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IGNvbnRleHRNYXAudmFsdWVzKCkp
CiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgIH0KIH0KIAogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4
dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogY29u
dGV4dE1hcC52YWx1ZXMoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAg
ICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
ICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwpAQCAtMzU2LDE0ICszNTIsMTQg
QEAgICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0
PDE+KHR1cGxlKS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBp
bnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUp
LT5oYXNNb2RlKG1vZGUpKQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbnRlcmZhY2UtPmhhc01vZGUobW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzcxLDggKzM2Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNN
b2QKIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxl
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBs
ZSktPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgZm9y
IChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCisgICAg
ICAgIGlmIChpbnRlcmZhY2UtPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0
dXJlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzgxLDggKzM3Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpt
YXlBdXQKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiBib29sIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigp
IGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUpLT5pc1BsYXlpbmdWaWRlb0luRW5oYW5j
ZWRGdWxsc2NyZWVuKCkpCisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2Nv
bnRleHRNYXAudmFsdWVzKCkpCisgICAgICAgIGlmIChpbnRlcmZhY2UtPmlzUGxheWluZ1ZpZGVv
SW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICAKQEAgLTM5OSw4ICszOTUsOCBAQCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSogVmlkZW9GCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1h
cC52YWx1ZXMoKSkKLSAgICAgICAgc3RkOjpnZXQ8MT4odHVwbGUpLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOworICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250
ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBpbnRlcmZhY2UtPmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0
Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYm
IGNhbGxiYWNrKQpAQCAtNDczLDEwICs0NjksOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6c2V0dXBGCiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsK
IAogICAgIEFTU0VSVCh2aWRlb0xheWVySUQpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZT4gaW50ZXJmYWNlOwogCi0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50
ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAgICAgYWRkQ2xp
ZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAgUmV0YWluUHRyPFdLTGF5ZXJIb3N0Vmll
dz4gdmlldyA9IHN0YXRpY19jYXN0PFdLTGF5ZXJIb3N0Vmlldyo+KG1vZGVsLT5sYXllckhvc3RW
aWV3KCkpOwpAQCAtNjY1LDcgKzY1OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRDbGUKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBtb2Rl
bDsKICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFj
ZTsKIAotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVN
b2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hd
OwogICAgIFttb2RlbC0+bGF5ZXJIb3N0VmlldygpIHJlbW92ZUZyb21TdXBlcnZpZXddOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05NywxMCArOTcsNyBAQCBkb3VibGUgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6em9vCiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIHNvbWUgb2YgdGhpcyBjb2RlIHdpdGgg
ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZT8KIAotICAgIEZs
b2F0UmVjdCBhZGp1c3RlZFRhcmdldFJlY3Q7Ci0gICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IHZp
ZXdwb3J0TWluaW11bVNjYWxlOwotICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3cG9ydE1h
eGltdW1TY2FsZTsKLSAgICBzdGQ6OnRpZShhZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2Fs
ZSwgbWF4aW11bVNjYWxlKSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2Nh
bGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2Fs
ZSwgIWZpdEVudGlyZVJlY3QpOworICAgIGF1dG8gW2FkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11
bVNjYWxlLCBtYXhpbXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpv
b21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11
bVNjYWxlLCAhZml0RW50aXJlUmVjdCk7CiAKICAgICBkb3VibGUgY3VycmVudFNjYWxlID0gW21f
Y29udGVudFZpZXcgX2NvbnRlbnRab29tU2NhbGVdOwogICAgIGRvdWJsZSB0YXJnZXRTY2FsZSA9
IFttX2NvbnRlbnRWaWV3IF90YXJnZXRDb250ZW50Wm9vbVNjYWxlRm9yUmVjdDphZGp1c3RlZFRh
cmdldFJlY3QgY3VycmVudFNjYWxlOmN1cnJlbnRTY2FsZSBmaXRFbnRpcmVSZWN0OmZpdEVudGly
ZVJlY3QgbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxl
XTsKQEAgLTExOCwxMCArMTE1LDcgQEAgdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
OjpkaWRDbwogICAgICAgICBbbV9jb250ZW50VmlldyBfem9vbVRvSW5pdGlhbFNjYWxlV2l0aE9y
aWdpbjpvcmlnaW5dOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFRhcmdldFJlY3Q7Ci0gICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IHZpZXdwb3J0TWluaW11
bVNjYWxlOwotICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3cG9ydE1heGltdW1TY2FsZTsK
LSAgICBzdGQ6OnRpZShhZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNj
YWxlKSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJl
Y3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgIWZpdEVudGly
ZVJlY3QpOworICAgIGF1dG8gW2FkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhp
bXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFy
Z2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0
RW50aXJlUmVjdCk7CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2Fu
dHMgdG8gY29uc3VtZSB0aGUgZG91YmxlIHRhcCBiZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0
aW9uLgogCkBAIC0xNDcsMTAgKzE0MSw3IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6ZGlkQ28KIAogdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5
KEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgRmxvYXRSZWN0IHZpc2li
bGVDb250ZW50UmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3Bv
cnRNYXhpbXVtU2NhbGUpCiB7Ci0gICAgRmxvYXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsKLSAg
ICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRNYXhpbXVtU2NhbGU7Ci0gICAgZG91Ymxl
IG1pbmltdW1TY2FsZSA9IHZpZXdwb3J0TWluaW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFkanVz
dGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWduaWZp
Y2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVt
U2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCB0cnVlKTsKKyAgICBhdXRvIFthZGp1c3RlZFRh
cmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlv
blRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxl
LCB2aWV3cG9ydE1heGltdW1TY2FsZSwgdHJ1ZSk7CiAKICAgICBbbV9jb250ZW50VmlldyBfem9v
bVRvUmVjdDphZGp1c3RlZFRhcmdldFJlY3Qgd2l0aE9yaWdpbjpvcmlnaW4gZml0RW50aXJlUmVj
dDpOTyBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGUg
bWluaW11bVNjcm9sbERpc3RhbmNlOjBdOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyNDY4NTYpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDk0LDkgKzIwOTQsNyBAQCBzdGQ6OnR1cGxlPFN0cmluZywgUERGU2Vs
ZWN0aW9uICosIE5TRGljCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbi5zdHJpbmcsIHNlbGVj
dGlvbiwgbmlsIH07CiAgICAgfQogCi0gICAgTlNTdHJpbmcgKmxvb2t1cFRleHQ7Ci0gICAgTlNE
aWN0aW9uYXJ5ICpvcHRpb25zOwotICAgIHN0ZDo6dGllKGxvb2t1cFRleHQsIG9wdGlvbnMpID0g
RGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9yUERGU2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAg
YXV0byBbbG9va3VwVGV4dCwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQ
REZTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAgICBpZiAoIWxvb2t1cFRleHQubGVuZ3RoKQogICAg
ICAgICByZXR1cm4geyBlbXB0eVN0cmluZygpLCBzZWxlY3Rpb24sIG5pbCB9OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1
LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TAogICAgIAogICAg
IC8vIEZpbmQgdGhlIGZyYW1lIHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0
QXRQb2ludChtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhyb3Vu
ZGVkSW50UG9pbnQoZmxvYXRQb2ludCkpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShyYW5nZSwgb3B0aW9ucykgPSBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChyZXN1bHQpOworICAgIGF1dG8g
W3JhbmdlLCBvcHRpb25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0
KHJlc3VsdCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMTAw
LDkgKzk4LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TAogCiB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKEZyYW1lJiBm
cmFtZSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uKQogewotICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAg
c3RkOjp0aWUoc2VsZWN0ZWRSYW5nZSwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOworICAgIGF1dG8gW3NlbGVjdGVkUmFuZ2UsIG9wdGlv
bnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAg
ICBpZiAoc2VsZWN0ZWRSYW5nZSkKICAgICAgICAgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JS
YW5nZShmcmFtZSwgKnNlbGVjdGVkUmFuZ2UsIG9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRp
b24pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBs
YXliYWNrU2Vzc2lvbk0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIoKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVz
KCkpIHsKLSAgICAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGlu
dGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKKyAg
ICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewogICAgICAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogICAgICAgICBtb2Rl
bC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwogCkBAIC0yMjksOSArMjI2LDcgQEAgUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgUGxheWJhYwogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0
cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Cisg
ICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKIAogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQgPSBt
b2RlbC0+bWVkaWFFbGVtZW50KCk7CiAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRy
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDExICsxMjIsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpWaWRlb0Z1
bGxzY3JlZW5NCiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKCkKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7
Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7
Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZh
Y2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0KKyAgICBm
b3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewog
ICAgICAgICBtb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBtb2RlbC0+
cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogCkBAIC0xODAsOSArMTc2LDcgQEAgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dCYgVmlkZW9GdQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAg
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+cmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChjb250ZXh0SWQpOwogCkBAIC0yNTAsOSArMjQ0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRgogICAgIFVOVVNFRF9QQVJBTShhZGRSZXN1bHQpOwogICAg
IEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGNvbnRleHRJZCk7CiAKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogICAgIGlm
ICghaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpCiAgICAgICAgIGludGVyZmFjZS0+
c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbEhvc3RpbmdQcm9jZXNzKCkpOwpAQCAtMzY5LDkgKzM2MSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGEKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJl
ZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRy
PFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRp
ZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7
CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKIAogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVy
SG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CiAKQEAgLTM4NSw5ICszNzUsNyBAQCAgICAg
Q0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5CiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0g
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAg
ICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJ
bnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxp
bmVUaGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElk
LCBtb2RlbF0gKCkgbXV0YWJsZSB7IC8vIG5lZWQgdGhpcyBmb3IgcmV0dXJuIHZpZGVvIGxheWVy
CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkLCBtb2Rl
bF0gKCkgbXV0YWJsZSB7CkBAIC00MDYsOSArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRTZXR1cEZ1bAogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwog
CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFj
ZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewpA
QCAtNDMxLDkgKzQxNyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRG
dWwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxF
eGl0RnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAg
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2Rl
bC0+dmlkZW9FbGVtZW50KCk7CiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCkBAIC00NTAsOSArNDM0
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bAogewogICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVu
KCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAg
aW50ZXJmYWNlLT5zZXRJc0FuaW1hdGluZyhmYWxzZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRJc0Z1
bGxzY3JlZW4oZmFsc2UpOwpAQCAtNDc5LDkgKzQ2MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkRXhpdEZ1bGwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQp
OwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsK
LSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwot
ICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFu
ZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CkBAIC01MTAsOSArNDkw
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRgogewogICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2Rl
bCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAg
ICBpZiAoaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaW50ZXJm
YWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKQEAgLTU3
Miw5ICs1NTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1
cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJm
YWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoc3Rk
Ojppc25hbihib3VuZHMueCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy55KCkpIHx8IHN0ZDo6aXNu
YW4oYm91bmRzLndpZHRoKCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLmhlaWdodCgpKSkgewogICAg
ICAgICBhdXRvIHZpZGVvUmVjdCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLT52aWRlb0VsZW1l
bnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDY4NTYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9yZSBwbGFj
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTI0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2VzIHNpbXBsZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLiBE
b2VzIG5vdCB0b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUgbm90IGlu
aXRpYWwgZGVjbGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAgc3RydWN0
dXJlZCBiaW5kaW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dl
YkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6
CisKIDIwMTktMDYtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBBdG9taWNTdHJpbmcgdG8gQXRvbVN0cmluZwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01NTgsOSArNTU4LDcgQEAgLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQdHI8
UmFuZ2U+IGRpY3Rpb25hcnlSYW5nZTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAg
c3RkOjp0aWUoZGljdGlvbmFyeVJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlQXRIaXRUZXN0UmVzdWx0KF9oaXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIFtkaWN0aW9uYXJ5
UmFuZ2UsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQo
X2hpdFRlc3RSZXN1bHQpOwogICAgIGlmICghZGljdGlvbmFyeVJhbmdlKQogICAgICAgICByZXR1
cm4gbmlsOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDY4NjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcGxhY2VzIHNpbXBsZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRp
bmdzLiBEb2VzIG5vdCB0b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUg
bm90IGluaXRpYWwgZGVjbGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAg
c3RydWN0dXJlZCBiaW5kaW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW06
CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlRmlsZVByb21pc2VSZWNlaXZlciByZWNlaXZlUHJv
bWlzZWRGaWxlc0F0RGVzdGluYXRpb246b3B0aW9uczpvcGVyYXRpb25RdWV1ZTpyZWFkZXI6XSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wNi0yNiAgQWFrYXNoIEphaW4g
IDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3cy1idWlsZF0gQWRkIGNvbmZp
Z3VyYXRpb24gYW5kIGFyY2hpdGVjdHVyZSBmb3IgV1BFIGFuZCBHVEsgYnVpbGRlcnMKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFn
Z2luZ0luZm8ubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDkg
KzEyMiw3IEBAIC0gKHZvaWQpcmVjZWl2ZVByb21pc2VkRmlsZXNBdERlc3RpbmF0aW8KICAgICBO
U0FycmF5PE5TVVJMICo+ICpzb3VyY2VVUkxzID0gX2RyYWdnaW5nU291cmNlLnByb21pc2VkRmls
ZVVSTHM7CiAgICAgZm9yIChOU1VSTCAqc291cmNlVVJMIGluIHNvdXJjZVVSTHMpIHsKICAgICAg
ICAgW29wZXJhdGlvblF1ZXVlIGFkZE9wZXJhdGlvbldpdGhCbG9jazpeewotICAgICAgICAgICAg
TlNFcnJvciAqZXJyb3I7Ci0gICAgICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkw7Ci0gICAg
ICAgICAgICBzdGQ6OnRpZShkZXN0aW5hdGlvblVSTCwgZXJyb3IpID0gY29weUZpbGUoc291cmNl
VVJMLCBkZXN0aW5hdGlvbkRpcmVjdG9yeSk7CisgICAgICAgICAgICBhdXRvIFtkZXN0aW5hdGlv
blVSTCwgZXJyb3JdID0gY29weUZpbGUoc291cmNlVVJMLCBkZXN0aW5hdGlvbkRpcmVjdG9yeSk7
CiAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb25VUkwpIHsKICAgICAgICAgICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICAgICAgICAg
ICAgICBbX2Rlc3RpbmF0aW9uVVJMcyBhZGRPYmplY3Q6ZGVzdGluYXRpb25VUkxdOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0JKHJl
dmlzaW9uIDI0Njg1NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRl
bnRNb2RlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsMzAgKzIxNywzMiBAQCBURVNUKFByZWZl
cnJlZENvbnRlbnRNb2RlLCBTZXREZWZhdWx0V2ViCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VT
d2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwotICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVm
ZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50
TW9kZVJlY29tbWVuZGVkLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUp
OwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVz
ZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZp
ZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKLQotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRl
KSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxw
cmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0
aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5k
ZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZh
dWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7
Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFp
blN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1d
KTsKKyAgICB7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAgIFt3
ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRl
ZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNU
X0VRKFdLQ29udGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJl
ZENvbnRlbnRNb2RlKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAg
ICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAi
TW96aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUSgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAg
IH0KIAotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAg
ICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVm
ZXJyZWRDb250ZW50TW9kZSk7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENv
bnRlbnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGVdKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcg
bmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChp
UCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07Ci0gICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG5h
dmlnYXRvclBsYXRmb3JtXSBjb250YWluc1N0cmluZzpAImlQIl0pOworICAgIHsKKyAgICAgICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOworICAgICAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNp
b25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpk
ZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENv
bnRlbnRNb2RlKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAg
IFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96
aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworCisgICAg
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAg
RVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVy
cmVkQ29udGVudE1vZGUpOworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCBbV0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRo
Q29udGVudE1vZGU6V0tDb250ZW50TW9kZU1vYmlsZV0pOworICAgICAgICB9XTsKKyAgICAgICAg
W1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3pp
bGxhLzUuMCAoaVAiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfVFJV
RShbW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dIGNvbnRhaW5zU3RyaW5nOkAiaVAiXSk7Cisg
ICAgfQogfQogCiBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVdpdGhvdXRO
YXZpZ2F0aW9uRGVsZWdhdGUpCkBAIC0yNjQsOSArMjY2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250
ZW50TW9kZSwgRGVza3RvcE1vZGVPbgogewogICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxl
ciBpUGhvbmVVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRl
OwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oKTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+
IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRs
ZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsK
ICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZl
cmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBbV0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVy
ZW5jZXNXaXRoQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3BdKTsKQEAgLTI4Niw5ICsy
ODYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVRvCiB7CiAgICAg
SVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pigp
OworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBfX2Jsb2NrIEJPT0wgZGVj
aWRlZFBvbGljeUZvck1haW5GcmFtZSA9IE5POwogICAgIF9fYmxvY2sgQk9PTCBkZWNpZGVkUG9s
aWN5Rm9yU3ViRnJhbWUgPSBOTzsKQEAgLTMxNCw5ICszMTIsNyBAQCBURVNUKFByZWZlcnJlZENv
bnRlbnRNb2RlLCBEZXNrdG9wTW9kZVVzCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxl
ciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7
Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsK
LSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0
aFBvbGljeURlY2lzaW9uSGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tD
b250ZW50TW9kZURlc2t0b3ApXTsKICAgICBFWFBFQ1RfRVEoMTAyNCwgW1t3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbm5lcldpZHRoIl0gaW50VmFsdWVdKTsKQEAgLTMz
NCw5ICszMzAsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBDdXN0b21Vc2VyQWdlCiB7
CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAg
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50
TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywg
ZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRl
c3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBk
ZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVz
dFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwogCiAgICAgTlNTdHJpbmcgKmN1c3Rv
bVVzZXJBZ2VudCA9IEAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkg
QXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzcxLjAuMzU3OC45
OCBTYWZhcmkvNTM3LjM2IjsKICAgICBbd2ViVmlldyBzZXRDdXN0b21Vc2VyQWdlbnQ6Y3VzdG9t
VXNlckFnZW50XTsKQEAgLTM1Miw5ICszNDYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2Rl
LCBEb05vdEFsbG93Q2hhCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNl
ckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAg
IFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAg
c3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwogCiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRl
ZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewogICAgICAgICBFWFBFQ1RfRVEo
V0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50
TW9kZSk7CkBAIC0zNzQsOSArMzY2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRWZm
ZWN0aXZlQ29udAogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRl
cmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRh
aW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6
dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZl
Y3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOm5pbF07CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIiBh
bmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm1ha2VDb250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRl
bnRNb2RlRGVza3RvcCldOwpAQCAtMzg3LDkgKzM3Nyw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVu
dE1vZGUsIEVmZmVjdGl2ZUNvbnQKIHsKICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIg
aVBob25lVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdh
dGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PigpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGUgd2l0aFBv
bGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAic2ltcGxlMiIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURl
c2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhh
bmRsZXIoV0tDb250ZW50TW9kZURlc2t0b3ApXTsKQEAgLTQwMCw5ICszODgsNyBAQCBURVNUKFBy
ZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZh
Y2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0
ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7
IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0Nv
bnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxh
LzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDIwICs0
MDUsMjAgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogewogICAg
IElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVn
YXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KCk7Ci0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBk
ZWZhdWx0UHJlZmVyZW5jZXMuX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5D
b21wYXRpYmlsaXR5ID0gQCJEZXNrdG9wQnJvd3NlciI7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAg
ICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3Ry
aW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIkRlc2t0b3BCcm93c2VyIiwgbmlsXTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZv
cm1dKTsKKyAgICB7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZh
dWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIGRlZmF1bHRQ
cmVmZXJlbmNlcy5fYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50V2l0aE1vZGVybkNvbXBhdGli
aWxpdHkgPSBAIkRlc2t0b3BCcm93c2VyIjsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAg
ICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRh
aW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiRGVza3RvcEJyb3dzZXIiLCBu
aWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdh
dG9yUGxhdGZvcm1dKTsKKyAgICB9CiAKICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQg
dG8gY2hhbmdlIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgc3RpbGwgb3B0IGludG8gZGVza3Rv
cC1jbGFzcyBicm93c2luZzsKICAgICAgICAgLy8gdGhlIGFwcGxpY2F0aW9uIG5hbWUgc2hvdWxk
IG5vdCBkZWZhdWx0IHRvICJNb2JpbGUvMTVFMTQ4Ii4KLSAgICAgICAgc3RkOjp0aWUod2ViVmll
dywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgfSk7CisgICAgICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7IH0pOwogICAgICAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxl
cjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9y
VXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJp
bmc6QCJNb2JpbGUiXSk7CkBAIC00NDEsNyArNDI3LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgQXBwbGljYXRpb25OYQogICAgIHsKICAgICAgICAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBj
aGFuZ2UgdGhlIGFwcGxpY2F0aW9uIG5hbWUsIGJ1dCB0aGlzIHRpbWUsIG9wdCBpbnRvIG1vYmls
ZSBjb250ZW50LiBUaGUgYXBwbGljYXRpb24KICAgICAgICAgLy8gbmFtZSBzaG91bGQgZGVmYXVs
dCB0byAiTW9iaWxlLzE1RTE0OCIuCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRl
KSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVNb2JpbGUsIHsgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KFdLQ29udGVudE1vZGVNb2JpbGUsIHsgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAg
ICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0p
OwpAQCAtNDQ5LDcgKzQzNSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0
aW9uTmEKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0
aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUx
NDguCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNr
dG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOwogICAgICAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFu
ZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdh
dG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0
cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ1Nyw3ICs0NDMsNyBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkg
c2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIG5pbC4KLSAgICAgICAg
c3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7IH19KTsK
KyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7
IH19KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9
IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9GQUxTRShbdXNl
ckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372996</attachid>
            <date>2019-06-26 19:55:50 -0700</date>
            <delta_ts>2019-06-27 06:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190626195549.patch</filename>
            <type>text/plain</type>
            <size>62910</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjYgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgc3BlY2llc0NvbnN0
cnVjdCBuZWVkcyB0byB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGEgRGF0YVZpZXcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRU
aW1lci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQs
NyBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAg
ICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJl
ZCogdGlja2V0OwotICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwg
dGFzaykgPSBtX3Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJl
ZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxl
ZCB0aGVzZSBwcm9taXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihTaWduYWwsIAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7
CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAg
ICAgICAgICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gW3N0YXJ0LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50
ZXIoZW5kKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3Vu
ZCBtYXRjaCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw5ICs4Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3Qq
LCAKIEFMV0FZU19JTkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21W
YWx1ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90
KiBkYXRhOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRh
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90
KiBiYXNlOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpW
YWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0
IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNv
bWV0aGluZyB3aWxsIE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHls
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJp
bmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFu
Y2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZh
bGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29va2llRGF0YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6Y29uc3RydWN0QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMjYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bXBsZW1lbnQgY29uc29sZS5jb3VudFJlc2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsOSArMTE3Niw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JP
cmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0
aW9uIGZvbnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9u
KSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAKICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9y
aWVudGF0aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0g
Z2x5cGhPcmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZVMKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9u
bHlQb2xpY2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZv
dW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTY3JpcHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cyk7CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJ
blJlcG9ydE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0
SGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwog
ICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRP
bmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
X292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBi
b29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2ll
cywgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAg
ICBpZiAodHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24g
fHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0
cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4
cGFuc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBh
bmRSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJp
ZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlk
VHJhaWxpbmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlv
dXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgw
LDE0ICs1ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAg
IHN0ZDo6dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29y
bmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2Us
IHJhZGl1cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAg
ICBGbG9hdFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6
dGllKGNwMSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21F
ZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQ
b2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAg
ICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0K
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGgg
fHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZl
bmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAg
ICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFu
ZExlZnQsIGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRB
c1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhw
YW5zaW9uLCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBm
b3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5k
TGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFz
U3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24sIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVm
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2Vl
bkZhbWlsaWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVk
RmFtaWx5TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
QEAgLTE0MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm8KICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250
ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAg
IGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
c3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBs
YXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0
ZXJuYXRlRm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRm
b3JtRGF0YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogCkBAIC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdo
aWNoIHJlcHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAg
c3RkOjp0aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNz
YXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50
aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRh
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRv
IFtjb29raWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5
KTsKICAgICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vz
c2VkIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAh
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAg
ICAgICAgc3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25T
dGFydEVuZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0
cnVjdCBJbmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRl
eHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gpCiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0g
Ym94LnNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9
IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlv
biA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcs
NyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
JmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9y
aWVudGF0aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsK
LSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1l
bnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDggKzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAg
ICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFt
ZSgpOwogCi0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShw
cmVmaXgsIGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNjEgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBz
aW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBu
b3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFs
IGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQg
YmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFy
RXhwaXJlZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9y
Rm9yVGFyZ2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGF5bWVudENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0
dGluZ0xvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZp
ZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXll
ckZyYW1lRmVuY2VkKToKKwogMjAxOS0wNi0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyBzaG91bGQgd2FpdCBmb3IgY29va2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDgg
KzU5LDggQEAgc3RhdGljIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGFsbFNwZWN1bAogc3RhdGlj
IHZvaWQgcHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZUNvdW50cygpCiB7
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIi0tIFNwZWN1bGF0
aXZlIGxvYWRpbmcgc3RhdGlzdGljcyAtLSIpOwotICAgIGZvciAoYXV0byYgcGFpciA6IGFsbFNw
ZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlcygpKQotICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiJXM6ICV1IiwgcGFpci5rZXkudXRmOCgpLmRh
dGEoKSwgcGFpci52YWx1ZSk7CisgICAgZm9yIChhdXRvJiBbbWVzc2FnZSwgY291bnRdIDogYWxs
U3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2VzKCkpCisgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIlczogJXUiLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIGNvdW50KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAJKHJldmlzaW9uIDI0Njg1
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCAKIAogdm9pZCBQcmVmZXRjaENhY2hlOjpjbGVhckV4cGlyZWRF
bnRyaWVzKCkKIHsKLSAgICBVUkwgcmVxdWVzdFVybDsKLSAgICBXYWxsVGltZSB0aW1lc3RhbXA7
CiAgICAgYXV0byB0aW1lb3V0ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIHdoaWxlICghbV9zZXNz
aW9uRXhwaXJhdGlvbkxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0ZDo6dGllKHJlcXVlc3RV
cmwsIHRpbWVzdGFtcCkgPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOworICAgICAg
ICBhdXRvIFtyZXF1ZXN0VXJsLCB0aW1lc3RhbXBdID0gbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3Qu
Zmlyc3QoKTsKICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcyk7CiAgICAgICAgIEFTU0VSVChyZXNvdXJj
ZXMtPmNvbnRhaW5zKHJlcXVlc3RVcmwpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMjIgKzgwLDIyIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmUKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Z1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1l
QW5kUmVjZWl2ZXIgOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKLSAgICAgICAgaWYgKG5h
bWVBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xv
YmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWVBbmRSZWNlaXZlci5rZXkpOworICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewor
ICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKKyAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJz
VG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1lQW5kSWRBbmRSZWNlaXZlciA6IG1fbWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZElkQW5kUmVjZWl2ZXIudmFsdWUgPT0g
Jm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihuYW1lQW5kSWRBbmRSZWNlaXZlci5rZXkuZmlyc3QsIG5hbWVBbmRJZEFu
ZFJlY2VpdmVyLmtleS5zZWNvbmQpKTsKKyAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRp
b25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNl
aXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5k
RGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJlY2VpdmVy
VG9SZW1vdmUgOiByZWNlaXZlcnNUb1JlbW92ZSkKLSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKHJlY2VpdmVyVG9SZW1vdmUuZmlyc3QsIHJlY2VpdmVyVG9SZW1vdmUuc2Vjb25kKTsKKyAg
ICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQor
ICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAK
IHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIwLDEzICszMjAsOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxp
CiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xp
ZW50Q291bnRzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52
YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0K
KyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IGNvbnRleHRNYXAudmFsdWVzKCkp
CiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgIH0KIH0KIAogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4
dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogY29u
dGV4dE1hcC52YWx1ZXMoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAg
ICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
ICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwpAQCAtMzU2LDE0ICszNTIsMTQg
QEAgICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0
PDE+KHR1cGxlKS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBp
bnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUp
LT5oYXNNb2RlKG1vZGUpKQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbnRlcmZhY2UtPmhhc01vZGUobW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzcxLDggKzM2Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNN
b2QKIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxl
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBs
ZSktPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgZm9y
IChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKGludGVyZmFjZS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zODEsOCArMzc3LDggQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
Om1heUF1dAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVu
KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygp
KSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPmlzUGxheWluZ1ZpZGVvSW5Fbmhh
bmNlZEZ1bGxzY3JlZW4oKSkKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1f
Y29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoaW50ZXJmYWNlLT5pc1BsYXlpbmdW
aWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgCkBAIC0zOTksOCArMzk1LDggQEAgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UqIFZpZGVvRgogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRl
eHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0PDE+KHR1cGxlKS0+YXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKTsKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1f
Y29udGV4dE1hcC52YWx1ZXMoKSkKKyAgICAgICAgaW50ZXJmYWNlLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5n
KT4mJiBjYWxsYmFjaykKQEAgLTQ3MywxMCArNDY5LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldHVwRgogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJ
ZCk7CiAKICAgICBBU1NFUlQodmlkZW9MYXllcklEKTsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKIAotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogICAgIGFk
ZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIFJldGFpblB0cjxXS0xheWVySG9z
dFZpZXc+IHZpZXcgPSBzdGF0aWNfY2FzdDxXS0xheWVySG9zdFZpZXcqPihtb2RlbC0+bGF5ZXJI
b3N0VmlldygpKTsKQEAgLTY2NSw3ICs2NTksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6ZGlkQ2xlCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4g
bW9kZWw7CiAgICAgUmVmUHRyPFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPiBpbnRl
cmZhY2U7CiAKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5z
dXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGZs
dXNoXTsKICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTcsMTAgKzk3LDcgQEAgZG91YmxlIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXI6OnpvbwogewogICAgIC8vIEZJWE1FOiBTaGFyZSBzb21lIG9mIHRoaXMgY29kZSB3
aXRoIGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmU/CiAKLSAg
ICBGbG9hdFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUg
PSB2aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3Bv
cnRNYXhpbXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVt
U2NhbGUsIG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9v
bVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVt
U2NhbGUsICFmaXRFbnRpcmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1p
bmltdW1TY2FsZSwgbWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RB
bmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1h
eGltdW1TY2FsZSwgIWZpdEVudGlyZVJlY3QpOwogCiAgICAgZG91YmxlIGN1cnJlbnRTY2FsZSA9
IFttX2NvbnRlbnRWaWV3IF9jb250ZW50Wm9vbVNjYWxlXTsKICAgICBkb3VibGUgdGFyZ2V0U2Nh
bGUgPSBbbV9jb250ZW50VmlldyBfdGFyZ2V0Q29udGVudFpvb21TY2FsZUZvclJlY3Q6YWRqdXN0
ZWRUYXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpjdXJyZW50U2NhbGUgZml0RW50aXJlUmVjdDpmaXRF
bnRpcmVSZWN0IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1T
Y2FsZV07CkBAIC0xMTgsMTAgKzExNSw3IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6ZGlkQ28KICAgICAgICAgW21fY29udGVudFZpZXcgX3pvb21Ub0luaXRpYWxTY2FsZVdp
dGhPcmlnaW46b3JpZ2luXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBGbG9hdFJlY3Qg
YWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1p
bmltdW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRNYXhpbXVtU2Nh
bGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGlt
dW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJn
ZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRF
bnRpcmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwg
bWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVz
KHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwg
IWZpdEVudGlyZVJlY3QpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIGlmIHRleHQgc2VsZWN0aW9u
IHdhbnRzIHRvIGNvbnN1bWUgdGhlIGRvdWJsZSB0YXAgYmVmb3JlIHdlIGF0dGVtcHQgbWFnbmlm
aWNhdGlvbi4KIApAQCAtMTQ3LDEwICsxNDEsNyBAQCB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXI6OmRpZENvCiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWFn
bmlmeShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdldFJlY3QsIEZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudFJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZp
ZXdwb3J0TWF4aW11bVNjYWxlKQogewotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFRhcmdldFJlY3Q7
Ci0gICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIGRv
dWJsZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBzdGQ6OnRpZShh
ZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKSA9IHNtYXJ0TWFn
bmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWlu
aW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgdHJ1ZSk7CisgICAgYXV0byBbYWRqdXN0
ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmlj
YXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1T
Y2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIHRydWUpOwogCiAgICAgW21fY29udGVudFZpZXcg
X3pvb21Ub1JlY3Q6YWRqdXN0ZWRUYXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIGZpdEVudGly
ZVJlY3Q6Tk8gbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNj
YWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMjQ2ODU2
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjA5NCw5ICsyMDk0LDcgQEAgc3RkOjp0dXBsZTxTdHJpbmcsIFBE
RlNlbGVjdGlvbiAqLCBOU0RpYwogICAgICAgICByZXR1cm4geyBzZWxlY3Rpb24uc3RyaW5nLCBz
ZWxlY3Rpb24sIG5pbCB9OwogICAgIH0KIAotICAgIE5TU3RyaW5nICpsb29rdXBUZXh0OwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShsb29rdXBUZXh0LCBvcHRpb25z
KSA9IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24pOwor
ICAgIGF1dG8gW2xvb2t1cFRleHQsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5n
Rm9yUERGU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgaWYgKCFsb29rdXBUZXh0Lmxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIHsgZW1wdHlTdHJpbmcoKSwgc2VsZWN0aW9uLCBuaWwgfTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dl
YlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5
ICs4NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKICAgICAK
ICAgICAvLyBGaW5kIHRoZSBmcmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJl
c3VsdEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
cm91bmRlZEludFBvaW50KGZsb2F0UG9pbnQpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZTsK
LSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3RkOjp0aWUocmFuZ2UsIG9wdGlvbnMp
ID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKKyAgICBh
dXRvIFtyYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJl
c3VsdChyZXN1bHQpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAg
LTEwMCw5ICs5OCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwK
IAogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwot
ICAgIHN0ZDo6dGllKHNlbGVjdGVkUmFuZ2UsIG9wdGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6
cmFuZ2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBhdXRvIFtzZWxlY3RlZFJhbmdlLCBv
cHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7
CiAgICAgaWYgKHNlbGVjdGVkUmFuZ2UpCiAgICAgICAgIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
Rm9yUmFuZ2UoZnJhbWUsICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zLCBwcmVzZW50YXRpb25UcmFu
c2l0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsNyBAQCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpQbGF5YmFja1Nlc3Npb25NCiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKCkKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZh
bHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dD4gbW9kZWw7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
PiBpbnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7
CisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVz
KCkpIHsKICAgICAgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICAgICAg
bW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKIApAQCAtMjI5LDkgKzIyNiw3IEBAIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIFBsYXliYWMKIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBS
ZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50
ID0gbW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVs
bHB0cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEyMiwxMSArMTIyLDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Vmlk
ZW9GdWxsc2NyZWVuTQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMo
KSkgewotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1v
ZGVsOwotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50
ZXJmYWNlOwotICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisg
ICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkp
IHsKICAgICAgICAgbW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbW9k
ZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKIApAQCAtMTgwLDkgKzE3Niw3IEBAIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQmIFZpZGVvRnUKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQ
dHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwor
ICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPnJlbW92ZUNsaWVudEZv
ckNvbnRleHQoY29udGV4dElkKTsKIApAQCAtMjUwLDkgKzI0NCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0YKICAgICBVTlVTRURfUEFSQU0oYWRkUmVzdWx0KTsK
ICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9PSBjb250ZXh0SWQpOwogCi0g
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0
ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpOwogICAgIGFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKICAg
ICBpZiAoIWludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpKQogICAgICAgICBpbnRlcmZh
Y2UtPnNldExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpKTsKQEAgLTM2OSw5ICszNjEsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJl
ZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3Rk
Ojp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0
SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJm
YWNlKGNvbnRleHRJZCk7CiAKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5s
YXllckhvc3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCkBAIC0zODUsOSArMzc1LDcgQEAg
ICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVs
OwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7
Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFj
ZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBtb2RlbC0+d2FpdEZvclByZXBhcmVkRm9y
SW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRl
eHRJZCwgbW9kZWxdICgpIG11dGFibGUgeyAvLyBuZWVkIHRoaXMgZm9yIHJldHVybiB2aWRlbyBs
YXllcgogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZCwg
bW9kZWxdICgpIG11dGFibGUgewpAQCAtNDA2LDkgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWwKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElk
KTsKIAogICAgIEFTU0VSVChtX3BhZ2UpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRl
cmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
IHsKQEAgLTQzMSw5ICs0MTcsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxF
eGl0RnVsCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3
aWxsRXhpdEZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKLSAgICBSZWZQ
dHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwor
ICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0g
bW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICghdmlkZW9FbGVtZW50KQpAQCAtNDUwLDkg
KzQzNCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWwKIHsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNj
cmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJm
YWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21v
ZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAog
ICAgIGludGVyZmFjZS0+c2V0SXNBbmltYXRpbmcoZmFsc2UpOwogICAgIGludGVyZmFjZS0+c2V0
SXNGdWxsc2NyZWVuKGZhbHNlKTsKQEAgLTQ3OSw5ICs0NjEsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4
dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9k
ZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFj
ZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJm
YWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewpAQCAtNTEwLDkg
KzQ5MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEYKIHsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxs
c2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRl
cmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBb
bW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwog
CiAgICAgaWYgKGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGlu
dGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CkBA
IC01NzIsOSArNTUwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xh
eQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0g
ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGlu
dGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaWYg
KHN0ZDo6aXNuYW4oYm91bmRzLngoKSkgfHwgc3RkOjppc25hbihib3VuZHMueSgpKSB8fCBzdGQ6
OmlzbmFuKGJvdW5kcy53aWR0aCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy5oZWlnaHQoKSkpIHsK
ICAgICAgICAgYXV0byB2aWRlb1JlY3QgPSBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC0+dmlkZW9F
bGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2
ODU2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUg
cGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTkyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlcyBzaW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5n
cy4gRG9lcyBub3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5v
dCBpbml0aWFsIGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0
cnVjdHVyZWQgYmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAg
ICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmltYXRpb25Db250cm9sbGVyRm9yVGV4
dF0pOgorCiAyMDE5LTA2LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgQXRvbWljU3RyaW5nIHRvIEF0b21TdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTU4LDkgKzU1OCw3IEBAIC0gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGwKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgUmVm
UHRyPFJhbmdlPiBkaWN0aW9uYXJ5UmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwot
ICAgIHN0ZDo6dGllKGRpY3Rpb25hcnlSYW5nZSwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3Vw
OjpyYW5nZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBbZGljdGlv
bmFyeVJhbmdlLCBvcHRpb25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVz
dWx0KF9oaXRUZXN0UmVzdWx0KTsKICAgICBpZiAoIWRpY3Rpb25hcnlSYW5nZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2ODY2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGlu
IG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTkyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXBsYWNlcyBzaW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBi
aW5kaW5ncy4gRG9lcyBub3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQg
YXJlIG5vdCBpbml0aWFsIGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAg
ICAgIHN0cnVjdHVyZWQgYmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0Lgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZv
Lm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZUZpbGVQcm9taXNlUmVjZWl2ZXIgcmVjZWl2
ZVByb21pc2VkRmlsZXNBdERlc3RpbmF0aW9uOm9wdGlvbnM6b3BlcmF0aW9uUXVldWU6cmVhZGVy
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTktMDYtMjYgIEFha2FzaCBK
YWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3MtYnVpbGRdIEFkZCBj
b25maWd1cmF0aW9uIGFuZCBhcmNoaXRlY3R1cmUgZm9yIFdQRSBhbmQgR1RLIGJ1aWxkZXJzCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLm1tCShyZXZpc2lvbiAyNDY4NTYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw5ICsxMjIsNyBAQCAtICh2b2lkKXJlY2VpdmVQcm9taXNlZEZpbGVzQXREZXN0aW5hdGlvCiAg
ICAgTlNBcnJheTxOU1VSTCAqPiAqc291cmNlVVJMcyA9IF9kcmFnZ2luZ1NvdXJjZS5wcm9taXNl
ZEZpbGVVUkxzOwogICAgIGZvciAoTlNVUkwgKnNvdXJjZVVSTCBpbiBzb3VyY2VVUkxzKSB7CiAg
ICAgICAgIFtvcGVyYXRpb25RdWV1ZSBhZGRPcGVyYXRpb25XaXRoQmxvY2s6XnsKLSAgICAgICAg
ICAgIE5TRXJyb3IgKmVycm9yOwotICAgICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMOwot
ICAgICAgICAgICAgc3RkOjp0aWUoZGVzdGluYXRpb25VUkwsIGVycm9yKSA9IGNvcHlGaWxlKHNv
dXJjZVVSTCwgZGVzdGluYXRpb25EaXJlY3RvcnkpOworICAgICAgICAgICAgYXV0byBbZGVzdGlu
YXRpb25VUkwsIGVycm9yXSA9IGNvcHlGaWxlKHNvdXJjZVVSTCwgZGVzdGluYXRpb25EaXJlY3Rv
cnkpOwogICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uVVJMKSB7CiAgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgICAg
ICAgICAgICAgW19kZXN0aW5hdGlvblVSTHMgYWRkT2JqZWN0OmRlc3RpbmF0aW9uVVJMXTsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
CShyZXZpc2lvbiAyNDY4NTYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRD
b250ZW50TW9kZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE3LDMwICsyMTcsMzIgQEAgVEVTVChQ
cmVmZXJyZWRDb250ZW50TW9kZSwgU2V0RGVmYXVsdFdlYgogewogICAgIElQYWRVc2VySW50ZXJm
YWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4g
ZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKLSAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0
UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdLQ29u
dGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRN
b2RlKTsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCBkZWZhdWx0UHJlZmVyZW5jZXMpOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0
b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAi
VGVzdFdlYktpdEFQSSIsIG5pbF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3
ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7Ci0KLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxl
Z2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCI8cHJlPkJhcjwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlv
bkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lk
ICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7Ci0gICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwg
ZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVyZW5j
ZXMpOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENv
bnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07
Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRm
b3JtXSk7CisgICAgeworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgICAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVj
aXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShXS0NvbnRlbnRNb2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVm
ZXJyZWRDb250ZW50TW9kZSk7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOwor
ICAgICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5n
czpAIk1vemlsbGEvNS4wIChNYWMiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsK
KyAgICB9CiAKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmF6PC9wcmU+IiB3
aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFn
ZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIp
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAg
ICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMu
cHJlZmVycmVkQ29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dp
dGhDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlTW9iaWxlXSk7Ci0gICAgfV07Ci0gICAgW1t3ZWJW
aWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUu
MCAoaVAiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwotICAgIEVYUEVDVF9UUlVFKFtbd2ViVmll
dyBuYXZpZ2F0b3JQbGF0Zm9ybV0gY29udGFpbnNTdHJpbmc6QCJpUCJdKTsKKyAgICB7CisgICAg
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICAg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkJhcjwvcHJlPiIgd2l0aFBvbGljeURl
Y2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJy
ZWRDb250ZW50TW9kZSk7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAg
ICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpA
Ik1vemlsbGEvNS4wIChNYWMiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKwor
ICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmF6PC9wcmU+IiB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZl
cmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnBy
ZWZlcnJlZENvbnRlbnRNb2RlKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2Vz
V2l0aENvbnRlbnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGVdKTsKKyAgICAgICAgfV07CisgICAg
ICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAi
TW96aWxsYS81LjAgKGlQIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW1t3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSBjb250YWluc1N0cmluZzpAImlQIl0p
OworICAgIH0KIH0KIAogVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVXaXRo
b3V0TmF2aWdhdGlvbkRlbGVnYXRlKQpAQCAtMjY0LDkgKzI2Niw3IEBAIFRFU1QoUHJlZmVycmVk
Q29udGVudE1vZGUsIERlc2t0b3BNb2RlT24KIHsKICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dp
enpsZXIgaVBob25lVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KCk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkZvbzwv
cHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25I
YW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICop
KSB7CiAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQ
cmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CiAgICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHBy
ZWZlcmVuY2VzV2l0aENvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wXSk7CkBAIC0yODYs
OSArMjg2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVUbwogewog
ICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5h
dmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdh
dGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAgX19ibG9jayBCT09M
IGRlY2lkZWRQb2xpY3lGb3JNYWluRnJhbWUgPSBOTzsKICAgICBfX2Jsb2NrIEJPT0wgZGVjaWRl
ZFBvbGljeUZvclN1YkZyYW1lID0gTk87CkBAIC0zMTQsOSArMzEyLDcgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVVcwogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dp
enpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdh
dGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PigpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bWFrZUNvbnRlbnRNb2RlRGVjaXNpb25IYW5kbGVy
KFdLQ29udGVudE1vZGVEZXNrdG9wKV07CiAgICAgRVhQRUNUX0VRKDEwMjQsIFtbd2ViVmlldyBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW5uZXJXaWR0aCJdIGludFZhbHVlXSk7CkBA
IC0zMzQsOSArMzMwLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQ3VzdG9tVXNlckFn
ZQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAK
LSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZp
ZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxUZXN0V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7CisgICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFRlc3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKIAogICAgIE5TU3RyaW5nICpj
dXN0b21Vc2VyQWdlbnQgPSBAIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4
NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83MS4wLjM1
NzguOTggU2FmYXJpLzUzNy4zNiI7CiAgICAgW3dlYlZpZXcgc2V0Q3VzdG9tVXNlckFnZW50OmN1
c3RvbVVzZXJBZ2VudF07CkBAIC0zNTIsOSArMzQ2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgRG9Ob3RBbGxvd0NoYQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBh
ZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsK
LSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwot
ICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7
CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVj
aXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKICAgICAgICAgRVhQRUNU
X0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29u
dGVudE1vZGUpOwpAQCAtMzc0LDkgKzM2Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUs
IEVmZmVjdGl2ZUNvbnQKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2Vy
SW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAg
UmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBz
dGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0
RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lz
aW9uSGFuZGxlcjpuaWxdOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
MiIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0
aFBvbGljeURlY2lzaW9uSGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tD
b250ZW50TW9kZURlc2t0b3ApXTsKQEAgLTM4Nyw5ICszNzcsNyBAQCBURVNUKFByZWZlcnJlZENv
bnRlbnRNb2RlLCBFZmZlY3RpdmVDb250CiB7CiAgICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6
bGVyIGlQaG9uZVVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
d2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2lt
cGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlTW9iaWxlIHdp
dGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZTIiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1v
ZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bWFrZUNvbnRlbnRNb2RlRGVjaXNp
b25IYW5kbGVyKFdLQ29udGVudE1vZGVEZXNrdG9wKV07CkBAIC00MDAsOSArMzg4LDcgQEAgVEVT
VChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDbwogewogICAgIElQYWRVc2VySW50
ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVs
ZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAi
VGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6
V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAg
IFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96
aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSwy
MCArNDA1LDIwIEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKIHsK
ICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRN
b2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBk
ZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PigpOwotICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRo
UG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAg
ICAgZGVmYXVsdFByZWZlcmVuY2VzLl9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnRXaXRoTW9k
ZXJuQ29tcGF0aWJpbGl0eSA9IEAiRGVza3RvcEJyb3dzZXIiOwotICAgICAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7
Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFp
blN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJEZXNrdG9wQnJvd3NlciIsIG5p
bF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBs
YXRmb3JtXSk7CisgICAgeworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAg
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lz
aW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
ZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBkZWZh
dWx0UHJlZmVyZW5jZXMuX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5Db21w
YXRpYmlsaXR5ID0gQCJEZXNrdG9wQnJvd3NlciI7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7Cisg
ICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRD
b250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIkRlc2t0b3BCcm93c2Vy
IiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5h
dmlnYXRvclBsYXRmb3JtXSk7CisgICAgfQogCiAgICAgewogICAgICAgICAvLyBEb24ndCBhdHRl
bXB0IHRvIGNoYW5nZSB0aGUgYXBwbGljYXRpb24gbmFtZSwgYnV0IHN0aWxsIG9wdCBpbnRvIGRl
c2t0b3AtY2xhc3MgYnJvd3Npbmc7CiAgICAgICAgIC8vIHRoZSBhcHBsaWNhdGlvbiBuYW1lIHNo
b3VsZCBub3QgZGVmYXVsdCB0byAiTW9iaWxlLzE1RTE0OCIuCi0gICAgICAgIHN0ZDo6dGllKHdl
YlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7IH0pOworICAgICAgICBhdXRv
IFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyB9KTsKICAgICAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhh
bmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmln
YXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9GQUxTRShbdXNlckFnZW50IGNvbnRhaW5z
U3RyaW5nOkAiTW9iaWxlIl0pOwpAQCAtNDQxLDcgKzQyNyw3IEBAIFRFU1QoUHJlZmVycmVkQ29u
dGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQg
dG8gY2hhbmdlIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgdGhpcyB0aW1lLCBvcHQgaW50byBt
b2JpbGUgY29udGVudC4gVGhlIGFwcGxpY2F0aW9uCiAgICAgICAgIC8vIG5hbWUgc2hvdWxkIGRl
ZmF1bHQgdG8gIk1vYmlsZS8xNUUxNDgiLgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxl
Z2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3PihXS0NvbnRlbnRNb2RlTW9iaWxlLCB7IH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBk
ZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PihXS0NvbnRlbnRNb2RlTW9iaWxlLCB7IH0pOwogICAgICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwog
ICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50
XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmls
ZSJdKTsKQEAgLTQ0OSw3ICs0MzUsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBs
aWNhdGlvbk5hCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBs
aWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUv
MTVFMTQ4LgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2Rl
RGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKICAgICAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5h
dmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQgY29udGFp
bnNTdHJpbmc6QCJNb2JpbGUiXSk7CkBAIC00NTcsNyArNDQzLDcgQEAgVEVTVChQcmVmZXJyZWRD
b250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVh
bGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byBuaWwuCi0gICAg
ICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7eyB9
fSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9w
LCB7eyB9fSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3
aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdl
bnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfRkFMU0Uo
W3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373027</attachid>
            <date>2019-06-27 06:34:59 -0700</date>
            <delta_ts>2019-06-27 09:12:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190627063459.patch</filename>
            <type>text/plain</type>
            <size>62992</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjYgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgc3BlY2llc0NvbnN0
cnVjdCBuZWVkcyB0byB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGEgRGF0YVZpZXcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRU
aW1lci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQs
NyBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAg
ICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJl
ZCogdGlja2V0OwotICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwg
dGFzaykgPSBtX3Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJl
ZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxl
ZCB0aGVzZSBwcm9taXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihTaWduYWwsIAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7
CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAg
ICAgICAgICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gW3N0YXJ0LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50
ZXIoZW5kKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3Vu
ZCBtYXRjaCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw5ICs4Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3Qq
LCAKIEFMV0FZU19JTkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21W
YWx1ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90
KiBkYXRhOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRh
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90
KiBiYXNlOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpW
YWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0
IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNv
bWV0aGluZyB3aWxsIE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHls
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJp
bmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFu
Y2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZh
bGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29va2llRGF0YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6Y29uc3RydWN0QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMjYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bXBsZW1lbnQgY29uc29sZS5jb3VudFJlc2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsOSArMTE3Niw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JP
cmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0
aW9uIGZvbnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9u
KSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAKICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9y
aWVudGF0aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0g
Z2x5cGhPcmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZVMKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9u
bHlQb2xpY2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZv
dW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTY3JpcHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cyk7CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJ
blJlcG9ydE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0
SGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwog
ICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRP
bmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
X292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBi
b29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2ll
cywgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAg
ICBpZiAodHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24g
fHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0
cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4
cGFuc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBh
bmRSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJp
ZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlk
VHJhaWxpbmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlv
dXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgw
LDE0ICs1ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAg
IHN0ZDo6dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29y
bmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2Us
IHJhZGl1cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAg
ICBGbG9hdFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6
dGllKGNwMSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21F
ZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQ
b2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAg
ICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0K
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGgg
fHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZl
bmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAg
ICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFu
ZExlZnQsIGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRB
c1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhw
YW5zaW9uLCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBm
b3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5k
TGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFz
U3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24sIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVm
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2Vl
bkZhbWlsaWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVk
RmFtaWx5TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
QEAgLTE0MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm8KICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250
ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAg
IGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
c3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBs
YXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0
ZXJuYXRlRm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRm
b3JtRGF0YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogCkBAIC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdo
aWNoIHJlcHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAg
c3RkOjp0aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNz
YXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50
aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRh
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRv
IFtjb29raWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5
KTsKICAgICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vz
c2VkIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAh
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAg
ICAgICAgc3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25T
dGFydEVuZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0
cnVjdCBJbmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRl
eHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gpCiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0g
Ym94LnNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9
IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlv
biA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcs
NyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
JmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9y
aWVudGF0aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsK
LSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1l
bnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDggKzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAg
ICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFt
ZSgpOwogCi0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShw
cmVmaXgsIGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNjEgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBz
aW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBu
b3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFs
IGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQg
YmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFy
RXhwaXJlZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9y
Rm9yVGFyZ2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGF5bWVudENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0
dGluZ0xvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZp
ZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXll
ckZyYW1lRmVuY2VkKToKKwogMjAxOS0wNi0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyBzaG91bGQgd2FpdCBmb3IgY29va2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDgg
KzU5LDggQEAgc3RhdGljIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGFsbFNwZWN1bAogc3RhdGlj
IHZvaWQgcHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZUNvdW50cygpCiB7
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIi0tIFNwZWN1bGF0
aXZlIGxvYWRpbmcgc3RhdGlzdGljcyAtLSIpOwotICAgIGZvciAoYXV0byYgcGFpciA6IGFsbFNw
ZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlcygpKQotICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiJXM6ICV1IiwgcGFpci5rZXkudXRmOCgpLmRh
dGEoKSwgcGFpci52YWx1ZSk7CisgICAgZm9yIChhdXRvJiBbbWVzc2FnZSwgY291bnRdIDogYWxs
U3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2VzKCkpCisgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIlczogJXUiLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIGNvdW50KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAJKHJldmlzaW9uIDI0Njg1
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCAKIAogdm9pZCBQcmVmZXRjaENhY2hlOjpjbGVhckV4cGlyZWRF
bnRyaWVzKCkKIHsKLSAgICBVUkwgcmVxdWVzdFVybDsKLSAgICBXYWxsVGltZSB0aW1lc3RhbXA7
CiAgICAgYXV0byB0aW1lb3V0ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIHdoaWxlICghbV9zZXNz
aW9uRXhwaXJhdGlvbkxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0ZDo6dGllKHJlcXVlc3RV
cmwsIHRpbWVzdGFtcCkgPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOworICAgICAg
ICBhdXRvIFtyZXF1ZXN0VXJsLCB0aW1lc3RhbXBdID0gbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3Qu
Zmlyc3QoKTsKICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcyk7CiAgICAgICAgIEFTU0VSVChyZXNvdXJj
ZXMtPmNvbnRhaW5zKHJlcXVlc3RVcmwpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMjIgKzgwLDIyIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmUKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Z1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1l
QW5kUmVjZWl2ZXIgOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKLSAgICAgICAgaWYgKG5h
bWVBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xv
YmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWVBbmRSZWNlaXZlci5rZXkpOworICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewor
ICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKKyAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJz
VG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1lQW5kSWRBbmRSZWNlaXZlciA6IG1fbWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZElkQW5kUmVjZWl2ZXIudmFsdWUgPT0g
Jm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihuYW1lQW5kSWRBbmRSZWNlaXZlci5rZXkuZmlyc3QsIG5hbWVBbmRJZEFu
ZFJlY2VpdmVyLmtleS5zZWNvbmQpKTsKKyAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRp
b25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNl
aXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5k
RGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJlY2VpdmVy
VG9SZW1vdmUgOiByZWNlaXZlcnNUb1JlbW92ZSkKLSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKHJlY2VpdmVyVG9SZW1vdmUuZmlyc3QsIHJlY2VpdmVyVG9SZW1vdmUuc2Vjb25kKTsKKyAg
ICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQor
ICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAK
IHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIwLDEzICszMjAsOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxp
CiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xp
ZW50Q291bnRzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52
YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0K
KyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IGNvbnRleHRNYXAudmFsdWVzKCkp
CiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgIH0KIH0KIAogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4
dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogY29u
dGV4dE1hcC52YWx1ZXMoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAg
ICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
ICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwpAQCAtMzU2LDE0ICszNTIsMTQg
QEAgICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0
PDE+KHR1cGxlKS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBp
bnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUp
LT5oYXNNb2RlKG1vZGUpKQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbnRlcmZhY2UtPmhhc01vZGUobW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzcxLDggKzM2Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNN
b2QKIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxl
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBs
ZSktPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgZm9y
IChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKGludGVyZmFjZS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zODEsOCArMzc3LDggQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
Om1heUF1dAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVu
KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygp
KSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPmlzUGxheWluZ1ZpZGVvSW5Fbmhh
bmNlZEZ1bGxzY3JlZW4oKSkKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1f
Y29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoaW50ZXJmYWNlLT5pc1BsYXlpbmdW
aWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgCkBAIC0zOTksOCArMzk1LDggQEAgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UqIFZpZGVvRgogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRl
eHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0PDE+KHR1cGxlKS0+YXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKTsKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1f
Y29udGV4dE1hcC52YWx1ZXMoKSkKKyAgICAgICAgaW50ZXJmYWNlLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5n
KT4mJiBjYWxsYmFjaykKQEAgLTQ3MywxMCArNDY5LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldHVwRgogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJ
ZCk7CiAKICAgICBBU1NFUlQodmlkZW9MYXllcklEKTsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKIAotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogICAgIGFk
ZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIFJldGFpblB0cjxXS0xheWVySG9z
dFZpZXc+IHZpZXcgPSBzdGF0aWNfY2FzdDxXS0xheWVySG9zdFZpZXcqPihtb2RlbC0+bGF5ZXJI
b3N0VmlldygpKTsKQEAgLTY2MiwxMCArNjU2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEVudAogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlk
Q2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0cjxWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwotCi0gICAgc3RkOjp0aWUobW9kZWwsIGlu
dGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8m
IFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7
CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3
KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkocmV2
aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDEwICs5Nyw3IEBAIGRv
dWJsZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b28KIHsKICAgICAvLyBGSVhNRTog
U2hhcmUgc29tZSBvZiB0aGlzIGNvZGUgd2l0aCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlPwogCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsK
LSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7Ci0gICAgZG91
YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFk
anVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWdu
aWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5p
bXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0RW50aXJlUmVjdCk7CisgICAgYXV0
byBbYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFy
dE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRpcmVSZWN0KTsKIAog
ICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBbbV9jb250ZW50VmlldyBfY29udGVudFpvb21TY2Fs
ZV07CiAgICAgZG91YmxlIHRhcmdldFNjYWxlID0gW21fY29udGVudFZpZXcgX3RhcmdldENvbnRl
bnRab29tU2NhbGVGb3JSZWN0OmFkanVzdGVkVGFyZ2V0UmVjdCBjdXJyZW50U2NhbGU6Y3VycmVu
dFNjYWxlIGZpdEVudGlyZVJlY3Q6Zml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6bWluaW11bVNj
YWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGVdOwpAQCAtMTE4LDEwICsxMTUsNyBAQCB2b2lk
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmRpZENvCiAgICAgICAgIFttX2NvbnRlbnRW
aWV3IF96b29tVG9Jbml0aWFsU2NhbGVXaXRoT3JpZ2luOm9yaWdpbl07CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgRmxvYXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsKLSAgICBkb3VibGUg
bWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7Ci0gICAgZG91YmxlIG1heGltdW1T
Y2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFkanVzdGVkVGFyZ2V0
UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWduaWZpY2F0aW9uVGFy
Z2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZp
ZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0RW50aXJlUmVjdCk7CisgICAgYXV0byBbYWRqdXN0ZWRU
YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRp
b25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRpcmVSZWN0KTsKIAogICAgIC8vIEZJWE1F
OiBDaGVjayBpZiB0ZXh0IHNlbGVjdGlvbiB3YW50cyB0byBjb25zdW1lIHRoZSBkb3VibGUgdGFw
IGJlZm9yZSB3ZSBhdHRlbXB0IG1hZ25pZmljYXRpb24uCiAKQEAgLTE0NywxMCArMTQxLDcgQEAg
dm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDbwogCiB2b2lkIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1hZ25pZnkoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVj
dCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBkb3VibGUgdmlld3Bv
cnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3
cG9ydE1heGltdW1TY2FsZTsKLSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5p
bXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUs
IG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxl
cyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUs
IHRydWUpOworICAgIGF1dG8gW2FkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhp
bXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFy
Z2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCB0cnVl
KTsKIAogICAgIFttX2NvbnRlbnRWaWV3IF96b29tVG9SZWN0OmFkanVzdGVkVGFyZ2V0UmVjdCB3
aXRoT3JpZ2luOm9yaWdpbiBmaXRFbnRpcmVSZWN0Ok5PIG1pbmltdW1TY2FsZTptaW5pbXVtU2Nh
bGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6MF07CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOTQsOSArMjA5NCw3
IEBAIHN0ZDo6dHVwbGU8U3RyaW5nLCBQREZTZWxlY3Rpb24gKiwgTlNEaWMKICAgICAgICAgcmV0
dXJuIHsgc2VsZWN0aW9uLnN0cmluZywgc2VsZWN0aW9uLCBuaWwgfTsKICAgICB9CiAKLSAgICBO
U1N0cmluZyAqbG9va3VwVGV4dDsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3Rk
Ojp0aWUobG9va3VwVGV4dCwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQ
REZTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBhdXRvIFtsb29rdXBUZXh0LCBvcHRpb25zXSA9
IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAg
IGlmICghbG9va3VwVGV4dC5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCks
IHNlbGVjdGlvbiwgbmlsIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHJldmlzaW9uIDI0Njg1NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMCiAgICAgCiAgICAgLy8gRmluZCB0aGUgZnJhbWUgdGhlIHBvaW50
IGlzIG92ZXIuCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJvdW5kZWRJbnRQb2ludChmbG9hdFBvaW50KSkpOwot
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAg
IHN0ZDo6dGllKHJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRU
ZXN0UmVzdWx0KHJlc3VsdCk7CisgICAgYXV0byBbcmFuZ2UsIG9wdGlvbnNdID0gRGljdGlvbmFy
eUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKICAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xMDAsOSArOTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMCiAKIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25h
cnlMb29rdXBGb3JTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRh
dGlvblRyYW5zaXRpb24pCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlOwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShzZWxlY3RlZFJhbmdlLCBvcHRp
b25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7Cisg
ICAgYXV0byBbc2VsZWN0ZWRSYW5nZSwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgIGlmIChzZWxlY3RlZFJhbmdlKQogICAgICAg
ICBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJhbmdlKGZyYW1lLCAqc2VsZWN0ZWRSYW5nZSwg
b3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDcg
QEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheWJhY2tTZXNzaW9uTQogCiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+UGxheWJhY2tTZXNzaW9uTWFuYWdlcigpCiB7Ci0gICAgZm9yIChhdXRv
JiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgICAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOworICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZh
Y2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIG1vZGVsLT5yZW1vdmVDbGll
bnQoKmludGVyZmFjZSk7CiAgICAgICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7
CiAKQEAgLTIyOSw5ICsyMjYsNyBAQCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBQ
bGF5YmFjCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50
NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0g
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9IG1vZGVsLT5tZWRpYUVsZW1lbnQoKTsKICAgICBt
b2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHJl
dmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMTEgKzEyMiw3IEBAIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlZpZGVvRnVsbHNjcmVlbk0KIAogVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogewotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2Vd
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1l
bnQobnVsbHB0cik7CiAgICAgICAgIG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAK
QEAgLTE4MCw5ICsxNzYsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0JiBWaWRl
b0Z1CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4g
aW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgbV9wbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLT5yZW1vdmVDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAKQEAgLTI1MCw5
ICsyNDQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GCiAgICAg
VU5VU0VEX1BBUkFNKGFkZFJlc3VsdCk7CiAgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPT0gY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZh
Y2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKICAgICBhZGRDbGllbnRG
b3JDb250ZXh0KGNvbnRleHRJZCk7CiAgICAgaWYgKCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0Nv
bnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7CkBAIC0z
NjksOSArMzYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFj
ZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgQ0FMYXllciog
dmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIo
KTsKIApAQCAtMzg1LDkgKzM3NSw3IEBAICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJm
YWNlLT5sYXkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRl
bnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAg
bW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsgLy8gbmVl
ZCB0aGlzIGZvciByZXR1cm4gdmlkZW8gbGF5ZXIKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsKQEAgLTQwNiw5ICsz
OTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsCiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4o
JXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKICAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdGhpcywgY29udGV4dElkXSB7CkBAIC00MzEsOSArNDE3LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bAogewogICAgIExPRyhGdWxsc2NyZWVuLCAi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlz
LCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4g
aW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRl
b0VsZW1lbnQ+IHZpZGVvRWxlbWVudCA9IG1vZGVsLT52aWRlb0VsZW1lbnQoKTsKICAgICBpZiAo
IXZpZGVvRWxlbWVudCkKQEAgLTQ1MCw5ICs0MzQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEVudGVyRnVsCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7
CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwot
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0g
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNldElzQW5pbWF0aW5nKGZh
bHNlKTsKICAgICBpbnRlcmZhY2UtPnNldElzRnVsbHNjcmVlbihmYWxzZSk7CkBAIC00NzksOSAr
NDYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbAogewogICAg
IExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3Jl
ZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2Rl
bCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKQEAgLTUxMCw5ICs0OTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElk
KTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7
Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsK
LSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGlu
Z0NvbnRleHQoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+
c2V0Um9vdExheWVyKG51bGxwdHIpOwpAQCAtNTcyLDkgKzU1MCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6
OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZh
Y2UoY29udGV4dElkKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKGJvdW5kcy54KCkpIHx8IHN0ZDo6
aXNuYW4oYm91bmRzLnkoKSkgfHwgc3RkOjppc25hbihib3VuZHMud2lkdGgoKSkgfHwgc3RkOjpp
c25hbihib3VuZHMuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGF1dG8gdmlkZW9SZWN0ID0gaW5saW5l
VmlkZW9GcmFtZSgqbW9kZWwtPnZpZGVvRWxlbWVudCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA2LTI2ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1wbGUgc3Ry
dWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3RkOjp0aWUo
KSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAgIHVzZXMg
b2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3IgdXNlIHN0
ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdvcmsgZm9y
IHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBf
YW5pbWF0aW9uQ29udHJvbGxlckZvclRleHRdKToKKwogMjAxOS0wNi0xNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEF0b21pY1N0cmluZyB0byBBdG9t
U3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1OCw5ICs1NTgsNyBAQCAtIChpZDxO
U0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsCiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIFJlZlB0cjxSYW5nZT4gZGljdGlvbmFyeVJhbmdlOwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShkaWN0aW9uYXJ5UmFuZ2UsIG9w
dGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoX2hpdFRlc3RS
ZXN1bHQpOworICAgIGF1dG8gW2RpY3Rpb25hcnlSYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5
TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJlc3VsdCk7CiAgICAgaWYgKCFk
aWN0aW9uYXJ5UmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg2NikKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA2
LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1w
bGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3Rk
Ojp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAg
IHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3Ig
dXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdv
cmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVG
aWxlUHJvbWlzZVJlY2VpdmVyIHJlY2VpdmVQcm9taXNlZEZpbGVzQXREZXN0aW5hdGlvbjpvcHRp
b25zOm9wZXJhdGlvblF1ZXVlOnJlYWRlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDE5LTA2LTI2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZXdzLWJ1aWxkXSBBZGQgY29uZmlndXJhdGlvbiBhbmQgYXJjaGl0ZWN0dXJlIGZv
ciBXUEUgYW5kIEdUSyBidWlsZGVycwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQkocmV2aXNpb24gMjQ2ODU2
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZv
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOSArMTIyLDcgQEAgLSAodm9pZClyZWNlaXZlUHJv
bWlzZWRGaWxlc0F0RGVzdGluYXRpbwogICAgIE5TQXJyYXk8TlNVUkwgKj4gKnNvdXJjZVVSTHMg
PSBfZHJhZ2dpbmdTb3VyY2UucHJvbWlzZWRGaWxlVVJMczsKICAgICBmb3IgKE5TVVJMICpzb3Vy
Y2VVUkwgaW4gc291cmNlVVJMcykgewogICAgICAgICBbb3BlcmF0aW9uUXVldWUgYWRkT3BlcmF0
aW9uV2l0aEJsb2NrOl57Ci0gICAgICAgICAgICBOU0Vycm9yICplcnJvcjsKLSAgICAgICAgICAg
IE5TVVJMICpkZXN0aW5hdGlvblVSTDsKLSAgICAgICAgICAgIHN0ZDo6dGllKGRlc3RpbmF0aW9u
VVJMLCBlcnJvcikgPSBjb3B5RmlsZShzb3VyY2VVUkwsIGRlc3RpbmF0aW9uRGlyZWN0b3J5KTsK
KyAgICAgICAgICAgIGF1dG8gW2Rlc3RpbmF0aW9uVVJMLCBlcnJvcl0gPSBjb3B5RmlsZShzb3Vy
Y2VVUkwsIGRlc3RpbmF0aW9uRGlyZWN0b3J5KTsKICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlv
blVSTCkgewogICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CiAgICAgICAgICAgICAgICAgICAgIFtfZGVzdGluYXRpb25VUkxzIGFkZE9i
amVjdDpkZXN0aW5hdGlvblVSTF07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxNywzMCArMjE3LDMyIEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFNldERlZmF1bHRX
ZWIKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwog
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVu
dE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcs
IGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KCk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkZvbzwvcHJl
PiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5k
bGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7
Ci0gICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQcmVm
ZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAgICB9
XTsKLSAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5n
czpAIk1vemlsbGEvNS4wIChNYWMiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwotICAgIEVYUEVD
VF9XS19TVFJFUSgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOwotCi0g
ICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwotICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5CYXI8L3ByZT4iIHdpdGhQb2xpY3lEZWNp
c2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBFWFBFQ1Rf
RVEoV0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250
ZW50TW9kZSk7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWMi
LCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50ZWwi
LCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIHsKKyAgICAgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJl
PkZvbzwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlv
biAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVj
aXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZVJlY29tbWVuZGVk
LCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOworICAgICAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJl
ZmVyZW5jZXMpOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2Vi
S2l0QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJW
aWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAgfQogCi0gICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8cHJlPkJhejwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2
aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2Vz
LCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICopKSB7Ci0gICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVz
a3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRoQ29udGVudE1vZGU6V0tDb250ZW50TW9kZU1vYmls
ZV0pOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENv
bnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKGlQIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsK
LSAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dIGNvbnRhaW5zU3Ry
aW5nOkAiaVAiXSk7CisgICAgeworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0Nv
bnRlbnRNb2RlRGVza3RvcCk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHBy
ZT5CYXI8L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rp
b24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRl
Y2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJl
bmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBk
ZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOworICAgICAgICAgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVy
ZW5jZXMpOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2Vu
dF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2ViS2l0
QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3
IG5hdmlnYXRvclBsYXRmb3JtXSk7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCI8cHJlPkJhejwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlv
bkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lk
ICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0
b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CisgICAgICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIFtXS1dlYnBh
Z2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dpdGhDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlTW9i
aWxlXSk7CisgICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50
XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChpUCIsIEAiVGVzdFdlYktpdEFQ
SSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9y
bV0gY29udGFpbnNTdHJpbmc6QCJpUCJdKTsKKyAgICB9CiB9CiAKIFRFU1QoUHJlZmVycmVkQ29u
dGVudE1vZGUsIERlc2t0b3BNb2RlV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZSkKQEAgLTI2NCw5
ICsyNjYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZU9uCiB7CiAg
ICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIGlQaG9uZVVzZXJJbnRlcmZhY2U7CiAKLSAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVs
ZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVm
ZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewogICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50
TW9kZVJlY29tbWVuZGVkLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUp
OwogICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dpdGhDb250ZW50TW9kZTpXS0NvbnRl
bnRNb2RlRGVza3RvcF0pOwpAQCAtMjg2LDkgKzI4Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVu
dE1vZGUsIERlc2t0b3BNb2RlVG8KIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQ
YWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAg
ICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAg
IHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oKTsKIAogICAgIF9fYmxvY2sgQk9PTCBkZWNpZGVkUG9saWN5Rm9yTWFpbkZyYW1lID0gTk87
CiAgICAgX19ibG9jayBCT09MIGRlY2lkZWRQb2xpY3lGb3JTdWJGcmFtZSA9IE5POwpAQCAtMzE0
LDkgKzMxMiw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIERlc2t0b3BNb2RlVXMKIHsK
ICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVn
YXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm1ha2VD
b250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRlbnRNb2RlRGVza3RvcCldOwogICAgIEVY
UEVDVF9FUSgxMDI0LCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
bmVyV2lkdGgiXSBpbnRWYWx1ZV0pOwpAQCAtMzM0LDkgKzMzMCw3IEBAIFRFU1QoUHJlZmVycmVk
Q29udGVudE1vZGUsIEN1c3RvbVVzZXJBZ2UKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6
bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdl
YlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURl
c2t0b3ApOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVz
a3RvcCk7CiAKICAgICBOU1N0cmluZyAqY3VzdG9tVXNlckFnZW50ID0gQCJNb3ppbGxhLzUuMCAo
V2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBs
aWtlIEdlY2tvKSBDaHJvbWUvNzEuMC4zNTc4Ljk4IFNhZmFyaS81MzcuMzYiOwogICAgIFt3ZWJW
aWV3IHNldEN1c3RvbVVzZXJBZ2VudDpjdXN0b21Vc2VyQWdlbnRdOwpAQCAtMzUyLDkgKzM0Niw3
IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIERvTm90QWxsb3dDaGEKIHsKICAgICBJUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3ApOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3
PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlv
biAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVj
aXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKSB7CiAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVs
dFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKQEAgLTM3NCw5ICszNjYsNyBAQCBU
RVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBFZmZlY3RpdmVDb250CiB7CiAgICAgSVBhZFVzZXJJ
bnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25E
ZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1v
ZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2Rl
OldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bWFrZUNvbnRl
bnRNb2RlRGVjaXNpb25IYW5kbGVyKFdLQ29udGVudE1vZGVEZXNrdG9wKV07CkBAIC0zODcsOSAr
Mzc3LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRWZmZWN0aXZlQ29udAogewogICAg
IElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGhvbmVVc2VySW50ZXJmYWNlOwogCi0gICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRN
b2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBk
ZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1v
ZGU6V0tDb250ZW50TW9kZU1vYmlsZSB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIiBhbmRFeHBlY3RFZmZlY3Rp
dmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOm1ha2VDb250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRlbnRNb2RlRGVza3RvcCld
OwpAQCAtNDAwLDkgKzM4OCw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVu
ZGVkQ28KIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNl
OwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRy
PENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3
ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOwor
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dT
aXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4
cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBz
aG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJL
aXRBUEkiLCBuaWxdOwogCkBAIC00MTksMjAgKzQwNSwyMCBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBBcHBsaWNhdGlvbk5hCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBp
UGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3
OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7
Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKLSAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdh
dGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2
b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFn
ZVByZWZlcmVuY2VzICopKSB7Ci0gICAgICAgIGRlZmF1bHRQcmVmZXJlbmNlcy5fYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50V2l0aE1vZGVybkNvbXBhdGliaWxpdHkgPSBAIkRlc2t0b3BCcm93
c2VyIjsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCBkZWZhdWx0UHJlZmVyZW5jZXMpOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0
b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9z
aCIsIEAiRGVza3RvcEJyb3dzZXIiLCBuaWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50
ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIHsKKyAgICAgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24g
KiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lz
aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqKSkgeworICAgICAgICAgICAgZGVmYXVsdFByZWZlcmVuY2VzLl9hcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnRXaXRoTW9kZXJuQ29tcGF0aWJpbGl0eSA9IEAiRGVza3RvcEJyb3dzZXIiOwor
ICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCBkZWZhdWx0UHJlZmVyZW5jZXMpOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5h
dmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFj
aW50b3NoIiwgQCJEZXNrdG9wQnJvd3NlciIsIG5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIH0KIAogICAg
IHsKICAgICAgICAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGFwcGxpY2F0aW9uIG5h
bWUsIGJ1dCBzdGlsbCBvcHQgaW50byBkZXNrdG9wLWNsYXNzIGJyb3dzaW5nOwogICAgICAgICAv
LyB0aGUgYXBwbGljYXRpb24gbmFtZSBzaG91bGQgbm90IGRlZmF1bHQgdG8gIk1vYmlsZS8xNUUx
NDgiLgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVz
a3RvcCwgeyB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3AsIHsgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2lt
cGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1
c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1Rf
RkFMU0UoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ0MSw3ICs0
MjcsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAgICAgewog
ICAgICAgICAvLyBEb24ndCBhdHRlbXB0IHRvIGNoYW5nZSB0aGUgYXBwbGljYXRpb24gbmFtZSwg
YnV0IHRoaXMgdGltZSwgb3B0IGludG8gbW9iaWxlIGNvbnRlbnQuIFRoZSBhcHBsaWNhdGlvbgog
ICAgICAgICAvLyBuYW1lIHNob3VsZCBkZWZhdWx0IHRvICJNb2JpbGUvMTVFMTQ4Ii4KLSAgICAg
ICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZU1vYmlsZSwgeyB9KTsK
KyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZU1vYmlsZSwgeyB9
KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdl
bnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CkBAIC00NDksNyArNDM1LDcgQEAgVEVTVChQ
cmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogICAgIH0KICAgICB7CiAgICAgICAg
IC8vIE1hbnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0
aGUgZGVmYXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgc3RkOjp0aWUod2ViVmll
dywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOwor
ICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAi
TW9iaWxlLzE1RTE0OCIgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5n
ICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBF
Q1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpAQCAtNDU3LDcg
KzQ0Myw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKICAgICB9
CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9y
IHVzZXIgYWdlbnQgdG8gbmlsLgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihX
S0NvbnRlbnRNb2RlRGVza3RvcCwge3sgfX0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwge3sgfX0pOwogICAgICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwog
ICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50
XTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2Jp
bGUiXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373033</attachid>
            <date>2019-06-27 09:12:41 -0700</date>
            <delta_ts>2019-06-30 19:26:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190627091240.patch</filename>
            <type>text/plain</type>
            <size>62992</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjYgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgc3BlY2llc0NvbnN0
cnVjdCBuZWVkcyB0byB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGEgRGF0YVZpZXcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRU
aW1lci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQs
NyBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAg
ICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJl
ZCogdGlja2V0OwotICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwg
dGFzaykgPSBtX3Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJl
ZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxl
ZCB0aGVzZSBwcm9taXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihTaWduYWwsIAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7
CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAg
ICAgICAgICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gW3N0YXJ0LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50
ZXIoZW5kKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3Vu
ZCBtYXRjaCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw5ICs4Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3Qq
LCAKIEFMV0FZU19JTkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21W
YWx1ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90
KiBkYXRhOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRh
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90
KiBiYXNlOwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6
ZSkgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIFtiYXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpW
YWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0
IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNv
bWV0aGluZyB3aWxsIE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHls
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJp
bmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFu
Y2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZh
bGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29va2llRGF0YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6Y29uc3RydWN0QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMjYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bXBsZW1lbnQgY29uc29sZS5jb3VudFJlc2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsOSArMTE3Niw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JP
cmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0
aW9uIGZvbnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9u
KSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAKICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9y
aWVudGF0aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0g
Z2x5cGhPcmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZVMKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9u
bHlQb2xpY2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZv
dW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTY3JpcHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cyk7CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJ
blJlcG9ydE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0
SGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwog
ICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRP
bmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
X292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBi
b29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2ll
cywgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAg
ICBpZiAodHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24g
fHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0
cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4
cGFuc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBh
bmRSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJp
ZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlk
VHJhaWxpbmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlv
dXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgw
LDE0ICs1ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAg
IHN0ZDo6dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29y
bmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2Us
IHJhZGl1cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAg
ICBGbG9hdFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6
dGllKGNwMSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21F
ZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQ
b2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAg
ICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0K
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGgg
fHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZl
bmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAg
ICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFu
ZExlZnQsIGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRB
c1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhw
YW5zaW9uLCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBm
b3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5k
TGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFz
U3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24sIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVm
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2Vl
bkZhbWlsaWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVk
RmFtaWx5TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
QEAgLTE0MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm8KICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250
ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAg
IGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
c3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBs
YXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0
ZXJuYXRlRm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRm
b3JtRGF0YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogCkBAIC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdo
aWNoIHJlcHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAg
c3RkOjp0aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNz
YXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50
aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRh
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRv
IFtjb29raWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5
KTsKICAgICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vz
c2VkIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAh
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAg
ICAgICAgc3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25T
dGFydEVuZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0
cnVjdCBJbmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRl
eHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gpCiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0g
Ym94LnNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9
IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlv
biA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcs
NyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
JmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9y
aWVudGF0aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsK
LSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1l
bnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY4NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDggKzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAg
ICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFt
ZSgpOwogCi0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShw
cmVmaXgsIGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNjEgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBz
aW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBu
b3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFs
IGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQg
YmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFy
RXhwaXJlZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9y
Rm9yVGFyZ2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGF5bWVudENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0
dGluZ0xvYWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZp
ZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXll
ckZyYW1lRmVuY2VkKToKKwogMjAxOS0wNi0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyBzaG91bGQgd2FpdCBmb3IgY29va2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDgg
KzU5LDggQEAgc3RhdGljIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGFsbFNwZWN1bAogc3RhdGlj
IHZvaWQgcHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZUNvdW50cygpCiB7
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIi0tIFNwZWN1bGF0
aXZlIGxvYWRpbmcgc3RhdGlzdGljcyAtLSIpOwotICAgIGZvciAoYXV0byYgcGFpciA6IGFsbFNw
ZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlcygpKQotICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiJXM6ICV1IiwgcGFpci5rZXkudXRmOCgpLmRh
dGEoKSwgcGFpci52YWx1ZSk7CisgICAgZm9yIChhdXRvJiBbbWVzc2FnZSwgY291bnRdIDogYWxs
U3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2VzKCkpCisgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIlczogJXUiLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIGNvdW50KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAJKHJldmlzaW9uIDI0Njg1
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCAKIAogdm9pZCBQcmVmZXRjaENhY2hlOjpjbGVhckV4cGlyZWRF
bnRyaWVzKCkKIHsKLSAgICBVUkwgcmVxdWVzdFVybDsKLSAgICBXYWxsVGltZSB0aW1lc3RhbXA7
CiAgICAgYXV0byB0aW1lb3V0ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIHdoaWxlICghbV9zZXNz
aW9uRXhwaXJhdGlvbkxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0ZDo6dGllKHJlcXVlc3RV
cmwsIHRpbWVzdGFtcCkgPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOworICAgICAg
ICBhdXRvIFtyZXF1ZXN0VXJsLCB0aW1lc3RhbXBdID0gbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3Qu
Zmlyc3QoKTsKICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcyk7CiAgICAgICAgIEFTU0VSVChyZXNvdXJj
ZXMtPmNvbnRhaW5zKHJlcXVlc3RVcmwpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjQ2ODU2KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMjIgKzgwLDIyIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmUKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Z1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1l
QW5kUmVjZWl2ZXIgOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKLSAgICAgICAgaWYgKG5h
bWVBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xv
YmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWVBbmRSZWNlaXZlci5rZXkpOworICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewor
ICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKKyAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJz
VG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1lQW5kSWRBbmRSZWNlaXZlciA6IG1fbWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZElkQW5kUmVjZWl2ZXIudmFsdWUgPT0g
Jm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihuYW1lQW5kSWRBbmRSZWNlaXZlci5rZXkuZmlyc3QsIG5hbWVBbmRJZEFu
ZFJlY2VpdmVyLmtleS5zZWNvbmQpKTsKKyAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRp
b25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNl
aXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5k
RGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJlY2VpdmVy
VG9SZW1vdmUgOiByZWNlaXZlcnNUb1JlbW92ZSkKLSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKHJlY2VpdmVyVG9SZW1vdmUuZmlyc3QsIHJlY2VpdmVyVG9SZW1vdmUuc2Vjb25kKTsKKyAg
ICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQor
ICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAK
IHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIwLDEzICszMjAsOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxp
CiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xp
ZW50Q291bnRzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52
YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0K
KyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IGNvbnRleHRNYXAudmFsdWVzKCkp
CiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgIH0KIH0KIAogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4
dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogY29u
dGV4dE1hcC52YWx1ZXMoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAg
ICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
ICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwpAQCAtMzU2LDE0ICszNTIsMTQg
QEAgICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0
PDE+KHR1cGxlKS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBp
bnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUp
LT5oYXNNb2RlKG1vZGUpKQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9j
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbnRlcmZhY2UtPmhhc01vZGUobW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzcxLDggKzM2Nyw4IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNN
b2QKIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxl
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBs
ZSktPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgZm9y
IChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKGludGVyZmFjZS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zODEsOCArMzc3LDggQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
Om1heUF1dAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVu
KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygp
KSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPmlzUGxheWluZ1ZpZGVvSW5Fbmhh
bmNlZEZ1bGxzY3JlZW4oKSkKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1f
Y29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoaW50ZXJmYWNlLT5pc1BsYXlpbmdW
aWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgCkBAIC0zOTksOCArMzk1LDggQEAgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UqIFZpZGVvRgogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRl
eHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0PDE+KHR1cGxlKS0+YXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKTsKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1f
Y29udGV4dE1hcC52YWx1ZXMoKSkKKyAgICAgICAgaW50ZXJmYWNlLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5n
KT4mJiBjYWxsYmFjaykKQEAgLTQ3MywxMCArNDY5LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldHVwRgogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJ
ZCk7CiAKICAgICBBU1NFUlQodmlkZW9MYXllcklEKTsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKIAotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogICAgIGFk
ZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIFJldGFpblB0cjxXS0xheWVySG9z
dFZpZXc+IHZpZXcgPSBzdGF0aWNfY2FzdDxXS0xheWVySG9zdFZpZXcqPihtb2RlbC0+bGF5ZXJI
b3N0VmlldygpKTsKQEAgLTY2MiwxMCArNjU2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEVudAogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlk
Q2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0cjxWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwotCi0gICAgc3RkOjp0aWUobW9kZWwsIGlu
dGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8m
IFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7
CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3
KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkocmV2
aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDEwICs5Nyw3IEBAIGRv
dWJsZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b28KIHsKICAgICAvLyBGSVhNRTog
U2hhcmUgc29tZSBvZiB0aGlzIGNvZGUgd2l0aCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlPwogCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsK
LSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7Ci0gICAgZG91
YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFk
anVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWdu
aWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5p
bXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0RW50aXJlUmVjdCk7CisgICAgYXV0
byBbYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFy
dE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRpcmVSZWN0KTsKIAog
ICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBbbV9jb250ZW50VmlldyBfY29udGVudFpvb21TY2Fs
ZV07CiAgICAgZG91YmxlIHRhcmdldFNjYWxlID0gW21fY29udGVudFZpZXcgX3RhcmdldENvbnRl
bnRab29tU2NhbGVGb3JSZWN0OmFkanVzdGVkVGFyZ2V0UmVjdCBjdXJyZW50U2NhbGU6Y3VycmVu
dFNjYWxlIGZpdEVudGlyZVJlY3Q6Zml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6bWluaW11bVNj
YWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGVdOwpAQCAtMTE4LDEwICsxMTUsNyBAQCB2b2lk
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmRpZENvCiAgICAgICAgIFttX2NvbnRlbnRW
aWV3IF96b29tVG9Jbml0aWFsU2NhbGVXaXRoT3JpZ2luOm9yaWdpbl07CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgRmxvYXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsKLSAgICBkb3VibGUg
bWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7Ci0gICAgZG91YmxlIG1heGltdW1T
Y2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFkanVzdGVkVGFyZ2V0
UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWduaWZpY2F0aW9uVGFy
Z2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZp
ZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0RW50aXJlUmVjdCk7CisgICAgYXV0byBbYWRqdXN0ZWRU
YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRp
b25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRpcmVSZWN0KTsKIAogICAgIC8vIEZJWE1F
OiBDaGVjayBpZiB0ZXh0IHNlbGVjdGlvbiB3YW50cyB0byBjb25zdW1lIHRoZSBkb3VibGUgdGFw
IGJlZm9yZSB3ZSBhdHRlbXB0IG1hZ25pZmljYXRpb24uCiAKQEAgLTE0NywxMCArMTQxLDcgQEAg
dm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDbwogCiB2b2lkIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1hZ25pZnkoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVj
dCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBkb3VibGUgdmlld3Bv
cnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3
cG9ydE1heGltdW1TY2FsZTsKLSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5p
bXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUs
IG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxl
cyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUs
IHRydWUpOworICAgIGF1dG8gW2FkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhp
bXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFy
Z2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCB0cnVl
KTsKIAogICAgIFttX2NvbnRlbnRWaWV3IF96b29tVG9SZWN0OmFkanVzdGVkVGFyZ2V0UmVjdCB3
aXRoT3JpZ2luOm9yaWdpbiBmaXRFbnRpcmVSZWN0Ok5PIG1pbmltdW1TY2FsZTptaW5pbXVtU2Nh
bGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6MF07CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0JKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOTQsOSArMjA5NCw3
IEBAIHN0ZDo6dHVwbGU8U3RyaW5nLCBQREZTZWxlY3Rpb24gKiwgTlNEaWMKICAgICAgICAgcmV0
dXJuIHsgc2VsZWN0aW9uLnN0cmluZywgc2VsZWN0aW9uLCBuaWwgfTsKICAgICB9CiAKLSAgICBO
U1N0cmluZyAqbG9va3VwVGV4dDsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3Rk
Ojp0aWUobG9va3VwVGV4dCwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQ
REZTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBhdXRvIFtsb29rdXBUZXh0LCBvcHRpb25zXSA9
IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAg
IGlmICghbG9va3VwVGV4dC5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCks
IHNlbGVjdGlvbiwgbmlsIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0JKHJldmlzaW9uIDI0Njg1NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMCiAgICAgCiAgICAgLy8gRmluZCB0aGUgZnJhbWUgdGhlIHBvaW50
IGlzIG92ZXIuCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJvdW5kZWRJbnRQb2ludChmbG9hdFBvaW50KSkpOwot
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAg
IHN0ZDo6dGllKHJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRU
ZXN0UmVzdWx0KHJlc3VsdCk7CisgICAgYXV0byBbcmFuZ2UsIG9wdGlvbnNdID0gRGljdGlvbmFy
eUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKICAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xMDAsOSArOTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMCiAKIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25h
cnlMb29rdXBGb3JTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRh
dGlvblRyYW5zaXRpb24pCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlOwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShzZWxlY3RlZFJhbmdlLCBvcHRp
b25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7Cisg
ICAgYXV0byBbc2VsZWN0ZWRSYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgIGlmIChzZWxlY3RlZFJhbmdlKQogICAgICAg
ICBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJhbmdlKGZyYW1lLCAqc2VsZWN0ZWRSYW5nZSwg
b3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQkocmV2aXNpb24gMjQ2ODU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDcg
QEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheWJhY2tTZXNzaW9uTQogCiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+UGxheWJhY2tTZXNzaW9uTWFuYWdlcigpCiB7Ci0gICAgZm9yIChhdXRv
JiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgICAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOworICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZh
Y2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIG1vZGVsLT5yZW1vdmVDbGll
bnQoKmludGVyZmFjZSk7CiAgICAgICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7
CiAKQEAgLTIyOSw5ICsyMjYsNyBAQCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBQ
bGF5YmFjCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50
NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0g
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9IG1vZGVsLT5tZWRpYUVsZW1lbnQoKTsKICAgICBt
b2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHJl
dmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMTEgKzEyMiw3IEBAIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlZpZGVvRnVsbHNjcmVlbk0KIAogVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogewotICAgIGZvciAoYXV0byYgdHVw
bGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2Vd
IDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1l
bnQobnVsbHB0cik7CiAgICAgICAgIG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAK
QEAgLTE4MCw5ICsxNzYsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0JiBWaWRl
b0Z1CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4g
aW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgbV9wbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLT5yZW1vdmVDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAKQEAgLTI1MCw5
ICsyNDQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GCiAgICAg
VU5VU0VEX1BBUkFNKGFkZFJlc3VsdCk7CiAgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPT0gY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZh
Y2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKICAgICBhZGRDbGllbnRG
b3JDb250ZXh0KGNvbnRleHRJZCk7CiAgICAgaWYgKCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0Nv
bnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7CkBAIC0z
NjksOSArMzYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFj
ZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgQ0FMYXllciog
dmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIo
KTsKIApAQCAtMzg1LDkgKzM3NSw3IEBAICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJm
YWNlLT5sYXkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRl
bnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2Up
ID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAg
bW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsgLy8gbmVl
ZCB0aGlzIGZvciByZXR1cm4gdmlkZW8gbGF5ZXIKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsKQEAgLTQwNiw5ICsz
OTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsCiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4o
JXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKICAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdGhpcywgY29udGV4dElkXSB7CkBAIC00MzEsOSArNDE3LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bAogewogICAgIExPRyhGdWxsc2NyZWVuLCAi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlz
LCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4g
aW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRl
b0VsZW1lbnQ+IHZpZGVvRWxlbWVudCA9IG1vZGVsLT52aWRlb0VsZW1lbnQoKTsKICAgICBpZiAo
IXZpZGVvRWxlbWVudCkKQEAgLTQ1MCw5ICs0MzQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEVudGVyRnVsCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7
CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwot
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0g
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNldElzQW5pbWF0aW5nKGZh
bHNlKTsKICAgICBpbnRlcmZhY2UtPnNldElzRnVsbHNjcmVlbihmYWxzZSk7CkBAIC00NzksOSAr
NDYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbAogewogICAg
IExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3Jl
ZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2Rl
bCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKQEAgLTUxMCw5ICs0OTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElk
KTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7
Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsK
LSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGlu
Z0NvbnRleHQoKSkgewogICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+
c2V0Um9vdExheWVyKG51bGxwdHIpOwpAQCAtNTcyLDkgKzU1MCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6
OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZh
Y2UoY29udGV4dElkKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKGJvdW5kcy54KCkpIHx8IHN0ZDo6
aXNuYW4oYm91bmRzLnkoKSkgfHwgc3RkOjppc25hbihib3VuZHMud2lkdGgoKSkgfHwgc3RkOjpp
c25hbihib3VuZHMuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGF1dG8gdmlkZW9SZWN0ID0gaW5saW5l
VmlkZW9GcmFtZSgqbW9kZWwtPnZpZGVvRWxlbWVudCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg1NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA2LTI2ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1wbGUgc3Ry
dWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3RkOjp0aWUo
KSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAgIHVzZXMg
b2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3IgdXNlIHN0
ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdvcmsgZm9y
IHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBf
YW5pbWF0aW9uQ29udHJvbGxlckZvclRleHRdKToKKwogMjAxOS0wNi0xNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEF0b21pY1N0cmluZyB0byBBdG9t
U3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNDY4
NTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1OCw5ICs1NTgsNyBAQCAtIChpZDxO
U0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsCiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIFJlZlB0cjxSYW5nZT4gZGljdGlvbmFyeVJhbmdlOwotICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShkaWN0aW9uYXJ5UmFuZ2UsIG9w
dGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoX2hpdFRlc3RS
ZXN1bHQpOworICAgIGF1dG8gW2RpY3Rpb25hcnlSYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5
TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJlc3VsdCk7CiAgICAgaWYgKCFk
aWN0aW9uYXJ5UmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg2NikKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA2
LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1w
bGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3Rk
Ojp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAg
IHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3Ig
dXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdv
cmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVG
aWxlUHJvbWlzZVJlY2VpdmVyIHJlY2VpdmVQcm9taXNlZEZpbGVzQXREZXN0aW5hdGlvbjpvcHRp
b25zOm9wZXJhdGlvblF1ZXVlOnJlYWRlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDE5LTA2LTI2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZXdzLWJ1aWxkXSBBZGQgY29uZmlndXJhdGlvbiBhbmQgYXJjaGl0ZWN0dXJlIGZv
ciBXUEUgYW5kIEdUSyBidWlsZGVycwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQkocmV2aXNpb24gMjQ2ODU2
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZv
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOSArMTIyLDcgQEAgLSAodm9pZClyZWNlaXZlUHJv
bWlzZWRGaWxlc0F0RGVzdGluYXRpbwogICAgIE5TQXJyYXk8TlNVUkwgKj4gKnNvdXJjZVVSTHMg
PSBfZHJhZ2dpbmdTb3VyY2UucHJvbWlzZWRGaWxlVVJMczsKICAgICBmb3IgKE5TVVJMICpzb3Vy
Y2VVUkwgaW4gc291cmNlVVJMcykgewogICAgICAgICBbb3BlcmF0aW9uUXVldWUgYWRkT3BlcmF0
aW9uV2l0aEJsb2NrOl57Ci0gICAgICAgICAgICBOU0Vycm9yICplcnJvcjsKLSAgICAgICAgICAg
IE5TVVJMICpkZXN0aW5hdGlvblVSTDsKLSAgICAgICAgICAgIHN0ZDo6dGllKGRlc3RpbmF0aW9u
VVJMLCBlcnJvcikgPSBjb3B5RmlsZShzb3VyY2VVUkwsIGRlc3RpbmF0aW9uRGlyZWN0b3J5KTsK
KyAgICAgICAgICAgIGF1dG8gW2Rlc3RpbmF0aW9uVVJMLCBlcnJvcl0gPSBjb3B5RmlsZShzb3Vy
Y2VVUkwsIGRlc3RpbmF0aW9uRGlyZWN0b3J5KTsKICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlv
blVSTCkgewogICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CiAgICAgICAgICAgICAgICAgICAgIFtfZGVzdGluYXRpb25VUkxzIGFkZE9i
amVjdDpkZXN0aW5hdGlvblVSTF07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQkocmV2aXNpb24gMjQ2ODU2KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxNywzMCArMjE3LDMyIEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFNldERlZmF1bHRX
ZWIKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwog
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVu
dE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcs
IGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KCk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkZvbzwvcHJl
PiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5k
bGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7
Ci0gICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQcmVm
ZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAgICB9
XTsKLSAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5n
czpAIk1vemlsbGEvNS4wIChNYWMiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwotICAgIEVYUEVD
VF9XS19TVFJFUSgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOwotCi0g
ICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwotICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5CYXI8L3ByZT4iIHdpdGhQb2xpY3lEZWNp
c2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBFWFBFQ1Rf
RVEoV0tDb250ZW50TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250
ZW50TW9kZSk7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWMi
LCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50ZWwi
LCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIHsKKyAgICAgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJl
PkZvbzwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlv
biAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVj
aXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZVJlY29tbWVuZGVk
LCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOworICAgICAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJl
ZmVyZW5jZXMpOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2Vi
S2l0QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJW
aWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAgfQogCi0gICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8cHJlPkJhejwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2
aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2Vz
LCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICopKSB7Ci0gICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVz
a3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRoQ29udGVudE1vZGU6V0tDb250ZW50TW9kZU1vYmls
ZV0pOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENv
bnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKGlQIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsK
LSAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dIGNvbnRhaW5zU3Ry
aW5nOkAiaVAiXSk7CisgICAgeworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0Nv
bnRlbnRNb2RlRGVza3RvcCk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHBy
ZT5CYXI8L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rp
b24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRl
Y2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJl
bmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBk
ZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOworICAgICAgICAgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVy
ZW5jZXMpOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2Vu
dF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2ViS2l0
QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3
IG5hdmlnYXRvclBsYXRmb3JtXSk7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCI8cHJlPkJhejwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlv
bkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lk
ICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0
b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CisgICAgICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIFtXS1dlYnBh
Z2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dpdGhDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlTW9i
aWxlXSk7CisgICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50
XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChpUCIsIEAiVGVzdFdlYktpdEFQ
SSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9y
bV0gY29udGFpbnNTdHJpbmc6QCJpUCJdKTsKKyAgICB9CiB9CiAKIFRFU1QoUHJlZmVycmVkQ29u
dGVudE1vZGUsIERlc2t0b3BNb2RlV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZSkKQEAgLTI2NCw5
ICsyNjYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZU9uCiB7CiAg
ICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIGlQaG9uZVVzZXJJbnRlcmZhY2U7CiAKLSAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVs
ZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVm
ZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewogICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50
TW9kZVJlY29tbWVuZGVkLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUp
OwogICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dpdGhDb250ZW50TW9kZTpXS0NvbnRl
bnRNb2RlRGVza3RvcF0pOwpAQCAtMjg2LDkgKzI4Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVu
dE1vZGUsIERlc2t0b3BNb2RlVG8KIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQ
YWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAg
ICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAg
IHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oKTsKIAogICAgIF9fYmxvY2sgQk9PTCBkZWNpZGVkUG9saWN5Rm9yTWFpbkZyYW1lID0gTk87
CiAgICAgX19ibG9jayBCT09MIGRlY2lkZWRQb2xpY3lGb3JTdWJGcmFtZSA9IE5POwpAQCAtMzE0
LDkgKzMxMiw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIERlc2t0b3BNb2RlVXMKIHsK
ICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVn
YXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm1ha2VD
b250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRlbnRNb2RlRGVza3RvcCldOwogICAgIEVY
UEVDVF9FUSgxMDI0LCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
bmVyV2lkdGgiXSBpbnRWYWx1ZV0pOwpAQCAtMzM0LDkgKzMzMCw3IEBAIFRFU1QoUHJlZmVycmVk
Q29udGVudE1vZGUsIEN1c3RvbVVzZXJBZ2UKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6
bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdl
YlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURl
c2t0b3ApOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVz
a3RvcCk7CiAKICAgICBOU1N0cmluZyAqY3VzdG9tVXNlckFnZW50ID0gQCJNb3ppbGxhLzUuMCAo
V2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBs
aWtlIEdlY2tvKSBDaHJvbWUvNzEuMC4zNTc4Ljk4IFNhZmFyaS81MzcuMzYiOwogICAgIFt3ZWJW
aWV3IHNldEN1c3RvbVVzZXJBZ2VudDpjdXN0b21Vc2VyQWdlbnRdOwpAQCAtMzUyLDkgKzM0Niw3
IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIERvTm90QWxsb3dDaGEKIHsKICAgICBJUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3ApOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3
PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlv
biAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVj
aXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKSB7CiAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVs
dFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKQEAgLTM3NCw5ICszNjYsNyBAQCBU
RVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBFZmZlY3RpdmVDb250CiB7CiAgICAgSVBhZFVzZXJJ
bnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25E
ZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1v
ZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2Rl
OldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bWFrZUNvbnRl
bnRNb2RlRGVjaXNpb25IYW5kbGVyKFdLQ29udGVudE1vZGVEZXNrdG9wKV07CkBAIC0zODcsOSAr
Mzc3LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRWZmZWN0aXZlQ29udAogewogICAg
IElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGhvbmVVc2VySW50ZXJmYWNlOwogCi0gICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRN
b2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBk
ZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1v
ZGU6V0tDb250ZW50TW9kZU1vYmlsZSB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIiBhbmRFeHBlY3RFZmZlY3Rp
dmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOm1ha2VDb250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRlbnRNb2RlRGVza3RvcCld
OwpAQCAtNDAwLDkgKzM4OCw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVu
ZGVkQ28KIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNl
OwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRy
PENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3
ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOwor
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dT
aXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4
cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBz
aG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJL
aXRBUEkiLCBuaWxdOwogCkBAIC00MTksMjAgKzQwNSwyMCBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBBcHBsaWNhdGlvbk5hCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBp
UGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3
OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7
Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKLSAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdh
dGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2
b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFn
ZVByZWZlcmVuY2VzICopKSB7Ci0gICAgICAgIGRlZmF1bHRQcmVmZXJlbmNlcy5fYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50V2l0aE1vZGVybkNvbXBhdGliaWxpdHkgPSBAIkRlc2t0b3BCcm93
c2VyIjsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCBkZWZhdWx0UHJlZmVyZW5jZXMpOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0
b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9z
aCIsIEAiRGVza3RvcEJyb3dzZXIiLCBuaWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50
ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIHsKKyAgICAgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24g
KiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lz
aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqKSkgeworICAgICAgICAgICAgZGVmYXVsdFByZWZlcmVuY2VzLl9hcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnRXaXRoTW9kZXJuQ29tcGF0aWJpbGl0eSA9IEAiRGVza3RvcEJyb3dzZXIiOwor
ICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCBkZWZhdWx0UHJlZmVyZW5jZXMpOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5h
dmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFj
aW50b3NoIiwgQCJEZXNrdG9wQnJvd3NlciIsIG5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USgiTWFjSW50ZWwiLCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIH0KIAogICAg
IHsKICAgICAgICAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGFwcGxpY2F0aW9uIG5h
bWUsIGJ1dCBzdGlsbCBvcHQgaW50byBkZXNrdG9wLWNsYXNzIGJyb3dzaW5nOwogICAgICAgICAv
LyB0aGUgYXBwbGljYXRpb24gbmFtZSBzaG91bGQgbm90IGRlZmF1bHQgdG8gIk1vYmlsZS8xNUUx
NDgiLgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVz
a3RvcCwgeyB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3AsIHsgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2lt
cGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1
c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1Rf
RkFMU0UoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ0MSw3ICs0
MjcsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAgICAgewog
ICAgICAgICAvLyBEb24ndCBhdHRlbXB0IHRvIGNoYW5nZSB0aGUgYXBwbGljYXRpb24gbmFtZSwg
YnV0IHRoaXMgdGltZSwgb3B0IGludG8gbW9iaWxlIGNvbnRlbnQuIFRoZSBhcHBsaWNhdGlvbgog
ICAgICAgICAvLyBuYW1lIHNob3VsZCBkZWZhdWx0IHRvICJNb2JpbGUvMTVFMTQ4Ii4KLSAgICAg
ICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZU1vYmlsZSwgeyB9KTsK
KyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZU1vYmlsZSwgeyB9
KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdl
bnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CkBAIC00NDksNyArNDM1LDcgQEAgVEVTVChQ
cmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogICAgIH0KICAgICB7CiAgICAgICAg
IC8vIE1hbnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0
aGUgZGVmYXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgc3RkOjp0aWUod2ViVmll
dywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOwor
ICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAi
TW9iaWxlLzE1RTE0OCIgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5n
ICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBF
Q1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpAQCAtNDU3LDcg
KzQ0Myw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKICAgICB9
CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9y
IHVzZXIgYWdlbnQgdG8gbmlsLgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihX
S0NvbnRlbnRNb2RlRGVza3RvcCwge3sgfX0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwge3sgfX0pOwogICAgICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwog
ICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50
XTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2Jp
bGUiXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373200</attachid>
            <date>2019-06-30 19:26:25 -0700</date>
            <delta_ts>2019-06-30 20:20:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190630192625.patch</filename>
            <type>text/plain</type>
            <size>63006</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjggIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiMyBt
YWNybyBsb3dlcmluZyBmb3IgQ2hlY2tNdWwgb24gYXJtNjQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNyBAQCB2b2lkIFBy
b21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAgICAgd2hpbGUgKCFt
X3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0Owot
ICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwgdGFzaykgPSBtX3Rh
c2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRh
a2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJu
YWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9t
aXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWws
IAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewogICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91
bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CiAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgdm9p
ZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAgICAgICAgICAgIHN0
ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3IgKGF1dG8gW3N0YXJ0
LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0
YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1bHRp
bmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBtYXRjaCIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4
Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCAKIEFMV0FZU19J
TkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhOwotICAg
IHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRhLCBieXRlU2l6ZV0g
PSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90KiBiYXNlOwotICAg
IHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6ZSkgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIFtiYXNl
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBQ
bGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdGhy
b3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3aWxs
IE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA2LTI2ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1wbGUgc3Ry
dWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3RkOjp0aWUo
KSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAgIHVzZXMg
b2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3IgdXNlIHN0
ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdvcmsgZm9y
IHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2
YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVj
dHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llRGF0
YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6CisgICAgICAgICog
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29uc3RydWN0
QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMzAgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgTGF5b3V0OjpwcmludExheW91
dFRyZWVGb3JMaXZlRG9jdW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsOSArMTE5Nyw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JPcmllbnRh
dGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0aW9uIGZv
bnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRp
b247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uKSA9IHN0
eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVudGF0aW9u
LCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CiAK
ICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3JpcHRpb24o
KTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9yaWVudGF0
aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0gZ2x5cGhP
cmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3
LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVMKICAg
ICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBmb3VuZEhh
c2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xp
Y2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZvdW5kSGFz
aEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcygmQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3Jp
cHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyk7
CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJblJlcG9y
dE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0SGFzaCwg
c2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwogICAgIGlm
IChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9s
aWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJl
Y3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0
ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX292ZXJy
aWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBib29sIGZv
dW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25s
eVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKCZDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxl
SGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMp
OwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBv
cnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlv
bGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAgICBpZiAo
dHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gfHwgZm9y
Y2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRl
IHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBv
cnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBhbmRSaWdo
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4cGFuZFJp
Z2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBtX3J1bi5s
dHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJpZFRyYWls
aW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdFeHBhbnNp
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5kUmln
aHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0
cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlkVHJhaWxp
bmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4cGFuc2lv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5p
dHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lk
dGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDE0ICs1
ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9hdFBvaW50
IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAgIHN0ZDo6
dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZy
b21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQsIGVuZFBv
aW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1
cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAgICBGbG9h
dFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6dGllKGNw
MSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0
b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQb2ludHNG
b3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAgICAgICAg
IHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0KICAgICBw
YXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFk
dmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9y
Y2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAgICAgICAg
ICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92
ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAg
ICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwYW5kTGVm
dCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQs
IGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNl
LCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9u
LCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBmb3JjZVRy
YWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwg
ZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2Us
IG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24s
IGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJh
aWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZv
bnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2VlbkZhbWls
aWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5
TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1
ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1
dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2Js
aXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0
Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlx
dWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhW
YXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0KQEAgLTE0
MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm8K
ICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250ID0gZmFs
bGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAgIGJvb2wg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3RpdHV0ZUZv
bnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3JtRm9udDo6
WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0ZXJuYXRl
Rm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRmb3JtRGF0
YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogCkBA
IC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJh
Y2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdoaWNoIHJl
cHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4
ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3lu
dGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRm
b3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRhKHBsYXRm
b3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZvbnQoZm9u
dC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwogCi0gICAg
ICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAgc3RkOjp0
aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNzYXJ5U3lu
dGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9u
KS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXND
b21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAog
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250Lmdl
dCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRhU3RyaW5n
LCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRvIFtjb29r
aWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKICAg
ICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6OnBh
aXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vzc2VkIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5j
YXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNCb3gqIGVs
bGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAhPSBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNlbGVjdGlv
blN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAgICAgICAg
c3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25TdGFydEVu
ZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBz
ZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAgICAgIC8v
IHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFu
ZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9y
ZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0cnVjdCBJ
bmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRleHQgY3Jl
YXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gp
CiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9u
RW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0gYm94LnNl
bGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPCBz
ZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25F
bmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9IHBhcmVu
dFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwotICAgIHVu
c2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlvbiwgZW5k
UG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZyYWdtZW50
U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcsNyBAQCBS
ZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1c2VTVkda
b29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwg
Zm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywgJmRvY3Vt
ZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9yaWVudGF0
aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsKLSAgICBz
dGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1lbnRTdHls
ZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRhdGlvbiwg
Z2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRhdGlvbik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5cGhPcmll
bnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDggKzIx
OSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAgICBpZiAo
cGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFtZSgpOwog
Ci0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShwcmVmaXgs
IGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRv
IFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
IAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxBdG9tKCks
IGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBzaW1wbGUg
dXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBub3QgdG91
Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFsIGRlY2xh
cmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQgYmluZGlu
Z3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9z
dGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFyRXhwaXJl
ZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
OgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9Q
aWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9yRm9yVGFy
Z2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2Zl
clJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGF5bWVu
dENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29u
dGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xv
YWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29u
dGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0
dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKToKKwogMjAxOS0wNi0zMCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CiAKICAgICAgICAgUGFzcyBXZWJQcm9jZXNzIGluZm9ybWF0aW9uIHRvIHBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQCBzdGF0aWMgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiYgYWxsU3BlY3VsCiBzdGF0aWMgdm9pZCBwcmludFNwZWN1bGF0aXZlTG9hZGlu
Z0RpYWdub3N0aWNNZXNzYWdlQ291bnRzKCkKIHsKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVQcmVsb2FkaW5nLCAiLS0gU3BlY3VsYXRpdmUgbG9hZGluZyBzdGF0aXN0aWNzIC0tIik7
Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogYWxsU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01l
c3NhZ2VzKCkpCi0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcs
ICIlczogJXUiLCBwYWlyLmtleS51dGY4KCkuZGF0YSgpLCBwYWlyLnZhbHVlKTsKKyAgICBmb3Ig
KGF1dG8mIFttZXNzYWdlLCBjb3VudF0gOiBhbGxTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGlj
TWVzc2FnZXMoKSkKKyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGlu
ZywgIiVzOiAldSIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgY291bnQpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTEg
Kzk2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IAogCiB2b2lk
IFByZWZldGNoQ2FjaGU6OmNsZWFyRXhwaXJlZEVudHJpZXMoKQogewotICAgIFVSTCByZXF1ZXN0
VXJsOwotICAgIFdhbGxUaW1lIHRpbWVzdGFtcDsKICAgICBhdXRvIHRpbWVvdXQgPSBXYWxsVGlt
ZTo6bm93KCk7CiAgICAgd2hpbGUgKCFtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc3RkOjp0aWUocmVxdWVzdFVybCwgdGltZXN0YW1wKSA9IG1fc2Vzc2lvbkV4
cGlyYXRpb25MaXN0LmZpcnN0KCk7CisgICAgICAgIGF1dG8gW3JlcXVlc3RVcmwsIHRpbWVzdGFt
cF0gPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOwogICAgICAgICBhdXRvKiByZXNv
dXJjZXMgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLmdldCgpOwogICAgICAgICBBU1NFUlQocmVzb3Vy
Y2VzKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcy0+Y29udGFpbnMocmVxdWVzdFVybCkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwyMiArODAsMjIgQEAg
dm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogdm9pZCBNZXNzYWdlUmVj
ZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VS
ZWNlaXZlcikKIHsKICAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIG5hbWVBbmRSZWNlaXZlciA6IG1fZ2xvYmFsTWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZFJlY2VpdmVyLnZhbHVlID09ICZtZXNz
YWdlUmVjZWl2ZXIpCi0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQo
bmFtZUFuZFJlY2VpdmVyLmtleSk7CisgICAgZm9yIChhdXRvJiBbbmFtZSwgcmVjZWl2ZXJdIDog
bV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVz
c2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5k
KG5hbWUpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSA6
IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlKQogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
Z2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSk7CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1Jl
ZmVyZW5jZSwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIG5h
bWVBbmRJZEFuZFJlY2VpdmVyIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7Ci0gICAgICAgIGlmIChu
YW1lQW5kSWRBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAg
ICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRJZEFuZFJl
Y2VpdmVyLmtleS5maXJzdCwgbmFtZUFuZElkQW5kUmVjZWl2ZXIua2V5LnNlY29uZCkpOworICAg
IGZvciAoYXV0byYgW25hbWVBbmREZXN0aW5hdGlvbklELCByZWNlaXZlcl0gOiBtX21lc3NhZ2VS
ZWNlaXZlcnMpIHsKKyAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIpCisg
ICAgICAgICAgICByZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIobmFtZUFu
ZERlc3RpbmF0aW9uSUQuZmlyc3QsIG5hbWVBbmREZXN0aW5hdGlvbklELnNlY29uZCkpOwogICAg
IH0KIAotICAgIGZvciAoYXV0byYgcmVjZWl2ZXJUb1JlbW92ZSA6IHJlY2VpdmVyc1RvUmVtb3Zl
KQotICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIocmVjZWl2ZXJUb1JlbW92ZS5maXJzdCwg
cmVjZWl2ZXJUb1JlbW92ZS5zZWNvbmQpOworICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0
aW9uSURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihuYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6Omlu
dmFsaWRhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2OTU3
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTMgKzMyMCw4IEBAIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZN
b3ZlKG1fY29udGV4dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZv
cm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRl
cmZhY2VdIDogY29udGV4dE1hcC52YWx1ZXMoKSkKICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlk
YXRlKCk7Ci0gICAgfQogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok1vZGVsSW50
ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MywxMSArMzQz
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaQogICAgIGF1dG8g
Y29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0TWFwKTsKICAgICBtX2NsaWVudENvdW50cy5j
bGVhcigpOwogCi0gICAgZm9yIChhdXRvJiB0dXBsZSA6IGNvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAg
ICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwot
ICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisgICAgZm9yIChh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAg
IGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXco
KSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXco
bnVsbHB0cik7CkBAIC0zNTYsMTQgKzM1MiwxNCBAQCAgICAgICAgIGludGVyZmFjZS0+aW52YWxp
ZGF0ZSgpOwogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEhpZGVB
bmRFeGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1h
cC52YWx1ZXMoKSkKLSAgICAgICAgc3RkOjpnZXQ8MT4odHVwbGUpLT5yZXF1ZXN0SGlkZUFuZEV4
aXRGdWxsc2NyZWVuKCk7CisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2Nv
bnRleHRNYXAudmFsdWVzKCkpCisgICAgICAgIGludGVyZmFjZS0+cmVxdWVzdEhpZGVBbmRFeGl0
RnVsbHNjcmVlbigpOwogfQogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aGFz
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgY29u
c3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPmhhc01vZGUobW9kZSkpCisgICAgZm9yIChh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAg
ICAgaWYgKGludGVyZmFjZS0+aGFzTW9kZShtb2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzEsOCArMzY3LDggQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZAogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBj
b25zdAogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+KHR1cGxlKS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRl
b1BpY3R1cmVJblBpY3R1cmUoKSkKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoaW50ZXJmYWNlLT5tYXlBdXRv
bWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM4MSw4ICszNzcsOCBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWF5QXV0CiAjaWYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmlzUGxh
eWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogewotICAgIGZvciAoYXV0byYg
dHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+
KHR1cGxlKS0+aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpKQorICAgIGZvciAo
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmIChpbnRlcmZhY2UtPmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTM5OSw4ICszOTUsOCBA
QCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogVmlkZW9GCiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7Ci0g
ICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkKLSAgICAgICAgc3Rk
OjpnZXQ8MT4odHVwbGUpLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIGZvciAo
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAg
ICBpbnRlcmZhY2UtPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6Um91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmIGNhbGxiYWNrKQpAQCAtNDk3LDEwICs0
OTMsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGCiAgICAgTUVT
U0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKIAogICAgIEFTU0VSVCh2aWRlb0xheWVy
SUQpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAg
IFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwogCi0g
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQp
OwogCiAgICAgUmV0YWluUHRyPFdLTGF5ZXJIb3N0Vmlldz4gdmlldyA9IHN0YXRpY19jYXN0PFdL
TGF5ZXJIb3N0Vmlldyo+KG1vZGVsLT5sYXllckhvc3RWaWV3KCkpOwpAQCAtNjg2LDEwICs2ODAs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9k
ZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPiBpbnRlcmZh
Y2U7Ci0KLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNo
XTsKICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTAgKzk3LDcgQEAgZG91YmxlIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OnpvbwogewogICAgIC8vIEZJWE1FOiBTaGFyZSBzb21lIG9mIHRoaXMgY29kZSB3aXRo
IGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmU/CiAKLSAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2
aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRN
YXhpbXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2Nh
bGUsIG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNj
YWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2Nh
bGUsICFmaXRFbnRpcmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmlt
dW1TY2FsZSwgbWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRa
b29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGlt
dW1TY2FsZSwgIWZpdEVudGlyZVJlY3QpOwogCiAgICAgZG91YmxlIGN1cnJlbnRTY2FsZSA9IFtt
X2NvbnRlbnRWaWV3IF9jb250ZW50Wm9vbVNjYWxlXTsKICAgICBkb3VibGUgdGFyZ2V0U2NhbGUg
PSBbbV9jb250ZW50VmlldyBfdGFyZ2V0Q29udGVudFpvb21TY2FsZUZvclJlY3Q6YWRqdXN0ZWRU
YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpjdXJyZW50U2NhbGUgZml0RW50aXJlUmVjdDpmaXRFbnRp
cmVSZWN0IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2Fs
ZV07CkBAIC0xMTgsMTAgKzExNSw3IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
cjo6ZGlkQ28KICAgICAgICAgW21fY29udGVudFZpZXcgX3pvb21Ub0luaXRpYWxTY2FsZVdpdGhP
cmlnaW46b3JpZ2luXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmlt
dW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRNYXhpbXVtU2NhbGU7
Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1T
Y2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRS
ZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRp
cmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4
aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRh
cmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgIWZp
dEVudGlyZVJlY3QpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIGlmIHRleHQgc2VsZWN0aW9uIHdh
bnRzIHRvIGNvbnN1bWUgdGhlIGRvdWJsZSB0YXAgYmVmb3JlIHdlIGF0dGVtcHQgbWFnbmlmaWNh
dGlvbi4KIApAQCAtMTQ3LDEwICsxNDEsNyBAQCB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvCiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWFnbmlm
eShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdldFJlY3QsIEZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudFJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdw
b3J0TWF4aW11bVNjYWxlKQogewotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFRhcmdldFJlY3Q7Ci0g
ICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIGRvdWJs
ZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBzdGQ6OnRpZShhZGp1
c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKSA9IHNtYXJ0TWFnbmlm
aWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11
bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgdHJ1ZSk7CisgICAgYXV0byBbYWRqdXN0ZWRU
YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRp
b25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIHRydWUpOwogCiAgICAgW21fY29udGVudFZpZXcgX3pv
b21Ub1JlY3Q6YWRqdXN0ZWRUYXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIGZpdEVudGlyZVJl
Y3Q6Tk8gbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxl
IG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMjQ2OTU3KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjA5NCw5ICsyMDk0LDcgQEAgc3RkOjp0dXBsZTxTdHJpbmcsIFBERlNl
bGVjdGlvbiAqLCBOU0RpYwogICAgICAgICByZXR1cm4geyBzZWxlY3Rpb24uc3RyaW5nLCBzZWxl
Y3Rpb24sIG5pbCB9OwogICAgIH0KIAotICAgIE5TU3RyaW5nICpsb29rdXBUZXh0OwotICAgIE5T
RGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShsb29rdXBUZXh0LCBvcHRpb25zKSA9
IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24pOworICAg
IGF1dG8gW2xvb2t1cFRleHQsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9y
UERGU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgaWYgKCFsb29rdXBUZXh0Lmxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgZW1wdHlTdHJpbmcoKSwgc2VsZWN0aW9uLCBuaWwgfTsKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4
NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKICAgICAKICAg
ICAvLyBGaW5kIHRoZSBmcmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocm91
bmRlZEludFBvaW50KGZsb2F0UG9pbnQpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3RkOjp0aWUocmFuZ2UsIG9wdGlvbnMpID0g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKKyAgICBhdXRv
IFtyYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3Vs
dChyZXN1bHQpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTEw
MCw5ICs5OCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKIAog
dm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKLSAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAg
IHN0ZDo6dGllKHNlbGVjdGVkUmFuZ2UsIG9wdGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBhdXRvIFtzZWxlY3RlZFJhbmdlLCBvcHRp
b25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAg
ICAgaWYgKHNlbGVjdGVkUmFuZ2UpCiAgICAgICAgIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9y
UmFuZ2UoZnJhbWUsICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0
aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsNyBAQCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQ
bGF5YmFja1Nlc3Npb25NCiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKCkKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVl
cygpKSB7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4g
bW9kZWw7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Cisg
ICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkp
IHsKICAgICAgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICAgICAgbW9k
ZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKIApAQCAtMjI5LDkgKzIyNiw3IEBAIFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIFBsYXliYWMKIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQ
dHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwor
ICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50ID0g
bW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0
cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiwxMSArMTIyLDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6VmlkZW9G
dWxsc2NyZWVuTQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVs
OwotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJm
YWNlOwotICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisgICAg
Zm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
ICAgICAgICAgbW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbW9kZWwt
PnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKIApAQCAtMTgwLDkgKzE3Niw3IEBAIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQmIFZpZGVvRnUKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9k
ZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAg
IGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+cmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChjb250ZXh0SWQpOwogCkBAIC0yNTAsOSArMjQ0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRgogICAgIFVOVVNFRF9QQVJBTShhZGRSZXN1bHQpOwogICAg
IEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGNvbnRleHRJZCk7CiAKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKICAgICBhZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAgICAgaWYg
KCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5z
ZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MoKSk7CkBAIC0zNjksOSArMzYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGll
KG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
KyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhv
c3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCkBAIC0zODUsOSArMzc1LDcgQEAgICAgIENB
TGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAg
IFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAg
c3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpOworICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKTsKIAogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVU
aGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkLCBt
b2RlbF0gKCkgbXV0YWJsZSB7IC8vIG5lZWQgdGhpcyBmb3IgcmV0dXJuIHZpZGVvIGxheWVyCiAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkLCBtb2RlbF0g
KCkgbXV0YWJsZSB7CkBAIC00MDYsOSArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRTZXR1cEZ1bAogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCiAg
ICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSB7CkBAIC00
MzEsOSArNDE3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bAog
ewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRG
dWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRv
IFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7
CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZp
ZGVvRWxlbWVudCgpOwogICAgIGlmICghdmlkZW9FbGVtZW50KQpAQCAtNDUwLDkgKzQzNCw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWwKIHsKICAgICBMT0coRnVs
bHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbiglcCwg
JXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byBbbW9kZWwsIGludGVy
ZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaW50ZXJm
YWNlLT5zZXRJc0FuaW1hdGluZyhmYWxzZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRJc0Z1bGxzY3Jl
ZW4oZmFsc2UpOwpAQCAtNDc5LDkgKzQ2MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRXhpdEZ1bGwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCi0g
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0
ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJm
YWNlKGNvbnRleHRJZCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKQEAgLTUxMCw5ICs0OTAsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGCiB7CiAgICAgTE9HKEZ1bGxz
Y3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbiglcCwg
JXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byBbbW9kZWwsIGludGVy
ZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaWYgKGlu
dGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CkBAIC01NzIsOSArNTUw
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4g
aW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoc3RkOjppc25hbihi
b3VuZHMueCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy55KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRz
LndpZHRoKCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLmhlaWdodCgpKSkgewogICAgICAgICBhdXRv
IHZpZGVvUmVjdCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLT52aWRlb0VsZW1lbnQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9yZSBwbGFjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTI0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VzIHNpbXBs
ZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLiBEb2VzIG5vdCB0
b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUgbm90IGluaXRpYWwgZGVj
bGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAgc3RydWN0dXJlZCBiaW5k
aW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisKIDIwMTkt
MDYtMjggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBlZmZlY3RpdmVBcHBlYXJhbmNlSXNJbmFjdGl2ZSBhbmQgdXNlSW5hY3RpdmVBcHBlYXJh
bmNlIHRvIGJldHRlciBtYXRjaCBVSVVzZXJJbnRlcmZhY2VMZXZlbC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTU4LDkgKzU1OCw3IEBAIC0gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0
aW9uQ29udHJvbGwKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
UmVmUHRyPFJhbmdlPiBkaWN0aW9uYXJ5UmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25z
OwotICAgIHN0ZDo6dGllKGRpY3Rpb25hcnlSYW5nZSwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9v
a3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBbZGlj
dGlvbmFyeVJhbmdlLCBvcHRpb25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0
UmVzdWx0KF9oaXRUZXN0UmVzdWx0KTsKICAgICBpZiAoIWRpY3Rpb25hcnlSYW5nZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2OTU3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTkyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlcyBzaW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJl
ZCBiaW5kaW5ncy4gRG9lcyBub3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRo
YXQgYXJlIG5vdCBpbml0aWFsIGRlY2xhcmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisg
ICAgICAgIHN0cnVjdHVyZWQgYmluZGluZ3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJ
bmZvLm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZUZpbGVQcm9taXNlUmVjZWl2ZXIgcmVj
ZWl2ZVByb21pc2VkRmlsZXNBdERlc3RpbmF0aW9uOm9wdGlvbnM6b3BlcmF0aW9uUXVldWU6cmVh
ZGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2Rl
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTktMDYtMjggIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRpbmcgbXlzZWxm
IGFzIGEgcmV2aWV3ZXIgdG8gY29udHJpYnV0b3JzLmpzb24uCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tCShy
ZXZpc2lvbiAyNDY5NTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVEcmFnZ2luZ0luZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCAtICh2
b2lkKXJlY2VpdmVQcm9taXNlZEZpbGVzQXREZXN0aW5hdGlvCiAgICAgTlNBcnJheTxOU1VSTCAq
PiAqc291cmNlVVJMcyA9IF9kcmFnZ2luZ1NvdXJjZS5wcm9taXNlZEZpbGVVUkxzOwogICAgIGZv
ciAoTlNVUkwgKnNvdXJjZVVSTCBpbiBzb3VyY2VVUkxzKSB7CiAgICAgICAgIFtvcGVyYXRpb25R
dWV1ZSBhZGRPcGVyYXRpb25XaXRoQmxvY2s6XnsKLSAgICAgICAgICAgIE5TRXJyb3IgKmVycm9y
OwotICAgICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMOwotICAgICAgICAgICAgc3RkOjp0
aWUoZGVzdGluYXRpb25VUkwsIGVycm9yKSA9IGNvcHlGaWxlKHNvdXJjZVVSTCwgZGVzdGluYXRp
b25EaXJlY3RvcnkpOworICAgICAgICAgICAgYXV0byBbZGVzdGluYXRpb25VUkwsIGVycm9yXSA9
IGNvcHlGaWxlKHNvdXJjZVVSTCwgZGVzdGluYXRpb25EaXJlY3RvcnkpOwogICAgICAgICAgICAg
aWYgKGRlc3RpbmF0aW9uVVJMKSB7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgICAgICAgICAgICAgW19kZXN0aW5h
dGlvblVSTHMgYWRkT2JqZWN0OmRlc3RpbmF0aW9uVVJMXTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCShyZXZpc2lvbiAyNDY5NTcp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjE3LDMwICsyMTcsMzIgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9k
ZSwgU2V0RGVmYXVsdFdlYgogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVz
ZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJl
dGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3Rk
Ojp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpA
IjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9u
QWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQg
KF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVSZWNvbW1lbmRl
ZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVy
ZW5jZXMpOwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3Vs
ZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5p
bF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBs
YXRmb3JtXSk7Ci0KLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2Rl
RGVza3RvcCk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkJhcjwvcHJlPiIg
d2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVy
KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7Ci0g
ICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2Vz
LnByZWZlcnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVyZW5jZXMpOwotICAgIH1dOwotICAg
IFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96
aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAgeworICAg
ICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgICAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tO
YXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5j
ZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRN
b2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7
CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcg
bmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChN
YWMiLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIk1h
Y0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB9CiAKLSAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmF6PC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZh
dWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdL
Q29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1v
ZGUpOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csIFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dpdGhDb250ZW50TW9kZTpXS0Nv
bnRlbnRNb2RlTW9iaWxlXSk7Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoaVAiLCBAIlRlc3RXZWJL
aXRBUEkiLCBuaWxdOwotICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9y
bV0gY29udGFpbnNTdHJpbmc6QCJpUCJdKTsKKyAgICB7CisgICAgICAgIGF1dG8gW3dlYlZpZXcs
IGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6QCI8cHJlPkJhcjwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdL
TmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVu
Y2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdL
V2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50
TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7Cisg
ICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IGRlZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWMi
LCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0lu
dGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKworICAgICAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAIjxwcmU+QmF6PC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVy
Ol4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJl
ZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXS0Nv
bnRlbnRNb2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2Rl
KTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENvbnRlbnRNb2RlOldL
Q29udGVudE1vZGVNb2JpbGVdKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZp
Z2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKGlQIiwg
QCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG5h
dmlnYXRvclBsYXRmb3JtXSBjb250YWluc1N0cmluZzpAImlQIl0pOworICAgIH0KIH0KIAogVEVT
VChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVXaXRob3V0TmF2aWdhdGlvbkRlbGVn
YXRlKQpAQCAtMjY0LDkgKzI2Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIERlc2t0
b3BNb2RlT24KIHsKICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBob25lVXNlcklu
dGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWlu
UHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRp
ZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkZvbzwvcHJlPiIgd2l0aFBvbGljeURl
Y2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CiAgICAgICAgIEVYUEVD
VF9FUShXS0NvbnRlbnRNb2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJy
ZWRDb250ZW50TW9kZSk7CiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENvbnRl
bnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wXSk7CkBAIC0yODYsOSArMjg2LDcgQEAgVEVTVChQ
cmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVUbwogewogICAgIElQYWRVc2VySW50ZXJm
YWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4g
ZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3
ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAgX19ibG9jayBCT09MIGRlY2lkZWRQb2xpY3lGb3JN
YWluRnJhbWUgPSBOTzsKICAgICBfX2Jsb2NrIEJPT0wgZGVjaWRlZFBvbGljeUZvclN1YkZyYW1l
ID0gTk87CkBAIC0zMTQsOSArMzEyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVz
a3RvcE1vZGVVcwogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRl
cmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0
cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUo
d2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6bWFrZUNvbnRlbnRNb2RlRGVjaXNpb25IYW5kbGVyKFdLQ29udGVudE1vZGVEZXNr
dG9wKV07CiAgICAgRVhQRUNUX0VRKDEwMjQsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW5uZXJXaWR0aCJdIGludFZhbHVlXSk7CkBAIC0zMzQsOSArMzMwLDcgQEAg
VEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQ3VzdG9tVXNlckFnZQogewogICAgIElQYWRVc2Vy
SW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9u
RGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3PihX
S0NvbnRlbnRNb2RlRGVza3RvcCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdL
Q29udGVudE1vZGVEZXNrdG9wKTsKIAogICAgIE5TU3RyaW5nICpjdXN0b21Vc2VyQWdlbnQgPSBA
Ik1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUz
Ny4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83MS4wLjM1NzguOTggU2FmYXJpLzUzNy4z
NiI7CiAgICAgW3dlYlZpZXcgc2V0Q3VzdG9tVXNlckFnZW50OmN1c3RvbVVzZXJBZ2VudF07CkBA
IC0zNTIsOSArMzQ2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRG9Ob3RBbGxvd0No
YQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAK
LSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZp
ZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxUZXN0V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7CisgICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFRlc3RXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tO
YXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5j
ZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVE
ZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwpAQCAtMzc0
LDkgKzM2Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEVmZmVjdGl2ZUNvbnQKIHsK
ICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRN
b2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBk
ZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1v
ZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwog
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlMiIgYW5kRXhwZWN0RWZmZWN0
aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFu
ZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tDb250ZW50TW9kZURlc2t0b3Ap
XTsKQEAgLTM4Nyw5ICszNzcsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBFZmZlY3Rp
dmVDb250CiB7CiAgICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIGlQaG9uZVVzZXJJbnRl
cmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRh
aW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6
dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZl
Y3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlTW9iaWxlIHdpdGhQb2xpY3lEZWNpc2lvbkhh
bmRsZXI6bmlsXTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIiIGFu
ZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6bWFrZUNvbnRlbnRNb2RlRGVjaXNpb25IYW5kbGVyKFdLQ29udGVu
dE1vZGVEZXNrdG9wKV07CkBAIC00MDAsOSArMzg4LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgUmVjb21tZW5kZWRDbwogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBh
ZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsK
LSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwot
ICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwg
Q0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2Vi
S2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
InNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0
b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFtbd2ViVmlldyBuYXZpZ2F0
b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9z
aCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSwyMCArNDA1LDIwIEBAIFRFU1Qo
UHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKIHsKICAgICBJUGFkVXNlckludGVy
ZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwotICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0
UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAgZGVmYXVsdFByZWZlcmVu
Y2VzLl9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnRXaXRoTW9kZXJuQ29tcGF0aWJpbGl0eSA9
IEAiRGVza3RvcEJyb3dzZXIiOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0gICAgfV07Ci0gICAgW1t3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxh
LzUuMCAoTWFjaW50b3NoIiwgQCJEZXNrdG9wQnJvd3NlciIsIG5pbF07Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAgewor
ICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2
aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2Vz
LCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBkZWZhdWx0UHJlZmVyZW5jZXMuX2Fw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5Db21wYXRpYmlsaXR5ID0gQCJEZXNr
dG9wQnJvd3NlciI7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAgICAg
ICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1v
emlsbGEvNS4wIChNYWNpbnRvc2giLCBAIkRlc2t0b3BCcm93c2VyIiwgbmlsXTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7
CisgICAgfQogCiAgICAgewogICAgICAgICAvLyBEb24ndCBhdHRlbXB0IHRvIGNoYW5nZSB0aGUg
YXBwbGljYXRpb24gbmFtZSwgYnV0IHN0aWxsIG9wdCBpbnRvIGRlc2t0b3AtY2xhc3MgYnJvd3Np
bmc7CiAgICAgICAgIC8vIHRoZSBhcHBsaWNhdGlvbiBuYW1lIHNob3VsZCBub3QgZGVmYXVsdCB0
byAiTW9iaWxlLzE1RTE0OCIuCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdL
Q29udGVudE1vZGVEZXNrdG9wLCB7IH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3
PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQ
YWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAg
ICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAg
ICAgICAgIEVYUEVDVF9GQUxTRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0p
OwpAQCAtNDQxLDcgKzQyNyw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0
aW9uTmEKICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQgdG8gY2hhbmdlIHRoZSBhcHBs
aWNhdGlvbiBuYW1lLCBidXQgdGhpcyB0aW1lLCBvcHQgaW50byBtb2JpbGUgY29udGVudC4gVGhl
IGFwcGxpY2F0aW9uCiAgICAgICAgIC8vIG5hbWUgc2hvdWxkIGRlZmF1bHQgdG8gIk1vYmlsZS8x
NUUxNDgiLgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2Rl
TW9iaWxlLCB7IH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRN
b2RlTW9iaWxlLCB7IH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNp
bXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAq
dXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNU
X1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ0OSw3ICs0
MzUsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAgICAgfQog
ICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1
c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBz
dGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxl
LzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1v
ZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRl
c3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAg
ICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07
CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUi
XSk7CkBAIC00NTcsNyArNDQzLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGlj
YXRpb25OYQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNldCB0aGUgYXBwbGlj
YXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byBuaWwuCi0gICAgICAgIHN0ZDo6dGllKHdlYlZp
ZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7eyB9fSk7CisgICAgICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7eyB9fSk7CiAgICAgICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZp
Z2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfRkFMU0UoW3VzZXJBZ2VudCBjb250YWlu
c1N0cmluZzpAIk1vYmlsZSJdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373206</attachid>
            <date>2019-06-30 20:20:15 -0700</date>
            <delta_ts>2019-07-02 08:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190630202014.patch</filename>
            <type>text/plain</type>
            <size>61802</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjggIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiMyBt
YWNybyBsb3dlcmluZyBmb3IgQ2hlY2tNdWwgb24gYXJtNjQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNyBAQCB2b2lkIFBy
b21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAgICAgd2hpbGUgKCFt
X3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0Owot
ICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwgdGFzaykgPSBtX3Rh
c2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRh
a2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJu
YWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9t
aXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWws
IAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewogICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91
bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CiAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgdm9p
ZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAgICAgICAgICAgIHN0
ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3IgKGF1dG8gW3N0YXJ0
LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0
YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1bHRp
bmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBtYXRjaCIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4
Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCAKIEFMV0FZU19J
TkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhOwotICAg
IHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRhLCBieXRlU2l6ZV0g
PSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90KiBiYXNlOwotICAg
IHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6ZSkgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIFtiYXNl
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBQ
bGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdGhy
b3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3aWxs
IE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA2LTI2ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1wbGUgc3Ry
dWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3RkOjp0aWUo
KSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAgIHVzZXMg
b2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3IgdXNlIHN0
ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdvcmsgZm9y
IHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2
YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVj
dHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llRGF0
YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6CisgICAgICAgICog
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29uc3RydWN0
QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMzAgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgTGF5b3V0OjpwcmludExheW91
dFRyZWVGb3JMaXZlRG9jdW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsOSArMTE5Nyw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JPcmllbnRh
dGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0aW9uIGZv
bnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRp
b247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uKSA9IHN0
eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVudGF0aW9u
LCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CiAK
ICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3JpcHRpb24o
KTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9yaWVudGF0
aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0gZ2x5cGhP
cmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3
LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVMKICAg
ICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBmb3VuZEhh
c2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xp
Y2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZvdW5kSGFz
aEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcygmQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3Jp
cHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyk7
CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJblJlcG9y
dE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0SGFzaCwg
c2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwogICAgIGlm
IChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9s
aWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJl
Y3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0
ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX292ZXJy
aWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBib29sIGZv
dW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25s
eVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKCZDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxl
SGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMp
OwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBv
cnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlv
bGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAgICBpZiAo
dHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gfHwgZm9y
Y2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRl
IHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBv
cnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBhbmRSaWdo
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4cGFuZFJp
Z2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBtX3J1bi5s
dHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJpZFRyYWls
aW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdFeHBhbnNp
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5kUmln
aHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0
cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlkVHJhaWxp
bmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4cGFuc2lv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5p
dHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lk
dGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDE0ICs1
ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9hdFBvaW50
IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAgIHN0ZDo6
dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZy
b21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQsIGVuZFBv
aW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1
cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAgICBGbG9h
dFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6dGllKGNw
MSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0
b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQb2ludHNG
b3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAgICAgICAg
IHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0KICAgICBw
YXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFk
dmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9y
Y2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAgICAgICAg
ICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92
ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAg
ICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwYW5kTGVm
dCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQs
IGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNl
LCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9u
LCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBmb3JjZVRy
YWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwg
ZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2Us
IG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24s
IGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJh
aWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZv
bnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2VlbkZhbWls
aWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5
TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1
ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1
dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2Js
aXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0
Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlx
dWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhW
YXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0KQEAgLTE0
MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm8K
ICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250ID0gZmFs
bGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAgIGJvb2wg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3RpdHV0ZUZv
bnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3JtRm9udDo6
WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0ZXJuYXRl
Rm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRmb3JtRGF0
YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogCkBA
IC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJh
Y2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdoaWNoIHJl
cHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4
ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3lu
dGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRm
b3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRhKHBsYXRm
b3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZvbnQoZm9u
dC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwogCi0gICAg
ICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAgc3RkOjp0
aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNzYXJ5U3lu
dGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9u
KS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXND
b21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAog
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250Lmdl
dCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRhU3RyaW5n
LCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRvIFtjb29r
aWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKICAg
ICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6OnBh
aXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vzc2VkIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5j
YXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNCb3gqIGVs
bGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAhPSBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNlbGVjdGlv
blN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAgICAgICAg
c3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25TdGFydEVu
ZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBz
ZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAgICAgIC8v
IHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFu
ZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9y
ZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0cnVjdCBJ
bmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRleHQgY3Jl
YXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gp
CiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9u
RW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0gYm94LnNl
bGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPCBz
ZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25F
bmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9IHBhcmVu
dFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwotICAgIHVu
c2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlvbiwgZW5k
UG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZyYWdtZW50
U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcsNyBAQCBS
ZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1c2VTVkda
b29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwg
Zm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywgJmRvY3Vt
ZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9yaWVudGF0
aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsKLSAgICBz
dGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1lbnRTdHls
ZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRhdGlvbiwg
Z2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRhdGlvbik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5cGhPcmll
bnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDggKzIx
OSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAgICBpZiAo
cGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFtZSgpOwog
Ci0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShwcmVmaXgs
IGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRv
IFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
IAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxBdG9tKCks
IGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBzaW1wbGUg
dXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBub3QgdG91
Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFsIGRlY2xh
cmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQgYmluZGlu
Z3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9z
dGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFyRXhwaXJl
ZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
OgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9Q
aWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9yRm9yVGFy
Z2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2Zl
clJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGF5bWVu
dENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29u
dGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xv
YWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29u
dGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0
dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKToKKwogMjAxOS0wNi0zMCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CiAKICAgICAgICAgUGFzcyBXZWJQcm9jZXNzIGluZm9ybWF0aW9uIHRvIHBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQCBzdGF0aWMgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiYgYWxsU3BlY3VsCiBzdGF0aWMgdm9pZCBwcmludFNwZWN1bGF0aXZlTG9hZGlu
Z0RpYWdub3N0aWNNZXNzYWdlQ291bnRzKCkKIHsKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVQcmVsb2FkaW5nLCAiLS0gU3BlY3VsYXRpdmUgbG9hZGluZyBzdGF0aXN0aWNzIC0tIik7
Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogYWxsU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01l
c3NhZ2VzKCkpCi0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcs
ICIlczogJXUiLCBwYWlyLmtleS51dGY4KCkuZGF0YSgpLCBwYWlyLnZhbHVlKTsKKyAgICBmb3Ig
KGF1dG8mIFttZXNzYWdlLCBjb3VudF0gOiBhbGxTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGlj
TWVzc2FnZXMoKSkKKyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGlu
ZywgIiVzOiAldSIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgY291bnQpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTEg
Kzk2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IAogCiB2b2lk
IFByZWZldGNoQ2FjaGU6OmNsZWFyRXhwaXJlZEVudHJpZXMoKQogewotICAgIFVSTCByZXF1ZXN0
VXJsOwotICAgIFdhbGxUaW1lIHRpbWVzdGFtcDsKICAgICBhdXRvIHRpbWVvdXQgPSBXYWxsVGlt
ZTo6bm93KCk7CiAgICAgd2hpbGUgKCFtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc3RkOjp0aWUocmVxdWVzdFVybCwgdGltZXN0YW1wKSA9IG1fc2Vzc2lvbkV4
cGlyYXRpb25MaXN0LmZpcnN0KCk7CisgICAgICAgIGF1dG8gW3JlcXVlc3RVcmwsIHRpbWVzdGFt
cF0gPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOwogICAgICAgICBhdXRvKiByZXNv
dXJjZXMgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLmdldCgpOwogICAgICAgICBBU1NFUlQocmVzb3Vy
Y2VzKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcy0+Y29udGFpbnMocmVxdWVzdFVybCkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwyMiArODAsMjIgQEAg
dm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogdm9pZCBNZXNzYWdlUmVj
ZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VS
ZWNlaXZlcikKIHsKICAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIG5hbWVBbmRSZWNlaXZlciA6IG1fZ2xvYmFsTWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZFJlY2VpdmVyLnZhbHVlID09ICZtZXNz
YWdlUmVjZWl2ZXIpCi0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQo
bmFtZUFuZFJlY2VpdmVyLmtleSk7CisgICAgZm9yIChhdXRvJiBbbmFtZSwgcmVjZWl2ZXJdIDog
bV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVz
c2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5k
KG5hbWUpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSA6
IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlKQogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
Z2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSk7CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1Jl
ZmVyZW5jZSwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIG5h
bWVBbmRJZEFuZFJlY2VpdmVyIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7Ci0gICAgICAgIGlmIChu
YW1lQW5kSWRBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAg
ICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRJZEFuZFJl
Y2VpdmVyLmtleS5maXJzdCwgbmFtZUFuZElkQW5kUmVjZWl2ZXIua2V5LnNlY29uZCkpOworICAg
IGZvciAoYXV0byYgW25hbWVBbmREZXN0aW5hdGlvbklELCByZWNlaXZlcl0gOiBtX21lc3NhZ2VS
ZWNlaXZlcnMpIHsKKyAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIpCisg
ICAgICAgICAgICByZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIobmFtZUFu
ZERlc3RpbmF0aW9uSUQuZmlyc3QsIG5hbWVBbmREZXN0aW5hdGlvbklELnNlY29uZCkpOwogICAg
IH0KIAotICAgIGZvciAoYXV0byYgcmVjZWl2ZXJUb1JlbW92ZSA6IHJlY2VpdmVyc1RvUmVtb3Zl
KQotICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIocmVjZWl2ZXJUb1JlbW92ZS5maXJzdCwg
cmVjZWl2ZXJUb1JlbW92ZS5zZWNvbmQpOworICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0
aW9uSURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihuYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6Omlu
dmFsaWRhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2OTU3
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTMgKzMyMCw4IEBAIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZN
b3ZlKG1fY29udGV4dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZv
cm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRl
cmZhY2VdIDogY29udGV4dE1hcC52YWx1ZXMoKSkKICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlk
YXRlKCk7Ci0gICAgfQogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok1vZGVsSW50
ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MywxMSArMzQz
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaQogICAgIGF1dG8g
Y29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0TWFwKTsKICAgICBtX2NsaWVudENvdW50cy5j
bGVhcigpOwogCi0gICAgZm9yIChhdXRvJiB0dXBsZSA6IGNvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAg
ICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwot
ICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisgICAgZm9yIChh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAg
IGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXco
KSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXco
bnVsbHB0cik7CkBAIC0zNTYsMTQgKzM1MiwxNCBAQCAgICAgICAgIGludGVyZmFjZS0+aW52YWxp
ZGF0ZSgpOwogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEhpZGVB
bmRFeGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1h
cC52YWx1ZXMoKSkKLSAgICAgICAgc3RkOjpnZXQ8MT4odHVwbGUpLT5yZXF1ZXN0SGlkZUFuZEV4
aXRGdWxsc2NyZWVuKCk7CisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2Nv
bnRleHRNYXAudmFsdWVzKCkpCisgICAgICAgIGludGVyZmFjZS0+cmVxdWVzdEhpZGVBbmRFeGl0
RnVsbHNjcmVlbigpOwogfQogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aGFz
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgY29u
c3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPmhhc01vZGUobW9kZSkpCisgICAgZm9yIChh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAg
ICAgaWYgKGludGVyZmFjZS0+aGFzTW9kZShtb2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzEsOCArMzY3LDggQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZAogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBj
b25zdAogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+KHR1cGxlKS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRl
b1BpY3R1cmVJblBpY3R1cmUoKSkKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoaW50ZXJmYWNlLT5tYXlBdXRv
bWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM4MSw4ICszNzcsOCBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWF5QXV0CiAjaWYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmlzUGxh
eWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogewotICAgIGZvciAoYXV0byYg
dHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+
KHR1cGxlKS0+aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpKQorICAgIGZvciAo
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmIChpbnRlcmZhY2UtPmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTM5OSw4ICszOTUsOCBA
QCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogVmlkZW9GCiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7Ci0g
ICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkKLSAgICAgICAgc3Rk
OjpnZXQ8MT4odHVwbGUpLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIGZvciAo
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAg
ICBpbnRlcmZhY2UtPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6Um91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmIGNhbGxiYWNrKQpAQCAtNDk3LDEwICs0
OTMsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGCiAgICAgTUVT
U0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKIAogICAgIEFTU0VSVCh2aWRlb0xheWVy
SUQpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAg
IFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwogCi0g
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQp
OwogCiAgICAgUmV0YWluUHRyPFdLTGF5ZXJIb3N0Vmlldz4gdmlldyA9IHN0YXRpY19jYXN0PFdL
TGF5ZXJIb3N0Vmlldyo+KG1vZGVsLT5sYXllckhvc3RWaWV3KCkpOwpAQCAtNjg2LDEwICs2ODAs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9k
ZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPiBpbnRlcmZh
Y2U7Ci0KLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNo
XTsKICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTAgKzk3LDcgQEAgZG91YmxlIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OnpvbwogewogICAgIC8vIEZJWE1FOiBTaGFyZSBzb21lIG9mIHRoaXMgY29kZSB3aXRo
IGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmU/CiAKLSAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2
aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRN
YXhpbXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2Nh
bGUsIG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNj
YWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2Nh
bGUsICFmaXRFbnRpcmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmlt
dW1TY2FsZSwgbWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRa
b29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGlt
dW1TY2FsZSwgIWZpdEVudGlyZVJlY3QpOwogCiAgICAgZG91YmxlIGN1cnJlbnRTY2FsZSA9IFtt
X2NvbnRlbnRWaWV3IF9jb250ZW50Wm9vbVNjYWxlXTsKICAgICBkb3VibGUgdGFyZ2V0U2NhbGUg
PSBbbV9jb250ZW50VmlldyBfdGFyZ2V0Q29udGVudFpvb21TY2FsZUZvclJlY3Q6YWRqdXN0ZWRU
YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpjdXJyZW50U2NhbGUgZml0RW50aXJlUmVjdDpmaXRFbnRp
cmVSZWN0IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2Fs
ZV07CkBAIC0xMTgsMTAgKzExNSw3IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
cjo6ZGlkQ28KICAgICAgICAgW21fY29udGVudFZpZXcgX3pvb21Ub0luaXRpYWxTY2FsZVdpdGhP
cmlnaW46b3JpZ2luXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmlt
dW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRNYXhpbXVtU2NhbGU7
Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1T
Y2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRS
ZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRp
cmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4
aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRh
cmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgIWZp
dEVudGlyZVJlY3QpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIGlmIHRleHQgc2VsZWN0aW9uIHdh
bnRzIHRvIGNvbnN1bWUgdGhlIGRvdWJsZSB0YXAgYmVmb3JlIHdlIGF0dGVtcHQgbWFnbmlmaWNh
dGlvbi4KIApAQCAtMTQ3LDEwICsxNDEsNyBAQCB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvCiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWFnbmlm
eShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdldFJlY3QsIEZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudFJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdw
b3J0TWF4aW11bVNjYWxlKQogewotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFRhcmdldFJlY3Q7Ci0g
ICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIGRvdWJs
ZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBzdGQ6OnRpZShhZGp1
c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKSA9IHNtYXJ0TWFnbmlm
aWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11
bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgdHJ1ZSk7CisgICAgYXV0byBbYWRqdXN0ZWRU
YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRp
b25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIHRydWUpOwogCiAgICAgW21fY29udGVudFZpZXcgX3pv
b21Ub1JlY3Q6YWRqdXN0ZWRUYXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIGZpdEVudGlyZVJl
Y3Q6Tk8gbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxl
IG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMjQ2OTU3KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjA5NCw5ICsyMDk0LDcgQEAgc3RkOjp0dXBsZTxTdHJpbmcsIFBERlNl
bGVjdGlvbiAqLCBOU0RpYwogICAgICAgICByZXR1cm4geyBzZWxlY3Rpb24uc3RyaW5nLCBzZWxl
Y3Rpb24sIG5pbCB9OwogICAgIH0KIAotICAgIE5TU3RyaW5nICpsb29rdXBUZXh0OwotICAgIE5T
RGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShsb29rdXBUZXh0LCBvcHRpb25zKSA9
IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24pOworICAg
IGF1dG8gW2xvb2t1cFRleHQsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9y
UERGU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgaWYgKCFsb29rdXBUZXh0Lmxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgZW1wdHlTdHJpbmcoKSwgc2VsZWN0aW9uLCBuaWwgfTsKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4
NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKICAgICAKICAg
ICAvLyBGaW5kIHRoZSBmcmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocm91
bmRlZEludFBvaW50KGZsb2F0UG9pbnQpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3RkOjp0aWUocmFuZ2UsIG9wdGlvbnMpID0g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKKyAgICBhdXRv
IFtyYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3Vs
dChyZXN1bHQpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTEw
MCw5ICs5OCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKIAog
dm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKLSAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAg
IHN0ZDo6dGllKHNlbGVjdGVkUmFuZ2UsIG9wdGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBhdXRvIFtzZWxlY3RlZFJhbmdlLCBvcHRp
b25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAg
ICAgaWYgKHNlbGVjdGVkUmFuZ2UpCiAgICAgICAgIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9y
UmFuZ2UoZnJhbWUsICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0
aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsNyBAQCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQ
bGF5YmFja1Nlc3Npb25NCiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKCkKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVl
cygpKSB7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4g
bW9kZWw7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Cisg
ICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkp
IHsKICAgICAgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICAgICAgbW9k
ZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKIApAQCAtMjI5LDkgKzIyNiw3IEBAIFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIFBsYXliYWMKIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQ
dHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwor
ICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50ID0g
bW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0
cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiwxMSArMTIyLDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6VmlkZW9G
dWxsc2NyZWVuTQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVs
OwotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJm
YWNlOwotICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisgICAg
Zm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
ICAgICAgICAgbW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbW9kZWwt
PnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKIApAQCAtMTgwLDkgKzE3Niw3IEBAIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQmIFZpZGVvRnUKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9k
ZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAg
IGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+cmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChjb250ZXh0SWQpOwogCkBAIC0yNTAsOSArMjQ0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRgogICAgIFVOVVNFRF9QQVJBTShhZGRSZXN1bHQpOwogICAg
IEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGNvbnRleHRJZCk7CiAKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKICAgICBhZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAgICAgaWYg
KCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5z
ZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MoKSk7CkBAIC0zNjksOSArMzYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGll
KG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
KyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhv
c3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCkBAIC00MDYsOSArMzk2LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bAogICAgIExPRyhGdWxsc2NyZWVuLCAi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlz
LCBjb250ZXh0SWQpOwogCiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRl
cmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvIFtt
b2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywg
Y29udGV4dElkXSB7CkBAIC00MzEsOSArNDE5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjp3aWxsRXhpdEZ1bAogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwog
Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAg
ICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAg
IHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9F
bGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICghdmlkZW9FbGVtZW50KQpA
QCAtNDUwLDkgKzQzNiw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJG
dWwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAg
YXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0
SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRJc0FuaW1hdGluZyhmYWxzZSk7CiAgICAgaW50ZXJm
YWNlLT5zZXRJc0Z1bGxzY3JlZW4oZmFsc2UpOwpAQCAtNTEwLDkgKzQ5NCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEYKIHsKICAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0
aGlzLCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoaW50ZXJmYWNl
LT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3Rp
bmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKQEAgLTU3Miw5ICs1NTQsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1v
ZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZh
Y2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKGJvdW5kcy54
KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLnkoKSkgfHwgc3RkOjppc25hbihib3VuZHMud2lkdGgo
KSkgfHwgc3RkOjppc25hbihib3VuZHMuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGF1dG8gdmlkZW9S
ZWN0ID0gaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwtPnZpZGVvRWxlbWVudCgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvclRleHRdKToKKwogMjAxOS0wNi0yOCAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGVm
ZmVjdGl2ZUFwcGVhcmFuY2VJc0luYWN0aXZlIGFuZCB1c2VJbmFjdGl2ZUFwcGVhcmFuY2UgdG8g
YmV0dGVyIG1hdGNoIFVJVXNlckludGVyZmFjZUxldmVsLgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01NTgsOSArNTU4LDcgQEAgLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQdHI8
UmFuZ2U+IGRpY3Rpb25hcnlSYW5nZTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAg
c3RkOjp0aWUoZGljdGlvbmFyeVJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlQXRIaXRUZXN0UmVzdWx0KF9oaXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIFtkaWN0aW9uYXJ5
UmFuZ2UsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQo
X2hpdFRlc3RSZXN1bHQpOwogICAgIGlmICghZGljdGlvbmFyeVJhbmdlKQogICAgICAgICByZXR1
cm4gbmlsOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDY5NTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcGxhY2VzIHNpbXBsZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRp
bmdzLiBEb2VzIG5vdCB0b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUg
bm90IGluaXRpYWwgZGVjbGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAg
c3RydWN0dXJlZCBiaW5kaW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW06
CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlRmlsZVByb21pc2VSZWNlaXZlciByZWNlaXZlUHJv
bWlzZWRGaWxlc0F0RGVzdGluYXRpb246b3B0aW9uczpvcGVyYXRpb25RdWV1ZTpyZWFkZXI6XSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wNi0yOCAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGluZyBteXNlbGYgYXMgYSBy
ZXZpZXdlciB0byBjb250cmlidXRvcnMuanNvbi4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0JKHJldmlzaW9u
IDI0Njk1NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdn
aW5nSW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDkgKzEyMiw3IEBAIC0gKHZvaWQpcmVj
ZWl2ZVByb21pc2VkRmlsZXNBdERlc3RpbmF0aW8KICAgICBOU0FycmF5PE5TVVJMICo+ICpzb3Vy
Y2VVUkxzID0gX2RyYWdnaW5nU291cmNlLnByb21pc2VkRmlsZVVSTHM7CiAgICAgZm9yIChOU1VS
TCAqc291cmNlVVJMIGluIHNvdXJjZVVSTHMpIHsKICAgICAgICAgW29wZXJhdGlvblF1ZXVlIGFk
ZE9wZXJhdGlvbldpdGhCbG9jazpeewotICAgICAgICAgICAgTlNFcnJvciAqZXJyb3I7Ci0gICAg
ICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkw7Ci0gICAgICAgICAgICBzdGQ6OnRpZShkZXN0
aW5hdGlvblVSTCwgZXJyb3IpID0gY29weUZpbGUoc291cmNlVVJMLCBkZXN0aW5hdGlvbkRpcmVj
dG9yeSk7CisgICAgICAgICAgICBhdXRvIFtkZXN0aW5hdGlvblVSTCwgZXJyb3JdID0gY29weUZp
bGUoc291cmNlVVJMLCBkZXN0aW5hdGlvbkRpcmVjdG9yeSk7CiAgICAgICAgICAgICBpZiAoZGVz
dGluYXRpb25VUkwpIHsKICAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICAgICAgICAgICAgICBbX2Rlc3RpbmF0aW9uVVJM
cyBhZGRPYmplY3Q6ZGVzdGluYXRpb25VUkxdOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0JKHJldmlzaW9uIDI0Njk1NykKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTcsMzAgKzIxNywzMiBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBTZXRE
ZWZhdWx0V2ViCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVy
ZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRy
PENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3
ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmc8V0tXZWJWaWV3PigpOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5G
b288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24g
KiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lz
aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqKSkgewotICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZVJlY29tbWVuZGVkLCBkZWZh
dWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7
Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFp
blN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1d
KTsKLQotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9w
KTsKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmFyPC9wcmU+IiB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZl
cmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAg
RVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVy
cmVkQ29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0gICAgfV07Ci0gICAgW1t3ZWJW
aWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUu
MCAoTWFjIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1h
Y0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB7CisgICAgICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OkAiPHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRp
b25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9p
ZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVSZWNv
bW1lbmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKKyAgICAg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVm
YXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0
b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAi
VGVzdFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50ZWwi
LCBbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIH0KIAotICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVm
ZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50
TW9kZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7Ci0g
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgW1dL
V2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENvbnRlbnRNb2RlOldLQ29udGVudE1v
ZGVNb2JpbGVdKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBz
aG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChpUCIsIEAiVGVzdFdlYktpdEFQSSIs
IG5pbF07Ci0gICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSBjb250
YWluc1N0cmluZzpAImlQIl0pOworICAgIHsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3ApOworICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxwcmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0
aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZv
aWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVz
a3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKKyAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVs
dFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JV
c2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAiVGVz
dFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50ZWwiLCBb
d2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05h
dmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNl
cywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1v
ZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOworICAg
ICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBb
V0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRoQ29udGVudE1vZGU6V0tDb250ZW50
TW9kZU1vYmlsZV0pOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVz
ZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoaVAiLCBAIlRlc3RX
ZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgbmF2aWdhdG9y
UGxhdGZvcm1dIGNvbnRhaW5zU3RyaW5nOkAiaVAiXSk7CisgICAgfQogfQogCiBURVNUKFByZWZl
cnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVdpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUpCkBA
IC0yNjQsOSArMjY2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVP
bgogewogICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGhvbmVVc2VySW50ZXJmYWNl
OwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZp
ZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKICAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZh
dWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKICAgICAgICAgRVhQRUNUX0VRKFdL
Q29udGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRl
bnRNb2RlKTsKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCBbV0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRoQ29udGVudE1vZGU6
V0tDb250ZW50TW9kZURlc2t0b3BdKTsKQEAgLTI4Niw5ICsyODYsNyBAQCBURVNUKFByZWZlcnJl
ZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVRvCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6
emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0
ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcs
IGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KCk7CiAKICAgICBfX2Jsb2NrIEJPT0wgZGVjaWRlZFBvbGljeUZvck1haW5GcmFt
ZSA9IE5POwogICAgIF9fYmxvY2sgQk9PTCBkZWNpZGVkUG9saWN5Rm9yU3ViRnJhbWUgPSBOTzsK
QEAgLTMxNCw5ICszMTIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9k
ZVVzCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsK
IAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRl
bnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3
LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxl
cjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tDb250ZW50TW9kZURlc2t0b3ApXTsK
ICAgICBFWFBFQ1RfRVEoMTAyNCwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbm5lcldpZHRoIl0gaW50VmFsdWVdKTsKQEAgLTMzNCw5ICszMzAsNyBAQCBURVNUKFBy
ZWZlcnJlZENvbnRlbnRNb2RlLCBDdXN0b21Vc2VyQWdlCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZh
Y2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0
ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmlldz4oV0tDb250ZW50
TW9kZURlc2t0b3ApOwogCiAgICAgTlNTdHJpbmcgKmN1c3RvbVVzZXJBZ2VudCA9IEAiTW96aWxs
YS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChL
SFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzcxLjAuMzU3OC45OCBTYWZhcmkvNTM3LjM2IjsKICAg
ICBbd2ViVmlldyBzZXRDdXN0b21Vc2VyQWdlbnQ6Y3VzdG9tVXNlckFnZW50XTsKQEAgLTM1Miw5
ICszNDYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEb05vdEFsbG93Q2hhCiB7CiAg
ICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJl
dGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVs
ZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RX
S1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdL
V2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQ
YWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRp
b25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9p
ZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKSkgewogICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0b3As
IGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CkBAIC0zNzQsOSArMzY2
LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRWZmZWN0aXZlQ29udAogewogICAgIElQ
YWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5Q
dHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZp
Z2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRl
KSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0Nv
bnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250
ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm1h
a2VDb250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRlbnRNb2RlRGVza3RvcCldOwpAQCAt
Mzg3LDkgKzM3Nyw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEVmZmVjdGl2ZUNvbnQK
IHsKICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBob25lVXNlckludGVyZmFjZTsK
IAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxD
b250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2Vi
VmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNv
bnRlbnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGUgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpu
aWxdOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlMiIgYW5kRXhwZWN0
RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lz
aW9uSGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tDb250ZW50TW9kZURl
c2t0b3ApXTsKQEAgLTQwMCw5ICszODgsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBS
ZWNvbW1lbmRlZENvCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlcklu
dGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJl
dGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3Rk
Ojp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVa
ZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEki
IH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
IiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRo
UG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJU
ZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDIwICs0MDUsMjAgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dp
enpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
d2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7Ci0gICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihX
S05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJl
bmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBkZWZhdWx0UHJlZmVyZW5jZXMuX2Fw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5Db21wYXRpYmlsaXR5ID0gQCJEZXNr
dG9wQnJvd3NlciI7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcg
bmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChN
YWNpbnRvc2giLCBAIkRlc2t0b3BCcm93c2VyIiwgbmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
Ik1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB7CisgICAgICAg
IGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9u
QWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQg
KF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIGRlZmF1bHRQcmVmZXJlbmNlcy5fYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50V2l0aE1vZGVybkNvbXBhdGliaWxpdHkgPSBAIkRlc2t0b3BCcm93
c2VyIjsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2Vi
VmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81
LjAgKE1hY2ludG9zaCIsIEAiRGVza3RvcEJyb3dzZXIiLCBuaWxdOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB9
CiAKICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQgdG8gY2hhbmdlIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLCBidXQgc3RpbGwgb3B0IGludG8gZGVza3RvcC1jbGFzcyBicm93c2luZzsKICAg
ICAgICAgLy8gdGhlIGFwcGxpY2F0aW9uIG5hbWUgc2hvdWxkIG5vdCBkZWZhdWx0IHRvICJNb2Jp
bGUvMTVFMTQ4Ii4KLSAgICAgICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50
TW9kZURlc2t0b3AsIHsgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29u
dGVudE1vZGVEZXNrdG9wLCB7IH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0
cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAg
RVhQRUNUX0ZBTFNFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CkBAIC00
NDEsNyArNDI3LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQog
ICAgIHsKICAgICAgICAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGFwcGxpY2F0aW9u
IG5hbWUsIGJ1dCB0aGlzIHRpbWUsIG9wdCBpbnRvIG1vYmlsZSBjb250ZW50LiBUaGUgYXBwbGlj
YXRpb24KICAgICAgICAgLy8gbmFtZSBzaG91bGQgZGVmYXVsdCB0byAiTW9iaWxlLzE1RTE0OCIu
Ci0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVNb2JpbGUs
IHsgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVNb2Jp
bGUsIHsgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3
aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdl
bnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShb
dXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpAQCAtNDQ5LDcgKzQzNSw3IEBA
IFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKICAgICB9CiAgICAgewog
ICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdl
bnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIHN0ZDo6dGll
KHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4
IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0
b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBO
U1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKQEAg
LTQ1Nyw3ICs0NDMsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5h
CiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBu
YW1lIGZvciB1c2VyIGFnZW50IHRvIG5pbC4KLSAgICAgICAgc3RkOjp0aWUod2ViVmlldywgZGVs
ZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7IH19KTsKKyAgICAgICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7IH19KTsKICAgICAgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVz
ZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9GQUxTRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5n
OkAiTW9iaWxlIl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373327</attachid>
            <date>2019-07-02 08:57:02 -0700</date>
            <delta_ts>2019-07-02 10:38:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190702085702.patch</filename>
            <type>text/plain</type>
            <size>60830</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdz
IGRvbid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDYtMjggIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiMyBt
YWNybyBsb3dlcmluZyBmb3IgQ2hlY2tNdWwgb24gYXJtNjQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNyBAQCB2b2lkIFBy
b21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAgICAgd2hpbGUgKCFt
X3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0Owot
ICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwgdGFzaykgPSBtX3Rh
c2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRh
a2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJu
YWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9t
aXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWws
IAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewogICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91
bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CiAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgdm9p
ZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAgICAgICAgICAgIHN0
ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3IgKGF1dG8gW3N0YXJ0
LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0
YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1bHRp
bmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBtYXRjaCIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4
Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCAKIEFMV0FZU19J
TkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhOwotICAg
IHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRhLCBieXRlU2l6ZV0g
PSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90KiBiYXNlOwotICAg
IHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6ZSkgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIFtiYXNl
LCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBQ
bGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdGhy
b3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3aWxs
IE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA2LTI2ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1wbGUgc3Ry
dWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3RkOjp0aWUo
KSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAgIHVzZXMg
b2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMgb3IgdXNlIHN0
ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0IHdvcmsgZm9y
IHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2
YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVj
dHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llRGF0
YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6CisgICAgICAgICog
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29uc3RydWN0
QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMzAgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgTGF5b3V0OjpwcmludExheW91
dFRyZWVGb3JMaXZlRG9jdW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsOSArMTE5Nyw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JPcmllbnRh
dGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0aW9uIGZv
bnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRp
b247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uKSA9IHN0
eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVudGF0aW9u
LCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CiAK
ICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3JpcHRpb24o
KTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9yaWVudGF0
aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0gZ2x5cGhP
cmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3
LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVMKICAg
ICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBmb3VuZEhh
c2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xp
Y2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZvdW5kSGFz
aEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcygmQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3Jp
cHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyk7
CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJblJlcG9y
dE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0SGFzaCwg
c2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwogICAgIGlm
IChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9s
aWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJl
Y3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0
ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX292ZXJy
aWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBib29sIGZv
dW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25s
eVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKCZDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxl
SGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMp
OwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBv
cnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlv
bGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAgICBpZiAo
dHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gfHwgZm9y
Y2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRl
IHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBv
cnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBhbmRSaWdo
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4cGFuZFJp
Z2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBtX3J1bi5s
dHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJpZFRyYWls
aW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdFeHBhbnNp
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5kUmln
aHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0
cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlkVHJhaWxp
bmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4cGFuc2lv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5p
dHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lk
dGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDE0ICs1
ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9hdFBvaW50
IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAgIHN0ZDo6
dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZy
b21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQsIGVuZFBv
aW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1
cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAgICBGbG9h
dFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6dGllKGNw
MSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0
b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQb2ludHNG
b3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAgICAgICAg
IHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0KICAgICBw
YXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFk
dmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9y
Y2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAgICAgICAg
ICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92
ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAg
ICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwYW5kTGVm
dCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQs
IGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNl
LCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9u
LCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBmb3JjZVRy
YWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwg
ZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2Us
IG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24s
IGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJh
aWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZv
bnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2VlbkZhbWls
aWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5
TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1
ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1
dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2Js
aXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0
Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlx
dWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhW
YXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0KQEAgLTE0
MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm8K
ICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250ID0gZmFs
bGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAgIGJvb2wg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3RpdHV0ZUZv
bnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3JtRm9udDo6
WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0ZXJuYXRl
Rm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRmb3JtRGF0
YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogCkBA
IC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJh
Y2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdoaWNoIHJl
cHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4
ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3lu
dGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRm
b3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRhKHBsYXRm
b3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZvbnQoZm9u
dC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwogCi0gICAg
ICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAgc3RkOjp0
aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNzYXJ5U3lu
dGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9u
KS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXND
b21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAog
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250Lmdl
dCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRhU3RyaW5n
LCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRvIFtjb29r
aWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKICAg
ICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6OnBh
aXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vzc2VkIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5j
YXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNCb3gqIGVs
bGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAhPSBSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNlbGVjdGlv
blN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAgICAgICAg
c3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25TdGFydEVu
ZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBz
ZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAgICAgIC8v
IHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFu
ZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9y
ZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0cnVjdCBJ
bmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRleHQgY3Jl
YXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gp
CiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9u
RW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0gYm94LnNl
bGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPCBz
ZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25F
bmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHJl
dmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9IHBhcmVu
dFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwotICAgIHVu
c2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlvbiwgZW5k
UG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZyYWdtZW50
U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcsNyBAQCBS
ZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1c2VTVkda
b29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwg
Zm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywgJmRvY3Vt
ZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9yaWVudGF0
aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsKLSAgICBz
dGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1lbnRTdHls
ZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRhdGlvbiwg
Z2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRhdGlvbik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5cGhPcmll
bnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDggKzIx
OSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAgICBpZiAo
cGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFtZSgpOwog
Ci0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShwcmVmaXgs
IGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRv
IFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
IAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxBdG9tKCks
IGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBzaW1wbGUg
dXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBub3QgdG91
Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFsIGRlY2xh
cmF0aW9ucyBvciB1c2Ugc3RkOjppZ25vcmUsIGFzCisgICAgICAgIHN0cnVjdHVyZWQgYmluZGlu
Z3MgZG9uJ3Qgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9z
dGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNsZWFyRXhwaXJl
ZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
OgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9Q
aWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9yRm9yVGFy
Z2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2Zl
clJlbW90ZVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGF5bWVu
dENvb3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29u
dGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRSZW1vdGVPYmplY3RSZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xv
YWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29u
dGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0
dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKToKKwogMjAxOS0wNi0zMCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CiAKICAgICAgICAgUGFzcyBXZWJQcm9jZXNzIGluZm9ybWF0aW9uIHRvIHBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQCBzdGF0aWMgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiYgYWxsU3BlY3VsCiBzdGF0aWMgdm9pZCBwcmludFNwZWN1bGF0aXZlTG9hZGlu
Z0RpYWdub3N0aWNNZXNzYWdlQ291bnRzKCkKIHsKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVQcmVsb2FkaW5nLCAiLS0gU3BlY3VsYXRpdmUgbG9hZGluZyBzdGF0aXN0aWNzIC0tIik7
Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogYWxsU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01l
c3NhZ2VzKCkpCi0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcs
ICIlczogJXUiLCBwYWlyLmtleS51dGY4KCkuZGF0YSgpLCBwYWlyLnZhbHVlKTsKKyAgICBmb3Ig
KGF1dG8mIFttZXNzYWdlLCBjb3VudF0gOiBhbGxTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGlj
TWVzc2FnZXMoKSkKKyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGlu
ZywgIiVzOiAldSIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgY291bnQpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTEg
Kzk2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IAogCiB2b2lk
IFByZWZldGNoQ2FjaGU6OmNsZWFyRXhwaXJlZEVudHJpZXMoKQogewotICAgIFVSTCByZXF1ZXN0
VXJsOwotICAgIFdhbGxUaW1lIHRpbWVzdGFtcDsKICAgICBhdXRvIHRpbWVvdXQgPSBXYWxsVGlt
ZTo6bm93KCk7CiAgICAgd2hpbGUgKCFtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc3RkOjp0aWUocmVxdWVzdFVybCwgdGltZXN0YW1wKSA9IG1fc2Vzc2lvbkV4
cGlyYXRpb25MaXN0LmZpcnN0KCk7CisgICAgICAgIGF1dG8gW3JlcXVlc3RVcmwsIHRpbWVzdGFt
cF0gPSBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5maXJzdCgpOwogICAgICAgICBhdXRvKiByZXNv
dXJjZXMgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLmdldCgpOwogICAgICAgICBBU1NFUlQocmVzb3Vy
Y2VzKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlcy0+Y29udGFpbnMocmVxdWVzdFVybCkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwyMiArODAsMjIgQEAg
dm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogdm9pZCBNZXNzYWdlUmVj
ZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VS
ZWNlaXZlcikKIHsKICAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIG5hbWVBbmRSZWNlaXZlciA6IG1fZ2xvYmFsTWVzc2Fn
ZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFtZUFuZFJlY2VpdmVyLnZhbHVlID09ICZtZXNz
YWdlUmVjZWl2ZXIpCi0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQo
bmFtZUFuZFJlY2VpdmVyLmtleSk7CisgICAgZm9yIChhdXRvJiBbbmFtZSwgcmVjZWl2ZXJdIDog
bV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVz
c2FnZVJlY2VpdmVyKQorICAgICAgICAgICAgZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5k
KG5hbWUpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSA6
IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlKQogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
Z2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSk7CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1Jl
ZmVyZW5jZSwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIG5h
bWVBbmRJZEFuZFJlY2VpdmVyIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7Ci0gICAgICAgIGlmIChu
YW1lQW5kSWRBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAg
ICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRJZEFuZFJl
Y2VpdmVyLmtleS5maXJzdCwgbmFtZUFuZElkQW5kUmVjZWl2ZXIua2V5LnNlY29uZCkpOworICAg
IGZvciAoYXV0byYgW25hbWVBbmREZXN0aW5hdGlvbklELCByZWNlaXZlcl0gOiBtX21lc3NhZ2VS
ZWNlaXZlcnMpIHsKKyAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIpCisg
ICAgICAgICAgICByZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIobmFtZUFu
ZERlc3RpbmF0aW9uSUQuZmlyc3QsIG5hbWVBbmREZXN0aW5hdGlvbklELnNlY29uZCkpOwogICAg
IH0KIAotICAgIGZvciAoYXV0byYgcmVjZWl2ZXJUb1JlbW92ZSA6IHJlY2VpdmVyc1RvUmVtb3Zl
KQotICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIocmVjZWl2ZXJUb1JlbW92ZS5maXJzdCwg
cmVjZWl2ZXJUb1JlbW92ZS5zZWNvbmQpOworICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0
aW9uSURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihuYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6Omlu
dmFsaWRhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24gMjQ2OTU3
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTMgKzMyMCw4IEBAIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZN
b3ZlKG1fY29udGV4dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAotICAgIGZv
ciAoYXV0byYgdHVwbGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAgICBSZWZQdHI8UGxhdGZv
cm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRl
cmZhY2VdIDogY29udGV4dE1hcC52YWx1ZXMoKSkKICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlk
YXRlKCk7Ci0gICAgfQogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok1vZGVsSW50
ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MywxMSArMzQz
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaQogICAgIGF1dG8g
Y29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0TWFwKTsKICAgICBtX2NsaWVudENvdW50cy5j
bGVhcigpOwogCi0gICAgZm9yIChhdXRvJiB0dXBsZSA6IGNvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAg
ICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwot
ICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisgICAgZm9yIChh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7CiAgICAgICAg
IGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXco
KSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXco
bnVsbHB0cik7CkBAIC0zNTYsMTQgKzM1MiwxNCBAQCAgICAgICAgIGludGVyZmFjZS0+aW52YWxp
ZGF0ZSgpOwogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEhpZGVB
bmRFeGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1h
cC52YWx1ZXMoKSkKLSAgICAgICAgc3RkOjpnZXQ8MT4odHVwbGUpLT5yZXF1ZXN0SGlkZUFuZEV4
aXRGdWxsc2NyZWVuKCk7CisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2Nv
bnRleHRNYXAudmFsdWVzKCkpCisgICAgICAgIGludGVyZmFjZS0+cmVxdWVzdEhpZGVBbmRFeGl0
RnVsbHNjcmVlbigpOwogfQogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aGFz
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkgY29u
c3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPmhhc01vZGUobW9kZSkpCisgICAgZm9yIChh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAg
ICAgaWYgKGludGVyZmFjZS0+aGFzTW9kZShtb2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzEsOCArMzY3LDggQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZAogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBj
b25zdAogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+KHR1cGxlKS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRl
b1BpY3R1cmVJblBpY3R1cmUoKSkKKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6
IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoaW50ZXJmYWNlLT5tYXlBdXRv
bWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM4MSw4ICszNzcsOCBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWF5QXV0CiAjaWYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmlzUGxh
eWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogewotICAgIGZvciAoYXV0byYg
dHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0ZDo6Z2V0PDE+
KHR1cGxlKS0+aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpKQorICAgIGZvciAo
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmIChpbnRlcmZhY2UtPmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTM5OSw4ICszOTUsOCBA
QCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogVmlkZW9GCiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7Ci0g
ICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkKLSAgICAgICAgc3Rk
OjpnZXQ8MT4odHVwbGUpLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIGZvciAo
YXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKQorICAgICAg
ICBpbnRlcmZhY2UtPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6Um91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmIGNhbGxiYWNrKQpAQCAtNDk3LDEwICs0
OTMsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGCiAgICAgTUVT
U0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKIAogICAgIEFTU0VSVCh2aWRlb0xheWVy
SUQpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAg
IFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNlOwogCi0g
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQp
OwogCiAgICAgUmV0YWluUHRyPFdLTGF5ZXJIb3N0Vmlldz4gdmlldyA9IHN0YXRpY19jYXN0PFdL
TGF5ZXJIb3N0Vmlldyo+KG1vZGVsLT5sYXllckhvc3RWaWV3KCkpOwpAQCAtNjg2LDEwICs2ODAs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9k
ZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPiBpbnRlcmZh
Y2U7Ci0KLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNo
XTsKICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTAgKzk3LDcgQEAgZG91YmxlIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OnpvbwogewogICAgIC8vIEZJWE1FOiBTaGFyZSBzb21lIG9mIHRoaXMgY29kZSB3aXRo
IGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmU/CiAKLSAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2
aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRN
YXhpbXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2Nh
bGUsIG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNj
YWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2Nh
bGUsICFmaXRFbnRpcmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmlt
dW1TY2FsZSwgbWF4aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRa
b29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGlt
dW1TY2FsZSwgIWZpdEVudGlyZVJlY3QpOwogCiAgICAgZG91YmxlIGN1cnJlbnRTY2FsZSA9IFtt
X2NvbnRlbnRWaWV3IF9jb250ZW50Wm9vbVNjYWxlXTsKICAgICBkb3VibGUgdGFyZ2V0U2NhbGUg
PSBbbV9jb250ZW50VmlldyBfdGFyZ2V0Q29udGVudFpvb21TY2FsZUZvclJlY3Q6YWRqdXN0ZWRU
YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpjdXJyZW50U2NhbGUgZml0RW50aXJlUmVjdDpmaXRFbnRp
cmVSZWN0IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2Fs
ZV07CkBAIC0xMTgsMTAgKzExNSw3IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
cjo6ZGlkQ28KICAgICAgICAgW21fY29udGVudFZpZXcgX3pvb21Ub0luaXRpYWxTY2FsZVdpdGhP
cmlnaW46b3JpZ2luXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRUYXJnZXRSZWN0OwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmlt
dW1TY2FsZTsKLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdmlld3BvcnRNYXhpbXVtU2NhbGU7
Ci0gICAgc3RkOjp0aWUoYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1T
Y2FsZSkgPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRS
ZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRFbnRp
cmVSZWN0KTsKKyAgICBhdXRvIFthZGp1c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4
aW11bVNjYWxlXSA9IHNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRh
cmdldFJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgIWZp
dEVudGlyZVJlY3QpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIGlmIHRleHQgc2VsZWN0aW9uIHdh
bnRzIHRvIGNvbnN1bWUgdGhlIGRvdWJsZSB0YXAgYmVmb3JlIHdlIGF0dGVtcHQgbWFnbmlmaWNh
dGlvbi4KIApAQCAtMTQ3LDEwICsxNDEsNyBAQCB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvCiAKIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWFnbmlm
eShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdldFJlY3QsIEZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudFJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdw
b3J0TWF4aW11bVNjYWxlKQogewotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFRhcmdldFJlY3Q7Ci0g
ICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwotICAgIGRvdWJs
ZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmltdW1TY2FsZTsKLSAgICBzdGQ6OnRpZShhZGp1
c3RlZFRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKSA9IHNtYXJ0TWFnbmlm
aWNhdGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKHRhcmdldFJlY3QsIHZpZXdwb3J0TWluaW11
bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgdHJ1ZSk7CisgICAgYXV0byBbYWRqdXN0ZWRU
YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRp
b25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIHRydWUpOwogCiAgICAgW21fY29udGVudFZpZXcgX3pv
b21Ub1JlY3Q6YWRqdXN0ZWRUYXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIGZpdEVudGlyZVJl
Y3Q6Tk8gbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxl
IG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMjQ2OTU3KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjA5NCw5ICsyMDk0LDcgQEAgc3RkOjp0dXBsZTxTdHJpbmcsIFBERlNl
bGVjdGlvbiAqLCBOU0RpYwogICAgICAgICByZXR1cm4geyBzZWxlY3Rpb24uc3RyaW5nLCBzZWxl
Y3Rpb24sIG5pbCB9OwogICAgIH0KIAotICAgIE5TU3RyaW5nICpsb29rdXBUZXh0OwotICAgIE5T
RGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBzdGQ6OnRpZShsb29rdXBUZXh0LCBvcHRpb25zKSA9
IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24pOworICAg
IGF1dG8gW2xvb2t1cFRleHQsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9y
UERGU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgaWYgKCFsb29rdXBUZXh0Lmxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgZW1wdHlTdHJpbmcoKSwgc2VsZWN0aW9uLCBuaWwgfTsKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4
NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKICAgICAKICAg
ICAvLyBGaW5kIHRoZSBmcmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocm91
bmRlZEludFBvaW50KGZsb2F0UG9pbnQpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3RkOjp0aWUocmFuZ2UsIG9wdGlvbnMpID0g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKKyAgICBhdXRv
IFtyYW5nZSwgb3B0aW9uc10gPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3Vs
dChyZXN1bHQpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTEw
MCw5ICs5OCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKIAog
dm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKLSAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAg
IHN0ZDo6dGllKHNlbGVjdGVkUmFuZ2UsIG9wdGlvbnMpID0gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBhdXRvIFtzZWxlY3RlZFJhbmdlLCBvcHRp
b25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAg
ICAgaWYgKHNlbGVjdGVkUmFuZ2UpCiAgICAgICAgIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9y
UmFuZ2UoZnJhbWUsICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0
aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsNyBAQCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQ
bGF5YmFja1Nlc3Npb25NCiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKCkKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVl
cygpKSB7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4g
bW9kZWw7Ci0gICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBp
bnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Cisg
ICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkp
IHsKICAgICAgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICAgICAgbW9k
ZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKIApAQCAtMjI5LDkgKzIyNiw3IEBAIFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIFBsYXliYWMKIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQ
dHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwor
ICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50ID0g
bW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0
cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiwxMSArMTIyLDcgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6VmlkZW9G
dWxsc2NyZWVuTQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkg
ewotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVs
OwotICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJm
YWNlOwotICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCisgICAg
Zm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
ICAgICAgICAgbW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbW9kZWwt
PnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKIApAQCAtMTgwLDkgKzE3Niw3IEBAIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQmIFZpZGVvRnUKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9k
ZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAg
IGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+cmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dChjb250ZXh0SWQpOwogCkBAIC0yNTAsOSArMjQ0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRgogICAgIFVOVVNFRF9QQVJBTShhZGRSZXN1bHQpOwogICAg
IEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGNvbnRleHRJZCk7CiAKLSAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OworICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKICAgICBhZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAgICAgaWYg
KCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5z
ZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MoKSk7CkBAIC0zNjksOSArMzYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGll
KG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
KyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhv
c3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCkBAIC00MDYsOSArMzk2LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bAogICAgIExPRyhGdWxsc2NyZWVuLCAi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlz
LCBjb250ZXh0SWQpOwogCiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRl
cmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvIFtt
b2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywg
Y29udGV4dElkXSB7CkBAIC00MzEsOSArNDE5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjp3aWxsRXhpdEZ1bAogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwog
Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAg
ICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAg
IHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9F
bGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICghdmlkZW9FbGVtZW50KQpA
QCAtNDUwLDkgKzQzNiw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJG
dWwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAg
YXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0
SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRJc0FuaW1hdGluZyhmYWxzZSk7CiAgICAgaW50ZXJm
YWNlLT5zZXRJc0Z1bGxzY3JlZW4oZmFsc2UpOwpAQCAtNTEwLDkgKzQ5NCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEYKIHsKICAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKCVwLCAleCkiLCB0
aGlzLCBjb250ZXh0SWQpOwogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoaW50ZXJmYWNl
LT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3Rp
bmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKQEAgLTU3Miw5ICs1NTQsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1v
ZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZh
Y2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKGJvdW5kcy54
KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLnkoKSkgfHwgc3RkOjppc25hbihib3VuZHMud2lkdGgo
KSkgfHwgc3RkOjppc25hbihib3VuZHMuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGF1dG8gdmlkZW9S
ZWN0ID0gaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwtPnZpZGVvRWxlbWVudCgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDE5LTA2LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMg
b2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisg
ICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlv
bnMgb3IgdXNlIHN0ZDo6aWdub3JlLCBhcworICAgICAgICBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRv
bid0IHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvclRleHRdKToKKwogMjAxOS0wNi0yOCAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGVm
ZmVjdGl2ZUFwcGVhcmFuY2VJc0luYWN0aXZlIGFuZCB1c2VJbmFjdGl2ZUFwcGVhcmFuY2UgdG8g
YmV0dGVyIG1hdGNoIFVJVXNlckludGVyZmFjZUxldmVsLgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01NTgsOSArNTU4LDcgQEAgLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQdHI8
UmFuZ2U+IGRpY3Rpb25hcnlSYW5nZTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAg
c3RkOjp0aWUoZGljdGlvbmFyeVJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlQXRIaXRUZXN0UmVzdWx0KF9oaXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIFtkaWN0aW9uYXJ5
UmFuZ2UsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQo
X2hpdFRlc3RSZXN1bHQpOwogICAgIGlmICghZGljdGlvbmFyeVJhbmdlKQogICAgICAgICByZXR1
cm4gbmlsOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDY5NTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0wNi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRvcHQgc2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlcGxhY2VzIHNpbXBsZSB1c2VzIG9mIHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRp
bmdzLiBEb2VzIG5vdCB0b3VjaAorICAgICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUg
bm90IGluaXRpYWwgZGVjbGFyYXRpb25zIG9yIHVzZSBzdGQ6Omlnbm9yZSwgYXMKKyAgICAgICAg
c3RydWN0dXJlZCBiaW5kaW5ncyBkb24ndCB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAg
ICAgICAgKC1bRHVtcFJlbmRlclRyZWVGaWxlUHJvbWlzZVJlY2VpdmVyIHJlY2VpdmVQcm9taXNl
ZEZpbGVzQXREZXN0aW5hdGlvbjpvcHRpb25zOm9wZXJhdGlvblF1ZXVlOnJlYWRlcjpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTA2LTI4ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkaW5nIG15c2VsZiBhcyBhIHJldmll
d2VyIHRvIGNvbnRyaWJ1dG9ycy5qc29uLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
UHJlZmVycmVkQ29udGVudE1vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0JKHJldmlzaW9uIDI0Njk1NykKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTcsMzAgKzIxNywzMiBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBTZXREZWZh
dWx0V2ViCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFj
ZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENv
bnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJW
aWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmc8V0tXZWJWaWV3PigpOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHByZT5Gb288
L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25BY3Rpb24gKiwg
V0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAoXmRlY2lzaW9u
SGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
KSkgewotICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZVJlY29tbWVuZGVkLCBkZWZhdWx0
UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0g
ICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0
cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKLSAgICBF
WFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsK
LQotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsK
LSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5
RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVu
Y2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAgRVhQ
RUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVk
Q29udGVudE1vZGUpOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3
IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAo
TWFjIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0lu
dGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB7CisgICAgICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAi
PHByZT5Gb288L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25B
Y3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAo
XmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVSZWNvbW1l
bmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKKyAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVs
dFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JV
c2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAiVGVz
dFdlYktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50ZWwiLCBb
d2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworICAgIH0KIAotICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihX
S05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJl
bmNlcywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9k
ZURlc2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7Ci0gICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgW1dLV2Vi
cGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENvbnRlbnRNb2RlOldLQ29udGVudE1vZGVN
b2JpbGVdKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91
bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChpUCIsIEAiVGVzdFdlYktpdEFQSSIsIG5p
bF07Ci0gICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSBjb250YWlu
c1N0cmluZzpAImlQIl0pOworICAgIHsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVd
ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4o
V0tDb250ZW50TW9kZURlc2t0b3ApOworICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpA
IjxwcmU+QmFyPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9u
QWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQg
KF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3Rv
cCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKKyAgICAgICAgICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgZGVmYXVsdFBy
ZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2Vy
QWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdl
YktpdEFQSSIsIG5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiTWFjSW50ZWwiLCBbd2Vi
VmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0pOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOkAiPHByZT5CYXo8L3ByZT4iIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmln
YXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywg
dm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVE
ZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOworICAgICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBbV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRoQ29udGVudE1vZGU6V0tDb250ZW50TW9k
ZU1vYmlsZV0pOworICAgICAgICB9XTsKKyAgICAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoaVAiLCBAIlRlc3RXZWJL
aXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgbmF2aWdhdG9yUGxh
dGZvcm1dIGNvbnRhaW5zU3RyaW5nOkAiaVAiXSk7CisgICAgfQogfQogCiBURVNUKFByZWZlcnJl
ZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVdpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUpCkBAIC0y
NjQsOSArMjY2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVPbgog
ewogICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGhvbmVVc2VySW50ZXJmYWNlOwog
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVu
dE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcs
IGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKICAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0
UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKICAgICAgICAgRVhQRUNUX0VRKFdLQ29u
dGVudE1vZGVSZWNvbW1lbmRlZCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRN
b2RlKTsKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCBbV0tXZWJwYWdlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXNXaXRoQ29udGVudE1vZGU6V0tD
b250ZW50TW9kZURlc2t0b3BdKTsKQEAgLTI4Niw5ICsyODYsNyBAQCBURVNUKFByZWZlcnJlZENv
bnRlbnRNb2RlLCBEZXNrdG9wTW9kZVRvCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxl
ciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7
Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsK
LSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KCk7CiAKICAgICBfX2Jsb2NrIEJPT0wgZGVjaWRlZFBvbGljeUZvck1haW5GcmFtZSA9
IE5POwogICAgIF9fYmxvY2sgQk9PTCBkZWNpZGVkUG9saWN5Rm9yU3ViRnJhbWUgPSBOTzsKQEAg
LTMxNCw5ICszMTIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEZXNrdG9wTW9kZVVz
CiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAot
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRN
b2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBk
ZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpt
YWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tDb250ZW50TW9kZURlc2t0b3ApXTsKICAg
ICBFWFBFQ1RfRVEoMTAyNCwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJpbm5lcldpZHRoIl0gaW50VmFsdWVdKTsKQEAgLTMzNCw5ICszMzAsNyBAQCBURVNUKFByZWZl
cnJlZENvbnRlbnRNb2RlLCBDdXN0b21Vc2VyQWdlCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VT
d2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3
PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4g
ZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdLQ29udGVudE1v
ZGVEZXNrdG9wKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3ApOwogCiAgICAgTlNTdHJpbmcgKmN1c3RvbVVzZXJBZ2VudCA9IEAiTW96aWxsYS81
LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRN
TCwgbGlrZSBHZWNrbykgQ2hyb21lLzcxLjAuMzU3OC45OCBTYWZhcmkvNTM3LjM2IjsKICAgICBb
d2ViVmlldyBzZXRDdXN0b21Vc2VyQWdlbnQ6Y3VzdG9tVXNlckFnZW50XTsKQEAgLTM1Miw5ICsz
NDYsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBEb05vdEFsbG93Q2hhCiB7CiAgICAg
SVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIFJldGFp
blB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5h
dmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdh
dGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RXS1dl
YlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8VGVzdFdLV2Vi
Vmlldz4oV0tDb250ZW50TW9kZURlc2t0b3ApOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05hdmlnYXRpb25B
Y3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNlcywgdm9pZCAo
XmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqKSkgewogICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURlc2t0b3AsIGRl
ZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CkBAIC0zNzQsOSArMzY2LDcg
QEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRWZmZWN0aXZlQ29udAogewogICAgIElQYWRV
c2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0
aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7
CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRl
bnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50
TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm1ha2VD
b250ZW50TW9kZURlY2lzaW9uSGFuZGxlcihXS0NvbnRlbnRNb2RlRGVza3RvcCldOwpAQCAtMzg3
LDkgKzM3Nyw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEVmZmVjdGl2ZUNvbnQKIHsK
ICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBob25lVXNlckludGVyZmFjZTsKIAot
ICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250
ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmll
dywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRl
bnRNb2RlOldLQ29udGVudE1vZGVNb2JpbGUgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxd
OwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlMiIgYW5kRXhwZWN0RWZm
ZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9u
SGFuZGxlcjptYWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tDb250ZW50TW9kZURlc2t0
b3ApXTsKQEAgLTQwMCw5ICszODgsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNv
bW1lbmRlZENvCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVy
ZmFjZTsKIAotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFp
blB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0
aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJv
KTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0s
IENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBh
bmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2Vu
dF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDIwICs0MDUsMjAgQEAgVEVTVChQcmVmZXJyZWRD
b250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenps
ZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2Vi
VmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVn
YXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7Ci0gICAgW3dlYlZpZXcgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6XihXS05h
dmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKmRlZmF1bHRQcmVmZXJlbmNl
cywgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqKSkgewotICAgICAgICBkZWZhdWx0UHJlZmVyZW5jZXMuX2FwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5Db21wYXRpYmlsaXR5ID0gQCJEZXNrdG9w
QnJvd3NlciI7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKLSAgICB9XTsKLSAgICBbW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNp
bnRvc2giLCBAIkRlc2t0b3BCcm93c2VyIiwgbmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIk1h
Y0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB7CisgICAgICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0
aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5k
ZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpIHsKKyAgICAgICAgICAgIGRlZmF1bHRQcmVmZXJlbmNlcy5fYXBwbGljYXRpb25O
YW1lRm9yVXNlckFnZW50V2l0aE1vZGVybkNvbXBhdGliaWxpdHkgPSBAIkRlc2t0b3BCcm93c2Vy
IjsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdywgZGVmYXVsdFByZWZlcmVuY2VzKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmll
dyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAg
KE1hY2ludG9zaCIsIEAiRGVza3RvcEJyb3dzZXIiLCBuaWxdOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoIk1hY0ludGVsIiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB9CiAK
ICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQgdG8gY2hhbmdlIHRoZSBhcHBsaWNhdGlv
biBuYW1lLCBidXQgc3RpbGwgb3B0IGludG8gZGVza3RvcC1jbGFzcyBicm93c2luZzsKICAgICAg
ICAgLy8gdGhlIGFwcGxpY2F0aW9uIG5hbWUgc2hvdWxkIG5vdCBkZWZhdWx0IHRvICJNb2JpbGUv
MTVFMTQ4Ii4KLSAgICAgICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3AsIHsgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wLCB7IH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
InNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmlu
ZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CkBAIC00NDEs
NyArNDI3LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYQogICAg
IHsKICAgICAgICAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGFwcGxpY2F0aW9uIG5h
bWUsIGJ1dCB0aGlzIHRpbWUsIG9wdCBpbnRvIG1vYmlsZSBjb250ZW50LiBUaGUgYXBwbGljYXRp
b24KICAgICAgICAgLy8gbmFtZSBzaG91bGQgZGVmYXVsdCB0byAiTW9iaWxlLzE1RTE0OCIuCi0g
ICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVNb2JpbGUsIHsg
fSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVNb2JpbGUs
IHsgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRo
UG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQg
PSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNl
ckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpAQCAtNDQ5LDcgKzQzNSw3IEBAIFRF
U1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKICAgICB9CiAgICAgewogICAg
ICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQg
dG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIHN0ZDo6dGllKHdl
YlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9
KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3As
IHsgIk1vYmlsZS8xNUUxNDgiIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0
cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ1
Nyw3ICs0NDMsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAg
ICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1l
IGZvciB1c2VyIGFnZW50IHRvIG5pbC4KLSAgICAgICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdh
dGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7IH19KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHt7IH19KTsKICAgICAgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmls
XTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF07CiAgICAgICAgIEVYUEVDVF9GQUxTRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAi
TW9iaWxlIl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373338</attachid>
            <date>2019-07-02 10:38:57 -0700</date>
            <delta_ts>2019-07-03 13:46:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199247-20190702103856.patch</filename>
            <type>text/plain</type>
            <size>60549</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3MDU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDE5LTA3LTAyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNo
CisgICAgICAgIHVzZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJh
dGlvbnMsIHVzZSBzdGQ6Omlnbm9yZSBvciBpbgorICAgICAgICBjYXNlIHdoZXJlIHRoZSBiaW5k
aW5nIGlzIGNhcHR1cmVkIGJ5IGEgbGFtYmRhLCBhcyBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0
CisgICAgICAgIHdvcmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIHJ1bnRpbWUv
UHJvbWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJG
cm9tVmFsdWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTktMDctMDIgIFBh
dWxvIE1hdG9zICA8cG1hdG9zQGxpbmtpLnRvb2xzPgogCiAgICAgICAgIEZpeCB0eXBvIGluIGlm
L2Vsc2UgYmxvY2sgYW5kIHJlbW92ZSBkZWFkIGFzc2lnbm1lbnQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAJ
KHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21p
c2VEZWZlcnJlZFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNyBAQCB2b2lk
IFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoVk0mIHZtCiAgICAgfQogCiAgICAgd2hpbGUg
KCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0
OwotICAgICAgICBUYXNrIHRhc2s7Ci0gICAgICAgIHN0ZDo6dGllKHRpY2tldCwgdGFzaykgPSBt
X3Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tz
LnRha2VMYXN0KCk7CiAgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50
ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlj
a2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBw
cm9taXNlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25h
bEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsMTAgKzc3LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWdu
YWwsIAogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewogICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
Zm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CiAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAg
dm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgdm9pZCogZW5kOwotICAgICAgICAgICAgICAg
IHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7CisgICAgICAgICAgICBmb3IgKGF1dG8gW3N0
YXJ0LCBlbmRdIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9u
IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1
bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5J
ZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBtYXRjaCIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5
ICs4Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCAKIEFMV0FZ
U19JTkxJTkUgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhOwot
ICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRX
YXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIFtkYXRhLCBieXRlU2l6
ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5MCw5ICsyOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCB1aW50OF90KiBiYXNlOwot
ICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6ZSkgPSBnZXRX
YXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIFti
YXNlLCBieXRlU2l6ZV0gPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBCQlFQbGFuIHBsYW4oJnZtLndhc21Db250ZXh0LCBCQlFQbGFuOjpWYWxpZGF0aW9u
LCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8g
dGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3
aWxsIE9PTS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA3LTAy
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBzaW1wbGUg
c3RydWN0dXJlZCBiaW5kaW5ncyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgc2ltcGxlIHVzZXMgb2Ygc3RkOjp0
aWUoKSB3aXRoIHN0cnVjdHVyZWQgYmluZGluZ3MuIERvZXMgbm90IHRvdWNoCisgICAgICAgIHVz
ZXMgb2Ygc3RkOjp0aWUoKSB0aGF0IGFyZSBub3QgaW5pdGlhbCBkZWNsYXJhdGlvbnMsIHVzZSBz
dGQ6Omlnbm9yZSBvciBpbgorICAgICAgICBjYXNlIHdoZXJlIHRoZSBiaW5kaW5nIGlzIGNhcHR1
cmVkIGJ5IGEgbGFtYmRhLCBhcyBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGRvbid0CisgICAgICAgIHdv
cmsgZm9yIHRob3NlIGNhc2VzIHlldC4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhz
QW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFw
cGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRl
cm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFy
YWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNr
Rm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llRGF0YUZvckhhbmRzaGFrZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6CisgICAg
ICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29u
c3RydWN0QXR0cmlidXRlTmFtZSBjb25zdCk6CisKIDIwMTktMDYtMzAgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgTGF5b3V0Ojpwcmlu
dExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsOSArMTE5Nyw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGVGb3IKIAogc3RhdGljIHZvaWQgY2hlY2tGb3JP
cmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgRm9udE9yaWVudGF0
aW9uIGZvbnRPcmllbnRhdGlvbjsKLSAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0aW9u
KSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisgICAgYXV0byBbZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uXSA9IHN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAKICAgICBjb25zdCBhdXRvJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gZm9udE9y
aWVudGF0aW9uICYmIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCkgPT0g
Z2x5cGhPcmllbnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDkgKzQyNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZVMKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7Ci0gICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXM7Ci0gICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9u
bHlQb2xpY2llczsKLSAgICBzdGQ6OnRpZShmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMsIGZv
dW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzKSA9IGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTY3JpcHRIYXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cyk7CisgICAgYXV0byBbZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzLCBmb3VuZEhhc2hJ
blJlcG9ydE9ubHlQb2xpY2llc10gPSBmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMoJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0
SGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwog
ICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNoSW5SZXBvcnRP
bmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKQEAgLTQ1Myw5ICs0NTEsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
X292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBi
b29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llczsKLSAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzOwotICAgIHN0ZDo6dGllKGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2ll
cywgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMpID0gZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMpOworICAgIGF1dG8gW2ZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcywgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXNdID0gZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVz
aGVldHMpOwogICAgIGlmIChmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDggKzc4OCw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHMKICAgICAgICAgICAgICAg
ICBpZiAodHJlYXRBc1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24g
fHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0
cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4
cGFuc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRMZWZ0LCBleHBh
bmRSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgYWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGZvcmJp
ZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBhZnRlckV4cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlk
VHJhaWxpbmdFeHBhbnNpb24sIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09IG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlv
dXMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgw
LDE0ICs1ODAsMTAgQEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQ7Ci0gICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAg
IHN0ZDo6dGllKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29y
bmVyKGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IHN0YXJ0QW5kRW5kUG9pbnRzRm9yQ29ybmVyKGZyb21FZGdlLCB0b0VkZ2Us
IHJhZGl1cyk7CiAgICAgICAgIG1vdmVPckFkZExpbmVUbyhzdGFydFBvaW50KTsKIAotICAgICAg
ICBGbG9hdFBvaW50IGNwMTsKLSAgICAgICAgRmxvYXRQb2ludCBjcDI7Ci0gICAgICAgIHN0ZDo6
dGllKGNwMSwgY3AyKSA9IGNvbnRyb2xQb2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21F
ZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CisgICAgICAgIGF1dG8gW2NwMSwgY3AyXSA9IGNvbnRyb2xQ
b2ludHNGb3JCZXppZXJDdXJ2ZShjb3JuZXIsIGZyb21FZGdlLCB0b0VkZ2UsIHJhZGl1cyk7CiAg
ICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgZW5kUG9pbnQpOwogICAgIH0K
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsOCArMjc2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbgogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGgg
fHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKICAg
ICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZl
bmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAg
ICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKGV4cGFu
ZExlZnQsIGV4cGFuZFJpZ2h0KSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRB
c1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhw
YW5zaW9uLCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBm
b3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5k
TGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFz
U3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24sIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uLCBmb3JjZUxlYWRpbmdFeHBhbnNpb24sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVm
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwOCw4ICsxMzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYQogICAgIGlmIChmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMoKSA9PSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAgICAgICAgIG1fc2Vl
bkZhbWlsaWVzRm9yUHJld2FybWluZy5hZGQoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVk
RmFtaWx5TmFtZShmYW1pbHkpKTsKIAotICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5i
b2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
QEAgLTE0MDksOCArMTQwOCw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxi
YWNrRm8KICAgICAvLyBmb250IHBvaW50ZXIuCiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250
ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChyZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKIAotICAg
IGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
c3Vic3RpdHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBs
YXRmb3JtRm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgYWx0
ZXJuYXRlRm9udChzdWJzdGl0dXRlRm9udCwgcGxhdGZvcm1EYXRhLnNpemUoKSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIHBsYXRm
b3JtRGF0YS53aWR0aFZhcmlhbnQoKSwgcGxhdGZvcm1EYXRhLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogCkBAIC0xNTQ2LDggKzE1NDQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGCiAgICAgLy8gYSB0aGluIHdyYXBwZXIgYXJvdW5kIGEgR3JhcGhpY3NGb250IHdo
aWNoIHJlcHJlc2VudHMgTGFzdFJlc29ydC4KICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbmRpZgotICAgIGJvb2wgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICBzdGQ6OnRpZShzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlKSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YShmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRh
KHBsYXRmb3JtRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRlCiAKICAgICAgICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGJvb2wgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZTsKLSAgICAgICAg
c3RkOjp0aWUoc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSkgPSBjb21wdXRlTmVjZXNz
YXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50
aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsOSArODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nIGNvb2tpZURhdGFTdHJpbmc7Ci0gICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBzdGQ6OnRpZShjb29raWVEYXRh
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5KTsKKyAgICBhdXRv
IFtjb29raWVEYXRhU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWRdID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5
KTsKICAgICBpZiAoY29va2llRGF0YVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IHsgfSwgc2VjdXJlQ29va2llc0FjY2Vz
c2VkIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDkgKzE4MCw3IEBAIFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24gJiYgcm9vdCgpLmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzID0gcm9vdCgpLmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAh
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kOwotICAgICAg
ICAgICAgc3RkOjp0aWUoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkgPSBzZWxlY3Rpb25T
dGFydEVuZCgpOworICAgICAgICAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZF0gPSBzZWxlY3Rpb25TdGFydEVuZCgpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNo
b3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAg
ICAgIC8vIHRoZSBzZWxlY3Rpb24gaXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0
aW9uIGFuZCB0aGUKICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlz
IGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQpAQCAtNDM4LDkgKzQzNiw3IEBAIHN0
cnVjdCBJbmxpbmVUZXh0Qm94OjpTdHlsZWRNYXJrZWRUZXh0IDoKIAogc3RhdGljIE1hcmtlZFRl
eHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gpCiB7Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kOwotICAgIHN0ZDo6dGllKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpID0g
Ym94LnNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRFbmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQpCiAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIE1hcmtlZFRleHQ6OlNlbGVjdGlvbiB9OwogICAgIHJldHVybiB7IH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw5ICsyMDIsNyBAQCB2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAKICAgICBhdXRvJiBzdHlsZSA9
IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uOwotICAgIHN0ZDo6dGllKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9IHNlbGVjdGlvblN0YXJ0RW5kKCk7CisgICAgYXV0byBbc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb25dID0gc2VsZWN0aW9uU3RhcnRFbmQoKTsKIAogICAgIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlv
biA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcs
NyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
JmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7CiAKLSAgICBGb250T3JpZW50YXRpb24gZm9udE9y
aWVudGF0aW9uOwotICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsK
LSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1l
bnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIGF1dG8gW2ZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbl0gPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDggKzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb24KICAg
ICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFt
ZSgpOwogCi0gICAgQXRvbVN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBzdGQ6OnRpZShw
cmVmaXgsIGxvY2FsTmFtZSkgPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIFtwcmVmaXgsIGxvY2FsTmFtZV0gPSBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIAogICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
Njk1NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTUgQEAKKzIwMTktMDctMDIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1vcmUgcGxhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBz
aW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5kaW5ncy4gRG9lcyBu
b3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJlIG5vdCBpbml0aWFs
IGRlY2xhcmF0aW9ucywgdXNlIHN0ZDo6aWdub3JlIG9yIGluCisgICAgICAgIGNhc2Ugd2hlcmUg
dGhlIGJpbmRpbmcgaXMgY2FwdHVyZWQgYnkgYSBsYW1iZGEsIGFzIHN0cnVjdHVyZWQgYmluZGlu
Z3MgZG9uJ3QKKyAgICAgICAgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0LgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cHJpbnRTcGVjdWxhdGl2ZUxvYWRp
bmdEaWFnbm9zdGljTWVzc2FnZUNvdW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OmNs
ZWFyRXhwaXJlZEVudHJpZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZXJNYXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01vZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlT
aG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVu
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp6b29tRmFjdG9y
Rm9yVGFyZ2V0UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjptYWduaWZ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjp+UGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpy
ZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZl
bmNlZCk6CisKIDIwMTktMDYtMzAgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnku
Y29tPgogCiAgICAgICAgIFBhc3MgV2ViUHJvY2VzcyBpbmZvcm1hdGlvbiB0byBwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKCkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAgc3RhdGljIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4mIGFsbFNwZWN1bAogc3RhdGljIHZvaWQgcHJpbnRTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZUNvdW50cygpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlUHJlbG9hZGluZywgIi0tIFNwZWN1bGF0aXZlIGxvYWRpbmcgc3RhdGlzdGljcyAtLSIpOwot
ICAgIGZvciAoYXV0byYgcGFpciA6IGFsbFNwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNz
YWdlcygpKQotICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAi
JXM6ICV1IiwgcGFpci5rZXkudXRmOCgpLmRhdGEoKSwgcGFpci52YWx1ZSk7CisgICAgZm9yIChh
dXRvJiBbbWVzc2FnZSwgY291bnRdIDogYWxsU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01l
c3NhZ2VzKCkpCisgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcs
ICIlczogJXUiLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIGNvdW50KTsKIH0KICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAJKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5
Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCAKIAogdm9pZCBQ
cmVmZXRjaENhY2hlOjpjbGVhckV4cGlyZWRFbnRyaWVzKCkKIHsKLSAgICBVUkwgcmVxdWVzdFVy
bDsKLSAgICBXYWxsVGltZSB0aW1lc3RhbXA7CiAgICAgYXV0byB0aW1lb3V0ID0gV2FsbFRpbWU6
Om5vdygpOwogICAgIHdoaWxlICghbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIHN0ZDo6dGllKHJlcXVlc3RVcmwsIHRpbWVzdGFtcCkgPSBtX3Nlc3Npb25FeHBp
cmF0aW9uTGlzdC5maXJzdCgpOworICAgICAgICBhdXRvIFtyZXF1ZXN0VXJsLCB0aW1lc3RhbXBd
ID0gbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3QuZmlyc3QoKTsKICAgICAgICAgYXV0byogcmVzb3Vy
Y2VzID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy5nZXQoKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNl
cyk7CiAgICAgICAgIEFTU0VSVChyZXNvdXJjZXMtPmNvbnRhaW5zKHJlcXVlc3RVcmwpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFw
LmNwcAkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMjIgKzgwLDIyIEBAIHZv
aWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUKIHZvaWQgTWVzc2FnZVJlY2Vp
dmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVj
ZWl2ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmluZ1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9S
ZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1lQW5kUmVjZWl2ZXIgOiBtX2dsb2JhbE1lc3NhZ2VS
ZWNlaXZlcnMpIHsKLSAgICAgICAgaWYgKG5hbWVBbmRSZWNlaXZlci52YWx1ZSA9PSAmbWVzc2Fn
ZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5h
bWVBbmRSZWNlaXZlci5rZXkpOworICAgIGZvciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1f
Z2xvYmFsTWVzc2FnZVJlY2VpdmVycykgeworICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3Nh
Z2VSZWNlaXZlcikKKyAgICAgICAgICAgIGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChu
YW1lKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBn
bG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGds
b2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZl
cmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJzVG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiBuYW1l
QW5kSWRBbmRSZWNlaXZlciA6IG1fbWVzc2FnZVJlY2VpdmVycykgewotICAgICAgICBpZiAobmFt
ZUFuZElkQW5kUmVjZWl2ZXIudmFsdWUgPT0gJm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAg
IHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihuYW1lQW5kSWRBbmRSZWNl
aXZlci5rZXkuZmlyc3QsIG5hbWVBbmRJZEFuZFJlY2VpdmVyLmtleS5zZWNvbmQpKTsKKyAgICBm
b3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVj
ZWl2ZXJzKSB7CisgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQorICAg
ICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRE
ZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9
CiAKLSAgICBmb3IgKGF1dG8mIHJlY2VpdmVyVG9SZW1vdmUgOiByZWNlaXZlcnNUb1JlbW92ZSkK
LSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHJlY2VpdmVyVG9SZW1vdmUuZmlyc3QsIHJl
Y2VpdmVyVG9SZW1vdmUuc2Vjb25kKTsKKyAgICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlv
bklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQorICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
bmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjppbnZh
bGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0JKHJldmlzaW9uIDI0Njk1NykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIwLDEzICszMjAsOCBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92
ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xpZW50Q291bnRzLmNsZWFyKCk7CiAKLSAgICBmb3Ig
KGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAgICAgICBSZWZQdHI8UGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICAgICAgUmVmUHRyPFBsYXRmb3Jt
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgICAgIHN0ZDo6dGllKG1v
ZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0KKyAgICBmb3IgKGF1dG8mIFttb2RlbCwgaW50ZXJm
YWNlXSA6IGNvbnRleHRNYXAudmFsdWVzKCkpCiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0
ZSgpOwotICAgIH0KIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVy
ZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRl
cmZhY2UodWludDY0X3QgY29udGV4dElkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQko
cmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGkKICAgICBhdXRvIGNv
bnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4dE1hcCk7CiAgICAgbV9jbGllbnRDb3VudHMuY2xl
YXIoKTsKIAotICAgIGZvciAoYXV0byYgdHVwbGUgOiBjb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgICAg
ICBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAg
ICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogY29udGV4dE1hcC52YWx1ZXMoKSkgewogICAgICAgICBp
bnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkg
cmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51
bGxwdHIpOwpAQCAtMzU2LDE0ICszNTIsMTQgQEAgICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRh
dGUoKTsKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RIaWRlQW5k
RXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAu
dmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6Z2V0PDE+KHR1cGxlKS0+cmVxdWVzdEhpZGVBbmRFeGl0
RnVsbHNjcmVlbigpOworICAgIGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250
ZXh0TWFwLnZhbHVlcygpKQorICAgICAgICBpbnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1
bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc01v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0
CiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgewotICAg
ICAgICBpZiAoc3RkOjpnZXQ8MT4odHVwbGUpLT5oYXNNb2RlKG1vZGUpKQorICAgIGZvciAoYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAg
IGlmIChpbnRlcmZhY2UtPmhhc01vZGUobW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzcxLDggKzM2Nyw4IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNNb2QKIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29u
c3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGlmIChzdGQ6OmdldDwxPih0dXBsZSktPm1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9Q
aWN0dXJlSW5QaWN0dXJlKCkpCisgICAgZm9yIChhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gOiBt
X2NvbnRleHRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGludGVyZmFjZS0+bWF5QXV0b21h
dGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODEsOCArMzc3LDggQEAgYm9vbCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dAogI2lmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1BsYXlp
bmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHR1
cGxlIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzdGQ6OmdldDwxPih0
dXBsZSktPmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSkKKyAgICBmb3IgKGF1
dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAoaW50ZXJmYWNlLT5pc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0zOTksOCArMzk1LDggQEAg
UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIFZpZGVvRgogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAg
IGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0ZDo6
Z2V0PDE+KHR1cGxlKS0+YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICBmb3IgKGF1
dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkKKyAgICAgICAg
aW50ZXJmYWNlLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogfQogCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRl
eHRVSUQodWludDY0X3QgY29udGV4dElkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5nKT4mJiBjYWxsYmFjaykKQEAgLTQ5NywxMCArNDkz
LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRgogICAgIE1FU1NB
R0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAKICAgICBBU1NFUlQodmlkZW9MYXllcklE
KTsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBS
ZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKIAotICAg
IHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZElu
dGVyZmFjZShjb250ZXh0SWQpOwogICAgIGFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsK
IAogICAgIFJldGFpblB0cjxXS0xheWVySG9zdFZpZXc+IHZpZXcgPSBzdGF0aWNfY2FzdDxXS0xh
eWVySG9zdFZpZXcqPihtb2RlbC0+bGF5ZXJIb3N0VmlldygpKTsKQEAgLTY4NiwxMCArNjgwLDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudAogCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKQogewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVs
OwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50ZXJmYWNl
OwotCi0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpOworICAgIGF1dG8mIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1v
ZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07
CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTk3LDEwICs5Nyw3IEBAIGRvdWJsZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyOjp6b28KIHsKICAgICAvLyBGSVhNRTogU2hhcmUgc29tZSBvZiB0aGlzIGNvZGUgd2l0aCBk
aWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlPwogCi0gICAgRmxv
YXRSZWN0IGFkanVzdGVkVGFyZ2V0UmVjdDsKLSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gdmll
d3BvcnRNaW5pbXVtU2NhbGU7Ci0gICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4
aW11bVNjYWxlOwotICAgIHN0ZDo6dGllKGFkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxl
LCBtYXhpbXVtU2NhbGUpID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2Fs
ZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxl
LCAhZml0RW50aXJlUmVjdCk7CisgICAgYXV0byBbYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVt
U2NhbGUsIG1heGltdW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9v
bVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVt
U2NhbGUsICFmaXRFbnRpcmVSZWN0KTsKIAogICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBbbV9j
b250ZW50VmlldyBfY29udGVudFpvb21TY2FsZV07CiAgICAgZG91YmxlIHRhcmdldFNjYWxlID0g
W21fY29udGVudFZpZXcgX3RhcmdldENvbnRlbnRab29tU2NhbGVGb3JSZWN0OmFkanVzdGVkVGFy
Z2V0UmVjdCBjdXJyZW50U2NhbGU6Y3VycmVudFNjYWxlIGZpdEVudGlyZVJlY3Q6Zml0RW50aXJl
UmVjdCBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGVd
OwpAQCAtMTE4LDEwICsxMTUsNyBAQCB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
OmRpZENvCiAgICAgICAgIFttX2NvbnRlbnRWaWV3IF96b29tVG9Jbml0aWFsU2NhbGVXaXRoT3Jp
Z2luOm9yaWdpbl07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgRmxvYXRSZWN0IGFkanVz
dGVkVGFyZ2V0UmVjdDsKLSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVt
U2NhbGU7Ci0gICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOwot
ICAgIHN0ZDo6dGllKGFkanVzdGVkVGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2Nh
bGUpID0gc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVj
dCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCAhZml0RW50aXJl
UmVjdCk7CisgICAgYXV0byBbYWRqdXN0ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGlt
dW1TY2FsZV0gPSBzbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJn
ZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsICFmaXRF
bnRpcmVSZWN0KTsKIAogICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0ZXh0IHNlbGVjdGlvbiB3YW50
cyB0byBjb25zdW1lIHRoZSBkb3VibGUgdGFwIGJlZm9yZSB3ZSBhdHRlbXB0IG1hZ25pZmljYXRp
b24uCiAKQEAgLTE0NywxMCArMTQxLDcgQEAgdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyOjpkaWRDbwogCiB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1hZ25pZnko
RmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9y
dE1heGltdW1TY2FsZSkKIHsKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRUYXJnZXRSZWN0OwotICAg
IGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3cG9ydE1heGltdW1TY2FsZTsKLSAgICBkb3VibGUg
bWluaW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7Ci0gICAgc3RkOjp0aWUoYWRqdXN0
ZWRUYXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZSkgPSBzbWFydE1hZ25pZmlj
YXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyh0YXJnZXRSZWN0LCB2aWV3cG9ydE1pbmltdW1T
Y2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIHRydWUpOworICAgIGF1dG8gW2FkanVzdGVkVGFy
Z2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhpbXVtU2NhbGVdID0gc21hcnRNYWduaWZpY2F0aW9u
VGFyZ2V0UmVjdEFuZFpvb21TY2FsZXModGFyZ2V0UmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUs
IHZpZXdwb3J0TWF4aW11bVNjYWxlLCB0cnVlKTsKIAogICAgIFttX2NvbnRlbnRWaWV3IF96b29t
VG9SZWN0OmFkanVzdGVkVGFyZ2V0UmVjdCB3aXRoT3JpZ2luOm9yaWdpbiBmaXRFbnRpcmVSZWN0
Ok5PIG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBt
aW5pbXVtU2Nyb2xsRGlzdGFuY2U6MF07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHJldmlzaW9uIDI0Njk1NykKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIwOTQsOSArMjA5NCw3IEBAIHN0ZDo6dHVwbGU8U3RyaW5nLCBQREZTZWxl
Y3Rpb24gKiwgTlNEaWMKICAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uLnN0cmluZywgc2VsZWN0
aW9uLCBuaWwgfTsKICAgICB9CiAKLSAgICBOU1N0cmluZyAqbG9va3VwVGV4dDsKLSAgICBOU0Rp
Y3Rpb25hcnkgKm9wdGlvbnM7Ci0gICAgc3RkOjp0aWUobG9va3VwVGV4dCwgb3B0aW9ucykgPSBE
aWN0aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQREZTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBh
dXRvIFtsb29rdXBUZXh0LCBvcHRpb25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBE
RlNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgIGlmICghbG9va3VwVGV4dC5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiB7IGVtcHR5U3RyaW5nKCksIHNlbGVjdGlvbiwgbmlsIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0JKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMCiAgICAgCiAgICAg
Ly8gRmluZCB0aGUgZnJhbWUgdGhlIHBvaW50IGlzIG92ZXIuCiAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRB
dFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJvdW5k
ZWRJbnRQb2ludChmbG9hdFBvaW50KSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAg
TlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAgIHN0ZDo6dGllKHJhbmdlLCBvcHRpb25zKSA9IERp
Y3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCk7CisgICAgYXV0byBb
cmFuZ2UsIG9wdGlvbnNdID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQo
cmVzdWx0KTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xMDAs
OSArOTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMCiAKIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24oRnJhbWUmIGZy
YW1lLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlvblRyYW5zaXRpb24pCiB7Ci0gICAgUmVmUHRy
PFJhbmdlPiBzZWxlY3RlZFJhbmdlOwotICAgIE5TRGljdGlvbmFyeSAqb3B0aW9uczsKLSAgICBz
dGQ6OnRpZShzZWxlY3RlZFJhbmdlLCBvcHRpb25zKSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdl
Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgYXV0byBbc2VsZWN0ZWRSYW5nZSwgb3B0aW9u
c10gPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAg
IGlmIChzZWxlY3RlZFJhbmdlKQogICAgICAgICBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJh
bmdlKGZyYW1lLCAqc2VsZWN0ZWRSYW5nZSwgb3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlv
bik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQkocmV2aXNpb24gMjQ2OTU3KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDcgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxh
eWJhY2tTZXNzaW9uTQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp+UGxheWJhY2tTZXNzaW9u
TWFuYWdlcigpCiB7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMo
KSkgewotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1v
ZGVsOwotICAgICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50
ZXJmYWNlOwotICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOworICAg
IGZvciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7
CiAgICAgICAgIG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAgICAgICAgIG1vZGVs
LT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CiAKQEAgLTIyOSw5ICsyMjYsNyBAQCBQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBQbGF5YmFjCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRy
PFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1v
ZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAg
ICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpOwogCiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9IG1v
ZGVsLT5tZWRpYUVsZW1lbnQoKTsKICAgICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIsMTEgKzEyMiw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlZpZGVvRnVs
bHNjcmVlbk0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6flZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIoKQogewotICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpIHsK
LSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsK
LSAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFj
ZTsKLSAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKLQorICAgIGZv
ciAoYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdIDogbV9jb250ZXh0TWFwLnZhbHVlcygpKSB7CiAg
ICAgICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7CiAgICAgICAgIG1vZGVsLT5y
ZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAKQEAgLTE4MCw5ICsxNzYsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VDb250ZXh0JiBWaWRlb0Z1CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVs
LCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICBh
dXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCk7CiAKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPnJlbW92ZUNsaWVudEZvckNvbnRl
eHQoY29udGV4dElkKTsKIApAQCAtMjUwLDkgKzI0NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZW50ZXJWaWRlb0YKICAgICBVTlVTRURfUEFSQU0oYWRkUmVzdWx0KTsKICAgICBB
U1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9PSBjb250ZXh0SWQpOwogCi0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKLSAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGll
KG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
KyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogICAgIGlmICgh
aW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpCiAgICAgICAgIGludGVyZmFjZS0+c2V0
TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5h
bEhvc3RpbmdQcm9jZXNzKCkpOwpAQCAtMzY5LDkgKzM2MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGEKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpy
ZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Cisg
ICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpOwogCiAgICAgQ0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKTsKIApAQCAtNDA2LDkgKzM5Niw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWwKICAgICBMT0coRnVsbHNjcmVlbiwgIlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywg
Y29udGV4dElkKTsKIAogICAgIEFTU0VSVChtX3BhZ2UpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJm
YWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byBbbW9k
ZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNv
bnRleHRJZF0gewpAQCAtNDMxLDkgKzQxOSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6d2lsbEV4aXRGdWwKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAot
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7Ci0gICAg
UmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKLSAgICBz
dGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCk7CisgICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IHZpZGVvRWxl
bWVudCA9IG1vZGVsLT52aWRlb0VsZW1lbnQoKTsKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKQEAg
LTQ1MCw5ICs0MzYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVs
CiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRl
ckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKLSAgICBSZWZQdHI8Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwotICAgIFJlZlB0cjxWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIGF1
dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElk
KTsKIAogICAgIGludGVyZmFjZS0+c2V0SXNBbmltYXRpbmcoZmFsc2UpOwogICAgIGludGVyZmFj
ZS0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKQEAgLTUxMCw5ICs0OTQsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhp
cywgY29udGV4dElkKTsKIAotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudD4gbW9kZWw7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+
IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaWYgKGludGVyZmFjZS0+
bGF5ZXJIb3N0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5n
Q29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CkBAIC01NzIsOSArNTU0LDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2Rl
bDsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNl
OwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZh
Y2UoY29udGV4dElkKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoc3RkOjppc25hbihib3VuZHMueCgp
KSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy55KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLndpZHRoKCkp
IHx8IHN0ZDo6aXNuYW4oYm91bmRzLmhlaWdodCgpKSkgewogICAgICAgICBhdXRvIHZpZGVvUmVj
dCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLT52aWRlb0VsZW1lbnQoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDY5NTcpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
OS0wNy0wMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQg
c2ltcGxlIHN0cnVjdHVyZWQgYmluZGluZ3MgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTI0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VzIHNpbXBsZSB1c2VzIG9m
IHN0ZDo6dGllKCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLiBEb2VzIG5vdCB0b3VjaAorICAg
ICAgICB1c2VzIG9mIHN0ZDo6dGllKCkgdGhhdCBhcmUgbm90IGluaXRpYWwgZGVjbGFyYXRpb25z
LCB1c2Ugc3RkOjppZ25vcmUgb3IgaW4KKyAgICAgICAgY2FzZSB3aGVyZSB0aGUgYmluZGluZyBp
cyBjYXB0dXJlZCBieSBhIGxhbWJkYSwgYXMgc3RydWN0dXJlZCBiaW5kaW5ncyBkb24ndAorICAg
ICAgICB3b3JrIGZvciB0aG9zZSBjYXNlcyB5ZXQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisKIDIwMTktMDYtMjgg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBl
ZmZlY3RpdmVBcHBlYXJhbmNlSXNJbmFjdGl2ZSBhbmQgdXNlSW5hY3RpdmVBcHBlYXJhbmNlIHRv
IGJldHRlciBtYXRjaCBVSVVzZXJJbnRlcmZhY2VMZXZlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI0Njk1NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTU4LDkgKzU1OCw3IEBAIC0gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29u
dHJvbGwKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgUmVmUHRy
PFJhbmdlPiBkaWN0aW9uYXJ5UmFuZ2U7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zOwotICAg
IHN0ZDo6dGllKGRpY3Rpb25hcnlSYW5nZSwgb3B0aW9ucykgPSBEaWN0aW9uYXJ5TG9va3VwOjpy
YW5nZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBbZGljdGlvbmFy
eVJhbmdlLCBvcHRpb25zXSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0
KF9oaXRUZXN0UmVzdWx0KTsKICAgICBpZiAoIWRpY3Rpb25hcnlSYW5nZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjQ2OTU3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDYtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIEFkb3B0IHNpbXBsZSBzdHJ1Y3R1cmVkIGJpbmRpbmdzIGluIG1v
cmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTkyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlcyBzaW1wbGUgdXNlcyBvZiBzdGQ6OnRpZSgpIHdpdGggc3RydWN0dXJlZCBiaW5k
aW5ncy4gRG9lcyBub3QgdG91Y2gKKyAgICAgICAgdXNlcyBvZiBzdGQ6OnRpZSgpIHRoYXQgYXJl
IG5vdCBpbml0aWFsIGRlY2xhcmF0aW9ucywgdXNlIHN0ZDo6aWdub3JlIG9yIGluCisgICAgICAg
IGNhc2Ugd2hlcmUgdGhlIGJpbmRpbmcgaXMgY2FwdHVyZWQgYnkgYSBsYW1iZGEsIGFzIHN0cnVj
dHVyZWQgYmluZGluZ3MgZG9uJ3QKKyAgICAgICAgd29yayBmb3IgdGhvc2UgY2FzZXMgeWV0Lgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOS0wNi0yOCAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGluZyBteXNlbGYgYXMgYSBy
ZXZpZXdlciB0byBjb250cmlidXRvcnMuanNvbi4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCShyZXZpc2lvbiAyNDY5NTcpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjE3LDMwICsyMTcsMzIgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgU2V0
RGVmYXVsdFdlYgogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRl
cmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0
cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUo
d2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nPFdLV2ViVmlldz4oKTsKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxwcmU+
Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0aW9uQWN0aW9u
ICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZvaWQgKF5kZWNp
c2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVSZWNvbW1lbmRlZCwgZGVm
YXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVyZW5jZXMp
OwotICAgIH1dOwotICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRh
aW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07Ci0g
ICAgRVhQRUNUX1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3Jt
XSk7Ci0KLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3Rv
cCk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkJhcjwvcHJlPiIgd2l0aFBv
bGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7Ci0gICAgICAg
IEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZl
cnJlZENvbnRlbnRNb2RlKTsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFsbG93LCBkZWZhdWx0UHJlZmVyZW5jZXMpOwotICAgIH1dOwotICAgIFtbd2Vi
VmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81
LjAgKE1hYyIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJN
YWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAgeworICAgICAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxwcmU+Rm9vPC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0
aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZv
aWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRNb2RlUmVj
b21tZW5kZWQsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CisgICAg
ICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRl
ZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcgbmF2aWdh
dG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWMiLCBA
IlRlc3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVs
IiwgW3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKyAgICB9CiAKLSAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAIjxwcmU+QmF6PC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVy
Ol4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJl
ZmVyZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVu
dE1vZGVEZXNrdG9wLCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwot
ICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIFtX
S1dlYnBhZ2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1dpdGhDb250ZW50TW9kZTpXS0NvbnRlbnRN
b2RlTW9iaWxlXSk7Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0g
c2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoaVAiLCBAIlRlc3RXZWJLaXRBUEki
LCBuaWxdOwotICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBuYXZpZ2F0b3JQbGF0Zm9ybV0gY29u
dGFpbnNTdHJpbmc6QCJpUCJdKTsKKyAgICB7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6QCI8cHJlPkJhcjwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdh
dGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2
b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFn
ZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoV0tDb250ZW50TW9kZURl
c2t0b3AsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250ZW50TW9kZSk7CisgICAgICAg
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIGRlZmF1
bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAgICAgICBbW3dlYlZpZXcgbmF2aWdhdG9y
VXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWMiLCBAIlRl
c3RXZWJLaXRBUEkiLCBuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIk1hY0ludGVsIiwg
W3dlYlZpZXcgbmF2aWdhdG9yUGxhdGZvcm1dKTsKKworICAgICAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzpAIjxwcmU+QmF6PC9wcmU+IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tO
YXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5j
ZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShXS0NvbnRlbnRN
b2RlRGVza3RvcCwgZGVmYXVsdFByZWZlcmVuY2VzLnByZWZlcnJlZENvbnRlbnRNb2RlKTsKKyAg
ICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywg
W1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENvbnRlbnRNb2RlOldLQ29udGVu
dE1vZGVNb2JpbGVdKTsKKyAgICAgICAgfV07CisgICAgICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JV
c2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKGlQIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG5hdmlnYXRv
clBsYXRmb3JtXSBjb250YWluc1N0cmluZzpAImlQIl0pOworICAgIH0KIH0KIAogVEVTVChQcmVm
ZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKQpA
QCAtMjY0LDkgKzI2Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIERlc2t0b3BNb2Rl
T24KIHsKICAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBob25lVXNlckludGVyZmFj
ZTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENv
bnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJW
aWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmc8V0tXZWJWaWV3PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAgICAgW3dl
YlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8cHJlPkZvbzwvcHJlPiIgd2l0aFBvbGljeURlY2lzaW9u
SGFuZGxlcjpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVm
YXVsdFByZWZlcmVuY2VzLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CiAgICAgICAgIEVYUEVDVF9FUShX
S0NvbnRlbnRNb2RlUmVjb21tZW5kZWQsIGRlZmF1bHRQcmVmZXJlbmNlcy5wcmVmZXJyZWRDb250
ZW50TW9kZSk7CiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgW1dLV2VicGFnZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzV2l0aENvbnRlbnRNb2Rl
OldLQ29udGVudE1vZGVEZXNrdG9wXSk7CkBAIC0yODYsOSArMjg2LDcgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgRGVza3RvcE1vZGVUbwogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dp
enpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3OwotICAgIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdh
dGU7Ci0gICAgc3RkOjp0aWUod2ViVmlldywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PigpOwogCiAgICAgX19ibG9jayBCT09MIGRlY2lkZWRQb2xpY3lGb3JNYWluRnJh
bWUgPSBOTzsKICAgICBfX2Jsb2NrIEJPT0wgZGVjaWRlZFBvbGljeUZvclN1YkZyYW1lID0gTk87
CkBAIC0zMTQsOSArMzEyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRGVza3RvcE1v
ZGVVcwogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7
CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwotICAgIFJldGFpblB0cjxDb250
ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgc3RkOjp0aWUod2ViVmll
dywgZGVsZWdhdGUpID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRs
ZXI6bWFrZUNvbnRlbnRNb2RlRGVjaXNpb25IYW5kbGVyKFdLQ29udGVudE1vZGVEZXNrdG9wKV07
CiAgICAgRVhQRUNUX0VRKDEwMjQsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiaW5uZXJXaWR0aCJdIGludFZhbHVlXSk7CkBAIC0zMzQsOSArMzMwLDcgQEAgVEVTVChQ
cmVmZXJyZWRDb250ZW50TW9kZSwgQ3VzdG9tVXNlckFnZQogewogICAgIElQYWRVc2VySW50ZXJm
YWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2Vi
Vmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdh
dGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0V0tXZWJWaWV3PihXS0NvbnRl
bnRNb2RlRGVza3RvcCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wKTsKIAogICAgIE5TU3RyaW5nICpjdXN0b21Vc2VyQWdlbnQgPSBAIk1vemls
bGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAo
S0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83MS4wLjM1NzguOTggU2FmYXJpLzUzNy4zNiI7CiAg
ICAgW3dlYlZpZXcgc2V0Q3VzdG9tVXNlckFnZW50OmN1c3RvbVVzZXJBZ2VudF07CkBAIC0zNTIs
OSArMzQ2LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgRG9Ob3RBbGxvd0NoYQogewog
ICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8Q29udGVudE1v
ZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRl
bGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxUZXN0
V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCk7CisgICAgYXV0byBbd2ViVmlldywgZGVs
ZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFRlc3RX
S1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4oV0tOYXZpZ2F0
aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVyZW5jZXMsIHZv
aWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKikpIHsKICAgICAgICAgRVhQRUNUX0VRKFdLQ29udGVudE1vZGVEZXNrdG9w
LCBkZWZhdWx0UHJlZmVyZW5jZXMucHJlZmVycmVkQ29udGVudE1vZGUpOwpAQCAtMzc0LDkgKzM2
Niw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEVmZmVjdGl2ZUNvbnQKIHsKICAgICBJ
UGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWlu
UHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2
aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0
ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3
PigpOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KCk7CiAKICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tD
b250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlMiIgYW5kRXhwZWN0RWZmZWN0aXZlQ29u
dGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpt
YWtlQ29udGVudE1vZGVEZWNpc2lvbkhhbmRsZXIoV0tDb250ZW50TW9kZURlc2t0b3ApXTsKQEAg
LTM4Nyw5ICszNzcsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBFZmZlY3RpdmVDb250
CiB7CiAgICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIGlQaG9uZVVzZXJJbnRlcmZhY2U7
CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0ZDo6dGllKHdl
YlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KCk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oKTsKIAogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVD
b250ZW50TW9kZTpXS0NvbnRlbnRNb2RlTW9iaWxlIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
bmlsXTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIiIGFuZEV4cGVj
dEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNp
c2lvbkhhbmRsZXI6bWFrZUNvbnRlbnRNb2RlRGVjaXNpb25IYW5kbGVyKFdLQ29udGVudE1vZGVE
ZXNrdG9wKV07CkBAIC00MDAsOSArMzg4LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwg
UmVjb21tZW5kZWRDbwogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJ
bnRlcmZhY2U7CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldzsKLSAgICBS
ZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwotICAgIHN0
ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXpl
WmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJ
IiB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBs
ZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0
aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2Vy
QWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAi
VGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSwyMCArNDA1LDIwIEBAIFRFU1QoUHJlZmVy
cmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3
aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+
IHdlYlZpZXc7Ci0gICAgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPiBk
ZWxlZ2F0ZTsKLSAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOwotICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOl4o
V0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2VzICpkZWZhdWx0UHJlZmVy
ZW5jZXMsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwg
V0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKLSAgICAgICAgZGVmYXVsdFByZWZlcmVuY2VzLl9h
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnRXaXRoTW9kZXJuQ29tcGF0aWJpbGl0eSA9IEAiRGVz
a3RvcEJyb3dzZXIiOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7Ci0gICAgfV07Ci0gICAgW1t3ZWJWaWV3
IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAo
TWFjaW50b3NoIiwgQCJEZXNrdG9wQnJvd3NlciIsIG5pbF07Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAgeworICAgICAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PigpOworICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpeKFdLTmF2aWdhdGlv
bkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFByZWZlcmVuY2VzLCB2b2lk
ICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7CisgICAgICAgICAgICBkZWZhdWx0UHJlZmVyZW5jZXMuX2FwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudFdpdGhNb2Rlcm5Db21wYXRpYmlsaXR5ID0gQCJEZXNrdG9wQnJv
d3NlciI7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5QWxsb3csIGRlZmF1bHRQcmVmZXJlbmNlcyk7CisgICAgICAgIH1dOworICAgICAgICBbW3dl
YlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEv
NS4wIChNYWNpbnRvc2giLCBAIkRlc2t0b3BCcm93c2VyIiwgbmlsXTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKCJNYWNJbnRlbCIsIFt3ZWJWaWV3IG5hdmlnYXRvclBsYXRmb3JtXSk7CisgICAg
fQogCiAgICAgewogICAgICAgICAvLyBEb24ndCBhdHRlbXB0IHRvIGNoYW5nZSB0aGUgYXBwbGlj
YXRpb24gbmFtZSwgYnV0IHN0aWxsIG9wdCBpbnRvIGRlc2t0b3AtY2xhc3MgYnJvd3Npbmc7CiAg
ICAgICAgIC8vIHRoZSBhcHBsaWNhdGlvbiBuYW1lIHNob3VsZCBub3QgZGVmYXVsdCB0byAiTW9i
aWxlLzE1RTE0OCIuCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRlbGVnYXRlKSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wLCB7IH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0Nv
bnRlbnRNb2RlRGVza3RvcCwgeyB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNT
dHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAg
IEVYUEVDVF9GQUxTRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpAQCAt
NDQxLDcgKzQyNyw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmEK
ICAgICB7CiAgICAgICAgIC8vIERvbid0IGF0dGVtcHQgdG8gY2hhbmdlIHRoZSBhcHBsaWNhdGlv
biBuYW1lLCBidXQgdGhpcyB0aW1lLCBvcHQgaW50byBtb2JpbGUgY29udGVudC4gVGhlIGFwcGxp
Y2F0aW9uCiAgICAgICAgIC8vIG5hbWUgc2hvdWxkIGRlZmF1bHQgdG8gIk1vYmlsZS8xNUUxNDgi
LgotICAgICAgICBzdGQ6OnRpZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlTW9iaWxl
LCB7IH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlTW9i
aWxlLCB7IH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIg
d2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFn
ZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUo
W3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKQEAgLTQ0OSw3ICs0MzUsNyBA
QCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hCiAgICAgfQogICAgIHsK
ICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFn
ZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBzdGQ6OnRp
ZSh3ZWJWaWV3LCBkZWxlZ2F0ZSkgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0
OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNr
dG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAg
TlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAg
ICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CkBA
IC00NTcsNyArNDQzLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25O
YQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24g
bmFtZSBmb3IgdXNlciBhZ2VudCB0byBuaWwuCi0gICAgICAgIHN0ZDo6dGllKHdlYlZpZXcsIGRl
bGVnYXRlKSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7eyB9fSk7CisgICAgICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7eyB9fSk7CiAgICAgICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVy
Om5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JV
c2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfRkFMU0UoW3VzZXJBZ2VudCBjb250YWluc1N0cmlu
ZzpAIk1vYmlsZSJdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>