<?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>186085</bug_id>
          
          <creation_ts>2018-05-30 02:43:37 -0700</creation_ts>
          <short_desc>[JSC] Pass VM&amp; parameter as much as possible</short_desc>
          <delta_ts>2018-05-30 23:33:45 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1428372</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-30 02:43:37 -0700</bug_when>
    <thetext>[JSC] Pass VM&amp; parameter as much as possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428373</commentid>
    <comment_count>1</comment_count>
      <attachid>341560</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-30 02:47:47 -0700</bug_when>
    <thetext>Created attachment 341560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428374</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-30 02:51:20 -0700</bug_when>
    <thetext>Attachment 341560 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:363:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 168 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>1428378</commentid>
    <comment_count>3</comment_count>
      <attachid>341560</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-30 04:09:26 -0700</bug_when>
    <thetext>Comment on attachment 341560
Patch

Attachment 341560 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/7862299

New failing tests:
wasm.yaml/wasm/spec-tests/start.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/memory-access-past-4gib.js.wasm-slow-memory
wasm.yaml/wasm/function-tests/context-switch.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-store-2.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/skip-stack-guard-page.wast.js.default-wasm
wasm.yaml/wasm/function-tests/trap-from-start.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/js-api/wrapper-function.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/i32.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/select.wast.js.default-wasm
wasm.yaml/wasm/function-tests/memory-access-past-4gib.js.default-wasm
wasm.yaml/wasm/function-tests/trap-from-start.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-from-start.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/call.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/context-switch.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/memory-reuse.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/address.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-load.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/memory-access-past-4gib.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/int_exprs.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/exceptions.js.default-wasm
wasm.yaml/wasm/function-tests/trap-load-2.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/exceptions.js.wasm-slow-memory
wasm.yaml/wasm/function-tests/exceptions.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/fac.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-from-start-async.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.wasm-no-call-ic
wasm.yaml/wasm/js-api/wrapper-function.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/traps.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/exceptions.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/memory-reuse.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/grow-memory-3.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/grow-memory-3.js.default-wasm
wasm.yaml/wasm/function-tests/context-switch.js.wasm-slow-memory
wasm.yaml/wasm/function-tests/stack-overflow.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/unwind.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/grow-memory-3.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/stack-overflow.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/start.wast.js.default-wasm
wasm.yaml/wasm/fuzz/memory.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/unwind.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/fuzz/memory.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-store-2.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/skip-stack-guard-page.wast.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/i64.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.default-wasm
wasm.yaml/wasm/fuzz/memory.js.default-wasm
wasm.yaml/wasm/function-tests/trap-store.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/unwind.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/resizing.wast.js.default-wasm
wasm.yaml/wasm/js-api/dont-mmap-zero-byte-memory.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-after-cross-instance-call.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/factorial.js.default-wasm
wasm.yaml/wasm/spec-tests/imports.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/stack-overflow.js.default-wasm
wasm.yaml/wasm/js-api/dont-mmap-zero-byte-memory.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/select.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/traps.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.wasm-eager-jettison
wasm.yaml/wasm/js-api/wrapper-function.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/start.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-load-2.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/address.wast.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/traps.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/linking.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-store-2.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-from-start.js.default-wasm
wasm.yaml/wasm/function-tests/trap-load-2.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/grow-memory-3.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/grow-memory-3.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/js-api/dont-mmap-zero-byte-memory.js.wasm-no-tls-context
wasm.yaml/wasm/js-api/dont-mmap-zero-byte-memory.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/unreachable.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/i32.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/trap-store.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/skip-stack-guard-page.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/address.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/context-switch.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/factorial.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-load.js.default-wasm
wasm.yaml/wasm/function-tests/trap-from-start-async.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-after-cross-instance-call.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/exceptions.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/stack-overflow.js.wasm-slow-memory
wasm.yaml/wasm/fuzz/memory.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/stack-overflow.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-store-2.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/linking.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-after-cross-instance-call.js.wasm-slow-memory
wasm.yaml/wasm/function-tests/trap-load-2.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/start.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/select.wast.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/call.wast.js.default-wasm
wasm.yaml/wasm/js-api/wrapper-function.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-load.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/int_exprs.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/fac.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/i32.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/imports.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/memory-reuse.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/unreachable.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/trap-after-cross-instance-call.js.default-wasm
wasm.yaml/wasm/spec-tests/call.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/trap-store.js.wasm-no-call-ic
wasm.yaml/wasm/js-api/dont-mmap-zero-byte-memory.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/linking.wast.js.default-wasm
wasm.yaml/wasm/function-tests/trap-from-start-async.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/conversions.wast.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/resizing.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/i32.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/unreachable.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-load-2.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.default-wasm
wasm.yaml/wasm/js-api/dont-mmap-zero-byte-memory.js.default-wasm
wasm.yaml/wasm/function-tests/memory-access-past-4gib.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/address.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/unwind.wast.js.default-wasm
wasm.yaml/wasm/fuzz/memory.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/js-api/wrapper-function.js.default-wasm
wasm.yaml/wasm/fuzz/memory.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/call.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/linking.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-load-2.js.default-wasm
wasm.yaml/wasm/spec-tests/unwind.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-from-start.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/linking.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/context-switch.js.default-wasm
wasm.yaml/wasm/spec-tests/traps.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-from-start-async.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/trap-from-start-async.js.default-wasm
wasm.yaml/wasm/spec-tests/imports.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/conversions.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/i64.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/factorial.js.wasm-slow-memory
wasm.yaml/wasm/function-tests/trap-load.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/imports.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-load.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-store.js.default-wasm
wasm.yaml/wasm/function-tests/memory-reuse.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/stack-overflow.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-after-cross-instance-call.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/trap-store.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/i64.wast.js.wasm-no-tls-context
wasm.yaml/wasm/js-api/wrapper-function.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-after-cross-instance-call.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/memory-reuse.js.default-wasm
wasm.yaml/wasm/spec-tests/skip-stack-guard-page.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/traps.wast.js.default-wasm
wasm.yaml/wasm/function-tests/factorial.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/unreachable.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/conversions.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/i64.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/resizing.wast.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/start.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-from-start-async.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/resizing.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/i64.wast.js.default-wasm
wasm.yaml/wasm/function-tests/factorial.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/memory-access-past-4gib.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/resizing.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/trap-store-2.js.default-wasm
wasm.yaml/wasm/spec-tests/conversions.wast.js.wasm-eager-jettison
wasm.yaml/wasm/spec-tests/select.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/fac.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/int_exprs.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.default-wasm
wasm.yaml/wasm/function-tests/trap-from-start.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/int_exprs.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/grow-memory-3.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/fac.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/select.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/exceptions.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/imports.wast.js.default-wasm
wasm.yaml/wasm/function-tests/trap-store.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/fac.wast.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/int_exprs.wast.js.wasm-no-call-ic
wasm.yaml/wasm/function-tests/memory-access-past-4gib.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/trap-store-2.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/trap-load.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/address.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/skip-stack-guard-page.wast.js.wasm-no-tls-context
wasm.yaml/wasm/spec-tests/conversions.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/spec-tests/unreachable.wast.js.wasm-no-cjit-yes-tls-context
wasm.yaml/wasm/function-tests/memory-reuse.js.wasm-slow-memory
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.wasm-no-tls-context
wasm.yaml/wasm/function-tests/factorial.js.wasm-no-call-ic
wasm.yaml/wasm/spec-tests/i32.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/call.wast.js.wasm-eager-jettison
wasm.yaml/wasm/function-tests/context-switch.js.wasm-no-call-ic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428390</commentid>
    <comment_count>4</comment_count>
      <attachid>341563</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-30 05:43:12 -0700</bug_when>
    <thetext>Created attachment 341563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428392</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-30 05:46:18 -0700</bug_when>
    <thetext>Attachment 341563 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:363:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 168 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>1428747</commentid>
    <comment_count>6</comment_count>
      <attachid>341563</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-30 21:40:38 -0700</bug_when>
    <thetext>Comment on attachment 341563
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428753</commentid>
    <comment_count>7</comment_count>
      <attachid>341563</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-30 22:52:04 -0700</bug_when>
    <thetext>Comment on attachment 341563
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428754</commentid>
    <comment_count>8</comment_count>
      <attachid>341563</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-30 23:19:41 -0700</bug_when>
    <thetext>Comment on attachment 341563
Patch

Clearing flags on attachment: 341563

Committed r232337: &lt;https://trac.webkit.org/changeset/232337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428755</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-30 23:19:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428760</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-30 23:33:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/40676373&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341560</attachid>
            <date>2018-05-30 02:47:47 -0700</date>
            <delta_ts>2018-05-30 05:43:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186085-20180530184746.patch</filename>
            <type>text/plain</type>
            <size>303852</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YTJjOTYwOTJjNmU2NDczZDI3MzlmNzQ1MGVkNjEyZmIwNjI1MjA2Li4xODU5YWFlY2M3NGU2NTMw
MGFjYjk5MjNjNThlYTk3NzkyNzFhY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NDMgQEAKKzIwMTgtMDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVyIGFzIG11Y2ggYXMgcG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NjA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpT
Q2VsbDo6dm0oKSBpcyBzbG93IGNvbXBhcmVkIHRvIEV4ZWNTdGF0ZTo6dm0oKS4gVGhhdCdzIHdo
eSB3ZSBoYXZlIGJ1bmNoIG9mIGZ1bmN0aW9ucyBpbiBKU0NlbGwvSlNPYmplY3QgdGhhdCB0YWtl
IFZNJiBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHdlIGhhdmUgSlNDZWxs
OjpzdHJ1Y3R1cmUoKSBhbmQgSlNDZWxsOjpzdHJ1Y3R1cmUoVk0mKSwgdGhlIGZvcm1lciByZXRy
aWV2ZXMgVk0mIGZyb20gdGhlIGNlbGwgYW5kIGludm9rZXMgc3RydWN0dXJlKFZNJikuCisgICAg
ICAgIElmIHdlIGNhbiBnZXQgVk0mIGZyb20gRXhlY1N0YXRlKiBvciB0aGUgb3RoZXIgcGxhY2Us
IGl0IHJlZHVjZXMgdGhlIGlubGluZWQgY29kZSBzaXplLgorICAgICAgICBUaGlzIHBhdGNoIGF0
dGVtcHRzIHRvIHBhc3MgVk0mIHBhcmFtZXRlciB0byBzdWNoIGZ1bmN0aW9ucyBhcyBtdWNoIGFz
IHBvc3NpYmxlLgorCisgICAgICAgICogQVBJL0FQSUNhc3QuaDoKKyAgICAgICAgKHRvSlMpOgor
ICAgICAgICAodG9KU0ZvckdDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU09iamVj
dFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQ
SS9KU1R5cGVkQXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVy
KToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1ZhbHVlSXNJbnN0
YW5jZU9mQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6
CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9w
ZXJ0eUNvdW50KToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dC5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0aW9uc0Zvckluc3RhbmNlT2YpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlDb25kaXRpb246OmF0dGVtcHRUb01ha2VFcXVpdmFsZW5jZVdpdGhvdXRC
YXJyaWVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkZXRhY2gpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNj
b3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmdldE93
blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2VPU1JFbnRyeVZhbHVlKToK
KyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpy
ZWZpbmUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjaGVj
ayk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjayk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9k
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAqIGZ0
bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0
ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJ
bmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6Y2FsbGVy
IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29w
ZUNoYWluIGNvbnN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpnZXRCeVZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAg
KGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OnNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OnRyeUluaXRp
YWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0V2l0aEJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNyZWF0
ZUVtcHR5KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoSW5saW5l
RnJhbWUpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVdpdGhNYWNoaW5l
RnJhbWUpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zy
b20pOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVjaWFscyk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAg
ICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwpOgorICAg
ICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKToK
KyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVp
Y2tseSk6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0pT
T04pOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGlyZWN0QXJndW1lbnRzOjpvdmVycmlkZVRoaW5ncyk6CisgICAgICAgICogcnVudGltZS9F
cnJvci5jcHA6CisgICAgICAgIChKU0M6OmdldFN0YWNrVHJhY2UpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjb25z
dHJ1Y3RXaXRoRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpj
YWxsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fs
bEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNB
cmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFR5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6OnJlbW92ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9JbmZlcnJlZFR5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0luZmVycmVkVHlwZUlu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcik6CisgICAgICAgICogcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVk
TG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICog
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9J
bnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTG9jYWxlTGlzdCk6Cisg
ICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0
ZWRMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2Nh
bGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChK
U0M6OkludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpT
Qzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRp
bWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3JDbG9zZSk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yRm9y
SXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6
OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEpTQnVmZmVyKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSlNCdWZmZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToK
KyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKToKKyAgICAg
ICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVu
Y3Rpb246OmJvdW5kQXJnc0NvcHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Om1ldGhvZFRhYmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0
ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmV4cG9zZURvbGxhclZNKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRl
cm5hbFByb21pc2U6OnRoZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByb21pc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNKb2IuY3BwOgorICAgICAgICAoSlNDOjpKU0pvYk1pY3JvdGFzazo6cnVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
YXAuY3BwOgorICAgICAgICAoSlNDOjpKU01hcDo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OmNyZWF0ZVBhaXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cHJvdmlk
ZUZldGNoKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09OUHJvdG9GdW5jUGFyc2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3Jz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvbnZlcnRGcm9tQ29weU9uV3JpdGUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZW5zdXJlV3JpdGFibGVJbnQzMlNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlV3JpdGFibGVEb3VibGVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3Vy
ZVdyaXRhYmxlQ29udGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJl
QXJyYXlTdG9yYWdlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZU93bkluZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhT
bG93T3JCZXlvbmRWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0TmV3
VmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVu
Z3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJm
bHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2hpZnRCdXR0ZXJmbHlBZnRlckZsYXR0ZW5p
bmcpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YW55T2JqZWN0SW5DaGFpbk1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5
cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bmVl
ZHNTbG93UHV0SW5kZXhpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c3VnZ2Vz
dGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0N1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmlzRXh0ZW5zaWJsZUltcGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluZGV4aW5n
U2hvdWxkQmVTcGFyc2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c3RhdGljUHJvcGVydGll
c1JlaWZpZWQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2xvYmFsT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpnZXRDYWxs
RGF0YSk6CisgICAgICAgIChKU0M6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dE93
bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVy
Zmx5UHJlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVyZmx5VG90YWxT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9t
aXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjppbml0aWFsaXplKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UHJvbWlzZSk6CisgICAgICAg
ICogcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChKU0M6Om5ld1Byb21p
c2VDYXBhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAg
ICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Omdsb2JhbE9i
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSB0aGlzIEpTU2NvcGU6Omdsb2JhbE9iamVj
dCBmdW5jdGlvbiBzaW5jZSBpdCBpcyBjb21wbGV0ZWx5IHRoZSBzYW1lIHRvIEpTT2JqZWN0Ojpn
bG9iYWxPYmplY3QoKS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTZXQuY3BwOgorICAgICAgICAo
SlNDOjpKU1NldDo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0SXRl
cmF0b3I6OmNyZWF0ZVBhaXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OmNsb25lKToKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljQWNjZXNzb3IpOgor
ICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGlt
ZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxl
KToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OnJlaWZ5U3RhdGljUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RPYmplY3QpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckFzc2lnbik6CisgICAgICAgIChKU0M6OnRvUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0RlZmluZUdldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y0RlZmluZVNldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpq
c0lzRnVuY3Rpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBpdCB3aXRoIEpTVmFs
dWU6OmlzRnVuY3Rpb24oVk0mKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
aXRoUmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsUmVnRXhwQ29uc3RydWN0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorICAg
ICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpuYW1lRnJvbUNhbGxlZSk6
CisgICAgICAgICogcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpT
Y29wZWRBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzKToKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhl
Y3V0aW9uSW1wbCk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkp
OgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAg
ICAgKEpTQzo6cmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OndpbGxTdG9yZVZhbHVlU2xvdyk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNhY2hlOjplbXB0
eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrU2V0KToKKyAgICAgICAgKiB0b29scy9I
ZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnJlcG9ydENlbGwp
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkdsb2JhbE9iamVjdEZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbik6
CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Omhh
bmRsZUJhZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTRXhjZXB0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6Omluc3RhbnRpYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcDoK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUpOgorCiAyMDE4LTA1
LTI5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtC
YXNlbGluZV0gTWVyZ2UgbG9hZGluZyBmdW5jdGlvbmFsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNmRi
OTU5ZWJmNDExOTc5MGI1NmM3MWI5YjVlMjgzODM3ZWFmOGYwLi42MzVjYTlkMWQ5MDgxNTcyMGE3
MmVhODk0OTc1YmNjNzk1NGM1ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTgt
MDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVyIGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDU1NSdWxlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25XaXRoQ3VycmVu
dEFyZ3VtZW50cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0U2NoZWR1bGVk
QWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMU2NoZWR1bGVkQWN0aW9u
Pjo6Y29udmVydCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTU1hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZEZ1bmN0aW9uQ2FsbFRv
QmFja2luZ01hcCk6CisgICAgICAgIChXZWJDb3JlOjpmb3J3YXJkRm9yRWFjaENhbGxUb0JhY2tp
bmdNYXApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6Y2Fs
bEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhU
eXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZENTU09NVmFsdWVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXByZWNhdGVkQ1NTT01WYWx1ZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21QdXQpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbFBsdWdpbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dpbmRvd1Byb3h5OjpzZXRXaW5kb3cpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtSW50ZXJuYWw6OmNhbGxGdW5jdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlv
bkluQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Z2V0UHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJ1
Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoK
KyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dl
YlNjcmlwdE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpjbG9uZUFycmF5QnVmZmVyKToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09i
amVjdCk6CisKIDIwMTgtMDUtMjkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgaU9TIFdLMTogT2NjYXNpb25hbCBjcmFzaCBpbiBzYW5pdGl6ZWRNYXJrdXBGb3JG
cmFnbWVudEluRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWRjZjcxZDViZDQyZjM3M2ZkMGYyYzIwNDE2
NDM0YzVlOGI2NmIyMC4uYzZlZmJmOWU3YTFmNTcyYmMwNzQ4YTdiNzMzNjI5NzVmNTM5MzJhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNS0zMCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBQYXNzIFZNJiBwYXJhbWV0ZXIg
YXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2MDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6Omhhc01ldGhvZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5QSlNPYmplY3Q6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6
Omludm9rZSk6CisKIDIwMTgtMDUtMjggIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgog
CiAgICAgICAgIEV4cG9zZSBhZGRpdGlvbmFsIFdLTWVudUl0ZW1JZGVudGlmaWVyIHN0cmluZ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNzc4NTUwMWIyNmU1N2MwYThmNDMzNzZk
NmQ5YzlhYjEzMTZlOGMxLi4zMDMzYzliMjFhNGMxN2RiMjc3OWM1ZWY0NDYyYzAwMDhhOWI0NGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDUt
MzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pT
Q10gUGFzcyBWTSYgcGFyYW1ldGVyIGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA4NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6Omludm9rZSk6CisKIDIwMTgtMDUtMjcgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnRlZCB0aGUgY2hhbmdlcyBtYWRlIGZvciBo
dHRwczovL3dlYmtpdC5vcmcvYi8xODYwMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCAxOGIwNDdkNDNkYTM4M2E1MGMyMGJiYzY0ZDFlNjA1MTllNjhkMTRiLi42ZDYzZTRkNzY5MjAy
YzE4NzcyYWE5YWRmN2MzYmViNDU4ZmZmYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVyIGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NjA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5QTl9J
bnZva2UpOgorCiAyMDE4LTA1LTI3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIzMjE5OCkgW1dpbkNhaXJvXSBjYW5ub3Qg
Y29udmVydCBmcm9tICdXVEY6OlN0cmluZ1ZpZXcnIHRvICdjb25zdCBXVEY6OlN0cmluZycKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKaW5kZXggMjFmM2E3ZGU5NDYwOTZmMDA1MGM3MjMw
YTRjNjYxNGVhOTRkMzQ3Yy4uN2Q2ZDNmNzQ5MDQwNzM3NjJmYjViYjcyZmMwNjU2OTJkMmJlNTAw
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlUmVmIHYp
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogICAgIGlm
IChyZXN1bHQuaXNDZWxsKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwo
KS0+bWV0aG9kVGFibGUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTk5LDcgKzk5LDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTRm9yR0MoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWVSZWYgdikKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gSlNDOjpK
U1ZhbHVlOjpkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxKU0M6OkVuY29kZWRKU1ZhbHVlPihjb25z
dF9jYXN0PE9wYXF1ZUpTVmFsdWUqPih2KSkpOwogI2VuZGlmCiAgICAgaWYgKHJlc3VsdCAmJiBy
ZXN1bHQuaXNDZWxsKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwoKS0+
bWV0aG9kVGFibGUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKaW5kZXggMGVlZGRlYmRlODZiNDU0ZGNlMjBmZWQzNjNkYmMwNjZmZDZjMzM0NS4uZjkzM2E5
OWU3YjkzOWM2Y2QxYjVkOWUyYjAwNDU4M2I1MTNhNTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTIwNyw3
ICsyMDcsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKKyAgICByZXR1cm4gb2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNz
IFBhcmVudD4KQEAgLTQxNCw3ICs0MTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewogICAgIEpT
Q2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNl
bGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0
eU5hbWUpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTY1Myw3ICs2NTMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9u
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NT
dGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVu
Y3Rpb25zKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkq
IGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQobmFtZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGVu
dHJ5LT5jYWxsQXNGdW5jdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0
KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0KiBvID0gSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXNPYmotPmdsb2JhbE9i
amVjdCh2bSksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0cmlidXRl
cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG8pOwog
ICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCmluZGV4IDRmODg2ODE5NmEyYjczMWFmMjY5ZDQwOGFhZjA2MjE0Y2FlYzc4ZDMuLmQ4
MGEwNzBiN2FiNjk4ZmI0OGE3MTBkZTVhNzYzMzk1YmI0OWIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC02MjMsMTMgKzYyMywxNiBAQCBKU1ZhbHVl
UmVmIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU09iamVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgSlNPYmplY3RJ
c0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0KQorYm9vbCBKU09i
amVjdElzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQog
eworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGlmICghb2JqZWN0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3Qp
OwogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICByZXR1cm4ganNPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoanNPYmplY3QsIGNvbnN0cnVjdERhdGEp
ICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgcmV0dXJuIGpzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldENvbnN0cnVjdERhdGEoanNPYmplY3QsIGNvbnN0cnVjdERhdGEpICE9IENvbnN0
cnVjdFR5cGU6Ok5vbmU7CiB9CiAKIEpTT2JqZWN0UmVmIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDQ4MzI1
OTdjYjliMDg1ZjMwMDBiZTE1ZDNmMmFhZTJiMmQxYTc2NmEuLjQ1YzQ3YWJjOGMxNjRiZjU5YmU4
YTlhMTA0ZWZlZWFmNzUxYTRiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNUeXBlZEFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlw
ZWRBcnJheS5jcHAKQEAgLTMwMSw3ICszMDEsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5
cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0UmVmLAog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTKG9iamVjdFJlZik7CiAKICAgICBpZiAoSlNBcnJh
eUJ1ZmZlclZpZXcqIHR5cGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3
Kj4odm0sIG9iamVjdCkpCi0gICAgICAgIHJldHVybiB0b1JlZih2bS5tX3R5cGVkQXJyYXlDb250
cm9sbGVyLT50b0pTKGV4ZWMsIHR5cGVkQXJyYXktPmdsb2JhbE9iamVjdCgpLCB0eXBlZEFycmF5
LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpKSk7CisgICAgICAgIHJldHVybiB0b1JlZih2bS5tX3R5
cGVkQXJyYXlDb250cm9sbGVyLT50b0pTKGV4ZWMsIHR5cGVkQXJyYXktPmdsb2JhbE9iamVjdCh2
bSksIHR5cGVkQXJyYXktPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCkpKTsKIAogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXgg
MDBiZjA2MWFkYTJkMTZjMTc1ODc0ZDhkODE4MDY5MzQ1N2ZhOTgzMi4uNzk1NTliZTkwNzk4NzE1
MWIyZmE3ZDkzMTI2NDI0NTE4ODgxMGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9m
Q29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3QK
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKIAogICAgIEpTT2JqZWN0
KiBqc0NvbnN0cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3Rvcik7Ci0gICAgaWYgKCFqc0NvbnN0cnVj
dG9yLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKKyAg
ICBpZiAoIWpzQ29uc3RydWN0b3ItPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50
c0hhc0luc3RhbmNlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIHJlc3VsdCA9
IGpzQ29uc3RydWN0b3ItPmhhc0luc3RhbmNlKGV4ZWMsIGpzVmFsdWUpOyAvLyBmYWxzZSBpZiBh
biBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUs
IGV4ZWMsIGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDRhNzBhZDEzOTc4MzhkYTM0ZWJiOTgz
NmU1MzA2Y2U3ZDBkOTYzZWQuLjQ0YmZmNTRmYmRkYzQ2YzE5Mzg1YjBjNDQzMjJiNWJmZWFlNGQ1
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNWYWx1ZSBTY3JpcHRGdW5jdGlv
bkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogICAgIH0KIAogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlv
biwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggMTBlNGY5NWRhOWI4MjNlY2I2MGJkOWFlZGVkZDVmYWViNWIxZTE1
NC4uNjhjOWFjMmU3NTU0Mjk3OGJlNzE5MmY1NDMwOWRjNGY1ZmJjMzRlZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC03NiwxMCArNzYs
MTEgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4ZWNT
dGF0ZSYgc2NyaXB0U3RhdGUsIEpTVmFsdWUgdmEKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGluc3BlY3RvckFycmF5KTsKICAgICAgICAgfQorICAgICAgICBWTSYg
dm0gPSBzY3JpcHRTdGF0ZS52bSgpOwogICAgICAgICBhdXRvIGluc3BlY3Rvck9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGF1dG8mIG9iamVjdCA9ICp2YWx1ZS5nZXRP
YmplY3QoKTsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcygmc2NyaXB0
U3RhdGUudm0oKSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6
OkV4Y2x1ZGUpOwotICAgICAgICBvYmplY3QubWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlO
YW1lcygmb2JqZWN0LCAmc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSgpKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcygmdm0sIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAg
ICAgb2JqZWN0Lm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcygmb2JqZWN0LCAm
c2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAg
Zm9yIChhdXRvJiBuYW1lIDogcHJvcGVydHlOYW1lcykgewogICAgICAgICAgICAgYXV0byBpbnNw
ZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgb2JqZWN0LmdldCgm
c2NyaXB0U3RhdGUsIG5hbWUpLCBtYXhEZXB0aCk7CiAgICAgICAgICAgICBpZiAoIWluc3BlY3Rv
clZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CmluZGV4IGMyZmJlMzM3MjE2ZjRiOGZkOTZmMmU3OTQ1Y2Y1N2ExYmE5MmExMmYuLmYzNmMxZmUy
NDhiZGNhYTMxYjk2N2UxOTk3MTQ2NGEyNTBhYzhiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
IGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiA6IG1fY29uZGl0
aW9uU2V0KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0NoYWlu
KTsKIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+
c3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFi
bGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7CiAgICAgICAgICAgICBzdHJ1
Y3R1cmUtPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHN0YXRlLmFkZFdhdGNocG9pbnQoY29uZGl0
aW9uKSk7CkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGlmICghaGFzQWx0ZXJu
YXRlQmFzZSgpKQogICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUoKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gYWx0ZXJu
YXRlQmFzZSgpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0g
YWx0ZXJuYXRlQmFzZSgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgY3VyclN0cnVjdHVy
ZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBvZmZzZXQoKSk7CiAg
ICAgICAgIH0KIApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgaWYgKCFoYXNBbHRl
cm5hdGVCYXNlKCkpCiAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlKCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBhbHRlcm5hdGVCYXNlKCkt
PnN0cnVjdHVyZSgpOworICAgICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2Uo
KS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgY3VyclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBvZmZzZXQoKSk7CiAgICAgICAgIAogICAgICAgICB0
aGlzLT5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpLmVtaXRJbnRyaW5zaWNHZXR0ZXIo
c3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCA4YmQ3ZmU3YWY4M2RlMTJkOWUxOWQyZGY0MGRiYzNjNDc0ZDFjMzdjLi40YmEzNTY2ZGVl
ZDg5NWZlYmRjZDA3YmEwMjM4ZDU1MWJhYzhiZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2Nr
JiBvdGhlcikKIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQg
Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQotICAg
ICwgbV9nbG9iYWxPYmplY3QoKnZtLCB0aGlzLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpCisgICAg
LCBtX2dsb2JhbE9iamVjdCgqdm0sIHRoaXMsIHNjb3BlLT5nbG9iYWxPYmplY3QoKnZtKSkKICAg
ICAsIG1fbnVtQ2FsbGVlTG9jYWxzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
cykKICAgICAsIG1fbnVtVmFycyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1WYXJzKQogICAgICwg
bV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMu
aAppbmRleCAxMDZkYWIxZmM5MmJiOTZlZjkwMDM3NzllYjM4ZWJkNGM5Y2MxOGNhLi43MDIxOTQ3
Y2Y3ODYyY2E5ZGJlMjNjZGNiYjRkNzkwOTMyMmViM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
SW5saW5lcy5oCkBAIC0xNDQsMTIgKzE0NCwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYgog
CiBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJs
ZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKLSAg
ICBpZiAocHJvdG90eXBlID09IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3Rv
dHlwZSgpKQorICAgIGlmIChwcm90b3R5cGUgPT0gcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qodm0p
LT5vYmplY3RQcm90b3R5cGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzaXplX3QgY291
bnQgPSAwOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSwgUHJv
cGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIFByaXZhdGVTeW1ib2xNb2RlOjpJbmNs
dWRlKTsKLSAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0
cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICBw
cm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZt
LCBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9w
ZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBwcm90b3R5cGUtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lVmVj
dG9yW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDkzNzcxOTViYzUyNTlmNTg4
NjIyZjJjNjkxMWM4OGUwNDdjZmQ1NjIuLjFkOTQ3NWNiYzZkN2Q0MTQ0NTVjODQ1ZTIyMTM4NWEw
YmUxNjk3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBA
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uIGdlbmVyYXRlQ29uZGl0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmpl
Y3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgUHJvcGVydHlDb25kaXRpb246Oktp
bmQgY29uZGl0aW9uS2luZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+
c3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVy
ZSh2bSk7CiAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIGNvbmRpdGlvbiAiLCBjb25kaXRpb25LaW5k
LCAiIGZvciAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpLCAiXG4iKTsKIApAQCAtMjA3LDE0ICsy
MDcsMTQgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb24oCiAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQogICAgICAgICAgICAgcmV0dXJuIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uKCk7CiAgICAgICAgIHJlc3VsdCA9IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uOjphYnNlbmNlKAotICAgICAgICAgICAgdm0sIG93bmVyLCBvYmplY3QsIHVpZCwg
b2JqZWN0LT5zdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpOworICAgICAgICAg
ICAgdm0sIG93bmVyLCBvYmplY3QsIHVpZCwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQ
cm90b3R5cGVPYmplY3QoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFByb3Bl
cnR5Q29uZGl0aW9uOjpBYnNlbmNlT2ZTZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+aGFzUG9seVByb3RvKCkpCiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25k
aXRpb24oKTsKICAgICAgICAgcmVzdWx0ID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmFic2Vu
Y2VPZlNldEVmZmVjdCgKLSAgICAgICAgICAgIHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIG9iamVj
dC0+c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKTsKKyAgICAgICAgICAgIHZt
LCBvd25lciwgb2JqZWN0LCB1aWQsIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+c3RvcmVkUHJvdG90
eXBlT2JqZWN0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQcm9wZXJ0eUNv
bmRpdGlvbjo6RXF1aXZhbGVuY2U6IHsKQEAgLTQxMSw3ICs0MTEsNyBAQCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JJbnN0YW5jZU9mKAogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb246Omhhc1Byb3RvdHlwZSgKLSAgICAgICAgICAgICAgICAgICAg
dm0sIG93bmVyLCBvYmplY3QsIG9iamVjdC0+c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9i
amVjdCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHZtLCBvd25lciwgb2JqZWN0LCBvYmplY3Qt
PnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24u
Y3BwCmluZGV4IDc3MzBmMzUwMTJiZThkMTE1YWQ3OGY3ZTFiZjI3NGE1ZjE2ZWU0Y2MuLjUxZDYx
YzIxNzNhYjQzYTIwNGU2OTlhOGVhOTM0NDNhY2Y3MWY3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIxLDcg
KzMyMSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkKAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRW5zdXJlV2F0Y2hhYmlsaXR5OgogICAg
ICAgICAgICAgc2V0ID0gc3RydWN0dXJlLT5lbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hw
b2ludFNldCgKLSAgICAgICAgICAgICAgICAqSGVhcDo6aGVhcChzdHJ1Y3R1cmUpLT52bSgpLCBv
ZmZzZXQpOworICAgICAgICAgICAgICAgICpzdHJ1Y3R1cmUtPnZtKCksIG9mZnNldCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKQEAgLTM4OSw3ICszODksNyBAQCBi
b29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1ZhbGlkVmFsdWVGb3JQcmVzZW5jZShWTSYgdm0sIEpT
VmFsdWUgdmFsdWUpIGNvbnN0CiAKIFByb3BlcnR5Q29uZGl0aW9uIFByb3BlcnR5Q29uZGl0aW9u
OjphdHRlbXB0VG9NYWtlRXF1aXZhbGVuY2VXaXRob3V0QmFycmllcihWTSYgdm0sIEpTT2JqZWN0
KiBiYXNlKSBjb25zdAogewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0
dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwog
ICAgIGlmICghc3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCgpKSkKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5Q29uZGl0aW9uKCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGJhc2UtPmdldERp
cmVjdChvZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXgg
ZjI3ZTUwN2I3ZWVjMjRkZmRkZmU0MGIzZGViZjg4MTE4MjEyMmJhMy4uM2JkNDQ1MzJjZDEzMWVm
ZDY2Nzg3NzQyODdjMGM5ZWYzMWI0NGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcApAQCAtNTksMTQgKzU5LDE0IEBAIHZvaWQgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgVk0mIHZtID0gKm1fa2V5Lm9iamVjdCgpLT52bSgpOwogICAgIGlmICht
X2tleS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKSB7CiAgICAgICAgIC8v
IElmIHRoaXMgd2FzIGEgcHJlc2VuY2UgY29uZGl0aW9uLCBsZXQncyB3YXRjaCB0aGUgcHJvcGVy
dHkgZm9yIHJlcGxhY2VtZW50cy4gVGhpcyBpcyBwcm9maXRhYmxlCiAgICAgICAgIC8vIGZvciB0
aGUgREZHLCB3aGljaCB3aWxsIHdhbnQgdGhlIHJlcGxhY2VtZW50IHNldCB0byBiZSB2YWxpZCBp
biBvcmRlciB0byBkbyBjb25zdGFudCBmb2xkaW5nLgotICAgICAgICBWTSYgdm0gPSAqSGVhcDo6
aGVhcChtX2tleS5vYmplY3QoKSktPnZtKCk7Ci0gICAgICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1
Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBtX2tleS5v
ZmZzZXQoKSk7CisgICAgICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5zdGFydFdh
dGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIG1fa2V5Lm9mZnNldCgpKTsKICAgICB9
CiAKLSAgICBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmFkZFRyYW5zaXRpb25XYXRjaHBv
aW50KHRoaXMpOworICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0
aW9uV2F0Y2hwb2ludCh0aGlzKTsKIH0KIAogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZv
Ojp+V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGJjYmFiYWI1NWNhZjJhMGQxMzlkNTBjM2Mx
NjA1ZjNjNTk1M2ExZWQuLmI2NTcwYmZhZGNhYzJkZDNkZmQ0MjZiNzU3ZTBlZjIwNDI1YjhlYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMTcz
LDcgKzE3Myw4IEBAIHZvaWQgRGVidWdnZXI6OmRldGFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWFzb25Gb3JEZXRhY2ggcmVhc29uKQogICAgIC8vIHN0YWNrLCBzaW5jZSB3ZSB3
b24ndCBnZXQgZnVydGhlciBkZWJ1Z2dlciBjYWxsYmFja3MgdG8gZG8gc28uIEFsc28sIHJlc3Vt
ZSBleGVjdXRpb24sCiAgICAgLy8gc2luY2UgdGhlcmUncyBubyBwb2ludCBpbiBzdGF5aW5nIHBh
dXNlZCBvbmNlIGEgd2luZG93IGNsb3Nlcy4KICAgICAvLyBXZSBrbm93IHRoZXJlIGlzIGFuIGVu
dHJ5IHNjb3BlLCBvdGhlcndpc2UsIG1fY3VycmVudENhbGxGcmFtZSB3b3VsZCBiZSBudWxsLgot
ICAgIGlmIChtX2lzUGF1c2VkICYmIG1fY3VycmVudENhbGxGcmFtZSAmJiBnbG9iYWxPYmplY3Qt
PnZtKCkuZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmIChtX2lzUGF1c2VkICYmIG1fY3Vy
cmVudENhbGxGcmFtZSAmJiB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxP
YmplY3QpIHsKICAgICAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbnVsbHB0cjsKICAgICAgICAg
bV9wYXVzZU9uQ2FsbEZyYW1lID0gbnVsbHB0cjsKICAgICAgICAgY29udGludWVQcm9ncmFtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAK
aW5kZXggNWQ2N2VmZGFkOGNkN2IxNjA5NTYzYmFhZjI5MjIxNTg3MWZkNDFkZS4uNTUxMzZmZjQ2
MjYxODY1MGQwNzAxNTI3YzdjZWViZDY5NTZjMjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBjb25z
dCBDbGFzc0luZm8gRGVidWdnZXJTY29wZTo6c19pbmZvID0geyAiRGVidWdnZXJTY29wZSIsICZC
YXNlOjpzX2luZm8sIG51bGxwdAogCiBEZWJ1Z2dlclNjb3BlKiBEZWJ1Z2dlclNjb3BlOjpjcmVh
dGUoVk0mIHZtLCBKU1Njb3BlKiBzY29wZSkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSktPmRlYnVnZ2VyU2Nv
cGVTdHJ1Y3R1cmUoKTsKICAgICBEZWJ1Z2dlclNjb3BlKiBkZWJ1Z2dlclNjb3BlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGVidWdnZXJTY29wZT4odm0uaGVhcCkpIERlYnVnZ2VyU2Nv
cGUodm0sIHN0cnVjdHVyZSwgc2NvcGUpOwogICAgIGRlYnVnZ2VyU2NvcGUtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gZGVidWdnZXJTY29wZTsKQEAgLTExNCw3ICsxMTQsNyBAQCBi
b29sIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkp
OwogICAgIHNsb3Quc2V0VGhpc1ZhbHVlKEpTVmFsdWUodGhpc09iamVjdCkpOwotICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiB9CiAKIGJvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0xMjQs
NyArMTI0LDcgQEAgYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKICAgICBpZiAoIXNjb3BlLT5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgcmV0dXJuIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwog
fQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBEZWJ1Z2dlclNj
b3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGUKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpz
U2NvcGUoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCBzaG91bGRUaHJvdykKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIERlYnVnZ2VyU2NvcGU6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydAogICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+
anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5l
T3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAogRGVidWdnZXJTY29wZSogRGVidWdnZXJTY29w
ZTo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYTFhODM0OWM3M2JiNWRjODcxMmRmZmZh
ZjY3M2RkNmUxYTZhMjBkNC4uOGI2MGFkOThmYzk3Mjc2MDQ5MDlkZGY2NTU4NmRlM2M0YTQ0MDVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgICAgIGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKAogICAgICAgICAgICAgICAgICAgICBjaGls
ZC52YWx1ZSgpLmlzQ2VsbCgpCi0gICAgICAgICAgICAgICAgICAgID8gY2hpbGQudmFsdWUoKS5h
c0NlbGwoKS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAg
ICAgICA/IGNoaWxkLnZhbHVlKCkuYXNDZWxsKCktPnN0cnVjdHVyZShtX3ZtKS0+bWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpCiAgICAgICAgICAgICAgICAgICAgIDogY2hpbGQudmFsdWUoKS5pc1VuZGVmaW5l
ZCgpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIElzQm9vbGVh
bjoKQEAgLTEyNjUsNyArMTI2NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghKG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkg
JiBPdmVycmlkZXNHZXRDYWxsRGF0YSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc0Jvb2xlYW4oIWNoaWxkLnZhbHVlKCkuYXNDZWxsKCktPnN0cnVjdHVyZSgp
LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbighY2hpbGQudmFsdWUoKS5hc0NlbGwoKS0+c3RydWN0dXJlKG1f
dm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBqdXN0IGNhbGwgZ2V0
Q2FsbERhdGEuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NDU3CkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6
ZShKU1ZhbHVlKGFzT2JqZWN0KGNoaWxkKS0+Z2xvYmFsT2JqZWN0KCkpKSk7CisgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoSlNWYWx1ZShhc09iamVjdChjaGls
ZCktPmdsb2JhbE9iamVjdChtX3ZtKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmlu
ZGV4IDkzNmE5NzdhYzU5ZWRiMTBhNjlhOWZkMDdlNjFlNmMzNzIzYzJlYTIuLmIxMWZlM2U3YmUx
ODNiOGIyMjRhODU2YjVhNzUxNjQzZDIzNGY4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIGJvb2wgQWJz
dHJhY3RWYWx1ZTo6bWVyZ2VPU1JFbnRyeVZhbHVlKEdyYXBoJiBncmFwaCwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB9IGVsc2UgewogICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKG1fdHlwZSwgc3BlY3Vs
YXRpb25Gcm9tVmFsdWUodmFsdWUpKTsKICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUuaXND
ZWxsKCkpIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZShncmFwaC5tX3ZtKSk7CiAgICAgICAgICAg
ICBtZXJnZUFycmF5TW9kZXMobV9hcnJheU1vZGVzLCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWVyZ2UoUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
aW5kZXggYTNkMDRhZGYzN2JmZjhiNDJjOTFkNDA3OGM5N2IzOTY4NzkxOGM0OS4uOTY4NDk4ZGQ1
ODBjYmQxMzdjNTBmMDA1MjA5MGQ2ZjE3ODNlMDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBA
IC0yNTIsNyArMjUyLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgb3V0LW9mLWJvdW5kcyB0aGVu
IHdlIHByb2NlZWQgb25seSBpZiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgICAgICAgICAgICAg
Ly8gZm9yIHRoZSBhbGxvY2F0aW9uIGlzIHNhbmUgKGkuZS4gZG9lc24ndCBoYXZlIGluZGV4ZWQg
cHJvcGVydGllcykuCiAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGVkZ2UtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwogICAgICAgICAgICAgICAgIGlm
IChvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGls
bFZhbGlkKCkKICAgICAgICAgICAgICAgICAgICAgJiYgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGVJc1NhbmUoKSkgewogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5k
V2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7CkBAIC0y
NzUsOSArMjc1LDkgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgb3V0LW9mLWJvdW5kcyB0aGVuIHdl
IHByb2NlZWQgb25seSBpZiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgICAgICAgICAgICAgLy8g
Zm9yIHRoZSBhbGxvY2F0aW9uIGlzIHNhbmUgKGkuZS4gZG9lc24ndCBoYXZlIGluZGV4ZWQgcHJv
cGVydGllcykuCiAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGVkZ2UtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwogICAgICAgICAgICAgICAgIGlmIChl
ZGdlLT5vcCgpID09IENyZWF0ZVJlc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJl
KiBhcnJheVByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUo
KS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVy
ZShtX2dyYXBoLm1fdm0pOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlQcm90b3R5cGVT
dHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgZ2xv
YmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCAwZTg4ZDJhMzZmYjQ3ZDgzMDYyMjJi
Y2M5MDQ0MWI2YjMwNWUxNTdiLi4xYmFhNjJhOTIyYWQ3NDVjNjQyNGFmNmVlNjk1MmNiZjllNDFk
ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCkBAIC0y
MzksOCArMjM5LDggQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGFuIE9yaWdpbmFsQXJyYXkgYW5kIHRoZSBKU0FycmF5IHByb3RvdHlwZSBjaGFp
biBpcyBzYW5lLAogICAgICAgICAvLyBhbnkgaW5kZXhlZCBhY2Nlc3MgYWx3YXlzIHJldHVybiB1
bmRlZmluZWQuIFdlIGhhdmUgYSBmYXN0IHBhdGggZm9yIHRoYXQuCiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgU3RydWN0dXJlKiBhcnJheVByb3RvdHlwZVN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgIFN0
cnVjdHVyZSogb2JqZWN0UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5
cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZShn
cmFwaC5tX3ZtKTsKKyAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoZ3JhcGgubV92bSk7
CiAgICAgICAgIGlmICgobm9kZS0+b3AoKSA9PSBHZXRCeVZhbCB8fCBjYW5CZWNvbWVHZXRBcnJh
eUxlbmd0aChncmFwaCwgbm9kZSkpCiAgICAgICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gQXJy
YXk6Ok9yaWdpbmFsQXJyYXkKICAgICAgICAgICAgICYmICFncmFwaC5oYXNFeGl0U2l0ZShub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIE91dE9mQm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3NDQyYjgxNTcwN2I4MzdiODE2YmE4
YWE5NmVlYjc2NmE4MjQ1Y2E0Li45NjY2NDQwNjIzMTAwMjQwNTllMzg0ODQwODk0NTU3ZWZlYTVm
ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcApAQCAtMjI2NCw4ICsyMjY0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAg
ICAgY2FzZSBBcnJheTo6Q29udGlndW91czogewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2lu
KCkuc2VtYW50aWMpOwogCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICBTdHJ1Y3R1
cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlw
ZSgpLT5zdHJ1Y3R1cmUoKm1fdm0pOworICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1
cmUoKm1fdm0pOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgZWFzaWx5IHJlbGF4
IHRoZSBBcnJheS9PYmplY3QucHJvdG90eXBlIHRyYW5zaXRpb24gYXMgbG9uZyBhcyB3ZSBPU1Ig
ZXhpdHRlZCBpZiB3ZSBzYXcgYSBob2xlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzE3MQpAQCAtMjM1NCw4ICsyMzU0LDggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCBy
ZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czogewog
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOwogCi0gICAgICAgICAgICBT
dHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJv
dG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0
dXJlKCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKm1fdm0pOworICAgICAg
ICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKm1fdm0pOwogCiAgICAgICAgICAgICAvLyBG
SVhNRTogV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoZSBBcnJheS9PYmplY3QucHJvdG90eXBlIHRy
YW5zaXRpb24gYXMgbG9uZyBhcyB3ZSBPU1IgZXhpdHRlZCBpZiB3ZSBzYXcgYSBob2xlLgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzE3
MQpAQCAtMzM4OCw3ICszMzg4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRB
cnJheUNvbnN0cnVjdG9yKAogICAgIGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgIT0gY29uc3Ry
dWN0b3JDbGFzc0luZm9Gb3JUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpCisgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmpl
Y3QoKm1fdm0pICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFdlIG9ubHkgaGF2ZSBhbiBp
bnRyaW5zaWMgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBzYXk6CkBAIC0zNDI1LDcgKzM0MjUsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBpZiAoIWZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlKSkKKyAgICBpZiAoIWZ1bmN0aW9uLT5nbG9iYWxPYmpl
Y3QoKm1fdm0pLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnNlcnRDaGVja3MoKTsKQEAgLTM0NTYsNyArMzQ1Niw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigK
ICAgICB9CiAKICAgICBpZiAoZnVuY3Rpb24tPmNsYXNzSW5mbygpID09IEFycmF5Q29uc3RydWN0
b3I6OmluZm8oKSkgewotICAgICAgICBpZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKKyAgICAgICAgaWYg
KGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIGluc2VydENoZWNrcygpOwpAQCAtMzQ5Nyw3ICszNDk3LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICAg
ICAgcmVzdWx0ID0gYWRkVG9HcmFwaChDYWxsU3RyaW5nQ29uc3RydWN0b3IsIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCi0gICAgICAgICAgICByZXN1bHQgPSBh
ZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCBy
ZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3Qs
IE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3Qo
Km1fdm0pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHQpOwogICAgICAgICAKICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0zNTA5LDkgKzM1MDksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAKICAgICAgICAgTm9kZSogcmVzdWx0
OwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZvck9i
amVjdENvbnN0cnVjdG9yKCkpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5l
d09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2Jh
bE9iamVjdCgqbV92bSktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbE9iamVj
dENvbnN0cnVjdG9yLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24tPmdsb2JhbE9iamVj
dCgpKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChD
YWxsT2JqZWN0Q29uc3RydWN0b3IsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbi0+Z2xv
YmFsT2JqZWN0KCptX3ZtKSkpLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMzU3Nyw3ICszNTc3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6Y2hlY2soY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKICAgICBpZiAobV9ncmFwaC53
YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKCk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVy
ZSgqbV92bSk7CiAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0
cnVjdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZDIx
NGRmN2IwNTJlM2I1N2RhZTc3NTBkNmUwMWVlYzZiNTNhYzhmZS4uOTk5NzZlMDAyNTRjN2JhNWY3
OTAwZGNjNTljNGZjZTYzNThjYTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTYyMiw3ICs2MjIsNyBAQCBj
bGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC53YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlv
bi5vYmplY3QoKS0+c3RydWN0dXJlKG1fZ3JhcGgubV92bSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3RydWN0dXJlKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEdvb2QgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExNDksNyArMTE0OSw3IEBAIGNsYXNzIENv
bnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAg
ICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOwor
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShjZWxsLT5zdHJ1Y3R1cmUobV9n
cmFwaC5tX3ZtKSwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU3RydWN0dXJl
UmVnaXN0ZXJlZEFuZFdhdGNoZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA1ZGM4
NTk2NzVkZmU3NTNiNmNjODQyMTM2YWNjMmZmMTEyOTY2YTViLi4xOTM0NmUwYTM3ZTE2MmQzMzk5
M2YzMTA4ODcyNGM4NjljN2MxMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTcxNCw4ICs3MTQsOCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlm
IChjYW5Eb1NhbmVDaGFpbikgewogICAgICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90
eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBlU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChhcnJheVByb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0
aWxsVmFsaWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+
YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CkBAIC0xMTg0LDggKzExODQsOCBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIFdoZW4gd2UgZ28g
ZG93biB0aGUgZmFzdCBwYXRoLCB3ZSBkb24ndCBjb25zdWx0IHRoZSBwcm90b3R5cGUgY2hhaW4s
IHNvIHdlIG11c3QgcHJvdmUKICAgICAgICAgICAgIC8vIHRoYXQgaXQgZG9lc24ndCBjb250YWlu
IGFueSBpbmRleGVkIHByb3BlcnRpZXMsIGFuZCB0aGF0IGFueSBob2xlcyB3aWxsIHJlc3VsdCBp
bgogICAgICAgICAgICAgLy8ganNVbmRlZmluZWQoKS4KLSAgICAgICAgICAgIFN0cnVjdHVyZSog
YXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCkt
PnN0cnVjdHVyZSgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKKyAgICAgICAgICAgIFN0cnVj
dHVyZSogb2JqZWN0UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVBcnJheSgpCiAgICAgICAgICAgICAgICAgJiYgYXJyYXlQcm90b3R5
cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkKICAgICAg
ICAgICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBv
aW50U2V0SXNTdGlsbFZhbGlkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAK
aW5kZXggZTE3YWM3ZDBmYTk4MDJkZjY5ZmJkMmU0NWQ2YjI5NjE4YTgyYjNmMi4uZGNiYzJkMTI5
M2E0NDYxMDgyN2M4MmEyMWZmNWU2YTMyMGE1ZTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKQEAgLTEyNzQsNyArMTI3NCw3IEBAIEpTVmFsdWUgR3JhcGg6OnRyeUdl
dENvbnN0YW50UHJvcGVydHkoCiAgICAgLy8gaW5jb21wYXRpYmxlIHdpdGggdGhlIGdldERpcmVj
dCB3ZSdyZSB0cnlpbmcgdG8gZG8uIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0IGlzIHRvCiAg
ICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBzdHJ1Y3R1cmUgYmVsb25ncyB0byB0aGUgcHJvdmVuIHNl
dC4KICAgICAKLSAgICBpZiAoIXN0cnVjdHVyZVNldC50b1N0cnVjdHVyZVNldCgpLmNvbnRhaW5z
KG9iamVjdC0+c3RydWN0dXJlKCkpKQorICAgIGlmICghc3RydWN0dXJlU2V0LnRvU3RydWN0dXJl
U2V0KCkuY29udGFpbnMob2JqZWN0LT5zdHJ1Y3R1cmUobV92bSkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgIAogICAgIHJldHVybiBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTA4ZDJl
OTE5NzMxZWEwMzZmNzM4ODVhMDBiMzE0NWRlMzQxNzBhOS4uNzc3NzM2OGQ2YmFiYjc2ODNmZTJm
ZWYzZDRkNTk1MjdlMmVhYTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCkBAIC0xNTE3LDggKzE1MTcsOCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5
UwogICAgIGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRl
cmZseSo+KGltbXV0YWJsZUJ1dHRlcmZseUNlbGwpOwogICAgIEFTU0VSVChhcnJheVN0cnVjdHVy
ZS0+aW5kZXhpbmdNb2RlKCkgPT0gaW1tdXRhYmxlQnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSB8
fCBoYXNBbnlBcnJheVN0b3JhZ2UoYXJyYXlTdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKSk7CiAg
ICAgYXV0byogcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjphbGxvY2F0ZU5ld0FycmF5QnVmZmVy
KHZtLCBhcnJheVN0cnVjdHVyZSwgaW1tdXRhYmxlQnV0dGVyZmx5KTsKLSAgICBBU1NFUlQocmVz
dWx0LT5pbmRleGluZ01vZGUoKSA9PSByZXN1bHQtPnN0cnVjdHVyZSgpLT5pbmRleGluZ01vZGUo
KSk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+c3RydWN0dXJlKCkgPT0gYXJyYXlTdHJ1Y3R1cmUpOwor
ICAgIEFTU0VSVChyZXN1bHQtPmluZGV4aW5nTW9kZSgpID09IHJlc3VsdC0+c3RydWN0dXJlKHZt
KS0+aW5kZXhpbmdNb2RlKCkpOworICAgIEFTU0VSVChyZXN1bHQtPnN0cnVjdHVyZSh2bSkgPT0g
YXJyYXlTdHJ1Y3R1cmUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE4MzgsNyArMTgz
OCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVDb21wbGV4UHJvcGVy
dHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBBU1NF
UlQoIW9iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VS
VCghb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCiAgICAgICAgIG9iamVjdC0+YWxsb2NhdGVNb3Jl
T3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5KSk7CiB9CkBA
IC0xODQ5LDcgKzE4NDksNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRl
Q29tcGxleFByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTTwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPigKLSAgICAgICAgb2JqZWN0LT5hbGxvY2F0ZU1vcmVPdXRPZkxpbmVTdG9y
YWdlKHZtLCBvYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXpl
KSk7CisgICAgICAgIG9iamVjdC0+YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXplKSk7CiB9CiAK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlSW50MzIoRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIGNlbGwpCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ByZWFkR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogaXRlcmFi
bGUpCiAgICAgewogICAgICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRpb25GdW5jdGlvbiA9IGdsb2Jh
bE9iamVjdC0+aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCk7CiAgICAgICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoaXRl
cmF0aW9uRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBK
U0M6OmdldENhbGxEYXRhKHZtLCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDJmMDU0NjdiMTY2NDI2MzI1ZGMxMmQ5MGFkNmZi
NmI1NGU5MTFiMi4uNGE5OTg1ZTZlMDFiY2I3NjAwNTQ0ZDU5Y2MyZDhhYTc2ZDU3MzFiZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTIyMjEsOCArMjIyMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAvLyBvbiBhIHN0cmluZ1Byb3RvdHlwZUNo
YWluSXNTYW5lKCkgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIHByb3RvdHlwZXMgaGF2ZSBubyBuZWdh
dGl2ZQogICAgICAgICAgICAgLy8gaW5kZXhlZCBwcm9wZXJ0aWVzIGVpdGhlci4KICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKLSAg
ICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRp
b24oZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKCkpOwotICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGdsb2Jh
bE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCktPnN0cnVjdHVyZSgqbV9qaXQudm0oKSkpOworICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlv
bihnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKm1faml0LnZtKCkp
KTsKICAgICAgICAgICAgIHByb3RvdHlwZUNoYWluSXNTYW5lID0gZ2xvYmFsT2JqZWN0LT5zdHJp
bmdQcm90b3R5cGVDaGFpbklzU2FuZSgpOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5
cGVDaGFpbklzU2FuZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggNWMxYzk3ZDNkYTQ1NzE2OTBkZTQ2
OTEwYmU5NTg3YzQxYTJiNTE3MC4uMmU5OGI4MmQ4NGUyZjA3MDQyYjJmMTNmYWU3MDU4ODE1MTZi
NWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgY2xhc3MgU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAKICAgICAgICAgY2FzZSBHZXRHbG9iYWxP
YmplY3Q6IHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gbV9ub2RlLT5jaGls
ZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU09iamVjdCo+KHZtKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIG9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2Rl
LCBvYmplY3QtPmdsb2JhbE9iamVjdCh2bSgpKSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBjY2EwNjRhNjcz
ZDUwM2I5MWI0MzUyZmM1MzhlNGEwZDEzZjVjNDE4Li5jNjAzYTJhZWIzYzUyMWRiMDZhMTdhYTc2
ZGUyMjkxMjNjNTIxOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC02MzEzLDggKzYzMTMsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFpbk91dE9mQm91bmRzLgogICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1
Y3R1cmVUcmFuc2l0aW9uKGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCktPnN0cnVjdHVy
ZSgpKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVU
cmFuc2l0aW9uKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0
aW9uKGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKSk7Cisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlv
bihnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSkpOwogCiAg
ICAgICAgICAgICAgICAgcHJvdG90eXBlQ2hhaW5Jc1NhbmUgPSBnbG9iYWxPYmplY3QtPnN0cmlu
Z1Byb3RvdHlwZUNoYWluSXNTYW5lKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCBhNzc2NTViYTI0YjAzNjgyNTYwZjE3
OGY5YTAyZjQ3ZjU4MjMzODRkLi5iMDE2ZTE4OGFkZWQ5YTlkNTI4MmI1ZjUwYzlmMmVlZGUzYmEz
OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9w
dWxhdGVPYmplY3RJbk9TUigKICAgICBzd2l0Y2ggKG1hdGVyaWFsaXphdGlvbi0+dHlwZSgpKSB7
CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OiB7CiAgICAgICAgIEpTRmluYWxPYmplY3QqIG9i
amVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKCplbmNvZGVkVmFs
dWUpKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSgp
OworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsK
IAogICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdGhlIGhlY2sgdG8gcG9wdWxhdGUgdGhlIG9i
amVjdCB3aXRoLiBVc2UKICAgICAgICAgLy8gZ2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpIGJl
Y2F1c2UgdGhhdCBoYXBwZW5zIHRvIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggZmUxMTMzYzdm
ZWI1ZWRhYmM0YzM2YTg1ZTBhMjA1YTRiMDBjZTYyYi4uZjVhYzRkZTA4Y2YzOWYzMTQ5NDAyNDgy
NTI2YmY1MTlkODk0MjhmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IEpTQzo6SlNPYmplY3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShm
dW5jdGlvblZhbHVlLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cAppbmRleCAwOTNjZDRhNDk5M2EzNTliMWUyODRiMDA4ZDY3ZWIzOTRiMGY0Mzk3Li5hNDAwNDI1
Yjg1MWM3ODdhMThjNjM1N2QxMTU5MzdiNzE4ZTliOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBA
IC0xNTUsNyArMTU1LDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlRGVz
Y3JpcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKIAogSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJh
bWU6OmNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5jYWxsZXIoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBpbXBsKCkuY2FsbGVyKCkpOwogfQogCiBKU1Zh
bHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c291cmNlSUQoRXhlY1N0YXRlKikgY29uc3QKQEAg
LTIwMyw3ICsyMDMsNyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFp
bihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0g
ICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCgpLCBs
aXN0KTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2Jq
ZWN0KHZtKSwgbGlzdCk7CiB9CiAKIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0aGlz
T2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IDU1OTcwNGY1NTU4M2JjNzUyNzdjZTA5ZDJkZGZk
NWE3YTFmNzI5ZjMuLjJiNjMxZTIwNWY2M2FkNmQ4ZDM1MmQ0YWYyNWY2MDFlM2FlYjU0ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBA
IC0yMjAsNyArMjIwLDcgQEAgSlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6d2FzbUF3YXJlTGV4
aWNhbEdsb2JhbE9iamVjdChWTSYgdm0pCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlm
ICghY2FsbGVlKCkuaXNXYXNtKCkpCiAgICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0
KCk7Ci0gICAgcmV0dXJuIHZtLndhc21Db250ZXh0LmxvYWQoKS0+b3duZXI8SlNXZWJBc3NlbWJs
eUluc3RhbmNlPigpLT5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gdm0ud2FzbUNvbnRleHQu
bG9hZCgpLT5vd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPmdsb2JhbE9iamVjdCh2bSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxP
YmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGJiNjIzY2FjNjk0Y2Y5NTIwNDI0NmEzMzQyZWRmOWZmMmQ0NTg1MWUu
Ljk1ZGE4ZWUyOTU2NmUyNTFhYmI3NGNhMGI2Nzk0N2Y1Mjk2MzhiOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtODAxLDYg
KzgwMSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAgICAgLy8gd2UnbGwgaGFuZGxlIHRo
ZSBKU09OIG9iamVjdCBoZXJlLiBFbHNlLCB3ZSdsbCBoYW5kbGUgcmVhbCBKUyBjb2RlCiAgICAg
Ly8gYmVsb3cgYXQgZmFpbGVkSlNPTlAuCiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgVmVjdG9yPEpTT05QRGF0YT4gSlNP
TlBEYXRhOwogICAgIGJvb2wgcGFyc2VSZXN1bHQ7CiAgICAgU3RyaW5nVmlldyBwcm9ncmFtU291
cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudmlldygpOwpAQCAtODA4LDE1ICs4MDksMTQgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBDYWxsRnJhbWUqIGNhbGxGcmEKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
aWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hh
cj4gbGl0ZXJhbFBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwg
cHJvZ3JhbVNvdXJjZS5sZW5ndGgoKSwgSlNPTlApOwotICAgICAgICBwYXJzZVJlc3VsdCA9IGxp
dGVyYWxQYXJzZXIudHJ5SlNPTlBQYXJzZShKU09OUERhdGEsIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29w
ZS0+Z2xvYmFsT2JqZWN0KCkpKTsKKyAgICAgICAgcGFyc2VSZXN1bHQgPSBsaXRlcmFsUGFyc2Vy
LnRyeUpTT05QUGFyc2UoSlNPTlBEYXRhLCBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oZ2xvYmFsT2JqZWN0KSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gbGl0ZXJhbFBhcnNlcihjYWxsRnJh
bWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczE2KCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCks
IEpTT05QKTsKLSAgICAgICAgcGFyc2VSZXN1bHQgPSBsaXRlcmFsUGFyc2VyLnRyeUpTT05QUGFy
c2UoSlNPTlBEYXRhLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oc2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7Cisg
ICAgICAgIHBhcnNlUmVzdWx0ID0gbGl0ZXJhbFBhcnNlci50cnlKU09OUFBhcnNlKEpTT05QRGF0
YSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICBpZiAocGFyc2VSZXN1bHQpIHsKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgZW50cnkgPSAwOyBlbnRy
eSA8IEpTT05QRGF0YS5zaXplKCk7IGVudHJ5KyspIHsKICAgICAgICAgICAgIFZlY3RvcjxKU09O
UFBhdGhFbnRyeT4gSlNPTlBQYXRoOwpAQCAtODk0LDcgKzg5NCw3IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1l
KiBjYWxsRnJhCiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGJhc2VPYmplY3Qu
Z2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoLmxhc3QoKS5tX3BhdGhFbnRyeU5hbWUpOwogICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKICAg
ICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgICAgICAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxE
YXRhKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGNhbGxGcmFtZSwgZnVuY3Rpb24pKTsKICAg
ICAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBqc29uQXJnOwpAQCAtOTI3LDcgKzky
Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRo
ZW4gd2UgaGF2ZSBhbHJlYWR5IHByb3ZlbiB0aGF0IHRoZSBzY3JpcHQgaXMgbm90IGEgSlNPTgog
ICAgIC8vIG9iamVjdC4KIAotICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCkpOworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBnbG9iYWxP
YmplY3QpOwogCiAgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8gYnl0ZWNvZGUgaWYgbmVjZXNzYXJ5
OgogICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0
aWVzKHZtLCBjYWxsRnJhbWUsIHNjb3BlKTsKQEAgLTk1MSwxMyArOTUxLDEzIEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAgfQogCi0gICAgaWYgKHNjb3BlLT5zdHJ1Y3R1
cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKKyAgICBpZiAoc2NvcGUtPnN0cnVjdHVy
ZSh2bSktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5mbGF0dGVu
RGljdGlvbmFyeU9iamVjdCh2bSk7CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAKICAgICBQcm90b0NhbGxG
cmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywg
SlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSksIHRoaXNP
YmosIDEpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKSwgdGhpc09iaiwgMSk7CiAKICAgICAvLyBFeGVj
dXRlIHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwpAQCAtOTg0LDEwICs5ODQs
MTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFQKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAg
ICAgICBzY29wZSA9IGNhbGxEYXRhLmpzLnNjb3BlOwotICAgICAgICBnbG9iYWxPYmplY3QgPSBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9i
YWxPYmplY3Qodm0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBD
YWxsVHlwZTo6SG9zdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9IGZ1bmN0aW9uLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZnVuY3Rpb24tPmdsb2JhbE9iamVjdCh2
bSk7CiAgICAgfQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVj
dCk7CkBAIC0xMDUxLDEwICsxMDUxLDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0
ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAKICAg
ICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICBzY29wZSA9IGNvbnN0cnVjdERhdGEuanMu
c2NvcGU7Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCk7
Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
fQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7CkBAIC0x
MTM3LDcgKzExMzcsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRh
YmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIGlmICh2bS5pc0Nv
bGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
Ci0gICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7
CisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0p
KTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCiAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSkpOwogCkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmFyaWFibGVPYmplY3QtPnN0cnVj
dHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQorICAgIGlmICh2YXJpYWJsZU9iamVj
dC0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAgdmFy
aWFibGVPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKIAogICAgIGlmIChudW1W
YXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3Rp
bmdDYW5kaWRhdGVzKSB7CiAgICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGlt
aXplcih2bSwgdmFyaWFibGVPYmplY3QpOwogICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5l
eHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICB2YXJpYWJsZU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwg
IkV4ZWN1dGVkIGV2YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CisgICAgICAg
ICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+dmFySW5qZWN0aW9uV2F0Y2hw
b2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdh
dGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFi
bGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJs
b2NrLT52YXJpYWJsZShpKTsKQEAgLTEyNjQsNyArMTI2NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAx
IHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJh
bWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUo
dm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSwgc2NvcGUpLCB0aGlzVmFsdWUsIDEpOworICAgIHBy
b3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KHZtKSwgc2NvcGUpLCB0aGlzVmFsdWUsIDEpOwogCiAgICAgLy8gRXhlY3V0
ZSB0aGUgY29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTEyODUsNyArMTI4NSw3
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9u
Q3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBWTUVudHJ5
U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBWTUVudHJ5
U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCh2bSkpOwogICAgIGlmIChV
TkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7
CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1
bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDCiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7
CiAgICAgfQogCi0gICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkKKyAgICBpZiAoc2NvcGUtPnN0cnVjdHVyZSh2bSktPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CiAK
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1l
dGVyIGZvciAndGhpcycuCkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgQwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZwogICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZwogICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0Nh
bGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmlu
ZWQoKSwgMSk7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpj
cmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLCBzY29wZSksIGpzVW5kZWZpbmVkKCks
IDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGU3
ODhkNjQ4YTRhYmUyNDliNDQ2NWZjNDAyOGJhNzFkMTFmMTlkZDQuLmQzODFjMWQyZjQxYjliMGQx
Mzg1NmViNDI1YzRjZDliNjU1YTBiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtOTc2LDcgKzk3Niw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxl
ZSwKIAogICAgIGlmIChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVG
b3JDYWxsKSB7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKCp2bSwgY2FsbGVlLCBjYWxsRGF0YSk7CiAgICAgCiAg
ICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMpOwogICAgIApAQCAtMTAwNSw3
ICsxMDA1LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLAogICAgIEFTU0VSVChjYWxsTGlua0lu
Zm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIAogICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVj
dFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgQ29u
c3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YSgqdm0sIGNhbGxlZSwg
Y29uc3RydWN0RGF0YSk7CiAgICAgCiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3Ry
dWN0VHlwZTo6SlMpOwogICAgIApAQCAtMTgyMiw3ICsxODIyLDcgQEAgaW50MzJfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20oRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZQogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEhhc0luc3RhbmNlKTsKIAotICAgIEFTU0VSVChoYXNJbnN0YW5jZVZhbHVlICE9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24oKSB8fCAhY29uc3RydWN0b3ItPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKGhhc0luc3RhbmNlVmFsdWUgIT0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbigpIHx8ICFjb25zdHJ1Y3Rvci0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwogCiAgICAgaWYgKGNvbnN0cnVjdG9yLT5oYXNJ
bnN0YW5jZShleGVjLCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpCiAgICAgICAgIHJldHVybiAx
OwpAQCAtMTg3Miw4ICsxODcyLDggQEAgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEIKICAgICAgICAg
ICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYg
aSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXli
ZSBEb3VibGU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Mjk0MAotICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IG9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRP
ZkJvdW5kcyA9IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+
c3RydWN0dXJlKCkpICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgp
OworICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICAgICAgICAgICAgICBza2lwTWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFs
T2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAm
JiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKCFza2lwTWFya2luZ091dE9mQm91bmRzICYmICFDb21tb25T
bG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KCpvYmplY3QsIGkpKSB7CkBA
IC0yNDMyLDcgKzI0MzIsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2Nh
dGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgQVNTRVJUKCFvYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KTsKKyAgICBBU1NFUlQoIW9iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGlu
ZVN0b3JhZ2Uodm0sIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSk7CiAgICAgb2JqZWN0LT5u
dWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvYmplY3QtPnN0cnVjdHVyZUlEKCksIHJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CkBAIC0y
NDQzLDcgKzI0NDMsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVC
dXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UoRXhlY1N0YXRlKgogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwog
Ci0gICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0
b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1Np
emUpOworICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5hbGxvY2F0ZU1vcmVPdXRPZkxp
bmVTdG9yYWdlKHZtLCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCks
IG5ld1NpemUpOwogICAgIG9iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwg
b2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCByZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
aW5kZXggOGYxOWZhMzAyZjg2MjAxOGVmNTRkYjRjYTFkMDQyNjk5ZWJhYzdiMS4uZGQ2YzI1NDc5
YTNiZWZiODQxOWYzZGU1YmU3MDRkNDQzNTFmODI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCkBAIC02MjMsNyArNjIzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlSW5CeUlEKAogICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZXhlYykpCiAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYmFz
ZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCAoIXdhc0Zv
dW5kICYmICFiYXNlLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZUZv
ckFic2VuY2UoKSkpCisgICAgICAgIGlmICghYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvcGVydHlB
Y2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHx8ICghd2FzRm91bmQgJiYgIWJhc2UtPnN0cnVjdHVyZSh2
bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGVGb3JBYnNlbmNlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIAogICAgICAgICBpZiAod2FzRm91bmQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzdmODEzOWM5N2FhZDg5N2ZiYzk3YTA5MDVlYWRh
OGFkOTliZTBjNC4uNGNiYmIzZDg4YWI4NGFmZTBhM2YwMWQzZTAyNmY3ZjhjZGViOTgwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE2NjIsNyArMTY2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRl
KiBleGVjCiAKICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShj
YWxsYmFjaywgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
dm0sIGNhbGxiYWNrLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGNhbGxiYWNr
IikpKSk7CiAgICAgCkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICh2YWx1ZS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVj
dCh2YWx1ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdCh2YWx1ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMo
ZXhlYy0+dm0oKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxz
ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAppbmRleCBkZTRjMTM0NTJmNGJlOGNiYTY0N2VjMzdkMWJiNWUzZGMzNDUwYWRjLi5jNzQx
NzE0MWUyOTc1NGQ3MmEzOTIwM2M3MGM4YjExNjA5N2JlYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgSlNW
YWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7CiAKICAgICBB
U1NFUlQoY29uc3RydWN0b3IuaXNPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGhhc0luc3RhbmNlVmFs
dWUgIT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbigpIHx8ICFjb25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKKyAgICBBU1NF
UlQoaGFzSW5zdGFuY2VWYWx1ZSAhPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0
aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgfHwgIWNvbnN0cnVjdG9yLmdldE9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihjb25zdHJ1Y3Rvci5n
ZXRPYmplY3QoKS0+aGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpKTsK
ICAgICBMTElOVF9SRVRVUk4ocmVzdWx0KTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgfQogCiAgICAg
ICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc2xv
dC5pc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQg
dGhlIG9sZCBjYWNoZS4KICAgICAgICAgICAgIHBjWzRdLnUucG9pbnRlciA9IG51bGxwdHI7IC8v
IG9sZCBzdHJ1Y3R1cmUKQEAgLTY0NSw3ICs2NDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3Rv
dHlwZUNhY2hlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBJbnN0cnVjdGlvbiogcGMsIEpTQ2Vs
bCogYmFzZUNlbGwsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgaWYgKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNzMzLDcgKzczMyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfaWQpCiAgICAgICAgIH0KIAogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZh
bHVlLmFzQ2VsbCgpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBv
dXQgdGhlIG9sZCBjYWNoZS4KICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6Omdl
dE9wY29kZShvcF9nZXRfYnlfaWQpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgICYmIGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRP
cGNvZGUob3BfZ2V0X2FycmF5X2xlbmd0aCk7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQ
cm9maWxlID0gY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KHBjKSk7Ci0gICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgYXJyYXlQcm9maWxlLT5v
YnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAg
ICAgIHBjWzRdLnUuYXJyYXlQcm9maWxlID0gYXJyYXlQcm9maWxlOwogCiAgICAgICAgIC8vIFBy
ZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgpAQCAtODI3LDcg
KzgyNyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxQdXRCeUlkRmxhZ3M+KHBjWzhdLnUucHV0QnlJZEZsYWdzICYg
UHV0QnlJZFBlcnNpc3RlbnRGbGFnc01hc2spOwogICAgICAgICAKICAgICAgICAgSlNDZWxsKiBi
YXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQogICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQpAQCAtOTE5LDggKzkxOSw4
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywKICAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4
aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVyZmx5
KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0
aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAot
ICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpICYmIGdsb2Jh
bE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpOworICAgICAgICAgICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAg
ICAgICBza2lwTWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAmJiBnbG9iYWxPYmplY3QtPmFycmF5
UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KCFza2lwTWFya2luZ091dE9mQm91bmRzICYmICFDb21tb25TbG93UGF0aHM6OmNhbkFjY2Vzc0Fy
Z3VtZW50SW5kZXhRdWlja2x5KCpvYmplY3QsIGkpKQpAQCAtMTM2OCw3ICsxMzY4LDcgQEAgc3Rh
dGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywKIAogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAg
ICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKHZtLCBjYWxsZWUsIGNhbGxEYXRhKTsKICAgICAKICAgICAgICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpKUyk7CiAgICAgCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBz
dGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLAogICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgIAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1
Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0
RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0
YSh2bSwgY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKICAgICAKICAgICBBU1NFUlQoY29uc3RydWN0
VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpKUyk7CiAgICAgCkBAIC0xODM0LDcgKzE4MzQsNyBAQCBl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19l
cnJvcihWTSogdm0sIFByb3RvQ2FsbAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKCp2bSk7CiAKICAgICBpZiAoIWV4ZWMpCi0gICAgICAgIGV4ZWMgPSBwcm90b0ZyYW1lLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgZXhlYyA9IHBy
b3RvRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKnZtKS0+Z2xvYmFsRXhlYygpOwogICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KDAsIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGMwNjA5OWY4MmMxZWZlZWZhNTBhZTZi
OWRjNzA3N2ZmNjg3MTU3YTQuLmVlODkxMDFjMzM5Nzg3YWU1YjViN2U4OGQ1OGVlZTQ3MDc1ZTI4
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9k
dWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFj
dE1vZHVsZVJlY29yZC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCiAgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShleGVjLCB2bSwgZ2xv
YmFsT2JqZWN0KCktPm1hcFN0cnVjdHVyZSgpKTsKKyAgICBKU01hcCogbWFwID0gSlNNYXA6OmNy
ZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0KHZtKS0+bWFwU3RydWN0dXJlKCkpOwogICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNl
dCh2bSwgdGhpcywgbWFwKTsKICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCBBU0NJSUxpdGVyYWwoImRlcGVuZGVuY2llc01hcCIpKSwgbV9kZXBlbmRlbmNpZXNN
YXAuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcAppbmRleCBhYzZmM2U5NzllMTBiODQzOTlmZGIyNGFmNmRmYTNmNjhhNDg1
NjNhLi4yZWY1OTE4ODJhNGRlYTU3MWU1YmFhZjI3ZjBhOWQ5NzczYmIxNWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAt
ODksNyArODksOCBAQCBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0
YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcgogCiBzdGF0aWMgaW5saW5lIEpT
QXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVl
KCkpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwogCiAgICAgLy8gYSBzaW5nbGUgbnVtZXJp
YyBhcmd1bWVudCBkZW5vdGVzIHRoZSBhcnJheSBzaXplICghKQogICAgIGlmIChhcmdzLnNpemUo
KSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCmluZGV4IGRjMWE5ZGE5N2YyN2RlODM3ZGFhZjJkZmQ5MTUzZDExNTg3MTc3NmMuLjNh
ODIzMzQ5NWZjZWE2ZmMyMzJmNzBiZTQzNTE2MDkwYmVkYTI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTE5NCw3ICsxOTQs
OCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgSlNPYmplY3QqIG9iaiwgdW5zaQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc3BlY2ll
c1dhdGNocG9pbnRJc1ZhbGlkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3Qp
CiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgQXJyYXlQ
cm90b3R5cGUqIGFycmF5UHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgp
OwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRl
T25KU1RocmVhZCgpID09IENsZWFyV2F0Y2hwb2ludCkgewpAQCAtMjAyLDggKzIwMyw4IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjCiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmFycmF5
U3BlY2llc1dhdGNocG9pbnQoKS5zdGF0ZU9uSlNUaHJlYWQoKSAhPSBDbGVhcldhdGNocG9pbnQp
OwogICAgIH0KIAotICAgIHJldHVybiAhdGhpc09iamVjdC0+aGFzQ3VzdG9tUHJvcGVydGllcygp
Ci0gICAgICAgICYmIGFycmF5UHJvdG90eXBlID09IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdChnbG9iYWxPYmplY3QtPnZtKCkpCisgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5oYXNDdXN0
b21Qcm9wZXJ0aWVzKHZtKQorICAgICAgICAmJiBhcnJheVByb3RvdHlwZSA9PSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pCiAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlT
cGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRlT25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIApA
QCAtMjM4LDcgKzIzOSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVz
Q29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNpZXNDb25zdHJ1CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKICAgICAgICAgaWYgKGNv
bnN0cnVjdG9yLmlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIGNvbnN0
cnVjdG9yT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY29uc3RydWN0b3IpOwotICAgICAgICAg
ICAgaWYgKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSAhPSBjb25zdHJ1Y3Rvck9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpCisgICAgICAgICAgICBpZiAoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpICE9IGNvbnN0cnVjdG9yT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKQogICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0
aCwgbnVsbHB0cik7OwogICAgICAgICB9CiAgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc09iamVj
dCgpKSB7CkBAIC00MDYsNyArNDA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIWZ1bmN0aW9u
LmlzQ2VsbCgpKQogICAgICAgICBjdXN0b21Kb2luQ2FzZSA9IHRydWU7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAg
ICAgICBjdXN0b21Kb2luQ2FzZSA9IHRydWU7CiAKQEAgLTQ4NSw3ICs0ODYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgSlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBlbGVt
ZW50LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0xvY2FsZVN0cmluZyk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAg
ICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICAgICAgICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNvbnZlcnNpb25GdW5jdGlvbiwg
Y2FsbERhdGEpOwogICAgICAgICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7
CiAjaWYgRU5BQkxFKElOVEwpCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoZXhlYywg
Y29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVsZW1lbnQsIGFyZ3VtZW50
cyk7CkBAIC0xNDE4LDcgKzE0MTksNyBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjp0cnlJbml0aWFs
aXplU3BlY2llc1dhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFs
Ojp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJJbml0aWFsaXppbmcgQXJyYXkgc3BlY2llcyB3
YXRjaHBvaW50cyBmb3IgQXJyYXkucHJvdG90eXBlOiAiLCBwb2ludGVyRHVtcCh0aGlzKSwgIiB3
aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+c3RydWN0dXJlKCkpLCAiXG5hbmQg
QXJyYXk6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPmdsb2JhbE9iamVjdCgpLT5hcnJheUNvbnN0cnVj
dG9yKCkpLCAiIHdpdGggc3RydWN0dXJlOiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmpl
Y3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpLT5zdHJ1Y3R1cmUoKSksICJcbiIpOworICAgICAgICBk
YXRhTG9nKCJJbml0aWFsaXppbmcgQXJyYXkgc3BlY2llcyB3YXRjaHBvaW50cyBmb3IgQXJyYXku
cHJvdG90eXBlOiAiLCBwb2ludGVyRHVtcCh0aGlzKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9p
bnRlckR1bXAodGhpcy0+c3RydWN0dXJlKHZtKSksICJcbmFuZCBBcnJheTogIiwgcG9pbnRlckR1
bXAodGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3aXRoIHN0
cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlDb25z
dHJ1Y3RvcigpLT5zdHJ1Y3R1cmUodm0pKSwgIlxuIik7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0
byBtYWtlIHN1cmUgdGhhdCB0aGUgQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yIHByb3BlcnR5
IHBvaW50cyB0byBBcnJheQogICAgIC8vIGFuZCB0aGF0IEFycmF5W1N5bWJvbC5zcGVjaWVzXSBp
cyB0aGUgcHJpbW9yZGlhbCBHZXR0ZXJTZXR0ZXIuCiAKQEAgLTE0MjgsNyArMTQyOSw3IEBAIHZv
aWQgQXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVy
ZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIHRoaXMpOwogICAgIFJFTEVBU0VfQVNT
RVJUKCFwcm90b3R5cGVTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKIAotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBBcnJh
eUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5hcnJheUNvbnN0
cnVjdG9yKCk7CiAKICAgICBhdXRvIGludmFsaWRhdGVXYXRjaHBvaW50ID0gWyZdIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCmluZGV4IGE3NGE3NzY1MWFmMTI0ZGY2MzUyNzNmOGMzNzI4ZWQ1YzNjOTM1
N2MuLmRhNjRkZWExYzIzNzk1Y2JlYWRjNTdlZjcxYmIzNzRmOTYwZGE2NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6QXN5bmMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpBc3luYykpOwogfQogCiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZTkwYTA2M2M1NTM1M2VkYzllNzY4NzdhNmJhYzIz
OGNmMzMzYTIzNi4uOTEyN2FkOWNiMzcyNWQ3OGFiZWQ2MjA2MzcyMTVmYzdhODUyYTg2NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAg
Y29uc3QgQ2xhc3NJbmZvIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiQXN5bmNHZW5lcmF0b3JGdW4KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkFzeW5jR2VuZXJhdG9yKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVl
KCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVyYXRvcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkFzeW5jR2VuZXJhdG9yKSk7CiB9CiAKIEFzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAppbmRleCA5Zjk3ZmJlYWQ4ODExZmIzMjAw
Mjg4NDU0ZGI2ZTc4MTE3OWY2ZjllLi5iOGZhNjZjNWY2NTMyMDQ3M2M4ODgzMGZlYmJiMTMzNjQ4
NDZjYmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGUKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIGJvb2xlYW4gPSBqc0Jvb2xlYW4oZXhlYy0+YXJn
dW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKTsKLSAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5TdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVj
LT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0
dXJlKiBib29sZWFuU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9u
Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPmJvb2xlYW5PYmplY3RTdHJ1
Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0gQm9vbGVhbk9iamVjdDo6Y3JlYXRlKHZtLCBi
b29sZWFuU3RydWN0dXJlKTsKICAgICBvYmotPnNldEludGVybmFsVmFsdWUodm0sIGJvb2xlYW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKaW5kZXggOGY0NjFkMDAzN2VhNDcwNmU1YmM3OWUyYTVhNDZjYjc0ODczMjg5OC4uMTg1MjE1
NTMwMzQ2ZjVhMjJjY2QxYjBhMGRlMmZhODk2YzFkZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0eSgKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKLSAgICBpZiAoVU5MSUtFTFko
c3RydWN0dXJlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSB8fCBzdHJ1Y3R1cmUtPnN0
b3JlZFByb3RvdHlwZU9iamVjdCgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkgeworICAgIGlm
IChVTkxJS0VMWShzdHJ1Y3R1cmUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIHx8IHN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKHZt
KSkpIHsKICAgICAgICAgYnV0dGVyZmx5ID0gY3JlYXRlQXJyYXlTdG9yYWdlQnV0dGVyZmx5KHZt
LCBudWxscHRyLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IHZlY3Rvckxlbmd0
aDsKICAgICB9IGVsc2UgewpAQCAtODAsNyArODAsNyBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25l
ZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkoRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBjYWxs
ZQogICAgIC8vIE5CLiBTb21lIGNsaWVudHMgbWlnaHQgZXhwZWN0IHRoYXQgdGhlIGdsb2JhbCBv
YmplY3Qgb2Ygb2YgdGhpcyBvYmplY3QgaXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAvLyBvZiB0
aGUgY2FsbGVlLiBXZSBkb24ndCBkbyB0aGlzIGZvciBub3csIGJ1dCBtYXliZSB3ZSBzaG91bGQu
CiAgICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBjcmVhdGVFbXB0eSh2bSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBs
ZW5ndGgpOwotICAgIEFTU0VSVCghcmVzdWx0LT5uZWVkc1Nsb3dQdXRJbmRleGluZygpIHx8IHNo
b3VsZFVzZVNsb3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5pbmRleGluZ1R5cGUoKSkpOwor
ICAgIEFTU0VSVCghcmVzdWx0LT5uZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkgfHwgc2hvdWxkVXNl
U2xvd1B1dChyZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIzLDE1ICsxMjMsMTUgQEAgQ2xvbmVkQXJndW1lbnRzKiBD
bG9uZWRBcmd1bWVudHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZShFeGVjU3RhdGUqIG15RnJhbWUs
IEV4ZWMKICAgICAgICAgYnJlYWs7CiAgICAgfSB9CiAKLSAgICBBU1NFUlQobXlGcmFtZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSA9PSByZXN1bHQt
PnN0cnVjdHVyZSgpKTsKLSAgICBBU1NFUlQoIXJlc3VsdC0+bmVlZHNTbG93UHV0SW5kZXhpbmco
KSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3VsdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSk7CisgICAgQVNTRVJUKG15RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJn
dW1lbnRzU3RydWN0dXJlKCkgPT0gcmVzdWx0LT5zdHJ1Y3R1cmUobXlGcmFtZS0+dm0oKSkpOwor
ICAgIEFTU0VSVCghcmVzdWx0LT5uZWVkc1Nsb3dQdXRJbmRleGluZyhteUZyYW1lLT52bSgpKSB8
fCBzaG91bGRVc2VTbG93UHV0KHJlc3VsdC0+c3RydWN0dXJlKG15RnJhbWUtPnZtKCkpLT5pbmRl
eGluZ1R5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENsb25lZEFyZ3VtZW50cyog
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFt
ZSwgRXhlY1N0YXRlKiB0YXJnZXRGcmFtZSwgQXJndW1lbnRzTW9kZSBtb2RlKQogewogICAgIENs
b25lZEFyZ3VtZW50cyogcmVzdWx0ID0gY3JlYXRlV2l0aElubGluZUZyYW1lKG15RnJhbWUsIHRh
cmdldEZyYW1lLCBudWxscHRyLCBtb2RlKTsKLSAgICBBU1NFUlQoIXJlc3VsdC0+bmVlZHNTbG93
UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3VsdC0+c3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKCFyZXN1bHQtPm5lZWRzU2xvd1B1dEluZGV4aW5n
KG15RnJhbWUtPnZtKCkpIHx8IHNob3VsZFVzZVNsb3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUobXlG
cmFtZS0+dm0oKSktPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVh
dGVCeUNvcHlpbmdGcm9tKAogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0t
OykKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBhcmd1bWVudFN0YXJ0
W2ldLmpzVmFsdWUoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQtPm5lZWRzU2xvd1B1dEluZGV4aW5n
KCkgfHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgQVNTRVJUKCFyZXN1bHQtPm5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSB8fCBz
aG91bGRVc2VTbG93UHV0KHJlc3VsdC0+c3RydWN0dXJlKHZtKS0+aW5kZXhpbmdUeXBlKCkpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzksNyArMTc5LDcgQEAgYm9vbCBDbG9uZWRB
cmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3AKIAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2Fs
bGVlKSB7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7Ci0gICAgICAgICAgICAgICAg
c2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFj
Y2Vzc29yLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVu
dHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgc2xvdC5z
ZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
LCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0Nh
bGxlZUFuZENhbGxlckdldHRlclNldHRlcigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
MCwgdGhpc09iamVjdC0+bV9jYWxsZWUuZ2V0KCkpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wg
Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24oKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3Qodm0pLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1MCwxMSArMjUwLDExIEBAIHZv
aWQgQ2xvbmVkQXJndW1lbnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOwogICAg
IAogICAgIGlmIChpc1N0cmljdE1vZGUpCi0gICAgICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMs
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yKTsKKyAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+Y2FsbGVlLCBnbG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3Vt
ZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3Nvcik7CiAgICAgZWxzZQogICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNhbGxlZSwgSlNWYWx1ZShtX2NhbGxlZS5nZXQoKSkpOwogCi0gICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0
aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICAKICAgICBtX2NhbGxlZS5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggY2JhNGY1ZjljMjQ3ZjI0
NTE2NDllNGQ2OGEwN2ExODVjZjEzMmU4ZC4uZWZmZjMyNjM0MWMzN2I5Y2EzNmI2YmJiYzZmZmU1
ZWQyYTdkNWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC02NjEsNyArNjYxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2lzX29iamVjdF9vcl9udWxsKQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0
aW9uKQogewogICAgIEJFR0lOKCk7Ci0gICAgUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25U
eXBlKE9QX0MoMikuanNWYWx1ZSgpKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oT1BfQygyKS5q
c1ZhbHVlKCkuaXNGdW5jdGlvbih2bSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2luX2J5X3ZhbCkKQEAgLTExNjEsNyArMTE2MSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9zcHJlYWQpCiAgICAgewogICAgICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRpb25GdW5jdGlvbiA9
IGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCk7CiAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERh
dGEoaXRlcmF0aW9uRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEpOwog
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggZTdlMzZhNjYwYmJlNTM1Y2JkZDI2NGYz
MWM2ZTVkYWM5N2M5OWY2Mi4uMWVjZTg5NTkyY2Q2MzExOGRkOWI4OWYxYjk2YmQwMDhkZDBhYjVl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKQEAgLTE0MywxMiArMTQzLDEzIEBAIGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUds
b2JhbCgKICAgICB9CiAgICAgCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykg
eworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCA9PSBzY29wZSB8fCBnbG9iYWxPYmplY3QtPnZhckluamVjdGlvbldhdGNo
cG9pbnQoKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBpZiAoIXNsb3QuaXNDYWNo
ZWFibGVQdXQoKQogICAgICAgICAgICAgfHwgc2xvdC5iYXNlKCkgIT0gc2NvcGUKICAgICAgICAg
ICAgIHx8IHNjb3BlICE9IGdsb2JhbE9iamVjdAotICAgICAgICAgICAgfHwgIXNjb3BlLT5zdHJ1
Y3R1cmUoKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgfHwg
IXNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewpAQCAtMTU3LDExICsxNTgsMTAgQEAgaW5s
aW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAg
ICBzY29wZS0+c3RydWN0dXJlKCktPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xv
dC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5kaWRDYWNo
ZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogCiAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBw
Y1s1XS51LnN0cnVjdHVyZS5zZXQodm0sIGNvZGVCbG9jaywgc2NvcGUtPnN0cnVjdHVyZSgpKTsK
KyAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KHZtLCBjb2RlQmxvY2ssIHNjb3BlLT5zdHJ1
Y3R1cmUodm0pKTsKICAgICAgICAgcGNbNl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKICAgICB9CiB9CkBAIC0xOTUsNyArMTk1LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRG
cm9tU2NvcGVHbG9iYWwoCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBBU1NFUlQoc2NvcGUgPT0gZ2xvYmFsT2JqZWN0
IHx8IGdsb2JhbE9iamVjdC0+dmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpLT5oYXNCZWVuSW52YWxp
ZGF0ZWQoKSk7Ci0gICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNs
b3RCYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUgPT0gZ2xvYmFsT2JqZWN0ICYmIHNjb3BlLT5zdHJ1
Y3R1cmUoKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2Nv
cGUgPT0gZ2xvYmFsT2JqZWN0ICYmIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
c2NvcGUtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CkBAIC0yMDksNyArMjA5
LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAKIGlubGluZSBi
b29sIGNhbkFjY2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KEpTT2JqZWN0JiBvYmplY3QsIHVpbnQz
Ml90IGluZGV4KQogewotICAgIHN3aXRjaCAob2JqZWN0LnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
LnR5cGUoKSkgeworICAgIHN3aXRjaCAob2JqZWN0LnR5cGUoKSkgewogICAgIGNhc2UgRGlyZWN0
QXJndW1lbnRzVHlwZTogewogICAgICAgICBEaXJlY3RBcmd1bWVudHMqIGRpcmVjdEFyZ3VtZW50
cyA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVudHMqPigmb2JqZWN0KTsKICAgICAgICAgaWYgKGRpcmVj
dEFyZ3VtZW50cy0+aXNNYXBwZWRBcmd1bWVudEluREZHKGluZGV4KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKaW5kZXggMDYyZTExY2UzMzdl
Yzc1MzM1N2NkNTE5OTMwYTM4ODZhOTgwY2M1ZC4uZTM1ZGEzNWU0ZDdmOTBiYjFjNWViNmY1NThj
N2YxYjk3YTEzNDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGEK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb25zdHJ1
Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0g
Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7CisgICAg
Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3Ry
dWN0b3JPYmplY3QsIGNvbnN0cnVjdERhdGEpOwogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENv
bnN0cnVjdFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgZXJyb3JNZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2U5OTYzNDU5MjE0NmYyYjBhNzg1OGJmZTM5
ZmU4MDY5YTI2OGYyZi4uZmQ0NDIyMTZmZWM3N2NhMmU0YTdiMTg4Y2ZlMGMyNTZmYWFlOTA1MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG4KIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQogewogICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdERhdGUoZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rp
b24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGV4ZWMtPm5ld1RhcmdldCgp
LCBhcmdzKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3REYXRlKGV4ZWMs
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dChleGVjLT52bSgpKSwgZXhlYy0+bmV3VGFyZ2V0KCksIGFyZ3MpKTsKIH0KIAogLy8gRUNNQSAx
NS45LjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKaW5kZXggNmYyMzM2ODczNTJjMGJmZGY0YTU5NjQxZjkyNmI4MTBkNWFmMWUyMS4uYmZiMDFi
MjlkZjNhNmVjYmQyOWI3YWZiYzFhZjUxODZmZWRjYjAzOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTExNjUsNyArMTE2NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKHZtLCB0b0lTT1ZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1l
bnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5j
cHAKaW5kZXggZDMwZjJjZTY3MGQ1NTM3OWViNmUzMmEyYmJiNmMwMTM5OGU5ZWRmZS4uYjYyOTU1
NmUwNTMyNDIwOWVkYzI1YzRlZGI2Yzg2OWM3ZWQzYmJhYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBEaXJlY3RBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzKFZNJiB2bSkKICAgICAKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9sZW5n
dGgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIG1fY2FsbGVlLmdl
dCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xv
YmFsT2JqZWN0KCktPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICAKICAgICB2b2lkKiBiYWNraW5nU3RvcmUgPSB2bS5naWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKG1fbWFwcGVkQXJndW1lbnRzLmtpbmQpLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgbWFwcGVkQXJndW1lbnRzU2l6ZSgpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OkFzc2VydCk7CiAgICAgYm9vbCogb3ZlcnJpZGVzID0gc3RhdGljX2Nhc3Q8Ym9vbCo+
KGJhY2tpbmdTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5k
ZXggNjAxZjgyMzY1NmExY2NlZjk4ODlhODkwNWQ5NmQyZjIxNzc0OWY4NS4uNWY2N2Y4Yzc0Mzc4
ODlkMTMxODQ3ZTg3NmY0NmNmMjViYWI0NDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIGNsYXNzIEZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgewogCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNr
RnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iamVjdCog
b2JqLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gb2JqLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gb2JqLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEVycm9yQ29uc3RydWN0b3IqIGVy
cm9yQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPmVycm9yQ29uc3RydWN0b3IoKTsKICAgICBp
ZiAoIWVycm9yQ29uc3RydWN0b3ItPnN0YWNrVHJhY2VMaW1pdCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZmYxMjNmNWVlYWIzMDg3ZDM0NzBmNDA4ZDFlOTczMGU3ODA2YWM2
YS4uYTBlYjM1ODc4MWNiMmUxZGVhOTFhMGRhOGVlZGRkNzg0MTkxOGZiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRlcnByZXRlcjo6Y29u
c3RydWN0V2l0aEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXQKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
ZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxs
ZWUoKSktPmdsb2JhbE9iamVjdCgpLT5lcnJvclN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUq
IGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPmVycm9yU3RydWN0dXJlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcs
IGZhbHNlKSk7CkBAIC02Niw3ICs2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50ZXJwcmV0ZXI6OmNvbnN0cnVjdFdpdGhFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGVycHJldGVyOjpjYWxsRXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1
bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5lcnJvclN0cnVjdHVy
ZSgpOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5j
dGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSktPmVycm9y
U3RydWN0dXJlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpj
cmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5n
LCBmYWxzZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDAzMWZlMzIwYWRhZjlkNTU3ZGRlYTg5OTg4
YzA1YWMzNGI4MTljMzguLjYwMzVkY2ExYTA0N2ViMDhiMzdmNzAzYmM5N2VjNjRmYTZhYzEyYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9u
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlv
bkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwg
YXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwgZXhlYy0+bmV3VGFyZ2V0
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwg
ZXhlYy0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogLy8gRUNNQSAxNS4zLjEgVGhlIEZ1bmN0aW9uIENv
bnN0cnVjdG9yIENhbGxlZCBhcyBhIEZ1bmN0aW9uCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncykpOwogfQogCiBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDgwMGYwZTMzOTNiYjVh
ZGYxZWZkNjQzNDI2YTQ0ZDZjYjQ3NDA1NjkuLjQ2OTQ2ZDZiMTJlNWQ1ZGQ1YmQ1ZThiZDUwOTg4
ZTMxNWEzZThjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zOSwxMyArMzks
MTMgQEAgY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkIKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpHZW5lcmF0b3IpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpHZW5lcmF0b3IpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0Nh
bGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6
R2VuZXJhdG9yLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVj
LT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggZTQ5YjYxOWNi
ZDE3MTlkOGU1ZTFkNWQyNTkzMjNiYmQwZDVjZjFlZC4uMWFhNDc1NGNmZmIyZWZkZjc3YjdjY2Ni
YTVhMzlkNzMxYWUzODZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC01Niw3ICs1Niw3IEBAIGJvb2wg
R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpIHsK
LSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSk7CisgICAgICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24oKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJl
ZFN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmluZGV4IDMzMDUyYWNjM2VjNzk4Yjc3YzgzODllZmYx
NzY5YTZhMzQwY2M3NjcuLmQzOWU4NmMxMDFmMDMzMzQxNTNhODVkYjIzYWNmMTJkNjEwNGZlOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5m
ZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEluZmVy
cmVkU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKQog
ICAgIGlmICghaW5mZXJyZWRUeXBlLT5pc0xpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGluZmVycmVkVHlwZS0+cmVtb3ZlU3RydWN0dXJlKCk7CisgICAgaW5mZXJyZWRUeXBlLT5y
ZW1vdmVTdHJ1Y3R1cmUoKmluZmVycmVkVHlwZS0+dm0oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAK
aW5kZXggODVmYzJjMGFkNjNjYzQ5Y2I4YWRiMDllODhlM2JkNTZlYThiMjBiNi4uYWEwNmRiNmEw
Mjc4MzBmNzI1N2MxZjU0ZjM3ZDFjOWRhZmNiNmZkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGUuY3BwCkBAIC00ODQsMTMgKzQ4NCwxMSBAQCBib29s
IEluZmVycmVkVHlwZTo6c2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIERlc2NyaXB0b3IgbmV3RAogICAgIHJldHVybiBzaG91bGRGaXJlV2F0Y2hwb2ludFNldDsK
IH0KIAotdm9pZCBJbmZlcnJlZFR5cGU6OnJlbW92ZVN0cnVjdHVyZSgpCit2b2lkIEluZmVycmVk
VHlwZTo6cmVtb3ZlU3RydWN0dXJlKFZNJiB2bSkKIHsKICAgICAvLyBGSVhNRTogRmluZCBhbiBl
bGVnYW50IGFuZCBjaGVhcCB3YXkgdG8gdGhyZWFkIGluZm9ybWF0aW9uIGFib3V0IHdoeSB3ZSBn
b3QgaGVyZSBpbnRvIHRoZSBmaXJlCiAgICAgLy8gZGV0YWlsIGluIHNldCgpLgogICAgIAotICAg
IFZNJiB2bSA9ICpIZWFwOjpoZWFwKHRoaXMpLT52bSgpOwotCiAgICAgRGVzY3JpcHRvciBvbGRE
ZXNjcmlwdG9yOwogICAgIERlc2NyaXB0b3IgbmV3RGVzY3JpcHRvcjsKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5oCmluZGV4IDRjYzQ4N2U2Y2Rm
YzA5YjY4MjViNjE2MjQxNjkxZDIxMDg4OTU0NWIuLjFmZjAyMzM4ZDdhYjIzYzM5MTAyYTE4MWJm
MTEwOWRiOWEwMThmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVy
cmVkVHlwZS5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgY2xhc3MgSW5mZXJyZWRUeXBlIGZpbmFsIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgLy8gd2F0Y2hwb2ludCBzZXQuCiAgICAgYm9vbCBzZXQoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBEZXNjcmlwdG9yKTsKICAgICAKLSAgICB2b2lk
IHJlbW92ZVN0cnVjdHVyZSgpOworICAgIHZvaWQgcmVtb3ZlU3RydWN0dXJlKFZNJik7CiAgICAg
CiAgICAgZnJpZW5kIGNsYXNzIEluZmVycmVkU3RydWN0dXJlOwogICAgIGZyaWVuZCBjbGFzcyBJ
bmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmZlcnJlZFR5cGVJbmxpbmVzLmgKaW5kZXggNDA4MTJiM2M0OWIzOTRmYmIy
Nzk0YmVjOTU3ZWU5MmJmNWFmMjk2Yy4uZjYwY2MzNmZkMWU4YTYwMjYyMGM1MDRjZGU4MjNkMDE3
ZTg0YmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJy
ZWRUeXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVy
cmVkVHlwZUlubGluZXMuaApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgdm9pZCBJbmZlcnJlZFR5
cGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKICAgICAgICAgaWYgKEhlYXA6Omlz
TWFya2VkKG1fc3RydWN0dXJlLT5zdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKLSAgICAgICAgcmVtb3ZlU3RydWN0dXJlKCk7CisgICAgICAgIHJlbW92ZVN0
cnVjdHVyZSh2bSk7CiAgICAgfQogICAgIAogICAgIHZtLmluZmVycmVkVHlwZXNXaXRoRmluYWxp
emVycy5yZW1vdmUodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmNwcAppbmRleCBmNzM1MDg2MmZiZjdiZWJlY2FjMzhlMjI5NDQ5OWJkYmFiZGY3
MTI0Li4yOGViOWU2YmUxMzZlYmY4ZmE1YjI4NjViZTUyY2IyODkyOTM2ZjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZQogICAgICAgICBvcHQuYWRkKEFTQ0lJTGl0
ZXJhbCgia2YiKSwgY2FzZUZpcnN0KTsKICAgICB9CiAKLSAgICBhdXRvJiBhdmFpbGFibGVMb2Nh
bGVzID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmludGxDb2xsYXRvckF2YWls
YWJsZUxvY2FsZXMoKTsKKyAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGUuanNDYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwog
ICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywg
cmVxdWVzdGVkTG9jYWxlcywgb3B0LCByZWxldmFudENvbGxhdG9yRXh0ZW5zaW9uS2V5cywgV1RG
X0FSUkFZX0xFTkdUSChyZWxldmFudENvbGxhdG9yRXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEp
OwogCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuY3BwCmluZGV4IDg2YWUzZjA5MDhmY2E4ZWFjMDg2MmU0YzcxYjliYTA0MGE5
M2UzMWQuLmNjYjU2NTA5ZGJkZTNlOTQxOWU1YmI5OGJjYzRlZWU2YmE4OThkMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjUwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
Ly8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxvY2Fs
ZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c3VwcG9ydGVkTG9jYWxlcygqc3RhdGUsIGdsb2JhbE9iamVjdC0+aW50bENvbGxhdG9yQXZhaWxh
YmxlTG9jYWxlcygpLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQ
cm90b3R5cGUuY3BwCmluZGV4IGJmNDc1MjlkOGE4YjdjYTNiZTQ5ZDAzYmIyMjJhZTU2YzJkY2Vl
NjMuLjk5NjcyMmRiMmI2NzY0MGUzZTMyMGM5MzE0YTc0ODg2OGExYWVlODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIHN0YXRlCiAgICAgSlNC
b3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xsYXRvci0+Ym91bmRDb21wYXJlKCk7CiAg
ICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSBpcyB1bmRlZmluZWQsCiAgICAg
aWYgKCFib3VuZENvbXBhcmUpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNvbGxhdG9yLT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICAvLyBhLiBM
ZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMS4z
LjQuCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMg
Mi4KICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIDIsIEFTQ0lJTGl0ZXJhbCgiY29tcGFyZSIpLCBJbnRsQ29sbGF0
b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMTU3M2M3Mjk1ZjE0OTc5
NmEwNWFkNzk3ODJkMDcyNjMzNDcyMzNlNC4uM2FhNzc5ZmFhZmM4NTdlMzllNDFlM2EzN2Q4ZGVh
NjdiOWM4ZmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFs
dWUgbG9jYWwKIAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUgb2YgJURh
dGVUaW1lRm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUgUmVzb2x2
ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVk
TG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVGb3JtYXQlLltbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0s
IGxvY2FsZURhdGEpLgotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVz
ID0gZXhlYy5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bERhdGVUaW1lRm9ybWF0QXZh
aWxhYmxlTG9jYWxlcygpOworICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2Nh
bGVzID0gZXhlYy5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pLT5pbnRsRGF0ZVRpbWVGb3Jt
YXRBdmFpbGFibGVMb2NhbGVzKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2
ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2Fs
ZXMsIGxvY2FsZU9wdCwgSW50bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdU
Rl9BUlJBWV9MRU5HVEgoSW50bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJ
bnRsRFRGSW50ZXJuYWw6OmxvY2FsZURhdGEpOwogCiAgICAgLy8gMTMuIFNldCBkYXRlVGltZUZv
cm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCkBAIC0xMDAxLDcg
KzEwMDEsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhFeGVj
U3RhdGUmIGV4ZWMsIGRvdWJsZSB2YWx1ZSkKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
ZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIikpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZt
KTsKICAgICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQ29udGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoJmV4ZWMsIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAppbmRleCA1MzUxZTQzZGNkYWRkZTJiNWNmYWM1ZDI5ZjdjNjYyNzQwNWNmMmMxLi4zMmNl
YzdlNjIwYjQwZGY4YzliOWQ1OTUzNTE1ZjhiYmM5YmM5ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YK
ICAgICAvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9j
YWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKIAogICAgIC8vIDEuIExldCBhdmFpbGFi
bGVMb2NhbGVzIGJlICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2Fs
bGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWls
YWJsZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxv
Y2FsZXMoKTsKIAogICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6
ZUxvY2FsZUxpc3QobG9jYWxlcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA5Yjc5
NzFhZGQxOThkZDBiZmIyM2E2YmNjMDdmMDNjYzk2ZGQ0OTMxLi40ZjE4OTY2OWFiYWJkNmEwN2Vh
ZTc1NWE5OGFlZGNhODgwYTU1YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTEz
OSw3ICsxMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqCiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAzLiBJZiB0aGUgW1ti
b3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3Qg
aXMgdW5kZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGR0Zi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkdGYtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAg
IC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVk
IGluIDEyLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9w
ZXJ0eSBpcyAxLiAoTm90ZTogRuKAmXMgbGVuZ3RoIHByb3BlcnR5IHdhcyAwIGluIEVDTUEtNDAy
IDEuMCkKICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IiksIEludGxEYXRl
VGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgTm9JbnRyaW5zaWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCBhMTQ2
NjM0NmIyOWFhMTYzZGU5NWRjNTg5YjE0NmQ0YzA0NzlmYmRkLi5iNzYzMjhiNTVmYTllZWIwZDFk
MWUwYTNlNTA5NjdiYjZmNTA0NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIGxvY2FsZXMsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBvcHQuYWRkKEFTQ0lJTGl0ZXJhbCgibG9jYWxlTWF0Y2hlciIpLCBtYXRjaGVyKTsKIAot
ICAgIGF1dG8mIGF2YWlsYWJsZUxvY2FsZXMgPSBzdGF0ZS5qc0NhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRvJiBhdmFp
bGFibGVMb2NhbGVzID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+aW50bE51
bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKICAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVM
b2NhbGUoc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVs
ZXZhbnROdW1iZXJFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50TnVtYmVy
RXh0ZW5zaW9uS2V5cyksIEludGxORkludGVybmFsOjpsb2NhbGVEYXRhKTsKIAogICAgIG1fbG9j
YWxlID0gcmVzdWx0LmdldChBU0NJSUxpdGVyYWwoImxvY2FsZSIpKTsKQEAgLTUzOCw3ICs1Mzgs
NyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoRXhlY1N0YXRlJiBl
eGVjLCBkb3VibGUgdmFsdWUpCiAgICAgICAgIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4
dChmaWVsZEl0ci5nZXQoKSwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CiAgICAgfQogCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMuanNDYWxsZWUo
KS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpCiAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoJmV4ZWMsIHNjb3BlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IDI3NDcwM2MyNWI4NTg0ZjkxMTgxNzE3NjNmZDVmNjhl
ZjYwNmVjY2EuLmJmNzYyNDkzMjk2MmYwMWNmOTk1NWYxNzc4YmNjYTdhYWI3OGVlOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExv
Y2FsZXNPZihFCiAgICAgLy8gMTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2Fs
ZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0
IGF2YWlsYWJsZUxvY2FsZXMgYmUgJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0u
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUt
PmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+
IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9iYWxPYmplY3QtPmludGxOdW1iZXJGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCk7CiAKICAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmlj
YWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBjOWUx
N2RjOWFlOWU2OGE3MDIzYWVlNzQ4MjRhMjQwN2EzNjdkMmUyLi5mOTU2OGFmMWVlN2NiODYyMDYz
YTEzOWRkNzU5NmM2N2E3ZWU4OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTMzLDcg
KzEzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqIHN0CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElmIG5mLltbYm91bmRG
b3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYgKCFib3VuZEZvcm1hdCkgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmYtPmdsb2JhbE9iamVjdCgpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmYtPmdsb2JhbE9iamVjdCh2bSk7CiAg
ICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBk
ZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0
aCBwcm9wZXJ0eSBpcyAxLgogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQi
KSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggNjhlMGNhOGFl
MTc1OWU2YzEzMDI0ZjcwZjg3MmJiZDgyMDhiNjhhZS4uZmI3OGU0NjFiMzE1MWNkZThhYzM4N2U1
YzkwMmJhYzExZjRlZTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxp
emVMb2NhbGVMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgbG9jYWxlcykKICAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5qc0NhbGxlZSgp
LT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Rh
dGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBWZWN0b3I8U3RyaW5nPiBzZWVu
OwogCiAgICAgaWYgKGxvY2FsZXMuaXNVbmRlZmluZWQoKSkKQEAgLTU4OCw3ICs1ODgsOCBAQCBT
dHJpbmcgZGVmYXVsdExvY2FsZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIC8vIFdlYkNvcmUncyBn
bG9iYWwgb2JqZWN0cyB3aWxsIGhhdmUgdGhlaXIgb3duIGlkZWFzIG9mIGhvdyB0byBkZXRlcm1p
bmUgdGhlIGxhbmd1YWdlLiBJdCBtYXkKICAgICAvLyBiZSBkZXRlcm1pbmVkIGJ5IFdlYkNvcmUt
c3BlY2lmaWMgbG9naWMgbGlrZSBzb21lIFdLIHNldHRpbmdzLiBVc3VhbGx5IHRoaXMgd2lsbCBy
ZXR1cm4gdGhlCiAgICAgLy8gc2FtZSB0aGluZyBhcyB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKClb
MF0uCi0gICAgaWYgKGF1dG8gZGVmYXVsdExhbmd1YWdlID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmRlZmF1bHRMYW5ndWFnZSkg
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgaWYgKGF1dG8gZGVmYXVsdExhbmd1YWdl
ID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+ZGVmYXVsdExhbmd1YWdlKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBkZWZh
dWx0TGFuZ3VhZ2UoKTsKICAgICAgICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKGxvY2FsZSk7CkBAIC03OTIsNyArNzkz
LDcgQEAgc3RhdGljIEpTQXJyYXkqIGxvb2t1cFN1cHBvcnRlZExvY2FsZXMoRXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIHNpemVfdCBsZW4gPSByZXF1ZXN0ZWRMb2NhbGVzLnNpemUo
KTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUuanNDYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRl
LmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogc3Vic2V0ID0gSlNB
cnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICBpZiAo
IXN1YnNldCkgewogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7
CkBAIC05MDcsNyArOTA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2Jq
ZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGxlbmd0aCA9
IGxvY2FsZUxpc3Quc2l6ZSgpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
SlNBcnJheSogbG9jYWxlQXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aENvbnRpZ3VvdXMpLCBsZW5ndGgpOwogICAgIGlmICghbG9jYWxlQXJyYXkpIHsKICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCA0ZGVkMTNiNDJmMzVl
MzJjZDg5NmU2ZThjMTNlMWMxYjEzMTNlYzNkLi5hZGYxNTUwNDJhODYzZjU3NzBiMTllNjkwNmE5
OTg3YjZhZDNmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxl
czo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbGVz
LCBKUwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbG9jYWxl
T3B0LmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLnN0cmluZygpLCBsb2NhbGVN
YXRjaGVyKTsKIAotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0g
ZXhlYy5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJs
ZUxvY2FsZXMoKTsKKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9
IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+aW50bE51bWJlckZvcm1hdEF2YWls
YWJsZUxvY2FsZXMoKTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJl
c29sdmVMb2NhbGUoZXhlYywgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9j
YWxlT3B0LCBudWxscHRyLCAwLCBJbnRsUFJJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CiAgICAgbV9s
b2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsK
ICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7CkBAIC0yMTUsNyArMjE1LDcgQEAgSlNPYmpl
Y3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSYgZXhlYykKICAg
ICB9CiAKICNpZiBKU0NfSUNVX0hBU19QTFVSQUxSVUxFU19LRVlXT1JEUwotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLmpzQ2FsbGVlKCktPmdsb2Jh
bE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAgIGlmICghY2F0ZWdvcmllcykK
ICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhlYywgc2NvcGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuY3BwCmluZGV4IDllNTBhOWJhZGNjNzFjMDNlYzBkMGVhMDE3YjdkYjM0
NDNiNmJhZDQuLjdhZjY5YzVlYTdkMzViZTVmNTIyOGFlNWNjNjNjZmMxZDViYWIwOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihFeAogCiAgICAgLy8gMTMuMy4yIEludGwuUGx1cmFsUnVsZXMuc3VwcG9ydGVkTG9jYWxl
c09mIChsb2NhbGVzIFssIG9wdGlvbnMgXSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnN1cHBvcnRlZGxvY2FsZXNvZgotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxl
ZSgpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFi
bGVMb2NhbGVzID0gZ2xvYmFsT2JqZWN0LT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6
ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZh
NzczYzM2NzhmNzdlMDVmMjJmNGI1NzE4OWQyNDVjY2JiZmYyNi4uNjkxMGYwMWJkYWUwODgxZjg5
ODYyZjE0NmVjZTUzZGJlODNkMzM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFs
dWUgaXRlcmF0b3JOZXh0KEV4ZWNTdGF0ZSogZXhlYywgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlv
blJlY29yZCwgSlNWYWx1ZSBhCiAgICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRpb25S
ZWNvcmQubmV4dE1ldGhvZDsKIAogICAgIENhbGxEYXRhIG5leHRGdW5jdGlvbkNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIG5leHRGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobmV4dEZ1bmN0
aW9uLCBuZXh0RnVuY3Rpb25DYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgbmV4dEZ1bmN0aW9uQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgbmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rpb25DYWxsRGF0
YSk7CiAgICAgaWYgKG5leHRGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSXRlcmF0aW9uUmVjb3Jk
IGl0ZXJhdGlvblJlY29yZCkKICAgICB9CiAKICAgICBDYWxsRGF0YSByZXR1cm5GdW5jdGlvbkNh
bGxEYXRhOwotICAgIENhbGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShyZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUg
cmV0dXJuRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCByZXR1cm5GdW5jdGlvbiwg
cmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUg
PT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0xOTMsNyAr
MTkzLDcgQEAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNPYmplY3QqIG9iamVjdCwgSlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGl0ZXJhdG9yTWV0aG9kQ2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgaXRlcmF0b3JNZXRob2RDYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJh
dG9yTWV0aG9kLCBpdGVyYXRvck1ldGhvZENhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBpdGVyYXRv
ck1ldGhvZENhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdG9yTWV0aG9kLCBpdGVyYXRv
ck1ldGhvZENhbGxEYXRhKTsKICAgICBpZiAoaXRlcmF0b3JNZXRob2RDYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBJdGVyYXRpb25SZWNvcmQgaXRl
cmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHN0YXRlLCBKU1ZhbHVlIGl0ZXJhYmxlKQogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgCiAgICAgQ2FsbERhdGEgaXRl
cmF0b3JGdW5jdGlvbkNhbGxEYXRhOwotICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rpb25DYWxs
VHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgaXRlcmF0b3JGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAg
aWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBhNTJjZWNhMTNlYTJl
ZmQ4Yzc2YzViOGQ2N2IzNDJiM2VlZmYwMjQzLi4xYWQ2ZWIzZWRmMjE4MmQyOWIwNzRhMzMzYTA2
ZjdjZjhjZTIxMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cApAQCAtODYxLDcgKzg2MSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0
b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjCiAgICAgICAgIC8v
IEFkanVzdCB0aGUgQnV0dGVyZmx5IGFuZCB0aGUgaW5kZXggYmlhcy4gV2Ugb25seSBuZWVkIHRv
IGRvIHRoaXMgaGVyZSBiZWNhdXNlIHdlJ3JlIGNoYW5naW5nCiAgICAgICAgIC8vIHRoZSBzdGFy
dCBvZiB0aGUgQnV0dGVyZmx5LCB3aGljaCBuZWVkcyB0byBwb2ludCBhdCB0aGUgZmlyc3QgaW5k
ZXhlZCBwcm9wZXJ0eSBpbiB0aGUgdXNlZAogICAgICAgICAvLyBwb3J0aW9uIG9mIHRoZSB2ZWN0
b3IuCi0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCktPnNo
aWZ0KHN0cnVjdHVyZSgpLCBjb3VudCk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpcy0+YnV0dGVyZmx5KCktPnNoaWZ0KHN0cnVjdHVyZSh2bSksIGNvdW50KTsKICAgICAgICAg
c3RvcmFnZSA9IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgICAgIHN0b3JhZ2UtPm1f
aW5kZXhCaWFzICs9IGNvdW50OwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBz
dGFydEluZGV4LAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CiAgICAg
CiAgICAgaWYgKG1vdmVGcm9udCAmJiBzdG9yYWdlLT5tX2luZGV4QmlhcyA+PSBjb3VudCkgewot
ICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT51
bnNoaWZ0KHN0cnVjdHVyZSgpLCBjb3VudCk7CisgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVy
Zmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnVuc2hpZnQoc3RydWN0dXJlKHZtKSwgY291bnQp
OwogICAgICAgICBzdG9yYWdlID0gbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAg
ICAgc3RvcmFnZS0+bV9pbmRleEJpYXMgLT0gY291bnQ7CiAgICAgICAgIHN0b3JhZ2UtPnNldFZl
Y3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGggKyBjb3VudCk7CkBAIC0xMzM1LDcgKzEzMzUsOCBAQCBi
b29sIEpTQXJyYXk6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkKICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aXNBcnJheVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0
QW5kTm9uT2JzZXJ2YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2
bSk7CiAgICAgLy8gVGhpcyBpcyB0aGUgZmFzdCBjYXNlLiBNYW55IGFycmF5cyB3aWxsIGJlIGFu
IG9yaWdpbmFsIGFycmF5LgogICAgIGlmIChnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZShzdHJ1Y3R1cmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNDMsNyArMTM0
NCw2IEBAIGJvb2wgSlNBcnJheTo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFi
bGUoKQogICAgIGlmIChzdHJ1Y3R1cmUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGJmMmU5MTdlZmExMDljZmZmNGZiOWQzZjhhNWU2NjU0ZjhjYTg4YjcuLmZmNDViM2VlZTg2
NjM1N2E2YmE4NmM1OTJmMmVmNmZiMzk1MzI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcApAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBwcgogICAgIHB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNT
eW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAKICAgICBpZiAobV9zaGFy
aW5nTW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmlzVmlldywgYXJyYXlCdWZmZXJGdW5jSXNWaWV3LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmlzVmlld1ByaXZhdGVOYW1lKCksIGFycmF5QnVmZmVyRnVuY0lzVmlldywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIH0K
QEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPQogICAgICAgICBqc0Nhc3Q8SlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAKLSAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVy
U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoY29uc3RydWN0b3ItPnNoYXJpbmdNb2RlKCkpKTsKKyAgICBTdHJ1Y3R1
cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxP
YmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShjb25zdHJ1Y3Rvci0+c2hhcmluZ01vZGUo
KSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IGE2ZmZhN2E5NTA2OGFkM2M1YzYzNzNlZmI4
YWVlZjA1Zjg0ZDAxNzguLjYwM2IyMDhiYTNlZWQ1NTgzMzMzODU1ZDU4Y2ZjZDNjZmVmYTNjYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVj
KQogICAgIGlmICghbmV3QnVmZmVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUo
bmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNh
bGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5z
aGFyaW5nTW9kZSgpKTsKICAgICAKICAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShuZXdCdWZmZXIpKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAppbmRleCA4MmU2ODg1MDQyMzNjOGMxNWMzZWE3ZDFlNmUxMjUwYjYyMTdmYWRiLi43MzBl
ZWZkZDI0MGQ0NmI5MTdhYWJkYTg5YzVmMmJjMDM5Yzk5OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xOTksMTIg
KzE5OSwxNCBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpmaW5hbGl6ZShKU0NlbGwqIGNlbGwp
CiAKIEpTQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEpTQnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS5tX3R5cGVkQXJyYXlDb250
cm9sbGVyLT50b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCB1bnNoYXJlZEJ1ZmZlcigpKTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIHJldHVybiB2bS5tX3R5cGVkQXJyYXlDb250cm9s
bGVyLT50b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCh2bSksIHVuc2hhcmVkQnVmZmVyKCkpOwogfQog
CiBKU0FycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRKU0J1ZmZl
cihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkubV90eXBlZEFycmF5
Q29udHJvbGxlci0+dG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgcG9zc2libHlTaGFyZWRCdWZm
ZXIoKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICByZXR1cm4gdm0ubV90eXBlZEFy
cmF5Q29udHJvbGxlci0+dG9KUyhleGVjLCBnbG9iYWxPYmplY3Qodm0pLCBwb3NzaWJseVNoYXJl
ZEJ1ZmZlcigpKTsKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6bmV1dGVyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCmluZGV4
IDAxYjcxNDkwMWM5MTM2NzNlYmY3YjE1Y2FjY2Y2YjYzOGI1NzUxYTguLmM4OWQwMzJmMWE5ZTRi
YWE1Zjc3ZjYwNDE0N2I4YWEzNDExM2M5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApAQCAtNDcsMTQgKzQ3LDE0IEBAIEpTQXN5
bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlCiBKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3Jl
YXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSog
c2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5
bmNGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlvbj4o
dm0uaGVhcCkpIEpTQXN5bmNGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVy
ZSk7Ci0gICAgQVNTRVJUKGFzeW5jRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3Qo
KSk7CisgICAgQVNTRVJUKGFzeW5jRnVuY3Rpb24tPnN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVj
dCgpKTsKICAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJu
IGFzeW5jRnVuY3Rpb247CiB9CiAKIEpTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpj
cmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlKQogewotICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmUoKSk7CisgICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gY3Jl
YXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5h
c3luY0Z1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBhc3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3lu
YyBmdW5jdGlvbiIpOwogICAgIHJldHVybiBhc3luY0Z1bmN0aW9uOwogfQpAQCAtNjgsNyArNjgs
NyBAQCBKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLAogCiBKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNG
dW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUlt
cGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXN5bmNG
dW5jdGlvblN0cnVjdHVyZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKaW5kZXggYjlh
MzdhYjk4YjRiY2FhYTg5Y2M2YzU4YzUyODNiNDI3YzFlOTQ5MS4uODdmOTU4Mzk5YjNjZDQwZjFl
MTU2ZGI1MDgzYzRjNGM0YjEzZGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC00NywxNCAr
NDcsMTQgQEAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGUKIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
biogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiAgICAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uKiBhc3luY0dlbmVyYXRvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVh
cCkpIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVj
dHVyZSk7Ci0gICAgQVNTRVJUKGFzeW5jR2VuZXJhdG9yLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgIEFTU0VSVChhc3luY0dlbmVyYXRvci0+c3RydWN0dXJlKHZtKS0+Z2xvYmFs
T2JqZWN0KCkpOwogICAgIGFzeW5jR2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmV0dXJuIGFzeW5jR2VuZXJhdG9yOwogfQogCiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIEpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKIHsKLSAgICBKU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24qIGFzeW5jR2VuZXJhdG9yID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgp
KTsKKyAgICBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIGFzeW5jR2VuZXJhdG9yID0gY3JlYXRl
SW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5hc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRv
bkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBhc3luY0dlbmVyYXRvciwgIkFsbG9jYXRpbmcg
YW4gYXN5bmMgZ2VuZXJhdG9yIik7CiAgICAgcmV0dXJuIGFzeW5jR2VuZXJhdG9yOwogfQpAQCAt
NjgsNyArNjgsNyBAQCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIEpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdQogCiBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jR2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNj
b3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKaW5kZXggZWE2ZTBhYjZhZWZmMDBhYzA3NDNhYzYxZTQxMDY4OTVl
MTQ5MjlkYi4uMmNiZGI5MzVjNTJlNDVkNTYyMmU2ZTc2M2ZhNTEyN2IzYTlhZWE2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCkBA
IC01MCw3ICs1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9B
cmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZXhlY3V0YWJsZS0+ZW50
cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwgTXVzdENoZWNrQXJpdHkpOwogICAgIH0KICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRhcmdl
dEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShleGVjLT52bSgpLCB0YXJnZXRGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24t
PmJvdW5kVGhpcygpLCBhcmdzKSk7CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
SlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uID0gYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24o
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKQEAgLTk0LDcg
Kzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5j
dGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRG
dW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rp
b24oKSk7CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5
cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodGFyZ2V0RnVuY3Rpb24sIGNvbnN0
cnVjdERhdGEpOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVj
dERhdGEoZXhlYy0+dm0oKSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwogICAgIEFT
U0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKSk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiA9IGJvdW5kRnVuY3Rpb24tPnRh
cmdldEZ1bmN0aW9uKCk7CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENv
bnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodGFyZ2V0RnVuY3Rp
b24sIGNvbnN0cnVjdERhdGEpOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdl
dENvbnN0cnVjdERhdGEodm0sIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBB
U1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKICAgICBzY29wZS5y
ZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFy
Z2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKTsKQEAgLTE2
MCw3ICsxNjAsNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iagogICAgIC8vIEl0IHdvdWxkIGJl
IG5pY2UgaWYgdGhlIHN0cnVjdHVyZSBtYXAgd2FzIGtleWVkIGdsb2JhbCBvYmplY3RzIGluIGFk
ZGl0aW9uIHRvIHRoZSBvdGhlciB0aGluZ3MuIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdAogICAg
IC8vIGN1cnJlbnRseS4gV2hvZXZlciB3b3JrcyBvbiBjYWNoaW5nIHN0cnVjdHVyZSBjaGFuZ2Vz
IGZvciBwcm90b3R5cGUgdHJhbnNpc3Rpb25zIHNob3VsZCBjb25zaWRlciB0aGlzIHByb2JsZW0g
YXMgd2VsbC4KICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTI3MzgKLSAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgcHJvdG90eXBlLmdl
dE9iamVjdCgpLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICBpZiAocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgcHJvdG90eXBlLmdldE9iamVjdCgpLT5nbG9iYWxPYmplY3Qo
dm0pID09IGdsb2JhbE9iamVjdCkgewogICAgICAgICByZXN1bHQgPSB2bS5zdHJ1Y3R1cmVDYWNo
ZS5lbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLmdldE9iamVjdCgpLCByZXN1bHQpOwogICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihyZXN1bHQtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVj
dCk7CiAgICAgfSBlbHNlCkBAIC0xNzYsNyArMTc2LDcgQEAgSlNCb3VuZEZ1bmN0aW9uKiBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7
CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRh
KHZtLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5Db25zdHJ1
Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CiAgICAgCiAgICAgYm9v
bCBzbG93Q2FzZSA9IGJvdW5kQXJncyB8fCAhZ2V0SlNGdW5jdGlvbih0YXJnZXRGdW5jdGlvbik7
CkBAIC0yMTEsNyArMjExLDcgQEAgSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3ND
b3B5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCgpKTsKKyAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGds
b2JhbE9iamVjdCh2bSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsr
aSkgewogICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgbV9ib3VuZEFyZ3MtPmdldEluZGV4UXVp
Y2tseShpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CmluZGV4IDllZGM2MDE5ZGYzZGYxZjdmNjI3ZjJlZTY0OGMzM2U1MDM4MTc5YzAuLjhhMTgxZjc0
ZDA2M2Q5ZGRmNjJhODBkMjZlN2QxOWUzNzZlMzEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1Zh
bHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTVmFsdWUgcHJvdG90
eXBlOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29y
ZVByb3RvKSB7Ci0gICAgICAgIGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChw
cm90b3R5cGUpKSB7CisgICAgICAgIGZvciAoOyAhb2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFk
T25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2Jq
ZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90
eXBlKHZtLCBleGVjKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAKICAg
ICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0
dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewog
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNDc4
ZjQ3ODExMmQxZmZiNGQ3ZTA5MzQ5ODFhMGI4OGI1YWY1YmM5Ny4uMjM0NzM2ZTQ3NjEyMjc1YzI3
NjVkY2MyZWRhNTdmNzdmMGU3ZTFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjU0LDkgKzI1NCw5IEBAIGlubGluZSBib29sIEpTQ2Vs
bDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdAogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSlNDZWxs
OjpzZXRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NF
UlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSB0aGlzLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkpOwotICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCkKLSAgICAgICAgfHwgdGhpcy0+c3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKKyAg
ICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSB0aGlzLT5zdHJ1Y3R1cmUodm0pLT5j
bGFzc0luZm8oKSk7CisgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUodm0pCisgICAgICAgIHx8
IHRoaXMtPnN0cnVjdHVyZSh2bSktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFs
aWRhdGVkKCkKICAgICAgICAgfHwgSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgp
LmdldChzdHJ1Y3R1cmUtPmlkKCkpID09IHN0cnVjdHVyZSk7CiAgICAgbV9zdHJ1Y3R1cmVJRCA9
IHN0cnVjdHVyZS0+aWQoKTsKICAgICBtX2ZsYWdzID0gVHlwZUluZm86Om1lcmdlSW5saW5lVHlw
ZUZsYWdzKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSwgbV9mbGFncyk7
CkBAIC0yNzYsOCArMjc2LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0
dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIGlubGluZSBjb25zdCBNZXRob2RU
YWJsZSogSlNDZWxsOjptZXRob2RUYWJsZSgpIGNvbnN0CiB7Ci0gICAgVk0mIHZtID0gKkhlYXA6
OmhlYXAodGhpcyktPnZtKCk7Ci0gICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKTsKKyAgICByZXR1
cm4gbWV0aG9kVGFibGUoKnZtKCkpOwogfQogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpT
Q2VsbDo6bWV0aG9kVGFibGUoVk0mIHZtKSBjb25zdApAQCAtMzMxLDcgKzMzMCw3IEBAIGlubGlu
ZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvQm9vbGVhbigpOwotICAgIHJldHVybiAhc3RydWN0dXJlKCktPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4g
IXN0cnVjdHVyZShleGVjLT52bSgpKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOwogfQogCiBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9C
b29sZWFuKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCBhMGI3ZjJjYTg3ODU5YmIyZDUwMjRlZDdlODViNzhmYjU5MDJhNmRmLi4xZTc3NjMy
YjUxMWYyZTI2ZTJjNGQyYWY4OTJkOWE2OTY2YjRjNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgSlNGdW5j
dGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUlt
cGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3Bl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpT
RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOwotICAgICAgICBBU1NF
UlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEFTU0VS
VChmdW5jdGlvbi0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBmdW5j
dGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcAppbmRleCBjODlhYmMwOWRkZDRlNjM4YTg5ODc4OGM5NmNjOWU4ZGE4MDQ3YzJk
Li4wNWIzNjA0Y2ZmMDJmNzY0MzNhM2Q0YmVjN2VjOGRmN2VkZDdhYmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApA
QCAtNDcsMTQgKzQ3LDE0IEBAIEpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rp
b24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsCiBKU0dlbmVyYXRvckZ1
bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiAgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNH
ZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7Ci0gICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0
KCkpOwogICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0
dXJuIGdlbmVyYXRvckZ1bmN0aW9uOwogfQogCiBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVy
YXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlKQogewotICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KHZtKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiB9CiAKIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtNjYsNyArNjYsNyBAQCBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZQogCiBKU0dl
bmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKaW5kZXggNGY0NDkyYzVmMzU4MmU1ZmJiZmMyNzFjNWNkY2ZkNWIz
NTQwYjBiZC4uZDA0YWNlZTc3M2MwMmNlYjg4OGFjN2UzODRjMzk0YjgwNDBjYWIwNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNjcsNyAr
MTY3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKICAgICAgICAgICAgIC8vIGl0IHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZSB0aGF0IHdlIGRvIG5vdCB1c2UgdGhlIGl0ZXJhdG9yLgogCiAg
ICAgICAgICAgICBpZiAoIWl0ZXJhdG9yRnVuYy5pc1VuZGVmaW5lZCgpCi0gICAgICAgICAgICAg
ICAgJiYgKGl0ZXJhdG9yRnVuYyAhPSBvYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb24oKQorICAgICAgICAgICAgICAgICYmIChpdGVyYXRvckZ1bmMgIT0gb2Jq
ZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKQogICAgICAg
ICAgICAgICAgICAgICB8fCBsZW5ndGhTbG90LmlzQWNjZXNzb3IoKSB8fCBsZW5ndGhTbG90Lmlz
Q3VzdG9tKCkgfHwgbGVuZ3RoU2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpCiAgICAgICAg
ICAgICAgICAgICAgIHx8IGhhc0FueUFycmF5U3RvcmFnZShvYmplY3QtPmluZGV4aW5nVHlwZSgp
KSkpIHsKIApAQCAtMjExLDcgKzIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7
Ci0gICAgU3RydWN0dXJlKiBwYXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0
KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUp
OworICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rpb24tPmdsb2JhbE9iamVj
dCh2bSktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5
cGUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVy
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggZGVjNTMwZjE1YjQ4MGQxMWNmYTZmZThm
ODQ4M2U4YWFjNGY2ZTZiYy4uM2UzZjM2Y2QzNzdhZDE2NjQ4ODAyOTZmNGQ5MTE0MWNlNmZhNjQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KAogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
U2xvdCgKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgICAgICAgICB0aGlzT2JqZWN0LCBleGVjLCBJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3QpOwogICAgIH0KICAgICAKQEAg
LTQ3MCw3ICs0NzAsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpw
dXRCeUluZGV4KAogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewog
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1ZhbHVlKHRoaXNPYmplY3QpLCBzaG91bGRU
aHJvdyk7Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhp
c09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1
ZSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVy
dHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdGhpc09iamVj
dC0+c2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CkBAIC00ODAsNyArNDgwLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKICAgICBKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBjZWxs
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShl
eGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAg
LTU3MCwxMCArNTcwLDEwIEBAIEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmCiAgICAgVk0mIHZtID0g
KmhlYXAtPnZtKCk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKCpoZWFwKTsKICAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVjdC0+aGFzSW5kZXhpbmdIZWFkZXIoKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXRoaXNPYmplY3QtPmhhc0luZGV4aW5nSGVhZGVyKHZtKSk7CiAg
ICAgdGhpc09iamVjdC0+c2V0QnV0dGVyZmx5KHZtLCBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0Fy
cmF5UmlnaHQoCi0gICAgICAgIHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpLCB2bSwgdGhpc09iamVj
dCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCksCi0gICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgMCwgMCkpOworICAgICAgICB0aGlzT2Jq
ZWN0LT5idXR0ZXJmbHkoKSwgdm0sIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2
bSksCisgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5
KCksIGZhbHNlLCAwLCAwKSk7CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4
IDQ5YmNiYjc4NDg2OWZhNmVkMjc2OGI4ZGM3M2FkMzBmMjRkM2Q5YTMuLjlhYmM5ODM1MjdjZGJl
ZjFhMTZjNzNmYWI1OGYxNzk1ZmVjYjVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNDUyLDcgKzQ1Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZt
LCBFeGVjU3RhCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU0Fy
cmF5QnVmZmVyVmlldyogcmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdChleGVjLCB0aGlzT2JqZWN0
LCBhcmdzLCBbJl0oKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5n
bG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlT
dG9yYWdlVHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9i
YWxPYmplY3Qodm0pLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0
b3JhZ2VUeXBlKTsKICAgICAgICAgcmV0dXJuIFZpZXdDbGFzczo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC01NDgsMTAgKzU0OCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5j
U3ViYXJyYXlDcmVhdGUoVk0mdgogCiAgICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNP
YmplY3QtPmJ5dGVPZmZzZXQoKSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAK
LSAgICBKU09iamVjdCogZGVmYXVsdENvbnN0cnVjdG9yID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qo
KS0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBl
KTsKKyAgICBKU09iamVjdCogZGVmYXVsdENvbnN0cnVjdG9yID0gY2FsbGVlLT5nbG9iYWxPYmpl
Y3Qodm0pLT50eXBlZEFycmF5Q29uc3RydWN0b3IoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFn
ZVR5cGUpOwogICAgIEpTVmFsdWUgc3BlY2llcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIp
OwogICAgIGlmIChzcGVjaWVzID09IGRlZmF1bHRDb25zdHJ1Y3RvcikgewotICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1
Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVj
dHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAKICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3Jl
YXRlKApAQCAtNTYxLDcgKzU2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSZ2CiAgICAgfQog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZCh2bS5tX3R5
cGVkQXJyYXlDb250cm9sbGVyLT50b0pTKGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgp
LCBhcnJheUJ1ZmZlci5nZXQoKSkpOworICAgIGFyZ3MuYXBwZW5kKHZtLm1fdHlwZWRBcnJheUNv
bnRyb2xsZXItPnRvSlMoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSwgYXJyYXlC
dWZmZXIuZ2V0KCkpKTsKICAgICBhcmdzLmFwcGVuZChqc051bWJlcihuZXdCeXRlT2Zmc2V0KSk7
CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggZDNiOWQ3OTUyYTEwM2FkNjE3ZTEyZjQ4NjZlYjM1YThiZTlk
YjA0Mi4uMTRlZTE0NzA0YzFmNjZhNDM1NTJiZGE1Y2Q3Y2JlM2YwZmY2OTMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzk0
LDcgKzM5NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIEFTU0VS
VCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBhdXRvIGNhdGNoU2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIEJhc2U6OnNldFN0cnVjdHVyZSh2
bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUoKSkpOworICAgIEJhc2U6OnNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiAKICAgICBtX2RlYnVn
Z2VyID0gMDsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJp
bmcoImdldCAiLCB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBn
bG9iYWxGdW5jUHJvdG9HZXR0ZXIsIFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYyksCiAgICAgICAg
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgbWFrZVN0cmluZygic2V0ICIsIHZtLnBy
b3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90by5zdHJpbmcoKSksIGdsb2JhbEZ1bmNQcm90b1Nl
dHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3ROb25JbmRleEFjY2Vzc29y
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
Ci0gICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+c3RydWN0dXJlKHZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24o
dm0sIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdFN0cnVjdHVyZUZvck9i
amVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgdm0uc3RydWN0dXJlQ2FjaGUuZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUodGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCksIEpT
RmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKSk7CiAgICAgbV9vYmplY3RQcm90
b1ZhbHVlT2ZGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0
UHJvdG90eXBlKCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZikpKTsK
ICAgICAKQEAgLTk2MCw3ICs5NjAsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OlRocm93VHlwZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQo
KTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkKLSAgICAgICAg
ZXhwb3NlRG9sbGFyVk0oKTsKKyAgICAgICAgZXhwb3NlRG9sbGFyVk0odm0pOwogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKSB7CkBA
IC0xMjAzLDcgKzEyMDMsNyBAQCBpbmxpbmUgdm9pZCBPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5n
RmluZGVyOjp2aXNpdChKU0NlbGwqIGNlbGwpCiAgICAgLy8gYSBkaWZmZXJlbnQgZ2xvYmFsIG9i
amVjdCB0aGF0IGhhdmUgcHJvdG90eXBlcyBmcm9tIG91ciBnbG9iYWwgb2JqZWN0LgogICAgIGF1
dG8gaXNJbkVmZmVjdGVkR2xvYmFsT2JqZWN0ID0gWyZdIChKU09iamVjdCogb2JqZWN0KSB7CiAg
ICAgICAgIGZvciAoSlNPYmplY3QqIGN1cnJlbnQgPSBvYmplY3Q7IDspIHsKLSAgICAgICAgICAg
IGlmIChjdXJyZW50LT5nbG9iYWxPYmplY3QoKSA9PSBtX2dsb2JhbE9iamVjdCkKKyAgICAgICAg
ICAgIGlmIChjdXJyZW50LT5nbG9iYWxPYmplY3Qodm0pID09IG1fZ2xvYmFsT2JqZWN0KQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKQEAg
LTE0NjcsMTAgKzE0NjcsOCBAQCBFeGVjU3RhdGUqIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVj
KCkKICAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUobV9nbG9iYWxDYWxsRnJhbWUpOwogfQog
Ci12b2lkIEpTR2xvYmFsT2JqZWN0OjpleHBvc2VEb2xsYXJWTSgpCit2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpleHBvc2VEb2xsYXJWTShWTSYgdm0pCiB7Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
LQogICAgIGlmIChoYXNPd25Qcm9wZXJ0eShnbG9iYWxFeGVjKCksIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmRvbGxhclZNUHJpdmF0ZU5hbWUoKSkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTYzNyw3ICsxNjM1LDcgQEAgSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgc3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7CisgICAgc3RydWN0
dXJlKHZtKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCB0aGlzKTsKICAgICBtX3J1bnRpbWVGbGFncyA9
IG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUtPmphdmFTY3JpcHRSdW50aW1lRmxhZ3ModGhpcyk7
CiAgICAgaW5pdCh2bSk7CiAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZt
LCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFByb3RvdHlwZURpcmVjdCh2
bSksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhpcykpOwpAQCAtMTY0Nyw3ICsxNjQ1LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogdm9pZCBKU0ds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogdGhpc1ZhbHVlKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xv
YmFsT2JqZWN0KHZtLCB0aGlzKTsKKyAgICBzdHJ1Y3R1cmUodm0pLT5zZXRHbG9iYWxPYmplY3Qo
dm0sIHRoaXMpOwogICAgIG1fcnVudGltZUZsYWdzID0gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZS0+amF2YVNjcmlwdFJ1bnRpbWVGbGFncyh0aGlzKTsKICAgICBpbml0KHZtKTsKICAgICBzZXRH
bG9iYWxUaGlzKHZtLCB0aGlzVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNTJkMjExYzBiYWY0MDlmYTJmNDk1ZDMwYWE5NjM2
OWVkZGJiYjE5Ni4uZDQyY2FhYmUzNGUwZDFkYWRhYmY4Yzk0YjRmZGU0OWZmMDZiNmIxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC05
MDEsNyArOTAxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgV2Vha1JhbmRvbSYgd2Vha1JhbmRvbSgpIHsgcmV0dXJuIG1f
d2Vha1JhbmRvbTsgfQogCiAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3M7IH0KLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGV4cG9zZURvbGxhclZNKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
eHBvc2VEb2xsYXJWTShWTSYpOwogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBKU1dy
YXBwZXJNYXAqIHdyYXBwZXJNYXAoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXJNYXAuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA3MzEzNjczZTExNTE5YTRhODgxM2Y3NzQyMmU1NjZj
MjNjMWVlMzdlLi40ZDlkYTBlZjBmNWRhYmQzMzlkMWI3ODY0MDliYTM3OWIzZjkxNmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocGFyc2VkT2JqZWN0KTsKIAogICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VP
cmlnaW4gPSBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKTsKLSAgICBKU0dsb2JhbE9iamVjdCog
Y2FsbGVlR2xvYmFsT2JqZWN0ID0gZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCh2bSk7CiAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBm
YWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpO
b25lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwp
OwogICAgIGlmICghZXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW50ZXJuYWxQcm9taXNlLmNwcAppbmRleCBlYWRmMzQwODQwZjVlMTJkMzQwNGY2OTJlMGY5
ZjI4ODRlODg0MzYzLi4xMmY1Mjk0NWYzMmUxN2JhZDc2NjQ3M2E4Yjk3ODQxMjZhZDk4YzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJv
bWlzZTo6dGhlbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIG9uRnVsZmlsCiAgICAgSlNP
YmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRoZW5QdWJsaWNOYW1lKCkpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsK
KyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggZGEzZjgxM2QzMzZkMTJlZmQ2ZDMwZjM0ZWM4NTE3YWE0YTdlNzg2OS4uMTQ5MzQ0
MDgyZmI4ZDMyNmJhMGVhOTFiNmIyMzg1ZGZiZDBjYzVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHAKQEAgLTU5LDggKzU5LDggQEAgU3RydWN0dXJlKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmpz
Q2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9i
amVjdCh2bSk7CiAgICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBKU0ludGVybmFsUHJv
bWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVyZSgp
KTsKICAgICBwcm9taXNlLT5pbml0aWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXhlYy0+YXJn
dW1lbnQoMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5jcHAKaW5kZXggYWQ2MjU0YWY1MjFiNDAzNjgwMGRh
Nzg0ZWVhOGUyZDNmYTkyNjcyNi4uN2FjNjYzYTQ4ZDAxNDRhNjY5ZTk3MzMzYTU1Y2I5ZGE2MTM2
NzViOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIEpTSm9iTWljcm90YXNrOjpydW4oRXhlY1N0YXRlKiBleGVjKQogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGhhbmRs
ZXJDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBoYW5kbGVyQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSht
X2pvYi5nZXQoKSwgaGFuZGxlckNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBoYW5kbGVyQ2FsbFR5
cGUgPSBnZXRDYWxsRGF0YSh2bSwgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSk7CiAgICAg
QVNTRVJUKGhhbmRsZXJDYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBoYW5kbGVyQXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IDk5NDNkMGVk
NGY4MTFiZmY2MGQ0ZDJmNWU4ZTFhNWQwOTcxNjM5YTIuLjIwMzRhNzNlMzk0OWE4ZDczNjhhOWI2
NjYwMzJhMDc3YjlhZmQwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTk0LDE2ICs5NCwxNyBAQCBib29s
IEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLAogICAgIGlmIChzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBpZiAoSlNWYWx1ZSB2
YWx1ZSA9IHRoaXNPYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpKSB7CisgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT5nZXREaXJl
Y3Qodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAogICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNl
IHRoZXJlJ3Mgbm8gd2F5IHRvIGdpdmUgYSAKICAgICAvLyBsZXhpY2FsIGVudmlyb25tZW50IG9i
amVjdCBnZXR0ZXIgcHJvcGVydGllcyBvciBhIHByb3RvdHlwZS4KLSAgICBBU1NFUlQoIXRoaXNP
YmplY3QtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7Ci0gICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdChleGVjLT52bSgpKS5pc051bGwoKSk7CisgICAgQVNTRVJU
KCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHZtKSk7CisgICAgQVNTRVJU
KHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkuaXNOdWxsKCkpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMTIxLDcgKzEyMiw3IEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1l
bnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
CiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdoIHRvIEpTT2JqZWN0IGJlY2F1c2UgX19wcm90
b19fIGFuZCBnZXR0ZXIvc2V0dGVyIAogICAgIC8vIHByb3BlcnRpZXMgYXJlIG5vbi1zdGFuZGFy
ZCBleHRlbnNpb25zIHRoYXQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGRvIG5vdAogICAgIC8vIGV4
cG9zZSBpbiB0aGUgbGV4aWNhbEVudmlyb25tZW50IG9iamVjdC4KLSAgICBBU1NFUlQoIXRoaXNP
YmplY3QtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCF0aGlzT2Jq
ZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGV4ZWMtPnZtKCkpKTsKICAgICByZXR1cm4g
dGhpc09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAK
aW5kZXggOTZhZTU1ZjdjYWQyNjBiY2JlZjU2ZTllYWQ0MTdmZmRlOWVlYWExZC4uYmU5NjE5OGM2
NjUwNDk0OTM5NTFhNGRiMDY5NmVhYzJiMzEzZjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwLmNwcApAQCAtNTEsMTIgKzUxLDEyIEBAIGJvb2wgSlNNYXA6OmlzSXRlcmF0
b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
aXNNYXBQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5z
dHJ1Y3R1cmUoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIC8vIFRoaXMgaXMgdGhl
IGZhc3QgY2FzZS4gTWFueSBtYXBzIHdpbGwgYmUgYW4gb3JpZ2luYWwgbWFwLgogICAgIGlmIChz
dHJ1Y3R1cmUgPT0gZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGdldFBy
b3RvdHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01hcEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TWFwSXRlcmF0b3IuY3BwCmluZGV4IGMzZmQ1NmY5NjlhMTY2YTVjYTM0YzA5ZmQxYWYzMTUyOGFi
NjA3ZDguLjI1NjBkY2ExNzFkYmY4ZjBjYzc5YjQ2NDA1NzQ0NzkwNzQyODU1ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCkBAIC01NSw3
ICs1NSw3IEBAIEpTVmFsdWUgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsCiAgICAgYXJncy5hcHBlbmQoa2V5KTsK
ICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+anNDYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNhbGxGcmFtZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KGNhbGxGcmFtZS0+dm0oKSk7CiAg
ICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGNhbGxGcmFtZSwgMCwgZ2xvYmFsT2JqZWN0LCBhcmdz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuY3BwCmluZGV4IDY1OThkNTQ0MzYxYzMyNWNkMmUzMzU4YjhmMDM4YWU5ZjI4NjhiZDQuLjQ1
NTM4MjkwMzlmN2EwM2FkODJiMmYyZmU3MzJkMzExZWE2MGE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGtleSwgY29uc3QgU291cmNlQwogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpz
Q2FzdDxKU09iamVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5wcm92aWRlRmV0Y2hQdWJsaWNOYW1lKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBB
U1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgU291cmNlQ29kZSBzb3Vy
Y2UgeyBzb3VyY2VDb2RlIH07CkBAIC0xNTAsNyArMTUwLDcgQEAgSlNJbnRlcm5hbFByb21pc2Uq
IEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHUKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhl
Yywgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9hZEFuZEV2YWx1YXRlTW9kdWxl
UHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBK
U0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CkBAIC0xNzEsNyArMTcxLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9h
ZGVyOjpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW0KICAgICBK
U09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2Fs
bERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUp
OwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAtMTkyLDcgKzE5Miw3
IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlS2V5CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganND
YXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEp
OwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkBAIC0yMTIsNyArMjEyLDcgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWQKICAgICBhdXRvKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW1wb3J0TW9kdWxl
UHVibGljTmFtZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRD
YWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA3ZDg0
Mzk0MTdlZWM4NjNiYjQ5Nzk3NWViZjU0ZDJmMGI5YWJmMDA2Li5kZGNmYzE4ZTlkYzBhYWJkYjgy
NDU3ZDNiNDQ5MjRmMmNjNTk5NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcApAQCAtODE5LDcgKzgxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBK
U1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
biwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1
bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIHNjb3BlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRl
eCAxOTczM2UwNjFlMTNjM2Y0YjRlMmFjN2QwOGUxNjM1YTNiOTE0ZjYzLi5hNGM5YmYxZWFmNjUy
NGZmYTJkNzM4ZjAwMTM3MGJhZGMzMTdlNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCkBAIC03NzUsNyArNzc1LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUKICAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwog
ICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRlY2lkZSB0byBjYWNoZSB0aGlzIHByb3Bl
cnR5IGJlZm9yZSB3ZSBwb3RlbnRpYWxseSBleGVjdXRlIGFyaWJpdHJhcnkgSlMuCi0gICAgICAg
ICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAg
ICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCiAgICAgICAgICAgICAg
ICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGV4ZWMsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsK
QEAgLTc5OSw3ICs3OTksNyBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAg
Ly8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoIW9iai0+c3RhdGljUHJvcGVy
dGllc1JlaWZpZWQoKSkgeworICAgICAgICBpZiAoIW9iai0+c3RhdGljUHJvcGVydGllc1JlaWZp
ZWQodm0pKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5jbGFzc0luZm8odm0pLT5oYXNTdGF0aWNT
ZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
ZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeSh2bSwgcHJvcGVydHlOYW1lKSkgewog
ICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC04MzQsNyArODM0LDcgQEAg
Ym9vbCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLAogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJB
WV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJv
dyk7Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09i
amVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwg
c2xvdCk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZh
bHVlLCBzbG90KTsKICAgICB9CiAKICAgICBpZiAoaXNDb3B5T25Xcml0ZSh0aGlzT2JqZWN0LT5p
bmRleGluZ01vZGUoKSkpCkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEpTT2JqZWN0OjplbnRl
ckRpY3Rpb25hcnlJbmRleGluZ01vZGUoVk0mIHZtKQogCiB2b2lkIEpTT2JqZWN0Ojpub3RpZnlQ
cmVzZW5jZU9mSW5kZXhlZEFjY2Vzc29ycyhWTSYgdm0pCiB7Ci0gICAgaWYgKG1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcygpKQorICAgIGlmIChtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
dm0pKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgTm9uUHJvcGVydHlU
cmFuc2l0aW9uOjpBZGRJbmRleGVkQWNjZXNzb3JzKSk7CkBAIC0xMDIyLDggKzEwMjIsOCBAQCBC
dXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2UoVk0mIHZtLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBNQVhfU1RPUkFHRV9WRUNUT1Jf
TEVOR1RIKTsKICAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAg
IEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsK
LSAgICBBU1NFUlQoIW5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwotICAgIEFTU0VSVCghaW5kZXhp
bmdTaG91bGRCZVNwYXJzZSgpKTsKKyAgICBBU1NFUlQoIW5lZWRzU2xvd1B1dEluZGV4aW5nKHZt
KSk7CisgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSk7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIHVuc2lnbmVkIHByb3Bl
cnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0
aChwcm9wZXJ0eUNhcGFjaXR5LCBsZW5ndGgpOwpAQCAtMTExOCw3ICsxMTE4LDcgQEAgQXJyYXlT
dG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCB2ZWMKIAogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRl
QXJyYXlTdG9yYWdlQnV0dGVyZmx5KHZtLCB0aGlzLCBvbGRTdHJ1Y3R1cmUsIGxlbmd0aCwgdmVj
dG9yTGVuZ3RoLCBidXR0ZXJmbHkoKSk7CiAgICAgQXJyYXlTdG9yYWdlKiByZXN1bHQgPSBuZXdC
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgc3VnZ2Vz
dGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIHN1
Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24odm0pKTsKICAgICBudWtlU3RydWN0dXJlQW5k
U2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1Y3R1cmVJRCwgbmV3QnV0dGVyZmx5KTsKICAgICBzZXRT
dHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEyMTMs
NyArMTIxMyw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0Fy
cmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpCiAKIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0
dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgc3VnZ2VzdGVkQXJyYXlTdG9y
YWdlVHJhbnNpdGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9y
YWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKHZtKSk7CiB9CiAKIENvbnRp
Z3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0RvdWJsZShWTSYgdm0pCkBAIC0x
MjcyLDcgKzEyNzIsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0Fy
cmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbgogCiBBcnJheVN0b3JhZ2Uq
IEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0
dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VU
cmFuc2l0aW9uKCkpOworICAgIHJldHVybiBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSh2bSwg
c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbih2bSkpOwogfQogCiBDb250aWd1b3VzSlNW
YWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoVk0mIHZtKQpAQCAtMTMy
Niw3ICsxMzI2LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJy
YXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW8KIAogQXJyYXlTdG9yYWdlKiBK
U09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1
cm4gY29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VU
cmFuc2l0aW9uKCkpOworICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2Uodm0s
IHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24odm0pKTsKIH0KIAogQXJyYXlTdG9yYWdl
KiBKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblBy
b3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uKQpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgQXJyYXlT
dG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0s
IE5vblByb3BlcnR5VHJhbnMKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRp
Z3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRDb250aWd1
b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7
CisgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN1Z2dlc3Rl
ZEFycmF5U3RvcmFnZVRyYW5zaXRpb24odm0pKTsKIH0KIAogdm9pZCBKU09iamVjdDo6Y29udmVy
dFVuZGVjaWRlZEZvclZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE0MjgsNyArMTQy
OCw3IEBAIHZvaWQgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMkZvclZhbHVlKFZNJiB2bSwgSlNWYWx1
ZSB2YWx1ZSkKIHZvaWQgSlNPYmplY3Q6OmNvbnZlcnRGcm9tQ29weU9uV3JpdGUoVk0mIHZtKQog
ewogICAgIEFTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7Ci0gICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT5pbmRleGluZ01vZGUoKSA9PSBpbmRleGluZ01vZGUoKSk7CisgICAgQVNT
RVJUKHN0cnVjdHVyZSh2bSktPmluZGV4aW5nTW9kZSgpID09IGluZGV4aW5nTW9kZSgpKTsKIAog
ICAgIGNvbnN0IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSB0cnVlOwogICAgIEJ1dHRlcmZseSog
b2xkQnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBDb250aWd1
b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmVuc3VyZVdyaXRhYmxlSW50MzJTbG93KFZNJiB2bSkKICAg
ICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6Ci0gICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNl
KCkgfHwgbmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRl
eGluZ1Nob3VsZEJlU3BhcnNlKHZtKSB8fCBuZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkpKQogICAg
ICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNKU1ZhbHVlcygpOwogICAgICAgICByZXR1cm4gY3Jl
YXRlSW5pdGlhbEludDMyKHZtLCAwKTsKICAgICAgICAgCkBAIC0xNTI3LDcgKzE1MjcsNyBAQCBD
b250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6ZW5zdXJlV3JpdGFibGVEb3VibGVTbG93KFZNJiB2
bSkKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxB
TktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJl
U3BhcnNlKCkgfHwgbmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VM
WShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSB8fCBuZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkp
KQogICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNEb3VibGVzKCk7CiAgICAgICAgIHJldHVy
biBjcmVhdGVJbml0aWFsRG91YmxlKHZtLCAwKTsKICAgICAgICAgCkBAIC0xNTYyLDcgKzE1NjIs
NyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmVuc3VyZVdyaXRhYmxlQ29udGlndW91
c1Nsb3coVk0mIHZtKQogICAgIAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBj
YXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4
aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBuZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKKyAgICAgICAg
aWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2Uodm0pIHx8IG5lZWRzU2xvd1B1dElu
ZGV4aW5nKHZtKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVJbml0aWFsQ29udGlndW91cyh2bSwgMCk7CiAgICAgICAgIApA
QCAtMTU5NiwyOCArMTU5NiwyOCBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJh
eVN0b3JhZ2VTbG93KFZNJiB2bSkKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGlmIChVTkxJS0VM
WShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhp
bmdTaG91bGRCZVNwYXJzZSh2bSkpKQogICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3Rv
cmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2bSk7CiAgICAgICAgIHJl
dHVybiBjcmVhdGVJbml0aWFsQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBBU1NFUlQoIWluZGV4aW5nU2hv
dWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFTU0VSVCghbmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7
CisgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSh2bSkpOworICAgICAgICBB
U1NFUlQoIW5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSk7CiAgICAgICAgIHJldHVybiBjb252ZXJ0
VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNl
KCkpOwotICAgICAgICBBU1NFUlQoIW5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBB
U1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2Uodm0pKTsKKyAgICAgICAgQVNTRVJUKCFuZWVk
c1Nsb3dQdXRJbmRleGluZyh2bSkpOwogICAgICAgICByZXR1cm4gY29udmVydEludDMyVG9BcnJh
eVN0b3JhZ2Uodm0pOwogICAgICAgICAKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6Ci0gICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAgICAg
QVNTRVJUKCFuZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFpbmRleGlu
Z1Nob3VsZEJlU3BhcnNlKHZtKSk7CisgICAgICAgIEFTU0VSVCghbmVlZHNTbG93UHV0SW5kZXhp
bmcodm0pKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSk7
CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6Ci0gICAg
ICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAgICAgQVNTRVJUKCFu
ZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJl
U3BhcnNlKHZtKSk7CisgICAgICAgIEFTU0VSVCghbmVlZHNTbG93UHV0SW5kZXhpbmcodm0pKTsK
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0pOwogICAg
ICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTcxNiw3ICsxNzE2LDcgQEAgdm9pZCBKU09iamVjdDo6
c2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgfSBlbHNl
CiAgICAgICAgIHB1dERpcmVjdCh2bSwga25vd25Qb2x5UHJvdG9PZmZzZXQsIHByb3RvdHlwZSk7
CiAKLSAgICBpZiAoIWFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
KSkKKyAgICBpZiAoIWFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
dm0pKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKG1heUJlUHJvdG90eXBlKCkpIHsK
QEAgLTE4ODksNyArMTg4OSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVyCiAKICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVz
UmVpZmllZCgpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCh2bSkpIHsKICAgICAgICAgaWYgKGF1dG8gZW50cnkgPSB0aGlzT2JqZWN0LT5maW5kUHJvcGVy
dHlIYXNoRW50cnkodm0sIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBz
dGF0aWMgdGFibGUgY29udGFpbnMgYSBub24tY29uZmlndXJhYmxlIChEb250RGVsZXRlKSBwcm9w
ZXJ0eSB0aGVuIHdlIGNhbiByZXR1cm4gZWFybHk7CiAgICAgICAgICAgICAvLyBpZiB0aGVyZSBp
cyBhIHByb3BlcnR5IGluIHRoZSBzdG9yYWdlIGFycmF5IGl0IHRvbyBtdXN0IGJlIG5vbi1jb25m
aWd1cmFibGUgKHRoZSBsYW5ndWFnZSBkb2VzCkBAIC0yMDA5LDcgKzIwMDksNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSlNPYgogICAgIGlmIChmdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpICYm
IG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpUYWtlc0hpbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNI
aW50KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiU3ltYm9sLnRvUHJpbWl0aXZlIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51
bGwiKSk7CkBAIC0yMTM5LDcgKzIxMzksNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYQogCiAg
ICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgaGFzSW5zdGFu
Y2VWYWx1ZSAhPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShoYXNJbnN0YW5jZVZh
bHVlLCBjYWxsRGF0YSk7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxs
RGF0YSh2bSwgaGFzSW5zdGFuY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VW
YWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIzMjIsNyArMjMyMiw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiB2b2lkIEpTT2Jq
ZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoIW9iamVjdC0+
c3RhdGljUHJvcGVydGllc1JlaWZpZWQoKSkKKyAgICBpZiAoIW9iamVjdC0+c3RhdGljUHJvcGVy
dGllc1JlaWZpZWQodm0pKQogICAgICAgICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgb2Jq
ZWN0LT5jbGFzc0luZm8odm0pLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIAogICAgIGlmICghbW9k
ZS5pbmNsdWRlSlNPYmplY3RQcm9wZXJ0aWVzKCkpCkBAIC0yMzczLDIyICsyMzczLDIyIEBAIHZv
aWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYgdm0pCiAKIGJvb2wgSlNPYmplY3Q6OnByZXZlbnRFeHRl
bnNpb25zKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAoIW9i
amVjdC0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGlmICghb2JqZWN0LT5pc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKSB7CiAgICAgICAg
IC8vIFdlJ3ZlIGFscmVhZHkgc2V0IHRoZSBpbnRlcm5hbCBbW1ByZXZlbnRFeHRlbnNpb25zXV0g
ZmllbGQgdG8gZmFsc2UuCiAgICAgICAgIC8vIFdlIGRvbid0IGNhbGwgdGhlIG1ldGhvZFRhYmxl
IGlzRXh0ZW5zaWJsZSBoZXJlIGJlY2F1c2UgaXQncyBub3QgZGVmaW5lZAogICAgICAgICAvLyB0
aGF0IHdheSBpbiB0aGUgc3BlY2lmaWNhdGlvbi4gV2UgYXJlIGp1c3QgZG9pbmcgYW4gb3B0aW1p
emF0aW9uIGhlcmUuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgb2JqZWN0LT5lbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0p
OwogICAgIG9iamVjdC0+c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNp
b25zVHJhbnNpdGlvbih2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmlzRXh0ZW5zaWJsZShKU09iamVjdCogb2JqLCBFeGVj
U3RhdGUqKQorYm9vbCBKU09iamVjdDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KiBvYmosIEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gb2JqLT5pc0V4dGVuc2libGVJbXBsKCk7CisgICAg
cmV0dXJuIG9iai0+aXNFeHRlbnNpYmxlSW1wbChleGVjLT52bSgpKTsKIH0KIAogYm9vbCBKU09i
amVjdDo6aXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTIzOTksOCArMjM5OSw4IEBA
IGJvb2wgSlNPYmplY3Q6OmlzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCiAKIHZvaWQgSlNP
YmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
QVNTRVJUKCFzdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEFTU0VSVCghc3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKTsKIAogICAgIC8v
IElmIHRoaXMgb2JqZWN0J3MgQ2xhc3NJbmZvIGhhcyBubyBzdGF0aWMgcHJvcGVydGllcywgdGhl
biBub3RoaW5nIHRvIHJlaWZ5IQogICAgIC8vIFdlIGNhbiBzYWZlbHkgc2V0IHRoZSBmbGFnIHRv
IGF2b2lkIHRoZSBleHBlbnNpdmUgY2hlY2sgYWdhaW4gaW4gdGhlIGZ1dHVyZS4KQEAgLTI0Mjks
OSArMjQyOSw5IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgc3RydWN0dXJlKHZtKS0+c2V0U3RhdGljUHJvcGVydGllc1JlaWZp
ZWQodHJ1ZSk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJv
cGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBnZXR0ZXJTZXR0ZXIsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK05FVkVSX0lOTElORSB2b2lk
IEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlTbG90JiBz
bG90LCBKU0NlbGwqIGdldHRlclNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogewotICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkgeworICAgIGlmIChzdHJ1Y3R1cmUodm0pLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFy
eSgpKSB7CiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nh
c3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNTI1LDcgKzI1MjUsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25JbmRleGVkUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgY29uc3QgUAogICAgIC8vIDMu
IElmIGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRlbnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJl
amVjdC4KICAgICAvLyA0LiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBp
cyB0cnVlLCB0aGVuCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGlmICgh
aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgaWYgKCFpc1N0cnVjdHVyZUV4dGVu
c2libGUodm0pKSB7CiAgICAgICAgICAgICBtYXAtPnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwog
ICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24s
IEFTQ0lJTGl0ZXJhbChOb25FeHRlbnNpYmxlT2JqZWN0UHJvcGVydHlEZWZpbmVFcnJvcikpOwog
ICAgICAgICB9CkBAIC0yNjgwLDcgKzI2ODAsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgog
CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighaXNDb3B5T25X
cml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRl
eGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7Ci0gICAgQVNTRVJUKCFpbmRleGluZ1No
b3VsZEJlU3BhcnNlKCkpOworICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSh2bSkp
OwogCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAK
QEAgLTI3NTIsNyArMjc1Miw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gRmly
c3QsIGhhbmRsZSBjYXNlcyB3aGVyZSB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhIHNwYXJzZSBt
YXAuCiAgICAgaWYgKExJS0VMWSghbWFwKSkgewogICAgICAgICAvLyBJZiB0aGUgYXJyYXkgaXMg
bm90IGV4dGVuc2libGUsIHdlIHNob3VsZCBoYXZlIGVudGVyZWQgZGljdGlvbmFyeSBtb2RlLCBh
bmQgY3JlYXRlZCB0aGUgc3BhcnNlIG1hcC4KLSAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0
ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpOwog
ICAgIAogICAgICAgICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgogICAgICAgICBp
ZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKQEAgLTI3NzgsNyArMjc3OCw3IEBAIGJvb2wgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNT
dGF0ZSogZXhlYywgdW5zCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7
CiAgICAgaWYgKGkgPj0gbGVuZ3RoKSB7CiAgICAgICAgIC8vIFByb2hpYml0IGdyb3dpbmcgdGhl
IGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUuCi0gICAgICAgIGlmIChtYXAtPmxlbmd0
aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpCisgICAgICAgIGlmICht
YXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKICAg
ICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJ
SUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgbGVuZ3RoID0g
aSArIDE7CiAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjgyMiw3ICsy
ODIyLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUKICAgICAKICAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAg
ICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkgeworICAgICAgICBpZiAoaW5kZXhpbmdT
aG91bGRCZVNwYXJzZSh2bSkpIHsKICAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBpLCB2
YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlRXhp
c3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7CkBAIC0yODMxLDkgKzI4MzEs
OSBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQogICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4
ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5lZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKKyAgICAg
ICAgaWYgKG5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSkgewogICAgICAgICAgICAgLy8gQ29udmVy
dCB0aGUgaW5kZXhpbmcgdHlwZSB0byB0aGUgU2xvd1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnku
Ci0gICAgICAgICAgICBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JM
ZW5ndGgoMCwgMCwgMCwgaSArIDEpKTsKKyAgICAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2
bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0aCh2bSwgMCwgMCwgMCwgaSArIDEpKTsKICAgICAg
ICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dyk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yODkxLDcgKzI4OTEsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhl
Y1N0YXRlKiBleGVjLAogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2FzZXMgd2hlcmUgd2UgZG9uJ3Qg
Y3VycmVudGx5IGhhdmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChMSUtFTFkoIW1hcCkpIHsKICAg
ICAgICAgLy8gSWYgdGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxlLCB3ZSBzaG91bGQgaGF2ZSBl
bnRlcmVkIGRpY3Rpb25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhlIHNwYXJlIG1hcC4KLSAgICAg
ICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzU3Ry
dWN0dXJlRXh0ZW5zaWJsZSh2bSkpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUgbV9sZW5ndGgg
aWYgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKQEAgLTI5
MjIsNyArMjkyMiw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICAvLyBQ
cm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAg
ICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIG1vZGUgPT0gUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdywgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAg
ICAgICBpZiAoIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKQorICAgICAgICAgICAgaWYgKCFpc1N0
cnVjdHVyZUV4dGVuc2libGUodm0pKQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3Io
ZXhlYywgc2NvcGUsIG1vZGUgPT0gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdywgQVNDSUlMaXRl
cmFsKE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yKSk7CiAgICAgICAgIH0K
ICAgICAgICAgbGVuZ3RoID0gaSArIDE7CkBAIC0yOTc0LDcgKzI5NzQsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleFNsb3dPckJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkCiAgICAgCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNh
c2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIGlmIChpbmRleGluZ1Nob3Vs
ZEJlU3BhcnNlKCkgfHwgYXR0cmlidXRlcykgeworICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRC
ZVNwYXJzZSh2bSkgfHwgYXR0cmlidXRlcykgewogICAgICAgICAgICAgcmV0dXJuIHB1dERpcmVj
dEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAg
ICBleGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSwKICAgICAgICAgICAgICAgICBlbnN1
cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pKTsK
QEAgLTI5ODMsOCArMjk4Myw4IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4U2xvd09y
QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKICAgICAgICAgICAg
IHJldHVybiBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2Uo
CiAgICAgICAgICAgICAgICAgZXhlYywgaSwgdmFsdWUsIGF0dHJpYnV0ZXMsIG1vZGUsIGNyZWF0
ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChuZWVkc1Ns
b3dQdXRJbmRleGluZygpKSB7Ci0gICAgICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBj
cmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgMCwg
aSArIDEpKTsKKyAgICAgICAgaWYgKG5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSkgeworICAgICAg
ICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCBpICsg
MSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKHZtLCAwLCAwLCAwLCBpICsgMSkpOwogICAgICAgICAgICAg
c3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBz
dG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTMwMDEsNyArMzAwMSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4U2xvd09y
QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEFTU0VS
VCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKKyAgICAgICAgQVNTRVJUKCFpbmRleGluZ1No
b3VsZEJlU3BhcnNlKHZtKSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzKQogICAgICAgICAgICAg
cmV0dXJuIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShl
eGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSwgZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3Rz
QW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNJbnQzMigpKSB7CkBAIC0zMDEzLDcgKzMwMTMsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbmRleFNsb3dPckJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsK
LSAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOworICAgICAgICBBU1NF
UlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2Uodm0pKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMp
CiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKGV4ZWMsIGksIHZhbHVlLCBhdHRyaWJ1dGVzLCBtb2RlLCBlbnN1cmVBcnJh
eVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pKTsKICAgICAg
ICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKSB7CkBAIC0zMDMwLDcgKzMwMzAsNyBAQCBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbmRleFNsb3dPckJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFMTF9DT05USUdVT1VT
X0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJz
ZSgpKTsKKyAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSk7CiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzKQogICAgICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRl
cywgbW9kZSwgZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhp
bmdNb2RlKHZtKSk7CiAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0
QXR0cmlidXRlczxDb250aWd1b3VzU2hhcGU+KGV4ZWMsIGksIHZhbHVlKTsKQEAgLTMxMDYsNyAr
MzEwNiw3IEBAIEpTRnVuY3Rpb24qIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsCiB9CiAKIC8vIE5PVEU6IFRoaXMgbWV0
aG9kIGlzIGZvciBBcnJheVN0b3JhZ2UgdmVjdG9ycy4KLUFMV0FZU19JTkxJTkUgdW5zaWduZWQg
SlNPYmplY3Q6OmdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBpbmRleEJpYXMsIHVuc2lnbmVk
IGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRl
c2lyZWRMZW5ndGgpCitBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpTT2JqZWN0OjpnZXROZXdWZWN0
b3JMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBpbmRleEJpYXMsIHVuc2lnbmVkIGN1cnJlbnRWZWN0
b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKGRlc2lyZWRMZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdU
SCk7CiAKQEAgLTMxMjYsMTEgKzMxMjYsMTEgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBKU09i
amVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4QmlhcywgdW5zaWduZWQKICAg
ICBsYXN0QXJyYXlTaXplID0gc3RkOjptaW4oaW5jcmVhc2VkTGVuZ3RoLCBGSVJTVF9BUlJBWV9T
VE9SQUdFX1ZFQ1RPUl9HUk9XKTsKIAogICAgIHJldHVybiBBcnJheVN0b3JhZ2U6Om9wdGltYWxW
ZWN0b3JMZW5ndGgoCi0gICAgICAgIGluZGV4Qmlhcywgc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCksCisgICAgICAgIGluZGV4Qmlhcywgc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwKICAgICAgICAgc3RkOjptaW4oaW5jcmVhc2VkTGVuZ3RoLCBNQVhfU1RPUkFHRV9W
RUNUT1JfTEVOR1RIKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgSlNPYmplY3Q6Omdl
dE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKQorQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKFZNJiB2bSwgdW5zaWduZWQgZGVz
aXJlZExlbmd0aCkKIHsKICAgICB1bnNpZ25lZCBpbmRleEJpYXMgPSAwOwogICAgIHVuc2lnbmVk
IHZlY3Rvckxlbmd0aCA9IDA7CkBAIC0zMTQzLDcgKzMxNDMsNyBAQCBBTFdBWVNfSU5MSU5FIHVu
c2lnbmVkIEpTT2JqZWN0OjpnZXROZXdWZWN0b3JMZW5ndGgodW5zaWduZWQgZGVzaXJlZExlbmd0
aCkKICAgICAgICAgbGVuZ3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogICAgIH0K
IAotICAgIHJldHVybiBnZXROZXdWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCB2ZWN0b3JMZW5ndGgs
IGxlbmd0aCwgZGVzaXJlZExlbmd0aCk7CisgICAgcmV0dXJuIGdldE5ld1ZlY3Rvckxlbmd0aCh2
bSwgaW5kZXhCaWFzLCB2ZWN0b3JMZW5ndGgsIGxlbmd0aCwgZGVzaXJlZExlbmd0aCk7CiB9CiAK
IHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgpAQCAtMzIxOSw3ICszMjE5LDcg
QEAgYm9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBu
ZXdMZW5ndGgpCiAKICAgICB1bnNpZ25lZCBpbmRleEJpYXMgPSBzdG9yYWdlLT5tX2luZGV4Qmlh
czsKICAgICBBU1NFUlQobmV3TGVuZ3RoID4gdmVjdG9yTGVuZ3RoKTsKLSAgICB1bnNpZ25lZCBu
ZXdWZWN0b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5ndGgobmV3TGVuZ3RoKTsKKyAgICB1bnNp
Z25lZCBuZXdWZWN0b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5ndGgodm0sIG5ld0xlbmd0aCk7
CiAKICAgICAvLyBGYXN0IGNhc2UgLSB0aGVyZSBpcyBubyBwcmVjYXBhY2l0eS4gSW4gdGhlc2Ug
Y2FzZXMgYSByZWFsbG9jIG1ha2VzIHNlbnNlLgogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpcy0+c3RydWN0dXJlKHZtKTsKQEAgLTMzMTYsMTAgKzMzMTYsMTAgQEAgdm9pZCBKU09iamVj
dDo6cmVhbGxvY2F0ZUFuZFNocmlua0J1dHRlcmZseShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBBU1NFUlQobGVuZ3RoIDw9IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpOwogICAgIEFT
U0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihpbmRleGluZ1R5
cGUoKSkgfHwgaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoaW5kZXhp
bmdUeXBlKCkpKTsKICAgICBBU1NFUlQobV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpID4gbGVu
Z3RoKTsKLSAgICBBU1NFUlQoIW1fYnV0dGVyZmx5LT5pbmRleGluZ0hlYWRlcigpLT5wcmVDYXBh
Y2l0eShzdHJ1Y3R1cmUoKSkpOworICAgIEFTU0VSVCghbV9idXR0ZXJmbHktPmluZGV4aW5nSGVh
ZGVyKCktPnByZUNhcGFjaXR5KHN0cnVjdHVyZSh2bSkpKTsKIAogICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKLSAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpLT5y
ZXNpemVBcnJheSh2bSwgdGhpcywgc3RydWN0dXJlKCksIDAsIEFycmF5U3RvcmFnZTo6c2l6ZUZv
cihsZW5ndGgpKTsKKyAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpLT5y
ZXNpemVBcnJheSh2bSwgdGhpcywgc3RydWN0dXJlKHZtKSwgMCwgQXJyYXlTdG9yYWdlOjpzaXpl
Rm9yKGxlbmd0aCkpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7
CiAgICAgbmV3QnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOwpAQCAtMzYzNyw3ICszNjM3LDcgQEAgdm9pZCBKU09iamVjdDo6c2hp
ZnRCdXR0ZXJmbHlBZnRlckZsYXR0ZW5pbmcoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
JiwgVk0KICAgICBCdXR0ZXJmbHkqIG9sZEJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwog
ICAgIHNpemVfdCBwcmVDYXBhY2l0eTsKICAgICBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXM7Ci0gICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IHRoaXMtPmhhc0luZGV4aW5nSGVh
ZGVyKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IHRoaXMtPmhhc0luZGV4aW5nSGVh
ZGVyKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoaGFzSW5kZXhpbmdIZWFkZXIpKSB7CiAgICAgICAg
IHByZUNhcGFjaXR5ID0gb2xkQnV0dGVyZmx5LT5pbmRleGluZ0hlYWRlcigpLT5wcmVDYXBhY2l0
eShzdHJ1Y3R1cmUpOwogICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG9sZEJ1
dHRlcmZseS0+aW5kZXhpbmdIZWFkZXIoKS0+aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMoc3Ry
dWN0dXJlKTsKQEAgLTM3NzEsOSArMzc3MSw4IEBAIEpTVmFsdWUgSlNPYmplY3Q6OmdldE1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5cGUmIGNhbGxUCiAg
ICAgcmV0dXJuIG1ldGhvZDsKIH0KIAotYm9vbCBKU09iamVjdDo6YW55T2JqZWN0SW5DaGFpbk1h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0Citib29sIEpTT2JqZWN0OjphbnlPYmpl
Y3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKFZNJiB2bSkgY29uc3QKIHsKLSAg
ICBWTSYgdm0gPSAqdGhpcy0+dm0oKTsKICAgICBmb3IgKGNvbnN0IEpTT2JqZWN0KiBjdXJyZW50
ID0gdGhpczsgOykgewogICAgICAgICBpZiAoY3VycmVudC0+c3RydWN0dXJlKHZtKS0+bWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3
ODksNyArMzc4OCw3IEBAIGJvb2wgSlNPYmplY3Q6OmFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMoKSBjb25zdAogYm9vbCBKU09iamVjdDo6cHJvdG90eXBlQ2hhaW5N
YXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gYW55T2Jq
ZWN0SW5DaGFpbk1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpOworICAgICAgICByZXR1cm4g
YW55T2JqZWN0SW5DaGFpbk1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyh2bSk7CiAgICAgCiAg
ICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsKICAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwpAQCAtMzgxMCwxNCAr
MzgwOSwxNCBAQCBib29sIEpTT2JqZWN0Ojpwcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3Jl
VG8oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogICAgIH0KIH0KIAotYm9vbCBKU09i
amVjdDo6bmVlZHNTbG93UHV0SW5kZXhpbmcoKSBjb25zdAorYm9vbCBKU09iamVjdDo6bmVlZHNT
bG93UHV0SW5kZXhpbmcoVk0mIHZtKSBjb25zdAogewotICAgIHJldHVybiBhbnlPYmplY3RJbkNo
YWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgfHwgZ2xvYmFsT2JqZWN0KCktPmlzSGF2
aW5nQUJhZFRpbWUoKTsKKyAgICByZXR1cm4gYW55T2JqZWN0SW5DaGFpbk1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3Nlcyh2bSkgfHwgZ2xvYmFsT2JqZWN0KHZtKS0+aXNIYXZpbmdBQmFkVGltZSgp
OwogfQogCi1Ob25Qcm9wZXJ0eVRyYW5zaXRpb24gSlNPYmplY3Q6OnN1Z2dlc3RlZEFycmF5U3Rv
cmFnZVRyYW5zaXRpb24oKSBjb25zdAorTm9uUHJvcGVydHlUcmFuc2l0aW9uIEpTT2JqZWN0Ojpz
dWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKFZNJiB2bSkgY29uc3QKIHsKLSAgICBpZiAo
bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkKKyAgICBpZiAobmVlZHNTbG93UHV0SW5kZXhpbmcodm0p
KQogICAgICAgICByZXR1cm4gTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRB
cnJheVN0b3JhZ2U7CiAgICAgCiAgICAgcmV0dXJuIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxs
b2NhdGVBcnJheVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCA0YTYxMjhhMzk1NmQ4NzAzMWZhZTIzNmIxOGMwMzM4NDAwMjA2MzRiLi5mYWFiYzVk
NmM2ZTQxNGU2OGQ1NmM1YWRjYmQ1ZDYzN2RhNWI4Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE1OSw5ICsxNTksOSBAQCBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgc2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKiwg
SlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQp
OwogICAgICAgICAKLSAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpCisgICAg
Ym9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKTsKKyAgICAg
ICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpOwog
ICAgIH0KICAgICAgICAgCiAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
KSBjb25zdDsKQEAgLTI1Nyw5ICsyNTcsOSBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIC8vIHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhpcyB3b24ndCB0aHJvdyBhbiBleGNl
cHRpb24uCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3RNYXlCZUluZGV4KEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAgICAgICAgIAotICAgIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIoKSBjb25zdAorICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoVk0mIHZt
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmRleGluZ0hl
YWRlcih0aGlzKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmhhc0luZGV4aW5nSGVh
ZGVyKHRoaXMpOwogICAgIH0KICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNp
Z25lZCBpKQpAQCAtNzAzLDkgKzcwMyw5IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICB2b2lkIHRyYW5zaXRpb25UbyhWTSYsIFN0cnVjdHVyZSopOwogCi0gICAgYm9v
bCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRp
b24oKTsgfQotICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0
cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KLSAgICBib29sIGhhc0N1
c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzQ3Vz
dG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0
aWVzKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+ZGlkVHJhbnNpdGlvbigpOyB9Cisg
ICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0
dXJlKHZtKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0
b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKICAgICAvLyBwdXRPd25EYXRh
UHJvcGVydHkgaGFzICdwdXQnIGxpa2Ugc2VtYW50aWNzLCBob3dldmVyIHRoaXMgbWV0aG9kOgog
ICAgIC8vICAtIGFzc3VtZXMgdGhlIG9iamVjdCBjb250YWlucyBubyBvd24gZ2V0dGVyL3NldHRl
ciBwcm9wZXJ0aWVzLgpAQCAtNzQ3LDMxICs3NDcsMzEgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBib29sIGlzU2VhbGVkKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJl
KHZtKS0+aXNTZWFsZWQodm0pOyB9CiAgICAgYm9vbCBpc0Zyb3plbihWTSYgdm0pIHsgcmV0dXJu
IHN0cnVjdHVyZSh2bSktPmlzRnJvemVuKHZtKTsgfQogCi0gICAgYm9vbCBhbnlPYmplY3RJbkNo
YWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgY29uc3Q7CisgICAgYm9vbCBhbnlPYmpl
Y3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKFZNJikgY29uc3Q7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oVk0m
LCBQcm9wZXJ0eU5hbWUpOwotICAgIGJvb2wgbmVlZHNTbG93UHV0SW5kZXhpbmcoKSBjb25zdDsK
LSAgICBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gc3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlv
bigpIGNvbnN0OworICAgIGJvb2wgbmVlZHNTbG93UHV0SW5kZXhpbmcoVk0mKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHRlbnNpYmxlSW1wbCgpIHsgcmV0
dXJuIGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpOyB9CisgICAgTm9uUHJvcGVydHlUcmFuc2l0aW9u
IHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oVk0mKSBjb25zdDsKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNFeHRlbnNpYmxlSW1wbChWTSYgdm0pIHsgcmV0dXJuIGlzU3RydWN0dXJl
RXh0ZW5zaWJsZSh2bSk7IH0KIHB1YmxpYzoKICAgICAvLyBZb3Ugc2hvdWxkIG9ubHkgY2FsbCBp
c1N0cnVjdHVyZUV4dGVuc2libGUoKSB3aGVuOgogICAgIC8vIC0gUGVyZm9ybWluZyB0aGlzIGNo
ZWNrIGluIGEgd2F5IHRoYXQgaXNuJ3QgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uIAog
ICAgIC8vICAgYXMgY2FsbGluZyB0aGUgdmlydHVhbCBbW0lzRXh0ZW5zaWJsZV1dIHRyYXAuCiAg
ICAgLy8gLSBXaGVuIHlvdSdyZSBndWFyYW50ZWVkIHRoYXQgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5pc0V4dGVuc2libGUgaXNuJ3QKICAgICAvLyAgIG92ZXJyaWRkZW4uCi0gICAgQUxXQVlTX0lO
TElORSBib29sIGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5p
c1N0cnVjdHVyZUV4dGVuc2libGUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1N0cnVj
dHVyZUV4dGVuc2libGUoVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc1N0cnVjdHVy
ZUV4dGVuc2libGUoKTsgfQogICAgIC8vIFlvdSBzaG91bGQgY2FsbCB0aGlzIHdoZW4gcGVyZm9y
bWluZyBbW0lzRXh0ZW5zaWJsZV1dIHRyYXAgaW4gYSBwbGFjZQogICAgIC8vIHRoYXQgaXMgZGVz
Y3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLiBUaGlzIHBlcmZvcm1zIHRoZSBmdWxseSB2aXJ0
dWFsCiAgICAgLy8gW1tJc0V4dGVuc2libGVdXSB0cmFwLgogICAgIGJvb2wgaXNFeHRlbnNpYmxl
KEV4ZWNTdGF0ZSopOwotICAgIGJvb2wgaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpCisgICAgYm9v
bCBpbmRleGluZ1Nob3VsZEJlU3BhcnNlKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAh
aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkKLSAgICAgICAgICAgIHx8IHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8oKTsKKyAgICAgICAgcmV0dXJuICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pCisg
ICAgICAgICAgICB8fCBzdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKICAgICB9CiAKLSAg
ICBib29sIHN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPnN0
YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCk7IH0KKyAgICBib29sIHN0YXRpY1Byb3BlcnRpZXNSZWlm
aWVkKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+c3RhdGljUHJvcGVydGllc1JlaWZp
ZWQoKTsgfQogICAgIHZvaWQgcmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQnV0dGVyZmx5KiBhbGxvY2F0ZU1vcmVPdXRPZkxpbmVT
dG9yYWdlKFZNJiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKQEAgLTgwMyw3ICs4
MDMsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QoVk0mIHZtKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSh2bSktPmdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgQVNTRVJUKCFpc0dsb2JhbE9i
amVjdCgpIHx8ICgoSlNPYmplY3QqKXN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSkgPT0gdGhp
cyk7CisgICAgICAgIEFTU0VSVCghaXNHbG9iYWxPYmplY3QoKSB8fCAoKEpTT2JqZWN0KilzdHJ1
Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKSkgPT0gdGhpcyk7CiAgICAgICAgIHJldHVybiBzdHJ1
Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKTsKICAgICB9CiAgICAgICAgIApAQCAtODg3LDggKzg4
Nyw4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIHRoaXMpKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5
UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAo
dGhpcykgPT0gSGVhcDo6aGVhcChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7Ci0gICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUo
dm0pLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8
IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5pc09iamVjdCgpKTsKICAgICAgICAgQVNT
RVJUKGNsYXNzSW5mbyh2bSkpOwogICAgIH0KIApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgY2xhc3Mg
SlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGJvb2wgZ2V0Tm9uSW5kZXhQcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBib29s
IGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQ
cm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNDZWxsKiwgdW5zaWduZWQsIFByb3BlcnR5T2Zm
c2V0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qo
Vk0mLCBQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqLCB1bnNpZ25lZCwgUHJvcGVydHlPZmZzZXQpOwog
ICAgIHZvaWQgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChWTSYsIFByb3BlcnR5U2xvdCYs
IEN1c3RvbUdldHRlclNldHRlciosIHVuc2lnbmVkLCBTdHJ1Y3R1cmUqKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duU3RhdGljUHJvcGVydHlTbG90KFZNJiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTEwNDgsOCArMTA0OCw4IEBAIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxl
bmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUsIEFycmF5U3Rv
cmFnZSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0SW5kZXhTbG93T3JC
ZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUpOwogICAgICAgICAK
LSAgICB1bnNpZ25lZCBnZXROZXdWZWN0b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCB1bnNp
Z25lZCBjdXJyZW50VmVjdG9yTGVuZ3RoLCB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoLCB1bnNpZ25l
ZCBkZXNpcmVkTGVuZ3RoKTsKLSAgICB1bnNpZ25lZCBnZXROZXdWZWN0b3JMZW5ndGgodW5zaWdu
ZWQgZGVzaXJlZExlbmd0aCk7CisgICAgdW5zaWduZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKFZNJiwg
dW5zaWduZWQgaW5kZXhCaWFzLCB1bnNpZ25lZCBjdXJyZW50VmVjdG9yTGVuZ3RoLCB1bnNpZ25l
ZCBjdXJyZW50TGVuZ3RoLCB1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBn
ZXROZXdWZWN0b3JMZW5ndGgoVk0mLCB1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKIAogICAgIEFy
cmF5U3RvcmFnZSogY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdF
bGVtZW50cyhWTSYsIHVuc2lnbmVkIG5lZWRlZExlbmd0aCk7CiAgICAgICAgIApAQCAtMTA5NSw3
ICsxMDk1LDcgQEAgY2xhc3MgSlNOb25GaW5hbE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPmhhc0lu
bGluZVN0b3JhZ2UoKSk7CisgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKHZtKS0+aGFz
SW5saW5lU3RvcmFnZSgpKTsKICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbyh2bSkpOwogICAgIH0K
IH07CkBAIC0xMTQ4LDcgKzExNDgsNyBAQCBjbGFzcyBKU0ZpbmFsT2JqZWN0IGZpbmFsIDogcHVi
bGljIEpTT2JqZWN0IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSh2bSktPnRvdGFsU3RvcmFnZUNhcGFjaXR5
KCkgPT0gc3RydWN0dXJlKHZtKS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIEFTU0VSVChj
bGFzc0luZm8odm0pKTsKICAgICB9CiAKQEAgLTEyNzUsMTYgKzEyNzUsMTYgQEAgaW5saW5lIHZv
aWQgSlNPYmplY3Q6Om51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3QKICAgICBtX2J1dHRlcmZseS5zZXQodm0sIHRoaXMsIGJ1dHRlcmZseSk7
CiB9CiAKLWlubGluZSBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0
YSYgY2FsbERhdGEpCitpbmxpbmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU1ZhbHVl
IHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFs
dWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEo
dmFsdWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlOjpOb25lOworICAgIENhbGxUeXBl
IHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPm1ldGhvZFRhYmxlKHZt
KS0+Z2V0Q2FsbERhdGEodmFsdWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlOjpOb25l
OwogICAgIEFTU0VSVChyZXN1bHQgPT0gQ2FsbFR5cGU6Ok5vbmUgfHwgdmFsdWUuaXNWYWxpZENh
bGxlZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTVmFsdWUgdmFsdWUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCitpbmxpbmUgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKFZNJiB2bSwgSlNWYWx1
ZSB2YWx1ZSwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBDb25zdHJ1Y3RU
eXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPm1ldGhvZFRhYmxl
KCktPmdldENvbnN0cnVjdERhdGEodmFsdWUuYXNDZWxsKCksIGNvbnN0cnVjdERhdGEpIDogQ29u
c3RydWN0VHlwZTo6Tm9uZTsKKyAgICBDb25zdHJ1Y3RUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2Vs
bCgpID8gdmFsdWUuYXNDZWxsKCktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh2
YWx1ZS5hc0NlbGwoKSwgY29uc3RydWN0RGF0YSkgOiBDb25zdHJ1Y3RUeXBlOjpOb25lOwogICAg
IEFTU0VSVChyZXN1bHQgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2Fs
bGVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1YwogICAgICAgICBKU1R5cGUgdHlwZSA9IGNlbGwtPnR5cGUoKTsK
ICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgR2V0dGVyU2V0dGVyVHlwZToK
LSAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgY2VsbCwgYXR0cmlidXRl
cywgb2Zmc2V0KTsKKyAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qodm0sIHNsb3Qs
IGNlbGwsIGF0dHJpYnV0ZXMsIG9mZnNldCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlOgogICAgICAgICAgICAgZmlsbEN1c3Rv
bUdldHRlclByb3BlcnR5U2xvdCh2bSwgc2xvdCwganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+
KGNlbGwpLCBhdHRyaWJ1dGVzLCBzdHJ1Y3R1cmUpOwpAQCAtMTQ1NSwyMyArMTQ1NSwyNCBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJU
KCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRo
aXMpKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkpOwotICAgIEFTU0VSVCghc3RydWN0dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3Bl
cnRpZXMoKSk7CisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkpOworICAgIEFTU0VSVCghc3RydWN0dXJlKHZtKS0+aGFzQ3VzdG9tR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpKTsKIAogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKIGlubGluZSBib29s
IEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHlNYXlCZUluZGV4KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKHZhbHVlKTsK
ICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhl
YXA6OmhlYXAodGhpcykpOwotICAgIEFTU0VSVCghc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRl
clByb3BlcnRpZXMoKSk7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+aGFzQ3VzdG9tR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpKTsKKyAgICBBU1NFUlQoIXN0cnVjdHVyZSh2bSktPmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5oYXNDdXN0
b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwogCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4g
cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIFB1dERpcmVjdElu
ZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZVB1dD4oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0
dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCBzbG90KTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCkBAIC0xNTA3LDE4ICsxNTA4LDIwIEBAIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5CdXR0
ZXJmbHkoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogCiBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0Ojpi
dXR0ZXJmbHlQcmVDYXBhY2l0eSgpCiB7Ci0gICAgaWYgKFVOTElLRUxZKGhhc0luZGV4aW5nSGVh
ZGVyKCkpKQotICAgICAgICByZXR1cm4gYnV0dGVyZmx5KCktPmluZGV4aW5nSGVhZGVyKCktPnBy
ZUNhcGFjaXR5KHN0cnVjdHVyZSgpKTsKKyAgICBWTSYgdm0gPSAqdGhpcy0+dm0oKTsKKyAgICBp
ZiAoVU5MSUtFTFkoaGFzSW5kZXhpbmdIZWFkZXIodm0pKSkKKyAgICAgICAgcmV0dXJuIGJ1dHRl
cmZseSgpLT5pbmRleGluZ0hlYWRlcigpLT5wcmVDYXBhY2l0eShzdHJ1Y3R1cmUodm0pKTsKICAg
ICByZXR1cm4gMDsKIH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6YnV0dGVyZmx5VG90YWxT
aXplKCkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOwor
ICAgIFZNJiB2bSA9ICp0aGlzLT52bSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhp
cy0+c3RydWN0dXJlKHZtKTsKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRl
cmZseSgpOwogICAgIHNpemVfdCBwcmVDYXBhY2l0eTsKICAgICBzaXplX3QgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXM7Ci0gICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IHRoaXMtPmhhc0lu
ZGV4aW5nSGVhZGVyKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IHRoaXMtPmhhc0lu
ZGV4aW5nSGVhZGVyKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWShoYXNJbmRleGluZ0hlYWRlcikp
IHsKICAgICAgICAgcHJlQ2FwYWNpdHkgPSBidXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCktPnBy
ZUNhcGFjaXR5KHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDUyN2ZjMjI5NWZkMTZiMjIzNzI2OWI3YzNmNzg0Y2E4
MDkzOGVjNDcuLmVmYjBmNTM1MzQ2MjRiZmZlZjk4NGM0MTM5Zjk5OWIyNzgyM2ZiYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0y
OTYsNyArMjk2LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYm
ICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVyZUlELCBzdHJ1Y3R1cmUp
OwpAQCAtMzA0LDEyICszMDQsMTIgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAg
cHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0
eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSkKLSAgICAgICAgICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zZXRDb250YWlu
c1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICAgICAgdGhpcy0+c3RydWN0dXJlKHZtKS0+
c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2Fw
YWNpdHkgPSB0aGlzLT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICBzaXpl
X3QgY3VycmVudENhcGFjaXR5ID0gdGhpcy0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSgKICAgICAgICAgc3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkgewpA
QCAtMzE4LDcgKzMxOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgICAgIAogICAg
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpOwogICAgICAgICBpZiAo
Y3VycmVudENhcGFjaXR5ICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewot
ICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSAhPSB0aGlzLT5zdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlICE9IHRoaXMtPnN0cnVjdHVyZSh2bSkpOwog
ICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0gYWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2
bSwgY3VycmVudENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlSUQs
IG5ld0J1dHRlcmZseSk7CiAgICAgICAgIH0KQEAgLTM1NSw3ICszNTUsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoKG1v
ZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKQorICAgIGlmICgo
bW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV2Ugd2FudCB0aGUgc3RydWN0dXJlIHRyYW5zaXRp
b24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0IGhhcyBzd2l0Y2hlZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggM2U2ODg3ZTU5
NWM4NzU2MTk3Y2Q2MGZkZDJjZjQyMWQ2OWFjNjU5Zi4uNzVlMWUyM2NhYWZlZmI4YzdkMDAxYzYx
YzU5NDc1ODBmM2FkNjc2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSlNQcm9taXNlOjppbml0aWFsaXplKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiB7CiAg
ICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6ZVByb21pc2UgPSBnbG9iYWxPYmplY3QtPmluaXRpYWxp
emVQcm9taXNlRnVuY3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoaW5pdGlhbGl6ZVByb21pc2UsIGNhbGxEYXRh
KTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZXhlYy0+dm0oKSwg
aW5pdGlhbGl6ZVByb21pc2UsIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAt
MTAxLDcgKzEwMSw3IEBAIEpTUHJvbWlzZSogSlNQcm9taXNlOjpyZXNvbHZlKEpTR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAKICAgICBhdXRvKiBwcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LnByb21pc2VSZXNvbHZlRnVuY3Rpb24oKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0
YShwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEodm0sIHByb21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxEYXRhKTsK
ICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ0N2I4ZDQ1NDNjNDZkZjc0
NGZhYzhjNzdiYzBkYzIyOTJlODNhZDcuLmM1YzUxMmJkNWQyMjkyMjI0MTcxOTM0NjRkNWUxZTNh
ODJlZjM5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAKICAgICBKU1ZhbHVl
IG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOwogICAgIGlmIChuZXdUYXJnZXQuaXNVbmRl
ZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZURlZmVycmVkLmNwcAppbmRleCBkN2Y3ZDc4OWZlMTQzZjcwOTYyMWUzYzRlYWI5YzI1OGE3NTM0
N2QwLi4xNDdhOTQ5ZWFkZThiMjI4NTc5NjFlMDE0YjkwNTE0NDA2NTk3YTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCkBA
IC00Myw3ICs0Myw3IEBAIEpTVmFsdWUgbmV3UHJvbWlzZUNhcGFiaWxpdHkoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ByCiB7CiAgICAgSlNGdW5jdGlv
biogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+bmV3UHJvbWlz
ZUNhcGFiaWxpdHlGdW5jdGlvbigpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRh
KGV4ZWMtPnZtKCksIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOwpAQCAtOTIsNyArOTIsNyBAQCBKU1Byb21pc2VEZWZlcnJlZDo6
SlNQcm9taXNlRGVmZXJyZWQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHN0YXRpYyBp
bmxpbmUgdm9pZCBjYWxsRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9u
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBjYWxsRGF0YSk7
CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5jcHAKaW5kZXggM2Y3ZjNmMTQ5N2QwYWEyYzllNTM0NGU3YTNhOGVmNDBiMTYwZjgwYy4u
Y2NjMDAxNTYxMDIyYmY2NmNiZjJlOGIzNDJmNmZlZTZkNzZhZGVmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTE2MSw5ICsxNjEsMTAgQEAgc3RhdGlj
IGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIGNvbnN0IElkZW50aWYKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSh2
bSk7CiAgICAgICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkKLSAgICAgICAgICAgIHx8
ICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkKLSAgICAgICAgICAgIHx8IChnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25s
eU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgJiYgZ2V0T3JQdXQgPT0g
UHV0KSkgeworICAgICAgICAgICAgfHwgIXN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNh
Y2hlYWJsZSgpCisgICAgICAgICAgICB8fCAoc3RydWN0dXJlLT5oYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgJiYgZ2V0T3JQdXQgPT0gUHV0KSkgewog
ICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgcHJvcGVydHkgd2lsbCBiZSBhdCBnbG9iYWwgc2Nv
cGUsIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBjYWNoZSBpdC4KICAgICAgICAgICAgIEFTU0VS
VCghc2NvcGUtPm5leHQoKSk7CiAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShH
bG9iYWxQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCAwLCAwLCAwLCAwLCAwKTsK
QEAgLTE3MSw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSWRlbnRpZgogICAgICAgICB9CiAK
ICAgICAgICAgCi0gICAgICAgIFdhdGNocG9pbnRTdGF0ZSBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+
c3RydWN0dXJlKCktPmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KGV4ZWMt
PnZtKCksIHNsb3QuY2FjaGVkT2Zmc2V0KCkpLT5zdGF0ZSgpOworICAgICAgICBXYXRjaHBvaW50
U3RhdGUgc3RhdGUgPSBzdHJ1Y3R1cmUtPmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0KHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKS0+c3RhdGUoKTsKICAgICAgICAgaWYgKHN0
YXRlID09IElzV2F0Y2hlZCAmJiBnZXRPclB1dCA9PSBQdXQpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBmaWVsZCBleGlzdHMsIGJ1dCBiZWNhdXNlIHRoZSByZXBsYWNlbWVudCB3YXRjaHBvaW50IGlz
IHN0aWxsIGludGFjdC4gVGhpcyBpcwogICAgICAgICAgICAgLy8ga2luZCBvZiBkYW5nZXJvdXMu
IFdlIGhhdmUgdHdvIG9wdGlvbnM6CkBAIC0xODIsNyArMTgzLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0
IElkZW50aWYKICAgICAgICAgICAgIC8vIFdlIGdvIHdpdGggb3B0aW9uICgyKSBoZXJlIGJlY2F1
c2UgaXQgc2VlbXMgbGVzcyBldmlsLgogICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5
cGUoR2xvYmFsUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIDAs
IDAsIDApOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VU
eXBlKEdsb2JhbFByb3BlcnR5LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCBnbG9i
YWxPYmplY3QtPnN0cnVjdHVyZSgpLCAwLCAwLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKEdsb2JhbFByb3BlcnR5LCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyksIGRlcHRoLCBzdHJ1Y3R1cmUsIDAsIDAsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuaAppbmRleCA2ZjIzOWM1M2FjNTk1MDY2ODYzMzdmOThiMjE3ZmUyNDE1
ODRmNzRiLi5mNmI3NzNhN2FkMWJmNmU0Y2Q5NmVlMjczYmI2ZTE5ZmNmYTkyZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC03MCw4ICs3MCw2IEBAIGNsYXNz
IEpTU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgU2NvcGVDaGFpbkl0ZXJh
dG9yIGVuZCgpOwogICAgIEpTU2NvcGUqIG5leHQoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QoKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFZNJik7CiAg
ICAgSlNPYmplY3QqIGdsb2JhbFRoaXMoKTsKIAogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZShWTSYpOwpAQCAtMTMxLDE2ICsxMjksNiBAQCBpbmxpbmUgSlNTY29wZSogSlNTY29wZTo6bmV4
dCgpCiAgICAgcmV0dXJuIG1fbmV4dC5nZXQoKTsKIH0KIAotaW5saW5lIEpTR2xvYmFsT2JqZWN0
KiBKU1Njb3BlOjpnbG9iYWxPYmplY3QoKQoteyAKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPmds
b2JhbE9iamVjdCgpOwotfQotCi1pbmxpbmUgSlNHbG9iYWxPYmplY3QqIEpTU2NvcGU6Omdsb2Jh
bE9iamVjdChWTSYgdm0pCi17IAotICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmpl
Y3QoKTsKLX0KLQogaW5saW5lIFJlZ2lzdGVyJiBSZWdpc3Rlcjo6b3BlcmF0b3I9KEpTU2NvcGUq
IHNjb3BlKQogewogICAgICp0aGlzID0gSlNWYWx1ZShzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1NldC5jcHAKaW5kZXggNGI2ODc5YjRkNGZhZWRlNjNhMzg5Y2Y5NTBiMGY4
YTcyYzMwYWM4My4uNzJjZjVjYjU0ZGUwOTgyYmM5ZDExMjA4NDI5MDZlNWI3ZTA5MzZlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcApAQCAtNTEsMTIgKzUxLDEyIEBA
IGJvb2wgSlNTZXQ6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkKICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aXNTZXRQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFu
ZE5vbk9ic2VydmFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0p
OwogICAgIC8vIFRoaXMgaXMgdGhlIGZhc3QgY2FzZS4gTWFueSBzZXRzIHdpbGwgYmUgYW4gb3Jp
Z2luYWwgc2V0LgogICAgIGlmIChzdHJ1Y3R1cmUgPT0gZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1
cmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5q
c1NldFByb3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKaW5kZXggZTJiODkxYTAyNzQ1
MmY0MTFjOTM0ZGVjMzU2M2YwYTg3Njk2NjBjYS4uZDQ1MWUwNTlmZTM1YzhmZWNmMTA5ZmU0NmVj
ZWJmNDUxZjZlMzgyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTZXRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
ZXRJdGVyYXRvci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgSlNWYWx1ZSBKU1NldEl0ZXJhdG9yOjpj
cmVhdGVQYWlyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWwK
ICAgICBhcmdzLmFwcGVuZChrZXkpOwogICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKICAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoY2FsbEZyYW1lLT52bSgpKTsKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoY2FsbEZyYW1l
LCAwLCBnbG9iYWxPYmplY3QsIGFyZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuY3BwCmluZGV4IDZkMjAxZDljYTAzNThjOTk5
ZDQ3N2MwYTk5NzY2M2I1NzNmN2QzZDAuLmViYzlmNTcxNjIxN2ZlYmU4Yjk1ZGI0NDk0MWM3MDk1
NWQ5MzY5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nSXRlcmF0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBAIEpTU3RyaW5nSXRlcmF0b3IqIEpTU3Ry
aW5nSXRlcmF0b3I6OmNsb25lKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIGl0ZXJhdGVk
U3RyaW5nID0gZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
dGVyYXRlZFN0cmluZ1ByaXZhdGVOYW1lKCkpOwogICAgIEpTVmFsdWUgbmV4dEluZGV4ID0gZ2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdJdGVyYXRv
ck5leHRJbmRleFByaXZhdGVOYW1lKCkpOwogCi0gICAgYXV0byBjbG9uZSA9IEpTU3RyaW5nSXRl
cmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c3Ry
aW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNTdHJpbmcoaXRlcmF0ZWRTdHJpbmcpKTsKKyAgICBh
dXRvIGNsb25lID0gSlNTdHJpbmdJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmpzQ2FsbGVl
KCktPmdsb2JhbE9iamVjdCh2bSktPnN0cmluZ0l0ZXJhdG9yU3RydWN0dXJlKCksIGFzU3RyaW5n
KGl0ZXJhdGVkU3RyaW5nKSk7CiAgICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RyaW5nSXRlcmF0b3JOZXh0SW5kZXhQcml2YXRlTmFtZSgp
LCBuZXh0SW5kZXgpOwogICAgIHJldHVybiBjbG9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuY3BwCmluZGV4IGJkMjRkZmViMGIyNmM1Njg5MTUzZGU4ODAwMmZjYTE3
ZTljZTY1MGUuLjMwNWYzNGVhMGJjNjMxNjI1OTNlNWQ1Mjc4MTJiNjhlOTg5MGQ5NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtMjgsNyArMjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3Qg
SGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBu
dWxscHRyOwogICAgIGlmICh2YWx1ZS5hY2Nlc3NvckdldHRlcigpKSB7CiAgICAgICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikKQEAgLTQ2LDcg
KzQ2LDcgQEAgdm9pZCByZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxl
VmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iamUKIAogYm9vbCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSk7
CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVp
bHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHkpOwogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CiAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcjsKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25z
dCBIYXNoVGFibGUKICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAv
LyBJZiBhIHByb3BlcnR5IGlzIGV2ZXIgZGVsZXRlZCBmcm9tIGFuIG9iamVjdCB3aXRoIGEgc3Rh
dGljIHRhYmxlLCB0aGVuIHdlIHJlaWZ5CiAgICAgICAgIC8vIGFsbCBzdGF0aWMgZnVuY3Rpb25z
IGF0IHRoYXQgdGltZSAtIGFmdGVyIHRoaXMgd2Ugc2hvdWxkbid0IGJlIHJlLWFkZGluZyBhbnl0
aGluZy4KLSAgICAgICAgaWYgKHRoaXNPYmplY3QtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkp
CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2
bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRyeSwgKnRoaXNPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZmVlNTFlMGIxYWNiNDQ2YTM1MDgy
YjQ1YmYwMWU5MzhhNjg4YWY3Li44OTBhMTZiOTJkNzVlODQwZWY5ODliYThkYWVhZGRjOWEzYjE3
M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjIyLDcgKzIy
Miw3IEBAIGlubGluZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNj
ZXNzb3JTZXR0ZXJHZW5lcmF0b3IoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9w
ZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29u
c3QgSGFzaFRhYmxlJiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAodGhpc09iamVjdC0+
c3RhdGljUHJvcGVydGllc1JlaWZpZWQoKSkKKyAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJv
cGVydGllc1JlaWZpZWQodm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBl
bnRyeSA9IHRhYmxlLmVudHJ5KHByb3BlcnR5TmFtZSk7CkBAIC0yNTcsOCArMjU3LDggQEAgaW5s
aW5lIGJvb2wgcmVwbGFjZVN0YXRpY1Byb3BlcnR5U2xvdChWTSYgdm0sIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICgh
dGhpc09iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQoKSkKLSAgICAgICAgdGhpc09iamVj
dC0+SlNPYmplY3Q6OnNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VU
cmFuc2l0aW9uKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCAwKSk7
CisgICAgaWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpCisgICAg
ICAgIHRoaXNPYmplY3QtPkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlVHJhbnNpdGlvbih2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKSwgcHJv
cGVydHlOYW1lLCAwKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMyNSwxOSArMzI1LDE5
IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVyCiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVz
KCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCiAgICAgICAgICAgICByZWlmeVN0YXRp
Y0FjY2Vzc29yKHZtLCB2YWx1ZSwgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNP
YmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigp
KHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAg
ICAgICAgIHRoaXNPYmoucHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLmdsb2Jh
bE9iamVjdCh2bSksIHByb3BlcnR5TmFtZSwgdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKSwg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pIHsKICAgICAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3Bl
cnR5QXR0cmlidXRlOjpET01KSVRGdW5jdGlvbikgewogICAgICAgICAgICAgdGhpc09iai5wdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbigKLSAgICAgICAgICAgICAgICB2bSwgdGhpc09iai5nbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAg
ICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCh2bSksIHByb3BlcnR5TmFtZSwgdmFsdWUu
ZnVuY3Rpb25MZW5ndGgoKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1
ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
dmFsdWUuYXR0cmlidXRlcygpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAgICAgICAgICAgIHZtLCB0
aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3Ro
KCksCisgICAgICAgICAgICB2bSwgdGhpc09iai5nbG9iYWxPYmplY3Qodm0pLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigp
LCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCA1ZWIyMzRkOTE5MmFmYjNkNjE0
NWIzMGUxYWE5YTYxYjlkYzk0M2RmLi5lZTg1ZTAxY2EzMjQzNmE5YmU5MjIyNGJkYjVjZjdiMGRh
YWQzZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdCh2bSk7CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQo
KSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBhZGRlckZ1bmN0
aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2Fs
bERhdGEpOworICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRh
KHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRl
ckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDJl
N2NiNzJmZDgyNzMyMWQzMDU1ZWU2YmE3ODM5YTg4OWQ4NzI1ZGIuLjM0NzFkZGUzZjk1NTg1Mjdi
ZWVkNGQ1N2NkMWM5ZDhhNWE2YzJkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBO
dW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUq
IG51bWJlclByb3RvdHlwZSkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgTnVtYmVyUHJv
dG90eXBlOjppbmZvKCktPmNsYXNzTmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudW1iZXJQcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBu
dW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJQcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKQEAgLTc5LDggKzc5LDggQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJQT1NJ
VElWRV9JTkZJTklUWSIpLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNO
YU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCi0gICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBhcnNlSW50LCBudW1iZXJQ
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5wYXJzZUludEZ1bmN0aW9uKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cGFyc2VGbG9hdCwgbnVtYmVy
UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKS0+cGFyc2VGbG9hdEZ1bmN0aW9uKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cGFyc2VJbnQsIG51bWJl
clByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+cGFyc2VJbnRGdW5jdGlvbigpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBhcnNlRmxvYXQsIG51
bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+cGFyc2VGbG9hdEZ1bmN0aW9uKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAg
IEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzSW50ZWdlciIpLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJ
c0ludGVnZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAxLCBOdW1iZXJJc0ludGVnZXJJbnRyaW5zaWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDk5MjEwZTQ5
ZGJhYzc0NzQwN2IxZTkwZDE1ZmY5Y2VmMWU2MGYwZmYuLjgxNTJiZTdiM2FhZTYzZTU0YWQ4Y2Ux
MDUzOTMxMDQxY2EzYjUyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIE9iamVj
dENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE9iagogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBPYmplY3RD
b25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0b3Iq
PihleGVjLT5qc0NhbGxlZSgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
b2JqZWN0Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwotICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0Q29u
c3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBuZXdUYXJnZXQgY29uZGl0
aW9uIGluIHRoaXMgY2FsbGVyIHNpZGUgaW5zdGVhZCBvZiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZSBzaWRlLgpAQCAtMzEzLDcgKzMxMyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlm
ICh0YXJnZXRDYW5QZXJmb3JtRmFzdFB1dCkgewotICAgICAgICAgICAgaWYgKCFzb3VyY2UtPnN0
YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkpIHsKKyAgICAgICAgICAgIGlmICghc291cmNlLT5zdGF0
aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpIHsKICAgICAgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5
QWxsU3RhdGljUHJvcGVydGllcyhleGVjKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQpAQCAtNTI0LDcgKzUyNCw3IEBAIGJv
b2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2MpCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxs
RGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YSh2
bSwgZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJHZXR0ZXIgbXVzdCBiZSBh
IGZ1bmN0aW9uLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CkBAIC01NDAsNyArNTQwLDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzYykKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIXNldC5pc1Vu
ZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAg
IGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAg
ICAgICAgICAgaWYgKGdldENhbGxEYXRhKHZtLCBzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6
Tm9uZSkgewogICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDJhMTJkZjU1MzBjZmY3ZDliNGZl
MzIzYWQyN2I4NzU4MTRkZTRjYjEuLjA4YTNhMDVkZDBkYzVhM2RjNmI0YWE0YTcxMTY5NDllNTBh
YTkwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpT
VmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgaWYgKGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQorICAg
IGlmIChnZXRDYWxsRGF0YSh2bSwgZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
ImludmFsaWQgZ2V0dGVyIHVzYWdlIikpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVj
LT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEp
ID09IENhbGxUeXBlOjpOb25lKQorICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgc2V0LCBjYWxsRGF0
YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImludmFsaWQgc2V0dGVyIHVzYWdlIikpOwogCiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OwpAQCAtMzAxLDcgKzMwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gSWYgSXND
YWxsYWJsZSh0b1N0cmluZykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4K
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKHRvU3RyaW5nLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgdG9TdHJpbmcsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA1
N2FlYzAzMzY3YWZjZjQ1ZjUxZTU4NGZlMzY4NTU5NTVhOGMxN2FlLi5jMTFkOTA1YzhkNjdiZWQ0
OTVmYWQzNGFhMjk4MzE4NGQxMGM5N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmNwcApAQCAtMTIwLDE3ICsxMjAsNiBAQCBib29sIGpzSXNPYmplY3RU
eXBlT3JOdWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wganNJc0Z1bmN0aW9uVHlwZShKU1ZhbHVlIHYpCi17Ci0gICAgaWYgKHYu
aXNPYmplY3QoKSkgewotICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHNp
emVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxs
KiBiYXNlLCBib29sJiBzYXdQb2x5UHJvdG8pCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDQ5
NTU5MGJiODg2ZWEwYWYzYmE1ZDgxZWYyMGZmZDc0NTUwMGE3NWUuLmE2NzJmOGIwYzkyZjY3Njdh
MWZlNjcyNGRiMzMwNzViYzc1MjZlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKQEAgLTM1LDcgKzM1LDYgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNB
ZGRTbG93Q2FzZShDYWxsRnJhbWUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIEpTVmFsdWUganNUeXBl
U3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7CiBKU1ZhbHVlIGpzVHlwZVN0cmlu
Z0ZvclZhbHVlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIGJvb2wganNJc09iamVj
dFR5cGVPck51bGwoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7Ci1ib29sIGpzSXNGdW5jdGlvblR5cGUo
SlNWYWx1ZSk7CiBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiwgSlND
ZWxsKiwgYm9vbCYgc2F3UG9seVByb3RvKTsKIAogQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApp
bmRleCA5YzRhODAzNTE3YmUxMWQxYzE3ODU1MjkwYjBkNTJlMmIxYjZjNGEwLi41M2EyNDYxNWEx
NzMzOGJhY2YwMjc2YTYzOGMzNDFkMTFiYWI3NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMo
Vk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2NvcGUpOwotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAg
IFJFTEVBU0VfQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJUKCZnbG9iYWxPYmplY3Qt
PnZtKCkgPT0gJnZtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4ZDQ4NWIzMGZmMjBiN2IyZmMyYzdjNmU5NGI5
OTBiMDRlM2I4YTMuLjA0ZDFhNTg3NDg3MjRkYTUxZTNiNjMyM2ZjZThhZWMxMzgwM2M1YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTMxNCwxMyArMzE0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZXNTcGVjUmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0UmVnRXhwKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBleGVjLT5qc0NhbGxlZSgpLCBl
eGVjLT5uZXdUYXJnZXQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
UmVnRXhwKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgZXhlYy0+anNDYWxsZWUoKSwgZXhlYy0+
bmV3VGFyZ2V0KCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBcmdMaXN0IGFy
Z3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoZXhl
YywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KCksIGFyZ3MsIGV4ZWMtPmpzQ2FsbGVlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdFJlZ0V4cChleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSksIGFyZ3MsIGV4ZWMtPmpzQ2Fs
bGVlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDU5MmFmNDFjYTFiZDg1
MjA5NGE4MTE2ZmMxYzFkNWMxOTA2MjlhNmUuLjVkYWQ2NDBmZWVhMzg3ODA1NzQ2NjUzYjFkZjMx
ZjQzNmMxOTZkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuY3BwCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2Zp
bGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKCkKICAgICAgICAgICAgICAgICBGcmFt
ZVR5cGUgcmVzdWx0ID0gRnJhbWVUeXBlOjpVbmtub3duOwogICAgICAgICAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgICAg
ICAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlQ2VsbCwgY2FsbERhdGEpOwor
ICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVlQ2VsbCwg
Y2FsbERhdGEpOwogICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9z
dCkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRnJhbWVUeXBlOjpIb3N0OwogCkBAIC03
MTYsNyArNzE2LDcgQEAgU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6Om5hbWVG
cm9tQ2FsbGVlKFZNJiB2bSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNh
bGxlZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSktPmdsb2JhbEV4ZWMoKTsKICAgICBhdXRvIGdldFBy
b3BlcnR5SWZQdXJlT3BlcmF0aW9uID0gWyZdIChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgLT4g
U3RyaW5nIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZShpZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVkQXJndW1lbnRzLmNwcAppbmRleCA5YzI0YzBkOTIyN2Q0ZGZjMzI0YjYyYzE5YmNiZDVm
ODYyNmU2YjE3Li5kMWI4YzIwNjhlMjNiYjg2Mjg0ODY1ZWYyNDJkMmM3N2Q4ODY1ZmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFNjb3BlZEFyZ3VtZW50czo6b3ZlcnJpZGVUaGluZ3Mo
Vk0mIHZtKQogICAgIAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcihtX3RhYmxlLT5sZW5ndGgoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNhbGxlZSwgbV9jYWxsZWUuZ2V0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b1ZhbHVlc0Z1
bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBnbG9iYWxPYmplY3Qodm0pLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIAogICAgIHN0
b3JhZ2VIZWFkZXIoKS5vdmVycm9kZVRoaW5ncyA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDVlZGY3YWEy
OTQyODRhNzQ4ODI1ZTVlYjBhZWFkMTc2MzRjNDAwNDcuLjM5MGNkZGVjNWNiYjAzNTRhNjRhNjdh
ZWUxZTJkNDgyYzY3ZGMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgQ29kZUJsb2NrKiBT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgQVNTRVJUKHZtLT5oZWFwLmlz
RGVmZXJyZWQoKSk7CiAgICAgQVNTRVJUKGVuZENvbHVtbigpICE9IFVJTlRfTUFYKTsKIAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKnZt
KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAog
ICAgIGlmIChjbGFzc0luZm8oKnZtKSA9PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CkBAIC0z
MzEsNyArMzMxLDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVj
dXRpb25JbXBsKAogICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKIAogICAg
IGlmICh2bS5nZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkpIHsKLSAgICAgICAgYXV0
byYgc3RhdGUgPSAqc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAg
IGF1dG8mIHN0YXRlID0gKnNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5nbG9iYWxFeGVjKCk7CiAg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZUVy
cm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGb3JjZWQgRmFpbHVyZSIpKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZmY5ZDJiMmZlNThmYjA3M2IyY2ZlNTYzYzM3YmVhYzY3ZDkzNTI2Yy4uMDQxMmU1MWJkNWFm
MWVlZTUyMmYxOWJhZmFhYjEzOWJkYTVkZjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKiBleGVj
KQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2Fz
dDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIFN0cnVjdHVyZSog
c2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
ZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCkBAIC05
MSw3ICs5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFNldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5j
dGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhKTsKICAgICBpZiAoVU5MSUtFTFkoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxU
eXBlOjpOb25lKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCmluZGV4IGU5OTI5ODhlNGNiODM2ZDM2YWQxZTZi
ZGRlMjU1YzFjYzY1N2EwYzcuLmE2ODgyMzk1YmFmYWQwMTg0ODJjNjg5ZDQwZGMyNDU2NmJkOWE4
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5
VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVl
TWFwOjpwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQg
aSwKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlz
IGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0
IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0
ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJl
bW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc1N0cnVj
dHVyZUV4dGVuc2libGUoKSkgeworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXkt
PmlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVy
YXRvcik7CiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93
LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICB9CkBAIC0x
NDAsNyArMTQwLDcgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGkKICAgICAvLyBUbyBzYXZlIGEg
c2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1h
cC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVy
dHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3Qg
dGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAo
bW9kZSAhPSBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QgJiYgcmVzdWx0LmlzTmV3RW50cnkg
JiYgIWFycmF5LT5pc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgeworICAgIGlmIChtb2RlICE9IFB1
dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCAmJiByZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXkt
PmlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVy
YXRvcik7CiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93
LCBBU0NJSUxpdGVyYWwoTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3IpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggMGIxMGQ4ZjQwYjgzNjNjYmQwNDM2ODk4NmMzMzliNTk1MTJiMjA5
ZS4uZGE2MzIwMGQ0NDU0YTg4N2M3OWUxZTE3YzgwZWYwODhiMzBmZmRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApAQCAt
MTMwLDggKzEzMCw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKiBleGVjKQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJu
YWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKLSAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihl
eGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1Rhcmdl
dCgpLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGI1MGIx
NzRjZjkwZTM3YTQ5ZTEyNzZkNGNiZTJjMGUxMDYyOWZjYTcuLjZiZjkxYmQzMmUyNmU2YWNmZjU4
ODMyNTM0MTcyNzQ5NmUyNmYyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMsCiAKICAgICBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZXBsYWNl
VmFsdWUsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZt
LCByZXBsYWNlVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
Ok5vbmUpIHsKICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwpAQCAtNzkyLDcgKzc5Miw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBs
YWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHJl
dHVybiBqc1N0cmluZzsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEocmVwbGFjZVZhbHVlLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgcmVwbGFjZVZhbHVlLCBjYWxsRGF0YSk7CiAg
ICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3Vic3RyaW5nKGV4ZWMsIHN0
cmluZywgbWF0Y2hTdGFydCwgc2VhcmNoU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkpKTsKQEAgLTE4
MTIsNyArMTgxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0
ZShleGVjLCBleGVjLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nSXRlcmF0b3JT
dHJ1Y3R1cmUoKSwgc3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmlu
Z0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZt
KS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc3RyaW5nKSk7CiB9CiAKIGVudW0gY2xhc3Mg
Tm9ybWFsaXphdGlvbkZvcm0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKaW5kZXggYzU5NTliMmY1NGU5Y2E2YmMyYjg3YTQ1NGFiMTZlOTk4N2Q1OTE3ZC4u
YTdmZWY0NTQyMjYzZjBmY2FjYzJhZjc4NjAwMGQzOWJhYmJhYzBmNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9p
ZCBTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKFZlY3Rv
cjxTdHJ1Y3R1cmUqLCA4PiYgc3QKIAogUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5VGFibGUoVk0mIHZtLCBib29sIHNldFByb3BlcnR5VGFibGUpCiB7Ci0gICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOworICAgIEFTU0VSVChz
dHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOwogICAgIEFTU0VSVCghaXNBZGRp
bmdQcm9wZXJ0eUZvclRyYW5zaXRpb24oKSk7CiAgICAgCiAgICAgRGVmZXJHQyBkZWZlckdDKHZt
LmhlYXApOwpAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgU3RydWN0dXJlOjp3aWxsU3RvcmVWYWx1
ZVNsb3coCiAgICAgSW5mZXJyZWRUeXBlVGFibGU6OlN0b3JlZFByb3BlcnR5QWdlIGFnZSkKIHsK
ICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5j
bGFzc0luZm8oKSA9PSBpbmZvKCkpOwogICAgIEFTU0VSVCghaGFzQmVlbkRpY3Rpb25hcnkoKSk7
CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFZNOjpjYW5Vc2VKSVQoKSwgIldlIGRvbid0IHdh
bnQgdG8gdXNlIG1lbW9yeSBmb3IgaW5mZXJyZWQgdHlwZXMgdW5sZXNzIHdlJ3JlIHVzaW5nIHRo
ZSBKSVQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
YWNoZS5jcHAKaW5kZXggMjA1ZGVhNmIwMjY4NzNjZTczOWM0MGVhYTg4MThhODk2NGQ0MWFlMS4u
N2RjZGVhMjMxNDVjNmI2MjE0NDQ0MDNjZWQxMjEzNjEyZTlhNTIxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hlOjplbXB0eVN0cnVjdHVyZUZvclByb3RvdHlw
ZUZyb21CYXNlU3RydWN0dXJlKEpTR2xvYmFsTwogewogICAgIC8vIFdlIGN1cnJlbnRseSBkbyBu
b3QgaGF2ZSBpbmxpbmUgY2FwYWNpdHkgc3RhdGljIGFuYWx5c2lzIGZvciBzdWJjbGFzc2VzIGFu
ZCBhbGwgaW50ZXJuYWwgZnVuY3Rpb24gY29uc3RydWN0b3JzIGhhdmUgYSBkZWZhdWx0IGlubGlu
ZSBjYXBhY2l0eSBvZiAwLgogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBiYXNlU3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKLSAgICBpZiAocHJvdG90eXBlLT5hbnlPYmplY3RJbkNo
YWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgJiYgaGFzSW5kZXhlZFByb3BlcnRpZXMo
aW5kZXhpbmdUeXBlKSkKKyAgICBpZiAocHJvdG90eXBlLT5hbnlPYmplY3RJbkNoYWluTWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGdsb2JhbE9iamVjdC0+dm0oKSkgJiYgaGFzSW5kZXhlZFBy
b3BlcnRpZXMoaW5kZXhpbmdUeXBlKSkKICAgICAgICAgaW5kZXhpbmdUeXBlID0gKGluZGV4aW5n
VHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7CiAK
ICAgICByZXR1cm4gY3JlYXRlRW1wdHlTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IGJhc2VTdHJ1Y3R1cmUtPnR5cGVJbmZvKCksIGJhc2VTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBp
bmRleGluZ1R5cGUsIDAsIGZhbHNlLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCA4Y2YyOGE4OWYxODUxMDY3ZjVj
MTkxZGM4ZDIwZWI0MDJkNWQxZjUxLi42YmQ4ZWY0ZmUyODgyMDYwNTcyNGNiMTMzNGU3OGZlZjI2
MDZjYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCkBAIC0xMTksNyArMTE5LDcgQEAgQUxXQVlTX0lOTElORSBQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OmdldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHUKIEFM
V0FZU19JTkxJTkUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgYm9vbCYgaGFzSW5mZXJy
ZWRUeXBlKQogewogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKLSAgICBBU1NF
UlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IGluZm8oKSk7CisgICAgQVNTRVJUKHN0cnVj
dHVyZSh2bSktPmNsYXNzSW5mbygpID09IGluZm8oKSk7CiAKICAgICBQcm9wZXJ0eVRhYmxlKiBw
cm9wZXJ0eVRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZUlmTm90RW1wdHkodm0pOwogICAgIGlm
ICghcHJvcGVydHlUYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCmluZGV4IDE5NjM2NTllM2YyNDhjOGFlMzliZGI1OTMz
YTI5ZTY3YjY2OTg0ZjQuLmUwZmUyYTgxNTMwYjUwNjYyZmY4OGE1ZDYyMWEzYWM1ZjU3YTBlMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0
cnVjdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5u
ZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTV2Vha01hcCog
d2Vha01hcCA9IEpTV2Vha01hcDo6Y3JlYXRlKHZtLCB3ZWFrTWFwU3RydWN0dXJlKTsKQEAgLTc3
LDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJG
dW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBhZGRlckZ1bmN0
aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlv
bkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtTZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
U2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDAwMWM4NjUxMDIxMTA2NGU4MDc5NjQ0N2UxN2I0ZTJi
NTc2MThjMTIuLjA3ZGQyZmIyYWQ4MzE4M2YwMDAyZmI0MDZlZWY5MmIyZmIzY2U1ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9y
LmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJn
ZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrU2V0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTV2Vha1NldCogd2Vha1Nl
dCA9IEpTV2Vha1NldDo6Y3JlYXRlKHZtLCB3ZWFrU2V0U3RydWN0dXJlKTsKQEAgLTc3LDcgKzc3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1Nl
dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlv
biwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxE
YXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZp
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5k
ZXggYTdmOTI3ZjliOWYwNWExNjFkMDZkZDkwMmExMWVmY2MyMDYyZDI2MS4uZGZmMTcwN2JjNzYz
ODQxYjY0YWQxN2VhYzlkOTJmZTYyZGY4M2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIEhlYXBWZXJp
Zmllcjo6cmVwb3J0Q2VsbChDZWxsUHJvZmlsZSYgcHJvZmlsZSwgaW50IGN5Y2xlSW5kZXgsIEhl
YXBWZXJpZmllcgogCiAgICAgaWYgKHByb2ZpbGUuaXNMaXZlKCkgJiYgcHJvZmlsZS5pc0pTQ2Vs
bCgpKSB7CiAgICAgICAgIEpTQ2VsbCoganNDZWxsID0gcHJvZmlsZS5qc0NlbGwoKTsKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc0NlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzQ2VsbC0+c3RydWN0dXJlKCp2bSk7CiAgICAgICAgIGRh
dGFMb2coIiBzdHJ1Y3R1cmU6IiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpKTsKICAgICAgICAgaWYg
KGpzQ2VsbC0+aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iaiA9IHN0YXRp
Y19jYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKaW5kZXggM2Y0NjY4MDhiZDc2ZjdkYjM5MjZjZmQ5NWMxMDFiMTA0NGQ3ZDE5
MS4uMTIwNGZjM2IwZTc3ODQ1NDAzMWVkMjcxM2ZjYzM3ZDExNzA2NTU3MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMTY5MSw3ICsxNjkxLDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RG
b3JPYmplY3QoRXhlY1N0YXRlKiBleGUKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKS0+Z2xv
YmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U09iamVjdCo+KHZhbHVlKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxP
YmplY3QpOwogfQpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVj
dCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmpl
Y3Qodm0pOwogCiAgICAgYXV0byBhZGRGdW5jdGlvbiA9IFsmXSAoVk0mIHZtLCBjb25zdCBjaGFy
KiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKSB7CiAg
ICAgICAgIEpTRG9sbGFyVk06OmFkZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG5hbWUsIGZ1
bmN0aW9uLCBhcmd1bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggNmJkMDU2YmYzMTBlZTdhYjA5
ZGViZTZlYTM0MzZiMTk1MGEwODk2OS4uZDlkZmQ4NWUzNGRlMDUxY2E5ZmEwYjYxZTNlY2JlZWZl
YjQ3MmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBS
ZWY8V2FzbTo6CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgaWYgKCF3YXNtQ29kZUJsb2NrLT5ydW5uYWJsZSgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoZXhlYywgdm0s
IGdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpLCB3YXNtQ29k
ZUJsb2NrLT5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmpl
Y3Qodm0pLT5XZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpLCB3YXNtQ29kZUJsb2NrLT5l
cnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTQsNyArMTE0
LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmFsaXplQ3JlYXRpb24oVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIFJlZjxXYXNtOjoKICAgICB9IGVsc2UgewogICAgICAgICBqc0Nv
ZGVCbG9jayA9IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZSh2bSwgV1RGTW92ZSh3YXNt
Q29kZUJsb2NrKSwgbW9kdWxlKCktPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIWpzQ29kZUJsb2NrLT5ydW5uYWJsZSgpKSkgewotICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNy
ZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0
dXJlKCksIGpzQ29kZUJsb2NrLT5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVj
LCB2bSwgZ2xvYmFsT2JqZWN0KHZtKS0+V2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKSwg
anNDb2RlQmxvY2stPmVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBqc0NvZGVCbG9jayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggOTZjYTZmZWMz
MzIwYTZlZDQyOGI3Njg1NzMzNWQzOTFhZDI1YmQzOS4uOTM0YTM2MTk1MjdhMjE4YTM5MWFkMTFh
ZDUyN2IzYjBkNTQyY2I1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21U
b0pTLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IGhhbmRsZUJhCiAKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgqdm0pOwogICAg
ICAgICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2
bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgp
LCBBU0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVu
dCB0byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICB9CkBAIC02NjQsMTAg
KzY2NCwxMCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFn
PiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogCiB2b2lkKiB3YXNtVG9KU0V4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSW5zdGFuY2Uq
IHdhc21JbnN0YW5jZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHdhc21JbnN0
YW5jZS0+c3RvcmVUb3BDYWxsRnJhbWUoZXhlYyk7CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSA9IHdhc21JbnN0YW5jZS0+b3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KHZtKTsKIAogICAgIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDY0MGE0YjU4N2QwOTNkMDhi
MDQwMDhmNWFkMTVlYTI5NTFiYWIyNmEuLjUzZjc5OGRiZmUwYjI0ZmNlMGEwYjVhOTYyYTk4ZGE0
Yzk5NjAzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlCiAgICAgYXV0byYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvKiBzdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5u
ZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOworICAg
IGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0
dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT5XZWJBc3NlbWJseUNvbXBpbGVFcnJv
clN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CiB9CkBAIC01Nyw3
ICs1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+
anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVj
dHVyZSgpOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxG
dW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSktPldl
YkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2Us
IG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3IuY3BwCmluZGV4IDE0MzAwMjgyZmMzYzA3M2MwZDE3MjNhOTk2ODhlZmFjOGFhZmYy
MTMuLjk5MTY2Mjc1MTYxN2JmMjQyM2NlZjc3MjkxODBmMGY5MDE4NmU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhl
Y1N0YXRlKiBlCiAgICAgYXV0byYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1
bWVudCgwKTsKLSAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFs
RnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5
TGlua0Vycm9yU3RydWN0dXJlKCkpOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
dm0pLT5XZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBt
ZXNzYWdlKSk7CiB9CkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhlY1N0YXRlKiBlCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUxpbmtF
cnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJn
dW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5h
bEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJs
eUxpbmtFcnJvclN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
ZXhlYy0+dm0oKSktPldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1
cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJl
Y29yZC5jcHAKaW5kZXggNGMwMGE4NGZkZDRjMTA3NGU5ZDg2OTVhMTlhMmExMTYwNjI0MTg4ZS4u
NTY0MDQ1OTllZDY4NDNmNGMzZThiMzk0ZGI4ZDJlOTEzMDIwMzBhMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcApAQCAtNTEwLDYgKzUxMCw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoVU5MSUtFTFkoZXhjZXB0aW9uKSkK
ICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi52YWx1ZSgpOwogCisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faW5zdGFuY2UtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgZm9yRWFj
aEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJs
ZUluZGV4KSB7CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50LmZ1bmN0
aW9uSW5kaWNlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXNz
ZW50aWFsbHkgbWVhbnMgd2UncmUgZXhwb3J0aW5nIGFuIGltcG9ydC4KQEAgLTUzMiw3ICs1MzMs
NyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgdGFibGUtPnNldEZ1
bmN0aW9uKHZtLCB0YWJsZUluZGV4LAotICAgICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBtX2luc3RhbmNlLT5nbG9iYWxPYmplY3QoKSwgZnVu
Y3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUlu
ZGV4KSk7CisgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1f
aW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgKyt0YWJs
ZUluZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtNTQ1
LDcgKzU0Niw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIC8vIERvZXMgKG5ldyBJbnN0YW5jZSguLi4pKS5l
eHBvcnRzLmZvbyA9PT0gdGFibGUuZ2V0KDApPwogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgyNQogICAgICAgICAgICAgV2ViQXNzZW1i
bHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgdm0sIG1faW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLCBzaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpLCBTdHJpbmcoKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBv
aW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CisgICAg
ICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwg
U3RyaW5nKCksIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50
cnlwb2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOwogCiAgICAgICAgICAgICB0YWJs
ZS0+c2V0RnVuY3Rpb24odm0sIHRhYmxlSW5kZXgsIGZ1bmN0aW9uKTsKICAgICAgICAgICAgICsr
dGFibGVJbmRleDsKQEAgLTU2Niw3ICs1NjcsNyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoSlNPYmplY3QqIHN0
YXJ0RnVuY3Rpb24gPSBtX3N0YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKICAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShz
dGFydEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlND
OjpnZXRDYWxsRGF0YSh2bSwgc3RhcnRGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICBjYWxs
KGV4ZWMsIHN0YXJ0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
KnZtLmVtcHR5TGlzdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlQcm90b3R5cGUuY3BwCmluZGV4IGJlNTVmMDUyZWQzMDQzNTU5OGI1NTI4MTNkOTc5NWYy
MDQ5MWU3MGEuLjFlNDBiOGE5OTY5NjlhZDUxOGRkZGYxYmI2NjQ3NDA3ZDE0NjViMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3Rv
dHlwZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIEpTVwogICAg
IG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2Ut
Pm1lbW9yeU1vZGUoKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNr
VHlwZT4oW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtp
bmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoUmVmPFdhc206OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxv
Y2spIG11dGFibGUgewogICAgICAgICBSZWZQdHI8V2FzbTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sg
PSBXVEZNb3ZlKHJlZkNvZGVCbG9jayk7CiAgICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVy
LT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBp
bXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0g
V1RGTW92ZShjb2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCh2bSktPmdsb2JhbEV4
ZWMoKTsKICAgICAgICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJlbGVhc2VOb25OdWxsKCksIHJlc29sdmVL
aW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsKICAgICB9KSwgJldhc206OmNyZWF0ZUpT
VG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjVhMDQ0OTZlYTYyN2Q5NWIwYzI3NTBjNGU2
Mjc4NmZmMmY0NDRjZi4uYjEwMTlkY2IyYjlkZDIzZDdkYjhlYjkyOGM3ZWQ0YThhODc2ZjFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUKICAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgbWVz
c2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgp
LCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKS0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSk7CisgICAgYXV0byogc3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
ZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxs
ZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KQEAgLTU3LDcgKzU3LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCk7Cisg
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4o
ZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+V2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwg
VHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCmluZGV4IDhkZGQ0ZDIzOGQy
ODk0YTM2ZTM2YWY3NGMzMTQ1ZTEzZWE1ZWNlYjQuLjU1MGQ3YTkyZTljNTgxZjRjNDRiMGIzZmNh
ODYwZWZkYzIzMTZhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBjb25zdCBD
bGFzc0luZm8gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVRv
SlNDYWxsZWUiLCAmQmFzZQogCiBXZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlKQogewot
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbW9kdWxlLT5nbG9iYWxPYmplY3QoKS0+d2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBt
b2R1bGUtPmdsb2JhbE9iamVjdCh2bSktPndlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZSgp
OwogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0sIG1v
ZHVsZSk7CiAgICAgcmV0dXJuIGNhbGxlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXggMmNjMDNjOTI0OTM1ZWQ5NzQzZjdj
YzQxYjEzNTQ1ZTEzMWE3MzE3My4uZjA1NTBhYTY0NDNlZTlkNDQ2NTViOTVjMDk3MjBlNDYyZGNk
N2JmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlz
dEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIGJvb2wg
SlNDU1NSdWxlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIEpTQ1NTUnVsZUxpc3QqIGpzQ1NTUnVsZUxpc3QgPSBqc0Nhc3Q8SlNDU1NSdWxlTGlzdCo+
KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoIWpzQ1NTUnVsZUxpc3QtPmhhc0N1
c3RvbVByb3BlcnRpZXMoKSkKKyAgICBpZiAoIWpzQ1NTUnVsZUxpc3QtPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKmpzQ1NTUnVsZUxpc3QtPnZtKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBqc0NTU1J1bGVMaXN0LT53cmFwcGVkKCku
c3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qo
cm9vdChzdHlsZVNoZWV0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxi
YWNrRGF0YS5jcHAKaW5kZXggNTY1YmM3NDA3OTliYmY3NzYwYWRiYmJlNTcxNTBjY2Y3ZDg3NzI0
Yy4uOTBhODM3ZWVhYWRkNjc3NDY1NWI4NjM1ZGI4MWRiZTJjMTUzMDRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcApAQCAtNjAsNyArNjAsNyBA
QCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdAogCiAgICAgICAgIEFTU0VSVCghZnVuY3Rpb25OYW1l
LmlzTnVsbCgpKTsKICAgICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjay0+Z2V0KGV4ZWMsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKKyAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxE
YXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAg
ICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUodm0sIGNyZWF0
ZVR5cGVFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwCmluZGV4IDk3ODE0NTlkZjg2YjZhMWU5ZjUxY2FlMWUwNDMxNGE2ZWYzMDVmNWEuLmVkMTU2
ZDdkNjI1ZTY2NWExMTM1MzQ3YTc4NjdjMzZlZDZhMWNmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTY5
LDEyICs2OSwxMyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVz
cGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21t
b25WTSgpKTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgCiAgICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IG1fY3VzdG9tUmVzb2x2ZXItPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJsb29rdXBOYW1lc3BhY2VVUkkiKSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEp
OworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgIGNh
bGxUeXBlID0gbV9jdXN0b21SZXNvbHZlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEobV9j
dXN0b21SZXNvbHZlci5nZXQoKSwgY2FsbERhdGEpOworICAgICAgICBjYWxsVHlwZSA9IG1fY3Vz
dG9tUmVzb2x2ZXItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEobV9jdXN0b21SZXNvbHZl
ci5nZXQoKSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKICAgICAgICAgICAgIGlmIChQYWdlQ29uc29sZUNsaWVudCogY29uc29sZSA9IG1fZ2xv
YmFsT2JqZWN0LT53cmFwcGVkKCkuY29uc29sZSgpKQogICAgICAgICAgICAgICAgIGNvbnNvbGUt
PmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90IGhhdmUgYSBsb29rdXBOYW1lc3BhY2VV
UkkgbWV0aG9kLiIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwCmluZGV4IDMzMzE1MGUxMWE1N2MyNDIw
MmU4MGYwMTA0YzczOTA5NjllN2RlNDguLjg4YjM0ZGU1MWUwZDI1OWZhMWZmYzljODI1NmMyNjg4
OTEyMGFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVp
bHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlLmNwcApAQCAtMzIsNyArMzIsNyBAQCB2b2lkIEpT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEN1cnJlbnRBcmd1bWVu
dHMoSlNDOjpFeGVjU3RhdAogICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNDOjpDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSgmZnVu
Y3Rpb24sIGNhbGxEYXRhKTsKKyAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRD
YWxsRGF0YSh2bSwgJmZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKTsKIAogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
U2NoZWR1bGVkQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRTY2hlZHVsZWRBY3Rpb24uaAppbmRleCAyZWZmOTNhYTExZGU3OGMyMTJjMmZmOWNmNTZjYWQ3
NTcyNDJmMDY0Li5mNzA0MDQ1YWZjOTI3ZmNhYTE5YzE4ZTVhNDhkNjkyYjZmZGE4YjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRB
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hl
ZHVsZWRBY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMU2NoZWR1bGVkQWN0aW9uPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMU2NoZWR1bGVkQQog
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAgICAg
SlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgaWYgKGdldENhbGxEYXRhKHZhbHVlLCBj
YWxsRGF0YSkgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICBpZiAoZ2V0Q2FsbERh
dGEodm0sIHZhbHVlLCBjYWxsRGF0YSkgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkgewogICAgICAg
ICAgICAgYXV0byBjb2RlID0gQ29udmVydGVyPElETERPTVN0cmluZz46OmNvbnZlcnQoc3RhdGUs
IHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogICAgICAgICAgICAgcmV0dXJuIFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVj
dC53b3JsZCgpLCBXVEZNb3ZlKGNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaAppbmRleCBmMmVkNzI0ZmQ5YjhiODM4YzA2YWNiYzYxNDQ2ODM5YjNkOWY5
ZWQ2Li44ZjljYTI2YzQ5ZDE1YmQ1MjAzMGE5MzIxMDZhYzMzYmMxMTZlNGI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCkBAIC0yMDYsNyArMjA2LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNJdGVyYXRvcj4gSlNDOjpKU1ZhbHVlIGl0ZXJhdG9yRm9yRWFj
aChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUuYXJndW1lbnQoMSk7CiAKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6
Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7
CisgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoc3RhdGUudm0o
KSwgY2FsbGJhY2ssIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlw
ZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgY2FsbGJhY2siKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCmluZGV4IDM3OGRlMjk2MTQ5NGE4MWFiOGY5NWI5
ZDMxNTg1ZGZhNTJmNjE4M2EuLmZmYTM1YjA1ZmQxNWVhNzFlYTEwZjZiY2NmMGE2M2EzNzAyZWFk
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcApAQCAt
NjgsNyArNjgsNyBAQCBKU0M6OkpTVmFsdWUgZm9yd2FyZEZ1bmN0aW9uQ2FsbFRvQmFja2luZ01h
cChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplYwogICAgIEFTU0VSVChmdW5jdGlv
bik7CiAKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5cGUgY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgSlNDOjpD
YWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoc3RhdGUudm0oKSwgZnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7
CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgZm9yIChzaXpl
X3QgY3B0ciA9IDA7IGNwdHIgPCBzdGF0ZS5hcmd1bWVudENvdW50KCk7ICsrY3B0cikKQEAgLTg1
LDcgKzg1LDcgQEAgSlNDOjpKU1ZhbHVlIGZvcndhcmRGb3JFYWNoQ2FsbFRvQmFja2luZ01hcChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2IKICAgICBnZXRCYWNraW5nTWFwKHN0
YXRlLCBtYXBMaWtlKTsKIAogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpD
YWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsK
KyAgICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShzdGF0ZS52bSgp
LCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxU
eXBlOjpOb25lKTsKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAg
ICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsgKytj
cHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKaW5kZXgg
N2E4OGQ4MzA1NTY5YTJlNzM4NTJkOTI0NWI4M2I4MTIzMjUxODE1MC4uMjRjNWNlNzExYWM2MGU2
MmIxMjRiYjQ2MjRjZDlmMDUyNTZjZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuY3BwCkBAIC00MCw5ICs0MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
LCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3VtZW50cykKIHsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0M6OkNhbGxE
YXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGpzRnVu
Y3Rpb24sIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2
bSwganNGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNh
bGxUeXBlOjpOb25lKTsKICAgICBhdXRvIHJlc3VsdCA9IGNhbGwoJnN0YXRlLCBqc0Z1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4
IDJiYzI1N2Q1YzkzZmZlMGZmMDRlY2U1M2Y2NjQ1NzMyZjI1ZDg2MDguLjA5YWQyNzMzNDJlYmNm
YzY2MjFlMDE1MzZkMDUwZDdkYTZhY2VlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9p
ZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUg
ZnVuY3Rpb24sIEpTVmFsdWUgcmUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5
cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwpAQCAtMjA3LDcgKzIwNyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0
ZWRQcm9taXNlV2l0aFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvCiAgICAgYXV0
byByZWplY3Rpb25WYWx1ZSA9IGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIGVycm9yTWVzc2FnZSk7
CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEocmVqZWN0RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoc3RhdGUudm0oKSwgcmVqZWN0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXBy
ZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RlcHJlY2F0ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcAppbmRleCAzNzg2NzkwNTY5MDkxYTNjYzg5
M2E5NDExNTJjM2RhZDIyNjg2ZjVhLi4zNWM3NWZlMzQ3MTI2NDIxNzc1NjA5YzQ0MjhjYWNmMGEz
Y2RmMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlcHJlY2F0
ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RlcHJlY2F0ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogYm9vbCBKU0RlcHJlY2F0ZWRDU1NPTVZhbHVlT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNEZXByZWNhdGVkQ1NTT01WYWx1ZSog
anNDU1NWYWx1ZSA9IGpzQ2FzdDxKU0RlcHJlY2F0ZWRDU1NPTVZhbHVlKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGlmICghanNDU1NWYWx1ZS0+aGFzQ3VzdG9tUHJvcGVydGllcygp
KQorICAgIGlmICghanNDU1NWYWx1ZS0+aGFzQ3VzdG9tUHJvcGVydGllcygqanNDU1NWYWx1ZS0+
dm0oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdCgmanNDU1NWYWx1ZS0+d3JhcHBlZCgpLm93bmVyKCkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDEy
M2RlNGMwYTI0NDRjODU2MmE4NGEzN2Q4ZWJjMjVlMmY0MzMyOGUuLjlhZmFjYjVmNjdmOTRlNGYx
NjZmOGQzMWM2MjFlODQ3ZWJmYzYxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSlNFdmVudExp
c3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0CiAgICAgSlNWYWx1ZSBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbjsK
IAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKIAog
ICAgIC8vIElmIGpzRnVuY3Rpb24gaXMgbm90IGFjdHVhbGx5IGEgZnVuY3Rpb24sIHNlZSBpZiBp
dCBpbXBsZW1lbnRzIHRoZSBFdmVudExpc3RlbmVyIGludGVyZmFjZSBhbmQgdXNlIHRoYXQKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2
b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMs
IGV4Y2VwdGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAg
ICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxE
YXRhKTsKICAgICB9CiAKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXgg
ODQ0ODgwNzQ3MDA0ZTgzNWY3ZWJlMWJiYWJhOGRjOGRhNmZjNjUzOS4uOWExYzg3MzQ0Njk1M2Uz
MjFmYjhlNTU2OWM5NGYzNDgxY2NlZjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIGJvb2wgSlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxpc3QgPSBqc0Nhc3Q8SlNOb2RlTGlz
dCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoIWpzTm9kZUxpc3QtPmhhc0N1
c3RvbVByb3BlcnRpZXMoKSkKKyAgICBpZiAoIWpzTm9kZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRp
ZXMoKmpzTm9kZUxpc3QtPnZtKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGpz
Tm9kZUxpc3QtPndyYXBwZWQoKS5pc0xpdmVOb2RlTGlzdCgpKQogICAgICAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxMaXZlTm9kZUxpc3QmPihq
c05vZGVMaXN0LT53cmFwcGVkKCkpLm93bmVyTm9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCA0
ZTEzNmMxMTBlNDliYmNiN2E5ZWJmZDYxYzBiMjc2Yjg1NWQ4ZmQ1Li43NjY5ZWM3ZjJlN2YwN2Fl
MjRlMDM2ZTIyNzAzYTA4ZjI4NTRiYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNIVE1MRWxlbWVudCogZWxlbWVudCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFzY3JpcHRPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBwdXRSZXN1bHQgPSBzY3JpcHRPYmplY3QtPm1ldGhvZFRh
YmxlKCktPnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworICAgIHB1dFJlc3VsdCA9IHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dChzY3JpcHRPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFBsdWdpbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQVNTRVJU
KCFhcmd1bWVudExpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoc2NyaXB0T2JqZWN0LCBjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShleGVjLT52bSgpLCBz
Y3JpcHRPYmplY3QsIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
Okhvc3QpOwogCiAgICAgLy8gQ2FsbCB0aGUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAppbmRleCBjYTMyYmI2YTZlNjExM2M1YzBhODFjZDI0
ZWFkMWM2M2Q5NmM5YmQ1Li5iZjBlMjI1OTFlNTQ2ZDBkODFmNjNlNDhkNjY3MDdmYmFjZDYxZDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIEpTV2luZG93UHJveHk6OnNldFdpbmRvdyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiB3aW5kb3cpCiB7CiAgICAgQVNTRVJUKHdpbmRvdy5jbGFzc0luZm8oKSA9
PSBKU0RPTVdpbmRvdzo6aW5mbygpIHx8IHdpbmRvdy5jbGFzc0luZm8oKSA9PSBKU1JlbW90ZURP
TVdpbmRvdzo6aW5mbygpKTsKICAgICBzZXRUYXJnZXQodm0sICZ3aW5kb3cpOwotICAgIHN0cnVj
dHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sICZ3aW5kb3cpOworICAgIHN0cnVjdHVyZSh2bSkt
PnNldEdsb2JhbE9iamVjdCh2bSwgJndpbmRvdyk7CiAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5nYXJiYWdlQ29sbGVjdFNvb24oKTsKIH0KIApAQCAtMTA3LDExICsxMDcsMTEgQEAgdm9p
ZCBKU1dpbmRvd1Byb3h5OjpzZXRXaW5kb3coQWJzdHJhY3RET01XaW5kb3cmIGRvbVdpbmRvdykK
ICAgICAgICAgd2luZG93ID0gSlNET01XaW5kb3c6OmNyZWF0ZSh2bSwgJndpbmRvd1N0cnVjdHVy
ZSwgZG93bmNhc3Q8RE9NV2luZG93Pihkb21XaW5kb3cpLCB0aGlzKTsKICAgICB9CiAKLSAgICBw
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sIHdpbmRvdyk7CisgICAg
cHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT5zZXRHbG9iYWxPYmplY3Qodm0sIHdpbmRvdyk7CiAK
ICAgICBhdXRvJiBwcm9wZXJ0aWVzU3RydWN0dXJlID0gKkpTRE9NV2luZG93UHJvcGVydGllczo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB3aW5kb3csIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwg
KndpbmRvdykpOwogICAgIGF1dG8mIHByb3BlcnRpZXMgPSAqSlNET01XaW5kb3dQcm9wZXJ0aWVz
OjpjcmVhdGUoJnByb3BlcnRpZXNTdHJ1Y3R1cmUsICp3aW5kb3cpOwotICAgIHByb3RvdHlwZS0+
c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCAmcHJvcGVydGll
cyk7CisgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJh
bnNpdGlvbih2bSwgJnByb3BlcnRpZXMpOwogCiAgICAgc2V0V2luZG93KHZtLCAqd2luZG93KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4
IDVkNjE4NmI2YTlmYmM4OGM1MWE1MjhhOGQ1NzQ3NzUxMmMxYzkxOTMuLmI3OTNkNDFiYTkwY2Q4
MGE5NDVjNGI3M2IwMDNkMmE3NzJkMGQ3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKQEAgLTYyLDkgKzYyLDEwIEBAIFJlZjxSZWFkYWJsZVN0
cmVhbT4gUmVhZGFibGVTdHJlYW06OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBS
ZWZQdHI8UmVhCiBuYW1lc3BhY2UgUmVhZGFibGVTdHJlYW1JbnRlcm5hbCB7CiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUganNGdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpB
cmdMaXN0JiBhcmd1bWVudHMpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUoc3RhdGUudm0oKSk7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0
YSk7CisgICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGpzRnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7
CiAgICAgYXV0byByZXN1bHQgPSBjYWxsKCZzdGF0ZSwganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKaW5kZXggNTcyZWY1NjcwMTE5MTIxNDg1
MzFlNTA4Mjc3YzY0ZTE5MjI4NDVlOS4uYWExMmQzZWJjYTUxNWZlOGJjZmI1ODc3Nzg5OGY5ODUy
Nzg5YTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0
aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzRnVuY3Rpb24sIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJndW1lbnRzKQogewogICAg
IEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKHN0YXRlLnZtKCksIGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICByZXR1cm4g
Y2FsbCgmc3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmd1bWVudHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcAppbmRleCA1MTA4OTVmY2Q1OTk2MTgyMWRjZDJmZTNjMjlhZDcyNTBmYjI3Mzcy
Li4xNWQxMjZiZTM1MzJiNTM3YjM0MGQ0OWFhZmE1MjY0YzAxZmYzM2Y1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxEYXRhKTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBtX2Z1bmN0aW9uLmdldCgpLCBjYWxsRGF0
YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCmluZGV4IDExZjc2NjRiYjhlN2FmZDZlNmE5NzE4N2E3NDliZjM4MTZhMWY3Yjku
LjczODhlMGNmYTVjMWU4NGU3NzkwOWRhYjhhYTg2NDk3MmM4Y2Q3NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAt
Njk5LDEwICs2OTksMTAgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAg
ICAgICAgd3JpdGUoVGVybWluYXRvclRhZyk7CiAgICAgfQogCi0gICAgSlNWYWx1ZSBnZXRQcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisg
ICAgSlNWYWx1ZSBnZXRQcm9wZXJ0eShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgICAg
IGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIG1f
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShtX2V4ZWMsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQpAQCAtMTU0Nyw3ICsxNTQ3
LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUo
SlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpblZhbHVlID0gZ2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0aWVzW2luZGV4
XSk7CisgICAgICAgICAgICAgICAgaW5WYWx1ZSA9IGdldFByb3BlcnR5KHZtLCBvYmplY3QsIHBy
b3BlcnRpZXNbaW5kZXhdKTsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhp
c3RpbmdFeGNlcHRpb25FcnJvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU3RydWN0dXJlZENsb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5jcHAKaW5kZXggZWVkMjIxMjM1ZGMwN2QxYWM3ZjQ2NzZkY2QwOGYxNmM3
ODZjYjBhMS4uM2EzOGFjNWVjNmEyMzAxMWJkYjExMWVhMDE2MTI4YTViM2JmZTU3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCkBAIC05MCwy
NyArOTAsMjggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVB
cnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAgICAgYXV0byBidWZmZXJDbG9uZSA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGJ1ZmZlclZpZXctPnN0cnVjdHVyZSh2bSk7CiAKICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U0ludDhBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNJbnQ4QXJyYXk6OmNyZWF0ZShzdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQ4QXJyYXk6OmNy
ZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTSW50MTZBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNJbnQxNkFycmF5OjpjcmVhdGUoc3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgp
LCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJW
aWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZB
cnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZm
ZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0ludDMyQXJyYXk6OmNyZWF0ZShzdGF0ZSwgYnVmZmVyVmlldy0+c3Ry
dWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCks
IGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNJbnQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9u
ZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU1VpbnQ4QXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhBcnJheTo6Y3JlYXRlKHN0YXRlLCBidWZmZXJW
aWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVP
ZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1VpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1
ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgo
KSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVWludDhDbGFtcGVkQXJyYXkqPih2bSwgdmFs
dWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZShzdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xv
bmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRl
KHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRl
T2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNVaW50MTZBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNVaW50MTZBcnJheTo6Y3JlYXRlKHN0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwg
V1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmll
dy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQxNkFy
cmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZl
clZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1VpbnQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1VpbnQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIGJ1ZmZlclZpZXctPnN0
cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgp
LCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVWludDMyQXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNs
b25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwog
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRmxvYXQzMkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBi
dWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0Zsb2F0MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdU
Rk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXct
Pmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPih2bSwg
dmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQ2NEFycmF5Ojpj
cmVhdGUoc3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25l
KSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQ2NEFycmF5OjpjcmVhdGUoc3RhdGUs
IHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0RhdGFW
aWV3Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RhdGFW
aWV3OjpjcmVhdGUoc3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNyZWF0ZShzdGF0
ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNl
dCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggNTQ3YmI2NzQwNWMxODA1N2ExMWMwZmYyZWM2MjZhNTI0ODQ3NGIxMC4uODNhZTU2NzY0YTRi
YjFjYzcyOGExMmQwMDA5Y2E4NmMzZWJmNzg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTg2LDEyICs4Niwx
MiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgICAgICBt
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZSY+KCptX3dvcmtlckdsb2JhbFNjb3BlKSwgcHJveHkpKTsKICAgICAg
ICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCpt
X3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CiAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsK
LSAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAgICBk
ZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCpt
X3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIGRlZGljYXRl
ZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNp
dGlvbigqbV92bSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKyAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKm1fdm0pLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5
cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9i
YWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBl
LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwg
SlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCkpKTsKIAogICAgICAgICBwcm94eS0+c2V0VGFyZ2V0KCptX3ZtLCBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHByb3h5LT5zdHJ1Y3R1cmUo
KS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSk7CisgICAgICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1f
dm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgfSBlbHNlIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5pc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpKTsKQEAgLTEwNCwxMSArMTA0LDExIEBA
IHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgICAgIGNvbnRl
eHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9i
YWxTY29wZVdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIEFTU0VSVCht
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpID09
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKLSAgICAgICAgY29udGV4dFByb3RvdHlwZS0+
c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpOwotICAgICAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0
UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIEpTV29ya2VyR2xvYmFsU2NvcGU6OnBy
b3RvdHlwZSgqbV92bSwgKm1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKSk7CisgICAg
ICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgq
bV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgICAgICBjb250ZXh0
UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlv
bigqbV92bSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKIAogICAgICAgICBwcm94eS0+c2V0VGFyZ2V0KCpt
X3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHByb3h5LT5z
dHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci5nZXQoKSk7CisgICAgICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxP
YmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKICNlbmRpZgog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IGQxYWQz
ZWI4Nzk2YTlhOTA1OGIzMWU3OThiYzA1YjNjMTY4ZTczYWYuLmQ5NDU4YzUxNmJhNzM3MTYxNzJi
OWM1MWRlMDNlODFkNGFkZmVjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9O
UF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNw
cApAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgX05QTl9JbnZva2VEZWZhdWx0KE5QUCwgTlBPYmpl
Y3QqIG8sIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJnQ291CiAgICAgICAgIC8v
IENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG9i
ai0+aW1wOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIApAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5w
cCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQq
CiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwog
ICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqLT5pbXAtPmdldChleGVjLCBpZGVudGlmaWVy
RnJvbU5QSWRlbnRpZmllcihleGVjLCBpLT5zdHJpbmcoKSkpOwogICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
biwgY2FsbERhdGEpOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZt
LCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBi
b29sIF9OUE5fQ29uc3RydWN0KE5QUCwgTlBPYmplY3QqIG8sIGNvbnN0IE5QVmFyaWFudCogYXJn
cywgdWludDMyX3QgYXJnQ291bnQsCiAgICAgICAgIC8vIENhbGwgdGhlIGNvbnN0cnVjdG9yIG9i
amVjdC4KICAgICAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IG9iai0+aW1wOwogICAgICAgICBD
b25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgICAgIENvbnN0cnVjdFR5cGUgY29uc3Ry
dWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpOwor
ICAgICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZt
LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7CiAgICAgICAgIGlmIChjb25zdHJ1Y3RUeXBl
ID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmlu
ZGV4IGEzOTY0YmJhNTU1MTJiY2QzN2E1ZTcyOWU1Y2I3ZGUxYjU5MWJiNTQuLjBiNWY4YTlkOWRm
YmU0ZjM4NzNjNmEwN2E4YTgxMDlkMzEzMjMzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChpZCljYWxs
V2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hbWUgd2l0aEFyZ3VtZW50czooTlNBcnJheSAq
KWFyZ3MKIAogICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcobmFtZSkpKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBmMGI4YzU1YWFmMjVjNmYwYjVhMjdjYTE3MzJlNzFmZTFiYTM1NjhiLi41Y2JlNWI0MWU0
MzBhNzkyMjIxMTNlYmZhMjMyOTMxYjExM2UzZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC00MDQ1LDcgKzQwNDUsNyBAQCBKU1ZhbHVlIEludGVybmFsczo6Y2xvbmVB
cnJheUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYnVmZmVyLCBKU1ZhbAog
CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1
bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxE
YXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6
OkNhbGxUeXBlOjpOb25lKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAg
ICAgYXJndW1lbnRzLmFwcGVuZChidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDlmNmZmMmE2OWQ1MTJkNjc2MmE2NWY0
YjlkNDVkOTI1MTY3ZWJmODcuLjA3ZGVkNDRkODk1M2VmYjBiZjg4ZDM2MmUyZDJkYTFkNDhmNzFk
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9y
dC5jcHAKQEAgLTU4LDggKzU4LDkgQEAgdm9pZCBpbmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250
ZXh0UmVmIGNvbnRleHQpCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdsb2JhbE9iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChpczxEb2N1bWVudD4oKnNjcmlwdENv
bnRleHQpKSB7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4o
KnNjcmlwdENvbnRleHQpKSkpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmV4cG9zZURvbGxhclZN
KCk7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgSW50ZXJuYWxzOjppbnRl
cm5hbHNJZCksIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb3du
Y2FzdDxEb2N1bWVudD4oKnNjcmlwdENvbnRleHQpKSkpOworICAgICAgICBnbG9iYWxPYmplY3Qt
PmV4cG9zZURvbGxhclZNKHZtKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggZDEy
NjdkNzdlNTc1ODY2NDFmM2QwYWE0Yjk5OWIzZTI2OWIzNjJjNy4uZmFmNzFkYzIyYmUwY2NjNTlh
ZTI0ZTRmNzczYzMzYTVmMzY0OWRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTExMCw3ICsxMTAs
NyBAQCBib29sIE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgcmV0dXJuIGdldENhbGxEYXRhKHZhbHVlLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmU7
CisgICAgcmV0dXJuIGdldENhbGxEYXRhKHZtLCB2YWx1ZSwgY2FsbERhdGEpICE9IENhbGxUeXBl
OjpOb25lOwogfQogCiBib29sIE5QSlNPYmplY3Q6Omludm9rZShOUElkZW50aWZpZXIgbWV0aG9k
TmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQs
IE5QVmFyaWFudCogcmVzdWx0KQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgTlBKU09iamVjdDo6
Y29uc3RydWN0KGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENv
dW50LCBOCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAg
Q29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0
VHlwZSA9IGdldENvbnN0cnVjdERhdGEobV9qc09iamVjdC5nZXQoKSwgY29uc3RydWN0RGF0YSk7
CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwg
bV9qc09iamVjdC5nZXQoKSwgY29uc3RydWN0RGF0YSk7CiAgICAgaWYgKGNvbnN0cnVjdFR5cGUg
PT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDMs
NyArMzAzLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjppbnZva2UoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGYKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDM5ZTljNDQ3
NjFlMzQyZmU0Njc0NTYwMWQ3NDFlNWY4MGNkNWMzMzcuLjFjOGQ1MzI2ZjE0YTkwZTc2ZGQ5YTVh
YmE4MjFiZGY3OWZkNGQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KQEAgLTkyMSw3ICs5MjEsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6aW52b2tlKHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGlmaWVyJiBtZQogICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQo
KSktPmdsb2JhbEV4ZWMoKTsKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQoZXhl
YywgbWV0aG9kTmFtZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCmluZGV4
IDRlNTliZTNkMGQ1NDNjMzNjMDMyNTk3OTQ4ZDZhMDFkOThjOTc1YTQuLmU2MmJmMjYzZTM4NjA1
MGYxYTY1YTVkOGU1OTI3YzUxMDI3NWZhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRp
YyBib29sIE5QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBtZXRo
b2ROYW1lLCBjb25zdCBOUFZhCiAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiA9IG9i
ai0+aW1wLT5nZXQoZXhlYywgSlNDOjpCaW5kaW5nczo6aWRlbnRpZmllckZyb21OUElkZW50aWZp
ZXIoZXhlYywgaS0+c3RyaW5nKCkpKTsKICAgICAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2
bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2Fs
bFR5cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341563</attachid>
            <date>2018-05-30 05:43:12 -0700</date>
            <delta_ts>2018-05-30 23:19:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186085-20180530214310.patch</filename>
            <type>text/plain</type>
            <size>303674</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YTNjMjM2NGZmZTZmMjg0ZjViMDA5YjgzMWUyMjg0YzBiOGUxMzVhLi42ZTZiYzdmMzAxOTQ0ZGZl
OWUyMDViY2RiNzQzM2EyMzMzYTJlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NDMgQEAKKzIwMTgtMDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVyIGFzIG11Y2ggYXMgcG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NjA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpT
Q2VsbDo6dm0oKSBpcyBzbG93IGNvbXBhcmVkIHRvIEV4ZWNTdGF0ZTo6dm0oKS4gVGhhdCdzIHdo
eSB3ZSBoYXZlIGJ1bmNoIG9mIGZ1bmN0aW9ucyBpbiBKU0NlbGwvSlNPYmplY3QgdGhhdCB0YWtl
IFZNJiBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHdlIGhhdmUgSlNDZWxs
OjpzdHJ1Y3R1cmUoKSBhbmQgSlNDZWxsOjpzdHJ1Y3R1cmUoVk0mKSwgdGhlIGZvcm1lciByZXRy
aWV2ZXMgVk0mIGZyb20gdGhlIGNlbGwgYW5kIGludm9rZXMgc3RydWN0dXJlKFZNJikuCisgICAg
ICAgIElmIHdlIGNhbiBnZXQgVk0mIGZyb20gRXhlY1N0YXRlKiBvciB0aGUgb3RoZXIgcGxhY2Us
IGl0IHJlZHVjZXMgdGhlIGlubGluZWQgY29kZSBzaXplLgorICAgICAgICBUaGlzIHBhdGNoIGF0
dGVtcHRzIHRvIHBhc3MgVk0mIHBhcmFtZXRlciB0byBzdWNoIGZ1bmN0aW9ucyBhcyBtdWNoIGFz
IHBvc3NpYmxlLgorCisgICAgICAgICogQVBJL0FQSUNhc3QuaDoKKyAgICAgICAgKHRvSlMpOgor
ICAgICAgICAodG9KU0ZvckdDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU09iamVj
dFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQ
SS9KU1R5cGVkQXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RHZXRUeXBlZEFycmF5QnVmZmVy
KToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1ZhbHVlSXNJbnN0
YW5jZU9mQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6
CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9w
ZXJ0eUNvdW50KToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dC5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0aW9uc0Zvckluc3RhbmNlT2YpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlDb25kaXRpb246OmF0dGVtcHRUb01ha2VFcXVpdmFsZW5jZVdpdGhvdXRC
YXJyaWVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkZXRhY2gpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpwdXQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNj
b3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmdldE93
blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2VPU1JFbnRyeVZhbHVlKToK
KyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpy
ZWZpbmUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjaGVj
ayk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjayk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9k
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAqIGZ0
bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0
ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJ
bmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6Y2FsbGVy
IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29w
ZUNoYWluIGNvbnN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpnZXRCeVZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgICoganNjLmNwcDoK
KyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAg
KGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAoSlNDOjpMTEludDo6c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OnNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OnRyeUluaXRp
YWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNhbGxBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0V2l0aEJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNyZWF0
ZUVtcHR5KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoSW5saW5l
RnJhbWUpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVdpdGhNYWNoaW5l
RnJhbWUpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zy
b20pOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVjaWFscyk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAg
ICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwpOgorICAg
ICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKToK
KyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVp
Y2tseSk6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0pT
T04pOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGlyZWN0QXJndW1lbnRzOjpvdmVycmlkZVRoaW5ncyk6CisgICAgICAgICogcnVudGltZS9F
cnJvci5jcHA6CisgICAgICAgIChKU0M6OmdldFN0YWNrVHJhY2UpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjb25z
dHJ1Y3RXaXRoRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpj
YWxsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fs
bEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNB
cmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbmZlcnJlZFR5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6OnJlbW92ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9JbmZlcnJlZFR5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0luZmVycmVkVHlwZUlu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcik6CisgICAgICAgICogcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVk
TG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICog
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9J
bnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTG9jYWxlTGlzdCk6Cisg
ICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0
ZWRMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2Nh
bGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChK
U0M6OkludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpT
Qzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRp
bWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0KToK
KyAgICAgICAgKEpTQzo6aXRlcmF0b3JDbG9zZSk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yRm9y
SXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6
OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEpTQnVmZmVyKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSlNCdWZmZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToK
KyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKToKKyAgICAg
ICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QpOgorICAgICAgICAoSlNDOjpnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVu
Y3Rpb246OmJvdW5kQXJnc0NvcHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Om1ldGhvZFRhYmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0
ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmV4cG9zZURvbGxhclZNKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRl
cm5hbFByb21pc2U6OnRoZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByb21pc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNKb2IuY3BwOgorICAgICAgICAoSlNDOjpKU0pvYk1pY3JvdGFzazo6cnVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
YXAuY3BwOgorICAgICAgICAoSlNDOjpKU01hcDo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OmNyZWF0ZVBhaXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cHJvdmlk
ZUZldGNoKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09OUHJvdG9GdW5jUGFyc2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3Jz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvbnZlcnRGcm9tQ29weU9uV3JpdGUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZW5zdXJlV3JpdGFibGVJbnQzMlNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlV3JpdGFibGVEb3VibGVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3Vy
ZVdyaXRhYmxlQ29udGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJl
QXJyYXlTdG9yYWdlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZU93bkluZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhT
bG93T3JCZXlvbmRWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0TmV3
VmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVu
Z3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJm
bHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2hpZnRCdXR0ZXJmbHlBZnRlckZsYXR0ZW5p
bmcpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YW55T2JqZWN0SW5DaGFpbk1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5
cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bmVl
ZHNTbG93UHV0SW5kZXhpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c3VnZ2Vz
dGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0N1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmlzRXh0ZW5zaWJsZUltcGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluZGV4aW5n
U2hvdWxkQmVTcGFyc2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c3RhdGljUHJvcGVydGll
c1JlaWZpZWQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2xvYmFsT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpnZXRDYWxs
RGF0YSk6CisgICAgICAgIChKU0M6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dE93
bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVy
Zmx5UHJlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVyZmx5VG90YWxT
aXplKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9t
aXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjppbml0aWFsaXplKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UHJvbWlzZSk6CisgICAgICAg
ICogcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChKU0M6Om5ld1Byb21p
c2VDYXBhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAg
ICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Omdsb2JhbE9i
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSB0aGlzIEpTU2NvcGU6Omdsb2JhbE9iamVj
dCBmdW5jdGlvbiBzaW5jZSBpdCBpcyBjb21wbGV0ZWx5IHRoZSBzYW1lIHRvIEpTT2JqZWN0Ojpn
bG9iYWxPYmplY3QoKS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTZXQuY3BwOgorICAgICAgICAo
SlNDOjpKU1NldDo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0SXRl
cmF0b3I6OmNyZWF0ZVBhaXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OmNsb25lKToKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljQWNjZXNzb3IpOgor
ICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGlt
ZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxl
KToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OnJlaWZ5U3RhdGljUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RPYmplY3QpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckFzc2lnbik6CisgICAgICAgIChKU0M6OnRvUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0RlZmluZUdldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y0RlZmluZVNldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpq
c0lzRnVuY3Rpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBpdCB3aXRoIEpTVmFs
dWU6OmlzRnVuY3Rpb24oVk0mKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
aXRoUmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsUmVnRXhwQ29uc3RydWN0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorICAg
ICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpuYW1lRnJvbUNhbGxlZSk6
CisgICAgICAgICogcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpT
Y29wZWRBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzKToKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhl
Y3V0aW9uSW1wbCk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkp
OgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKToKKyAgICAg
ICAgKEpTQzo6cmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OndpbGxTdG9yZVZhbHVlU2xvdyk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNhY2hlOjplbXB0
eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrU2V0KToKKyAgICAgICAgKiB0b29scy9I
ZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnJlcG9ydENlbGwp
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bkdsb2JhbE9iamVjdEZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbik6
CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Omhh
bmRsZUJhZEk2NFVzZSk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTRXhjZXB0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IpOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6Omluc3RhbnRpYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcDoK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUpOgorCiAyMDE4LTA1
LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHZl
cnNpb24gb2YgSlNWaXJ0dWFsTWFjaGluZSBzaHJpbmtGb290cHJpbnQgdGhhdCBydW5zIHdoZW4g
dGhlIFZNIGdvZXMgaWRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNlOTVhY2NjYzMyZWNmNDY1OGQ4MzkwODU3
ODg4ZjI2MGMxOTZhMzAuLjAxYjk1N2QxNDE0NzdjZWEwMGM4MGI4YmEwNmU4NDBlYzI3MTYzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxOC0wNS0zMCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBQYXNzIFZNJiBwYXJhbWV0
ZXIgYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2MDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGVM
aXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0
YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
Ojpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUJ1aWx0aW5Db25z
dHJ1Y3RvckJhc2U6OmNhbGxGdW5jdGlvbldpdGhDdXJyZW50QXJndW1lbnRzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnZlcnRlcjxJRExTY2hlZHVsZWRBY3Rpb24+Ojpjb252ZXJ0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjppdGVyYXRv
ckZvckVhY2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTWFwTGlrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmb3J3YXJkRnVuY3Rpb25DYWxsVG9CYWNraW5nTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmZvcndhcmRGb3JFYWNoQ2FsbFRvQmFja2luZ01hcCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxGdW5jdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5cGVFcnJvcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RlcHJlY2F0ZWRDU1NPTVZhbHVlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05v
ZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luRWxlbWVudEN1c3RvbVB1dCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUGx1Z2luKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2luZG93UHJveHk6OnNldFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1JbnRlcm5h
bDo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxGdW5jdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVTZXJpYWxpemVyOjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU3RydWN0dXJl
ZENsb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVy
Vmlldyk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToK
KyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGNhbGxXZWJT
Y3JpcHRNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIpOgor
ICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmVUZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KToKKwogMjAxOC0wNS0yOSAg
TmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZvbGxv
dy11cCBhZnRlciByMjMyMjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmN2VkZjBhODQ0YmQzNWM1ZjljNDI4YmU4
ZTU4MTk4MTZjMmU2YmIuLjk5MmFhZTI4ZmZhMGI5MTIxYzAzNWQ0MWE2ZTc2ZmFhOTE1Y2UwYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVy
IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NjA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpoYXNNZXRob2QpOgorICAgICAgICAoV2Vi
S2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0
OjppbnZva2UpOgorCiAyMDE4LTA1LTI5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBlNzc4NTUwMWIyNmU1N2MwYThmNDMzNzZkNmQ5YzlhYjEzMTZlOGMxLi4zMDMzYzli
MjFhNGMxN2RiMjc3OWM1ZWY0NDYyYzAwMDhhOWI0NGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVyIGFz
IG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NjA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZSk6
CisKIDIwMTgtMDUtMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZlcnRlZCB0aGUgY2hhbmdlcyBtYWRlIGZvciBodHRwczovL3dlYmtpdC5vcmcvYi8xODYw
MTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAxOGIwNDdkNDNkYTM4M2E1MGMyMGJi
YzY0ZDFlNjA1MTllNjhkMTRiLi42ZDYzZTRkNzY5MjAyYzE4NzcyYWE5YWRmN2MzYmViNDU4ZmZm
YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgt
MDUtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gUGFzcyBWTSYgcGFyYW1ldGVyIGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNr
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5QTl9JbnZva2UpOgorCiAyMDE4LTA1LTI3ICBG
dWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjIzMjE5OCkgW1dpbkNhaXJvXSBjYW5ub3QgY29udmVydCBmcm9tICdXVEY6OlN0cmlu
Z1ZpZXcnIHRvICdjb25zdCBXVEY6OlN0cmluZycKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0
LmgKaW5kZXggMjFmM2E3ZGU5NDYwOTZmMDA1MGM3MjMwYTRjNjYxNGVhOTRkMzQ3Yy4uN2Q2ZDNm
NzQ5MDQwNzM3NjJmYjViYjcyZmMwNjU2OTJkMmJlNTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlUmVmIHYpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogICAgIGlmIChyZXN1bHQuaXNDZWxsKCkpCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwoKS0+bWV0aG9kVGFibGUoKSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTRm9yR0MoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWVSZWYgdikK
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gSlNDOjpKU1ZhbHVlOjpkZWNvZGUocmVpbnRlcnBy
ZXRfY2FzdDxKU0M6OkVuY29kZWRKU1ZhbHVlPihjb25zdF9jYXN0PE9wYXF1ZUpTVmFsdWUqPih2
KSkpOwogI2VuZGlmCiAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaXNDZWxsKCkpCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwoKS0+bWV0aG9kVGFibGUoKSk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5hc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggMGVlZGRlYmRlODZiNDU0
ZGNlMjBmZWQzNjNkYmMwNjZmZDZjMzM0NS4uZjkzM2E5OWU3YjkzOWM2Y2QxYjVkOWUyYjAwNDU4
M2I1MTNhNTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90
KTsKKyAgICByZXR1cm4gb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlTbG90KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5h
bWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTQxNCw3ICs0MTQs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KQEAgLTY1Myw3ICs2NTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RQogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSogc3Rh
dGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25z
LT5nZXQobmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGVudHJ5LT5jYWxsQXNGdW5jdGlvbikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvID0gSlNDYWxsYmFja0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCh2bSksIGNhbGxBc0Z1bmN0aW9u
LCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwg
cHJvcGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG8pOwogICAgICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDRmODg2ODE5NmEy
YjczMWFmMjY5ZDQwOGFhZjA2MjE0Y2FlYzc4ZDMuLmQ4MGEwNzBiN2FiNjk4ZmI0OGE3MTBkZTVh
NzYzMzk1YmI0OWIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCkBAIC02MjMsMTMgKzYyMywxNiBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b24oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU09iamVjdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgSlNPYmplY3RJc0NvbnN0cnVjdG9yKEpTQ29udGV4dFJl
ZiwgSlNPYmplY3RSZWYgb2JqZWN0KQorYm9vbCBKU09iamVjdElzQ29uc3RydWN0b3IoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQogeworICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMoY3R4KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIodm0pOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIENvbnN0cnVjdERhdGEgY29u
c3RydWN0RGF0YTsKLSAgICByZXR1cm4ganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENvbnN0
cnVjdERhdGEoanNPYmplY3QsIGNvbnN0cnVjdERhdGEpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7
CisgICAgcmV0dXJuIGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEo
anNPYmplY3QsIGNvbnN0cnVjdERhdGEpICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CiB9CiAKIEpT
T2JqZWN0UmVmIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDQ4MzI1OTdjYjliMDg1ZjMwMDBiZTE1ZDNmMmFh
ZTJiMmQxYTc2NmEuLjQ1YzQ3YWJjOGMxNjRiZjU5YmU4YTlhMTA0ZWZlZWFmNzUxYTRiYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKQEAgLTMwMSw3ICsz
MDEsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdEdldFR5cGVkQXJyYXlCdWZmZXIoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0UmVmLAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0
b0pTKG9iamVjdFJlZik7CiAKICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHR5cGVkQXJyYXkg
PSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIG9iamVjdCkpCi0gICAgICAg
IHJldHVybiB0b1JlZih2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT50b0pTKGV4ZWMsIHR5cGVk
QXJyYXktPmdsb2JhbE9iamVjdCgpLCB0eXBlZEFycmF5LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigp
KSk7CisgICAgICAgIHJldHVybiB0b1JlZih2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT50b0pT
KGV4ZWMsIHR5cGVkQXJyYXktPmdsb2JhbE9iamVjdCh2bSksIHR5cGVkQXJyYXktPnBvc3NpYmx5
U2hhcmVkQnVmZmVyKCkpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXggMDBiZjA2MWFkYTJkMTZjMTc1ODc0ZDhk
ODE4MDY5MzQ1N2ZhOTgzMi4uNzk1NTliZTkwNzk4NzE1MWIyZmE3ZDkzMTI2NDI0NTE4ODgxMGZk
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0yNjUsNyAr
MjY1LDcgQEAgYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoSlNDb250ZXh0UmVm
IGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3QKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdG9KUyhj
b25zdHJ1Y3Rvcik7Ci0gICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKKyAgICBpZiAoIWpzQ29uc3RydWN0b3ItPnN0
cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBib29sIHJlc3VsdCA9IGpzQ29uc3RydWN0b3ItPmhhc0luc3Rh
bmNlKGV4ZWMsIGpzVmFsdWUpOyAvLyBmYWxzZSBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAg
ICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwCmluZGV4IDRhNzBhZDEzOTc4MzhkYTM0ZWJiOTgzNmU1MzA2Y2U3ZDBkOTYzZWQuLjQ0YmZm
NTRmYmRkYzQ2YzE5Mzg1YjBjNDQzMjJiNWJmZWFlNGQ1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xMTUs
NyArMTE1LDcgQEAgSlNWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhj
ZXB0aW9uKQogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggMTBlNGY5
NWRhOWI4MjNlY2I2MGJkOWFlZGVkZDVmYWViNWIxZTE1NC4uNjhjOWFjMmU3NTU0Mjk3OGJlNzE5
MmY1NDMwOWRjNGY1ZmJjMzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwCkBAIC03NiwxMCArNzYsMTEgQEAgc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4ZWNTdGF0ZSYgc2NyaXB0U3RhdGUsIEpTVmFs
dWUgdmEKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGluc3BlY3Rv
ckFycmF5KTsKICAgICAgICAgfQorICAgICAgICBWTSYgdm0gPSBzY3JpcHRTdGF0ZS52bSgpOwog
ICAgICAgICBhdXRvIGluc3BlY3Rvck9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgICAgIGF1dG8mIG9iamVjdCA9ICp2YWx1ZS5nZXRPYmplY3QoKTsKLSAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcygmc2NyaXB0U3RhdGUudm0oKSwgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwotICAgICAgICBvYmpl
Y3QubWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcygmb2JqZWN0LCAmc2NyaXB0U3Rh
dGUsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydHlOYW1lcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFBy
aXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgb2JqZWN0Lm1ldGhvZFRhYmxlKHZt
KS0+Z2V0T3duUHJvcGVydHlOYW1lcygmb2JqZWN0LCAmc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogcHJvcGVy
dHlOYW1lcykgewogICAgICAgICAgICAgYXV0byBpbnNwZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0
b3JWYWx1ZShzY3JpcHRTdGF0ZSwgb2JqZWN0LmdldCgmc2NyaXB0U3RhdGUsIG5hbWUpLCBtYXhE
ZXB0aCk7CiAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMyZmJlMzM3MjE2ZjRiOGZk
OTZmMmU3OTQ1Y2Y1N2ExYmE5MmExMmYuLmYzNmMxZmUyNDhiZGNhYTMxYjk2N2UxOTk3MTQ2NGEy
NTBhYzhiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24mIGNvbmRpdGlvbiA6IG1fY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKIAotICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pOwog
CiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludCgpKSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmFkZFRyYW5zaXRpb25XYXRj
aHBvaW50KHN0YXRlLmFkZFdhdGNocG9pbnQoY29uZGl0aW9uKSk7CkBAIC03MTAsNyArNzEwLDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSkKICAgICAgICAgICAgIGlmICghaGFzQWx0ZXJuYXRlQmFzZSgpKQogICAgICAgICAgICAg
ICAgIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gYWx0ZXJuYXRlQmFzZSgpLT5zdHJ1Y3R1cmUoKTsK
KyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gYWx0ZXJuYXRlQmFzZSgpLT5zdHJ1Y3R1
cmUodm0pOwogICAgICAgICAgICAgY3VyclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5
Rm9yUmVwbGFjZW1lbnRzKHZtLCBvZmZzZXQoKSk7CiAgICAgICAgIH0KIApAQCAtMTIzOSw3ICsx
MjM5LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgaWYgKCFoYXNBbHRlcm5hdGVCYXNlKCkpCiAgICAgICAgICAg
ICBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGN1cnJTdHJ1Y3R1cmUgPSBhbHRlcm5hdGVCYXNlKCktPnN0cnVjdHVyZSgpOworICAgICAgICAg
ICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKICAgICAg
ICAgY3VyclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZt
LCBvZmZzZXQoKSk7CiAgICAgICAgIAogICAgICAgICB0aGlzLT5hczxJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlPigpLmVtaXRJbnRyaW5zaWNHZXR0ZXIoc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA4YmQ3ZmU3YWY4M2RlMTJkOWUx
OWQyZGY0MGRiYzNjNDc0ZDFjMzdjLi40YmEzNTY2ZGVlZDg5NWZlYmRjZDA3YmEwMjM4ZDU1MWJh
YzhiZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAogICAg
IEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIs
IHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQog
ICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQotICAgICwgbV9nbG9iYWxPYmplY3QoKnZtLCB0
aGlzLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpCisgICAgLCBtX2dsb2JhbE9iamVjdCgqdm0sIHRo
aXMsIHNjb3BlLT5nbG9iYWxPYmplY3QoKnZtKSkKICAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKHVu
bGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKICAgICAsIG1fbnVtVmFycyh1bmxp
bmtlZENvZGVCbG9jay0+bV9udW1WYXJzKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQo
dHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RB
bGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaAppbmRleCAxMDZkYWIxZmM5MmJiOTZl
ZjkwMDM3NzllYjM4ZWJkNGM5Y2MxOGNhLi43MDIxOTQ3Y2Y3ODYyY2E5ZGJlMjNjZGNiYjRkNzkw
OTMyMmViM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCkBAIC0xNDQsMTIgKzE0
NCwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRp
YWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYgogCiBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZN
JiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKLSAgICBpZiAocHJvdG90eXBlID09IHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQorICAgIGlmIChwcm90b3R5
cGUgPT0gcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qodm0pLT5vYmplY3RQcm90b3R5cGUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZ2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0Fu
ZFN5bWJvbHMsIFByaXZhdGVTeW1ib2xNb2RlOjpJbmNsdWRlKTsKLSAgICBwcm90b3R5cGUtPnN0
cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1l
QXJyYXksIEVudW1lcmF0aW9uTW9kZSgpKTsKKyAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSkt
PmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVBcnJheSwgRW51
bWVyYXRpb25Nb2RlKCkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1l
VmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnBy
b3BlcnR5TmFtZVZlY3RvcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlO
YW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBwcm90b3R5
cGUtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lVmVjdG9yW2ldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQuY3BwCmluZGV4IDkzNzcxOTViYzUyNTlmNTg4NjIyZjJjNjkxMWM4OGUwNDdjZmQ1NjIu
LjFkOTQ3NWNiYzZkN2Q0MTQ0NTVjODQ1ZTIyMTM4NWEwYmUxNjk3MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uKAog
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgUHJvcGVydHlDb25kaXRpb246OktpbmQgY29uZGl0aW9uS2luZCkKIHsKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKCk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNy
ZWF0aW5nIGNvbmRpdGlvbiAiLCBjb25kaXRpb25LaW5kLCAiIGZvciAiLCBwb2ludGVyRHVtcChz
dHJ1Y3R1cmUpLCAiXG4iKTsKIApAQCAtMjA3LDE0ICsyMDcsMTQgQEAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb24oCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1Bv
bHlQcm90bygpKQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7
CiAgICAgICAgIHJlc3VsdCA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjphYnNlbmNlKAotICAg
ICAgICAgICAgdm0sIG93bmVyLCBvYmplY3QsIHVpZCwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+c3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCkpOworICAgICAgICAgICAgdm0sIG93bmVyLCBvYmplY3QsIHVp
ZCwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9uOjpBYnNlbmNlT2ZT
ZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCiAgICAg
ICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICAgICAgcmVzdWx0
ID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmFic2VuY2VPZlNldEVmZmVjdCgKLSAgICAgICAg
ICAgIHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIG9iamVjdC0+c3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKTsKKyAgICAgICAgICAgIHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIG9i
amVjdC0+c3RydWN0dXJlKHZtKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVuY2U6IHsK
QEAgLTQxMSw3ICs0MTEsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JJbnN0YW5jZU9mKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29uZGl0
aW9ucy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb246Omhh
c1Byb3RvdHlwZSgKLSAgICAgICAgICAgICAgICAgICAgdm0sIG93bmVyLCBvYmplY3QsIG9iamVj
dC0+c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIHZtLCBvd25lciwgb2JqZWN0LCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7
CiAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCmluZGV4IDc3MzBmMzUwMTJiZThk
MTE1YWQ3OGY3ZTFiZjI3NGE1ZjE2ZWU0Y2MuLjUxZDYxYzIxNzNhYjQzYTIwNGU2OTlhOGVhOTM0
NDNhY2Y3MWY3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cm9wZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgUHJvcGVydHlD
b25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkKAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgRW5zdXJlV2F0Y2hhYmlsaXR5OgogICAgICAgICAgICAgc2V0ID0gc3RydWN0dXJl
LT5lbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCgKLSAgICAgICAgICAgICAg
ICAqSGVhcDo6aGVhcChzdHJ1Y3R1cmUpLT52bSgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAg
ICpzdHJ1Y3R1cmUtPnZtKCksIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTM4OSw3ICszODksNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjpp
c1ZhbGlkVmFsdWVGb3JQcmVzZW5jZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAKIFBy
b3BlcnR5Q29uZGl0aW9uIFByb3BlcnR5Q29uZGl0aW9uOjphdHRlbXB0VG9NYWtlRXF1aXZhbGVu
Y2VXaXRob3V0QmFycmllcihWTSYgdm0sIEpTT2JqZWN0KiBiYXNlKSBjb25zdAogewotICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmICghc3RydWN0dXJlLT5pc1Zh
bGlkT2Zmc2V0KG9mZnNldCgpKSkKICAgICAgICAgcmV0dXJuIFByb3BlcnR5Q29uZGl0aW9uKCk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGJhc2UtPmdldERpcmVjdChvZmZzZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggZjI3ZTUwN2I3ZWVjMjRkZmRkZmU0MGIz
ZGViZjg4MTE4MjEyMmJhMy4uM2JkNDQ1MzJjZDEzMWVmZDY2Nzg3NzQyODdjMGM5ZWYzMWI0NGE3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNTksMTQgKzU5LDE0
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKGNv
bnN0IEZpcmVEZXRhaWwmKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgVk0mIHZtID0g
Km1fa2V5Lm9iamVjdCgpLT52bSgpOwogICAgIGlmIChtX2tleS5raW5kKCkgPT0gUHJvcGVydHlD
b25kaXRpb246OlByZXNlbmNlKSB7CiAgICAgICAgIC8vIElmIHRoaXMgd2FzIGEgcHJlc2VuY2Ug
Y29uZGl0aW9uLCBsZXQncyB3YXRjaCB0aGUgcHJvcGVydHkgZm9yIHJlcGxhY2VtZW50cy4gVGhp
cyBpcyBwcm9maXRhYmxlCiAgICAgICAgIC8vIGZvciB0aGUgREZHLCB3aGljaCB3aWxsIHdhbnQg
dGhlIHJlcGxhY2VtZW50IHNldCB0byBiZSB2YWxpZCBpbiBvcmRlciB0byBkbyBjb25zdGFudCBm
b2xkaW5nLgotICAgICAgICBWTSYgdm0gPSAqSGVhcDo6aGVhcChtX2tleS5vYmplY3QoKSktPnZt
KCk7Ci0gICAgICAgIG1fa2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBtX2tleS5vZmZzZXQoKSk7CisgICAgICAgIG1fa2V5
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNl
bWVudHModm0sIG1fa2V5Lm9mZnNldCgpKTsKICAgICB9CiAKLSAgICBtX2tleS5vYmplY3QoKS0+
c3RydWN0dXJlKCktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHRoaXMpOworICAgIG1fa2V5Lm9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCh0aGlzKTsKIH0K
IAogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjp+V2F0Y2hwb2ludHNPblN0cnVjdHVy
ZVN0dWJJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3Bw
CmluZGV4IGJjYmFiYWI1NWNhZjJhMGQxMzlkNTBjM2MxNjA1ZjNjNTk1M2ExZWQuLmI2NTcwYmZh
ZGNhYzJkZDNkZmQ0MjZiNzU3ZTBlZjIwNDI1YjhlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMTczLDcgKzE3Myw4IEBAIHZvaWQgRGVidWdn
ZXI6OmRldGFjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWFzb25Gb3JEZXRhY2gg
cmVhc29uKQogICAgIC8vIHN0YWNrLCBzaW5jZSB3ZSB3b24ndCBnZXQgZnVydGhlciBkZWJ1Z2dl
ciBjYWxsYmFja3MgdG8gZG8gc28uIEFsc28sIHJlc3VtZSBleGVjdXRpb24sCiAgICAgLy8gc2lu
Y2UgdGhlcmUncyBubyBwb2ludCBpbiBzdGF5aW5nIHBhdXNlZCBvbmNlIGEgd2luZG93IGNsb3Nl
cy4KICAgICAvLyBXZSBrbm93IHRoZXJlIGlzIGFuIGVudHJ5IHNjb3BlLCBvdGhlcndpc2UsIG1f
Y3VycmVudENhbGxGcmFtZSB3b3VsZCBiZSBudWxsLgotICAgIGlmIChtX2lzUGF1c2VkICYmIG1f
Y3VycmVudENhbGxGcmFtZSAmJiBnbG9iYWxPYmplY3QtPnZtKCkuZW50cnlTY29wZS0+Z2xvYmFs
T2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGlmIChtX2lzUGF1c2VkICYmIG1fY3VycmVudENhbGxGcmFtZSAmJiB2bS5lbnRy
eVNjb3BlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QpIHsKICAgICAgICAgbV9jdXJy
ZW50Q2FsbEZyYW1lID0gbnVsbHB0cjsKICAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbnVs
bHB0cjsKICAgICAgICAgY29udGludWVQcm9ncmFtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXggNWQ2N2VmZGFkOGNkN2IxNjA5
NTYzYmFhZjI5MjIxNTg3MWZkNDFkZS4uNTUxMzZmZjQ2MjYxODY1MGQwNzAxNTI3YzdjZWViZDY5
NTZjMjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clNjb3BlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBjb25zdCBDbGFzc0luZm8gRGVidWdnZXJTY29w
ZTo6c19pbmZvID0geyAiRGVidWdnZXJTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdAogCiBE
ZWJ1Z2dlclNjb3BlKiBEZWJ1Z2dlclNjb3BlOjpjcmVhdGUoVk0mIHZtLCBKU1Njb3BlKiBzY29w
ZSkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+
ZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc2Nv
cGUtPmdsb2JhbE9iamVjdCh2bSktPmRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKTsKICAgICBEZWJ1
Z2dlclNjb3BlKiBkZWJ1Z2dlclNjb3BlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGVi
dWdnZXJTY29wZT4odm0uaGVhcCkpIERlYnVnZ2VyU2NvcGUodm0sIHN0cnVjdHVyZSwgc2NvcGUp
OwogICAgIGRlYnVnZ2VyU2NvcGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gZGVi
dWdnZXJTY29wZTsKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3Bl
OjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkpOwogICAgIHNsb3Quc2V0VGhpc1ZhbHVl
KEpTVmFsdWUodGhpc09iamVjdCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgRGVidWdn
ZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBEZWJ1Z2dl
clNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHAKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUo
c2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGUKICAgICBpZiAoIXNjb3Bl
LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAogYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTE0
NCw3ICsxNDQsNyBAQCBib29sIERlYnVnZ2VyU2NvcGU6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydAogICAgIGlmICghc2NvcGUtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsK
IH0KIAogRGVidWdnZXJTY29wZSogRGVidWdnZXJTY29wZTo6bmV4dCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggYTFhODM0OWM3M2JiNWRjODcxMmRmZmZhZjY3M2RkNmUxYTZhMjBkNC4uOGI2MGFk
OThmYzk3Mjc2MDQ5MDlkZGY2NTU4NmRlM2M0YTQ0MDViNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMTI0NCw3ICsxMjQ0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAg
IGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNC
b29sZWFuKAogICAgICAgICAgICAgICAgICAgICBjaGlsZC52YWx1ZSgpLmlzQ2VsbCgpCi0gICAg
ICAgICAgICAgICAgICAgID8gY2hpbGQudmFsdWUoKS5hc0NlbGwoKS0+c3RydWN0dXJlKCktPm1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICA/IGNoaWxkLnZhbHVlKCkuYXND
ZWxsKCktPnN0cnVjdHVyZShtX3ZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICAg
ICAgICAgIDogY2hpbGQudmFsdWUoKS5pc1VuZGVmaW5lZCgpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIElzQm9vbGVhbjoKQEAgLTEyNjUsNyArMTI2NSw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3Qt
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwogICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmICghKG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oIWNo
aWxkLnZhbHVlKCkuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbighY2hp
bGQudmFsdWUoKS5hc0NlbGwoKS0+c3RydWN0dXJlKG1fdm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBjb3VsZCBqdXN0IGNhbGwgZ2V0Q2FsbERhdGEuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0
NDU3CkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNh
c2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGQpIHsKLSAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKGFzT2JqZWN0KGNoaWxk
KS0+Z2xvYmFsT2JqZWN0KCkpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9n
cmFwaC5mcmVlemUoSlNWYWx1ZShhc09iamVjdChjaGlsZCktPmdsb2JhbE9iamVjdChtX3ZtKSkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmluZGV4IDkzNmE5NzdhYzU5ZWRiMTBhNjlh
OWZkMDdlNjFlNmMzNzIzYzJlYTIuLmIxMWZlM2U3YmUxODNiOGIyMjRhODU2YjVhNzUxNjQzZDIz
NGY4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVl
LmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6bWVyZ2VPU1JFbnRy
eVZhbHVlKEdyYXBoJiBncmFwaCwgSlNWYWx1ZSB2YWx1ZSkKICAgICB9IGVsc2UgewogICAgICAg
ICBtZXJnZVNwZWN1bGF0aW9uKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKTsK
ICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZShncmFwaC5tX3ZtKSk7CiAgICAgICAgICAgICBtZXJnZUFycmF5TW9kZXMobV9hcnJh
eU1vZGVzLCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmUubWVyZ2UoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUp
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggYTNkMDRhZGYzN2JmZjhiNDJj
OTFkNDA3OGM5N2IzOTY4NzkxOGM0OS4uOTY4NDk4ZGQ1ODBjYmQxMzdjNTBmMDA1MjA5MGQ2ZjE3
ODNlMDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgY2xhc3Mg
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgd2UncmUgb3V0LW9mLWJvdW5kcyB0aGVuIHdlIHByb2NlZWQgb25seSBpZiB0aGUg
cHJvdG90eXBlIGNoYWluCiAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSBhbGxvY2F0aW9uIGlz
IHNhbmUgKGkuZS4gZG9lc24ndCBoYXZlIGluZGV4ZWQgcHJvcGVydGllcykuCiAgICAgICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGVkZ2UtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBv
YmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9iamVjdFByb3RvdHlw
ZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSht
X2dyYXBoLm1fdm0pOwogICAgICAgICAgICAgICAgIGlmIChvYmplY3RQcm90b3R5cGVTdHJ1Y3R1
cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkKICAgICAgICAgICAgICAg
ICAgICAgJiYgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGVJc1NhbmUoKSkgewogICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9u
KG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7CkBAIC0yNzUsOSArMjc1LDkgQEAgY2xhc3MgQXJn
dW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gSWYgd2UncmUgb3V0LW9mLWJvdW5kcyB0aGVuIHdlIHByb2NlZWQgb25seSBpZiB0aGUgcHJv
dG90eXBlIGNoYWluCiAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSBhbGxvY2F0aW9uIGlzIHNh
bmUgKGkuZS4gZG9lc24ndCBoYXZlIGluZGV4ZWQgcHJvcGVydGllcykuCiAgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGVkZ2UtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvYmpl
Y3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9iamVjdFByb3RvdHlwZVN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZShtX2dy
YXBoLm1fdm0pOwogICAgICAgICAgICAgICAgIGlmIChlZGdlLT5vcCgpID09IENyZWF0ZVJlc3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJheVByb3RvdHlwZVN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7CisgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRj
aHBvaW50U2V0SXNTdGlsbFZhbGlkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIG9iamVj
dFByb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQo
KQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlw
ZUNoYWluSXNTYW5lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmNwcAppbmRleCAwZTg4ZDJhMzZmYjQ3ZDgzMDYyMjJiY2M5MDQ0MWI2YjMwNWUxNTdiLi4xYmFh
NjJhOTIyYWQ3NDVjNjQyNGFmNmVlNjk1MmNiZjllNDFkZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMzksOCArMjM5LDggQEAgQXJyYXlNb2Rl
IEFycmF5TW9kZTo6cmVmaW5lKAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIE9yaWdpbmFsQXJy
YXkgYW5kIHRoZSBKU0FycmF5IHByb3RvdHlwZSBjaGFpbiBpcyBzYW5lLAogICAgICAgICAvLyBh
bnkgaW5kZXhlZCBhY2Nlc3MgYWx3YXlzIHJldHVybiB1bmRlZmluZWQuIFdlIGhhdmUgYSBmYXN0
IHBhdGggZm9yIHRoYXQuCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBn
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgU3Ry
dWN0dXJlKiBhcnJheVByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90
b3R5cGUoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBl
U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7
CisgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZShncmFwaC5tX3ZtKTsKKyAgICAgICAgU3Ry
dWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpLT5zdHJ1Y3R1cmUoZ3JhcGgubV92bSk7CiAgICAgICAgIGlmICgobm9kZS0+b3Ao
KSA9PSBHZXRCeVZhbCB8fCBjYW5CZWNvbWVHZXRBcnJheUxlbmd0aChncmFwaCwgbm9kZSkpCiAg
ICAgICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9yaWdpbmFsQXJyYXkKICAgICAg
ICAgICAgICYmICFncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE91dE9m
Qm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA3NDQyYjgxNTcwN2I4MzdiODE2YmE4YWE5NmVlYjc2NmE4MjQ1Y2E0Li45NjY2
NDQwNjIzMTAwMjQwNTllMzg0ODQwODk0NTU3ZWZlYTVmODA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjI2NCw4ICsyMjY0LDgg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUs
IGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91
czogewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOwogCi0gICAgICAg
ICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5h
cnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogb2Jq
ZWN0UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+
c3RydWN0dXJlKCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0
dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKm1fdm0pOwor
ICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKm1fdm0pOwogCiAgICAgICAgICAg
ICAvLyBGSVhNRTogV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoZSBBcnJheS9PYmplY3QucHJvdG90
eXBlIHRyYW5zaXRpb24gYXMgbG9uZyBhcyB3ZSBPU1IgZXhpdHRlZCBpZiB3ZSBzYXcgYSBob2xl
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzE3MQpAQCAtMjM1NCw4ICsyMzU0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAg
ICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czogewogICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3Jp
Z2luKCkuc2VtYW50aWMpOwogCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBl
U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsK
LSAgICAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3Rv
dHlwZSgpLT5zdHJ1Y3R1cmUoKm1fdm0pOworICAgICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQ
cm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1
Y3R1cmUoKm1fdm0pOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgZWFzaWx5IHJl
bGF4IHRoZSBBcnJheS9PYmplY3QucHJvdG90eXBlIHRyYW5zaXRpb24gYXMgbG9uZyBhcyB3ZSBP
U1IgZXhpdHRlZCBpZiB3ZSBzYXcgYSBob2xlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzE3MQpAQCAtMzM4OCw3ICszMzg4LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAogICAgIGlm
IChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgIT0gY29uc3RydWN0b3JDbGFzc0luZm9Gb3JUeXBlKHR5
cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKGZ1bmN0aW9uLT5nbG9i
YWxPYmplY3QoKSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpCisgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pICE9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAogICAgIC8vIFdlIG9ubHkgaGF2ZSBhbiBpbnRyaW5zaWMgZm9yIHRoZSBjYXNlIHdo
ZXJlIHlvdSBzYXk6CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICE9IDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIWZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
KSkKKyAgICBpZiAoIWZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pLT50eXBlZEFycmF5U3Ry
dWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
bnNlcnRDaGVja3MoKTsKQEAgLTM0NTYsNyArMzQ1Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICB9CiAKICAgICBpZiAoZnVuY3Rp
b24tPmNsYXNzSW5mbygpID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8oKSkgewotICAgICAgICBp
ZiAoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3Qo
Km1fdm0pICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENoZWNr
cygpOwpAQCAtMzQ5Nyw3ICszNDk3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChD
YWxsU3RyaW5nQ29uc3RydWN0b3IsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCBy
ZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpCi0gICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVj
dCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVj
dCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHQpOworICAgICAgICAgICAgcmVz
dWx0ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pLT5zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUoKSkpLCByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTA5
LDkgKzM1MDksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFs
RnVuY3Rpb24oCiAKICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xv
YmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPm9iamVjdFN0
cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBPcEluZm8obV9n
cmFwaC5mcmVlemUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpKSksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3IsIE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCptX3ZtKSkpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rl
ck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
cmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzU3Nyw3ICszNTc3LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6Y2hlY2soY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24mIGNvbmRpdGlvbikKICAgICBpZiAobV9ncmFwaC53YXRjaENvbmRpdGlvbihjb25kaXRpb24p
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSgqbV92bSk7CiAgICAgaWYgKCFjb25k
aXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVyZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZDIxNGRmN2IwNTJlM2I1N2RhZTc3NTBkNmUw
MWVlYzZiNTNhYzhmZS4uOTk5NzZlMDAyNTRjN2JhNWY3OTAwZGNjNTljNGZjZTYzNThjYTgwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTYyMiw3ICs2MjIsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC53
YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKG1f
Z3JhcGgubV92bSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1
Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbEdvb2QgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTExNDksNyArMTE0OSw3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZVJlZ2lz
dHJhdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOworICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShjZWxsLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKSwgcmVzdWx0KTsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA1ZGM4NTk2NzVkZmU3NTNiNmNjODQyMTM2YWNj
MmZmMTEyOTY2YTViLi4xOTM0NmUwYTM3ZTE2MmQzMzk5M2YzMTA4ODcyNGM4NjljN2MxMzEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTcxNCw4
ICs3MTQsOCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5Eb1NhbmVDaGFpbikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIGFycmF5UHJvdG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
cnJheVByb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFs
aWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG9iamVjdFByb3RvdHlwZVN0cnVj
dHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2Fu
ZSgpKSB7CkBAIC0xMTg0LDggKzExODQsOCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgIC8vIFdoZW4gd2UgZ28gZG93biB0aGUgZmFzdCBwYXRoLCB3ZSBk
b24ndCBjb25zdWx0IHRoZSBwcm90b3R5cGUgY2hhaW4sIHNvIHdlIG11c3QgcHJvdmUKICAgICAg
ICAgICAgIC8vIHRoYXQgaXQgZG9lc24ndCBjb250YWluIGFueSBpbmRleGVkIHByb3BlcnRpZXMs
IGFuZCB0aGF0IGFueSBob2xlcyB3aWxsIHJlc3VsdCBpbgogICAgICAgICAgICAgLy8ganNVbmRl
ZmluZWQoKS4KLSAgICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpOwotICAgICAgICAg
ICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogYXJy
YXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0
cnVjdHVyZSh2bSgpKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBlU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkp
OwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBcnJheSgp
CiAgICAgICAgICAgICAgICAgJiYgYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkKICAgICAgICAgICAgICAgICAmJiBvYmplY3RQcm90
b3R5cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggZTE3YWM3ZDBmYTk4MDJkZjY5
ZmJkMmU0NWQ2YjI5NjE4YTgyYjNmMi4uZGNiYzJkMTI5M2E0NDYxMDgyN2M4MmEyMWZmNWU2YTMy
MGE1ZTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTEyNzQs
NyArMTI3NCw3IEBAIEpTVmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCiAgICAg
Ly8gaW5jb21wYXRpYmxlIHdpdGggdGhlIGdldERpcmVjdCB3ZSdyZSB0cnlpbmcgdG8gZG8uIFRo
ZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0IGlzIHRvCiAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBz
dHJ1Y3R1cmUgYmVsb25ncyB0byB0aGUgcHJvdmVuIHNldC4KICAgICAKLSAgICBpZiAoIXN0cnVj
dHVyZVNldC50b1N0cnVjdHVyZVNldCgpLmNvbnRhaW5zKG9iamVjdC0+c3RydWN0dXJlKCkpKQor
ICAgIGlmICghc3RydWN0dXJlU2V0LnRvU3RydWN0dXJlU2V0KCkuY29udGFpbnMob2JqZWN0LT5z
dHJ1Y3R1cmUobV92bSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIAogICAgIHJl
dHVybiBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTA4ZDJlOTE5NzMxZWEwMzZmNzM4ODVhMDBiMzE0
NWRlMzQxNzBhOS4uNzc3NzM2OGQ2YmFiYjc2ODNmZTJmZWYzZDRkNTk1MjdlMmVhYTA3NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNTE3LDgg
KzE1MTcsOCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5UwogICAgIGF1dG8qIGltbXV0YWJsZUJ1
dHRlcmZseSA9IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KGltbXV0YWJsZUJ1dHRlcmZs
eUNlbGwpOwogICAgIEFTU0VSVChhcnJheVN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkgPT0gaW1t
dXRhYmxlQnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSB8fCBoYXNBbnlBcnJheVN0b3JhZ2UoYXJy
YXlTdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKSk7CiAgICAgYXV0byogcmVzdWx0ID0gQ29tbW9u
U2xvd1BhdGhzOjphbGxvY2F0ZU5ld0FycmF5QnVmZmVyKHZtLCBhcnJheVN0cnVjdHVyZSwgaW1t
dXRhYmxlQnV0dGVyZmx5KTsKLSAgICBBU1NFUlQocmVzdWx0LT5pbmRleGluZ01vZGUoKSA9PSBy
ZXN1bHQtPnN0cnVjdHVyZSgpLT5pbmRleGluZ01vZGUoKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+
c3RydWN0dXJlKCkgPT0gYXJyYXlTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChyZXN1bHQtPmluZGV4
aW5nTW9kZSgpID09IHJlc3VsdC0+c3RydWN0dXJlKHZtKS0+aW5kZXhpbmdNb2RlKCkpOworICAg
IEFTU0VSVChyZXN1bHQtPnN0cnVjdHVyZSh2bSkgPT0gYXJyYXlTdHJ1Y3R1cmUpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTE4MzgsNyArMTgzOCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQWxsb2NhdGVDb21wbGV4UHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBh
Y2l0eShFCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBBU1NFUlQoIW9iamVjdC0+c3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1Y3R1cmUodm0p
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oCiAgICAgICAgIG9iamVjdC0+YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwg
aW5pdGlhbE91dE9mTGluZUNhcGFjaXR5KSk7CiB9CkBAIC0xODQ5LDcgKzE4NDksNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlQ29tcGxleFByb3BlcnR5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsIEpTTwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKIAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPigKLSAgICAgICAg
b2JqZWN0LT5hbGxvY2F0ZU1vcmVPdXRPZkxpbmVTdG9yYWdlKHZtLCBvYmplY3QtPnN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXplKSk7CisgICAgICAgIG9iamVjdC0+YWxs
b2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXplKSk7CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRW5zdXJlSW50MzIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwpCkBAIC0yNTg3
LDcgKzI1ODcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkR2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogaXRlcmFibGUpCiAgICAgewogICAgICAgICBKU0Z1
bmN0aW9uKiBpdGVyYXRpb25GdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b2Nv
bEZ1bmN0aW9uKCk7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoaXRlcmF0aW9uRnVuY3Rpb24sIGNhbGxEYXRh
KTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBpdGVy
YXRpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGU6Ok5vbmUpOwogCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggNDJmMDU0NjdiMTY2NDI2MzI1ZGMxMmQ5MGFkNmZiNmI1NGU5MTFiMi4uNGE5OTg1ZTZlMDFi
Y2I3NjAwNTQ0ZDU5Y2MyZDhhYTc2ZDU3MzFiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIyMjEsOCArMjIyMSw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAvLyBvbiBhIHN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkgZ3VhcmFudGVlaW5n
IHRoYXQgdGhlIHByb3RvdHlwZXMgaGF2ZSBubyBuZWdhdGl2ZQogICAgICAgICAgICAgLy8gaW5k
ZXhlZCBwcm9wZXJ0aWVzIGVpdGhlci4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKLSAgICAgICAgICAgIG1faml0LmdyYXBoKCku
cmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRpb24oZ2xvYmFsT2JqZWN0LT5zdHJpbmdQ
cm90b3R5cGUoKS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdp
c3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVy
QW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBl
KCktPnN0cnVjdHVyZSgqbV9qaXQudm0oKSkpOworICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5y
ZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKm1faml0LnZtKCkpKTsKICAgICAgICAgICAgIHByb3RvdHlw
ZUNoYWluSXNTYW5lID0gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgp
OwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZS5jcHAKaW5kZXggNWMxYzk3ZDNkYTQ1NzE2OTBkZTQ2OTEwYmU5NTg3YzQxYTJiNTE3MC4uMmU5
OGI4MmQ4NGUyZjA3MDQyYjJmMTNmYWU3MDU4ODE1MTZiNWU5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBA
IC00NTIsNyArNDUyLDcgQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAKICAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKICAgICAgICAgICAgIGlm
IChKU09iamVjdCogb2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFu
dDxKU09iamVjdCo+KHZtKCkpKSB7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9D
b25zdGFudChtX25vZGUsIG9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCh2
bSgpKSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBjY2EwNjRhNjczZDUwM2I5MWI0MzUyZmM1MzhlNGEwZDEz
ZjVjNDE4Li5jNjAzYTJhZWIzYzUyMWRiMDZhMTdhYTc2ZGUyMjkxMjNjNTIxOGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MzEzLDgg
KzYzMTMsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIFNhbmVD
aGFpbk91dE9mQm91bmRzLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGdsb2JhbE9i
amVjdC0+c3RyaW5nUHJvdG90eXBlKCktPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBt
X2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBo
LnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGdsb2JhbE9iamVjdC0+c3RyaW5n
UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5y
ZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSkpOwogCiAgICAgICAgICAgICAgICAgcHJvdG90eXBl
Q2hhaW5Jc1NhbmUgPSBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcAppbmRleCBhNzc2NTViYTI0YjAzNjgyNTYwZjE3OGY5YTAyZjQ3ZjU4MjMzODRkLi5iMDE2
ZTE4OGFkZWQ5YTlkNTI4MmI1ZjUwYzlmMmVlZGUzYmEzOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgZXh0ZXJuICJD
IiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigKICAgICBz
d2l0Y2ggKG1hdGVyaWFsaXphdGlvbi0+dHlwZSgpKSB7CiAgICAgY2FzZSBQaGFudG9tTmV3T2Jq
ZWN0OiB7CiAgICAgICAgIEpTRmluYWxPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2Jq
ZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKCplbmNvZGVkVmFsdWUpKTsKLSAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKIAogICAgICAgICAvLyBGaWd1cmUgb3V0
IHdoYXQgdGhlIGhlY2sgdG8gcG9wdWxhdGUgdGhlIG9iamVjdCB3aXRoLiBVc2UKICAgICAgICAg
Ly8gZ2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpIGJlY2F1c2UgdGhhdCBoYXBwZW5zIHRvIGJl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKaW5kZXggZmUxMTMzYzdmZWI1ZWRhYmM0YzM2YTg1ZTBhMjA1YTRi
MDBjZTYyYi4uZjVhYzRkZTA4Y2YzOWYzMTQ5NDAyNDgyNTI2YmY1MTlkODk0MjhmMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIEpTQzo6SlNPYmplY3QqIEluamVjdGVk
U2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2Us
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSk7
CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb25WYWx1ZSwg
Y2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCAwOTNjZDRhNDk5M2EzNTli
MWUyODRiMDA4ZDY3ZWIzOTRiMGY0Mzk3Li5hNDAwNDI1Yjg1MWM3ODdhMThjNjM1N2QxMTU5Mzdi
NzE4ZTliOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSlNWYWx1
ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0ZSogZXhl
YykKIAogSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmNhbGxlcihFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGltcGwo
KS5jYWxsZXIoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KGV4ZWMtPnZt
KCkpLCBpbXBsKCkuY2FsbGVyKCkpOwogfQogCiBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZTo6c291cmNlSUQoRXhlY1N0YXRlKikgY29uc3QKQEAgLTIwMyw3ICsyMDMsNyBAQCBKU1ZhbHVl
IEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5
KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCgpLCBsaXN0KTsKKyAgICByZXR1cm4gY29uc3Ry
dWN0QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KHZtKSwgbGlzdCk7CiB9CiAKIEpT
VmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmlu
ZGV4IDU1OTcwNGY1NTU4M2JjNzUyNzdjZTA5ZDJkZGZkNWE3YTFmNzI5ZjMuLjJiNjMxZTIwNWY2
M2FkNmQ4ZDM1MmQ0YWYyNWY2MDFlM2FlYjU0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgSlNHbG9i
YWxPYmplY3QqIENhbGxGcmFtZTo6d2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdChWTSYgdm0p
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmICghY2FsbGVlKCkuaXNXYXNtKCkpCiAg
ICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgcmV0dXJuIHZtLndhc21D
b250ZXh0LmxvYWQoKS0+b3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICByZXR1cm4gdm0ud2FzbUNvbnRleHQubG9hZCgpLT5vd25lcjxKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U+KCktPmdsb2JhbE9iamVjdCh2bSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJiNjIzY2Fj
Njk0Y2Y5NTIwNDI0NmEzMzQyZWRmOWZmMmQ0NTg1MWUuLjk1ZGE4ZWUyOTU2NmUyNTFhYmI3NGNh
MGI2Nzk0N2Y1Mjk2MzhiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtODAxLDYgKzgwMSw3IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1l
KiBjYWxsRnJhCiAgICAgLy8gd2UnbGwgaGFuZGxlIHRoZSBKU09OIG9iamVjdCBoZXJlLiBFbHNl
LCB3ZSdsbCBoYW5kbGUgcmVhbCBKUyBjb2RlCiAgICAgLy8gYmVsb3cgYXQgZmFpbGVkSlNPTlAu
CiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgVmVjdG9yPEpTT05QRGF0YT4gSlNPTlBEYXRhOwogICAgIGJvb2wgcGFyc2VS
ZXN1bHQ7CiAgICAgU3RyaW5nVmlldyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCku
dmlldygpOwpAQCAtODA4LDE1ICs4MDksMTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDYWxsRnJhbWUqIGNhbGxGcmEKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0
KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gbGl0ZXJhbFBhcnNlcihjYWxsRnJh
bWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJjZS5sZW5ndGgoKSwg
SlNPTlApOwotICAgICAgICBwYXJzZVJlc3VsdCA9IGxpdGVyYWxQYXJzZXIudHJ5SlNPTlBQYXJz
ZShKU09OUERhdGEsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29wZS0+Z2xvYmFsT2JqZWN0KCkpKTsKKyAg
ICAgICAgcGFyc2VSZXN1bHQgPSBsaXRlcmFsUGFyc2VyLnRyeUpTT05QUGFyc2UoSlNPTlBEYXRh
LCBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNv
dXJjZUluZm8oZ2xvYmFsT2JqZWN0KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGl0ZXJhbFBh
cnNlcjxVQ2hhcj4gbGl0ZXJhbFBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFj
dGVyczE2KCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIEpTT05QKTsKLSAgICAgICAgcGFyc2VS
ZXN1bHQgPSBsaXRlcmFsUGFyc2VyLnRyeUpTT05QUGFyc2UoSlNPTlBEYXRhLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8oc2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CisgICAgICAgIHBhcnNlUmVzdWx0ID0gbGl0
ZXJhbFBhcnNlci50cnlKU09OUFBhcnNlKEpTT05QRGF0YSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGdsb2JhbE9iamVjdCkp
OwogICAgIH0KIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICBpZiAocGFyc2VSZXN1bHQpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgZW50cnkgPSAwOyBlbnRyeSA8IEpTT05QRGF0YS5zaXplKCk7IGVu
dHJ5KyspIHsKICAgICAgICAgICAgIFZlY3RvcjxKU09OUFBhdGhFbnRyeT4gSlNPTlBQYXRoOwpA
QCAtODk0LDcgKzg5NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRo
Lmxhc3QoKS5tX3BhdGhFbnRyeU5hbWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFGdW5jdGlv
bkVycm9yKGNhbGxGcmFtZSwgZnVuY3Rpb24pKTsKICAgICAgICAgICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBqc29uQXJnOwpAQCAtOTI3LDcgKzkyNyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1lKiBj
YWxsRnJhCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gd2UgaGF2ZSBhbHJlYWR5IHByb3Zl
biB0aGF0IHRoZSBzY3JpcHQgaXMgbm90IGEgSlNPTgogICAgIC8vIG9iamVjdC4KIAotICAgIFZN
RW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFZN
RW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gQ29tcGls
ZSBzb3VyY2UgdG8gYnl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgogICAgIEpTT2JqZWN0KiBlcnJvciA9
IHByb2dyYW0tPmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKHZtLCBjYWxsRnJhbWUsIHNjb3Bl
KTsKQEAgLTk1MSwxMyArOTUxLDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9n
cmFtKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ2FsbEZyYW1lKiBjYWxsRnJhCiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7
CiAgICAgfQogCi0gICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkKKyAgICBpZiAoc2NvcGUtPnN0cnVjdHVyZSh2bSktPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CiAK
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1l
dGVyIGZvciAndGhpcycuCiAKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAg
ICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSksIHRoaXNPYmosIDEpOworICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNj
b3BlKSwgdGhpc09iaiwgMSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwpAQCAtOTg0LDEwICs5ODQsMTAgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbFQKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICBzY29wZSA9IGNhbGxEYXRhLmpz
LnNjb3BlOwotICAgICAgICBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCk7Ci0gICAgICAg
IGdsb2JhbE9iamVjdCA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgZ2xvYmFs
T2JqZWN0ID0gZnVuY3Rpb24tPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgfQogCiAgICAgVk1FbnRy
eVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7CkBAIC0xMDUxLDEwICsxMDUxLDEw
IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNPYmplY3QqIGNvbnN0cnVjCiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewog
ICAgICAgICBzY29wZSA9IGNvbnN0cnVjdERhdGEuanMuc2NvcGU7Ci0gICAgICAgIGdsb2JhbE9i
amVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc2Nv
cGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGNvbnN0
cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9
IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY29u
c3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgfQogCiAgICAgVk1FbnRyeVNjb3BlIGVu
dHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZQogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgVk1FbnRyeVNjb3BlIGVudHJ5
U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgVk1FbnRyeVNjb3BlIGVudHJ5
U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pKTsKICAgICBpZiAoVU5MSUtFTFkoIXZt
LmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCkBAIC0xMTk2
LDEzICsxMTk2LDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFi
bGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAodmFyaWFibGVPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpKQorICAgIGlmICh2YXJpYWJsZU9iamVjdC0+c3RydWN0dXJlKHZtKS0+aXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAgdmFyaWFibGVPYmplY3QtPmZsYXR0ZW5EaWN0
aW9uYXJ5T2JqZWN0KHZtKTsKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxG
dW5jdGlvbkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7CiAgICAgICAg
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFibGVPYmplY3Qp
OwogICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RN
b2RlKCkpCi0gICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnZhcklu
amVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2YWwsIGZpcmVkIFZh
ckluamVjdGlvbiB3YXRjaHBvaW50Iik7CisgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2xv
YmFsT2JqZWN0KHZtKS0+dmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhl
Y3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT52YXJpYWJsZShpKTsKQEAgLTEy
NjQsNyArMTI2NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFi
bGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgQVNTRVJUKGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgog
CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KSwgc2NvcGUpLCB0aGlzVmFsdWUsIDEpOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJs
b2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKSwgc2NvcGUp
LCB0aGlzVmFsdWUsIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKQEAgLTEyODUsNyArMTI4NSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBDCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCh2bSkpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1
cnNlU29mdCgpKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAgfQogCi0gICAgaWYgKHNjb3Bl
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKKyAgICBpZiAoc2NvcGUt
PnN0cnVjdHVyZSh2bSktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNjb3Bl
LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCkBAIC0xMzE0
LDcgKzEzMTQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQwogICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1l
bnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1n
ZXR0aGlzYmluZGluZwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHBy
b3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxP
YmplY3Qodm0pLCBzY29wZSksIGpzVW5kZWZpbmVkKCksIDEpOwogCiAgICAgLy8gRXhlY3V0ZSB0
aGUgY29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGU3ODhkNjQ4YTRhYmUyNDliNDQ2NWZjNDAy
OGJhNzFkMTFmMTlkZDQuLmQzODFjMWQyZjQxYjliMGQxMzg1NmViNDI1YzRjZDliNjU1YTBiNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTc2
LDcgKzk3Niw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKIAogICAgIGlmIChjYWxsTGlua0lu
Zm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNh
bGxlZSwgY2FsbERhdGEpOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KCp2bSwgY2FsbGVlLCBjYWxsRGF0YSk7CiAgICAgCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZTo6SlMpOwogICAgIApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgc3RhdGljIFNsb3dQ
YXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFs
dWUgY2FsbGVlLAogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgp
ID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0
RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRh
KGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gZ2V0Q29uc3RydWN0RGF0YSgqdm0sIGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CiAgICAgCiAg
ICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6SlMpOwogICAgIApAQCAt
MTgyMiw3ICsxODIyLDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNl
T2ZDdXN0b20oRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGhhc0luc3Rh
bmNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEhhc0luc3RhbmNlKTsKIAotICAgIEFT
U0VSVChoYXNJbnN0YW5jZVZhbHVlICE9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVu
Y3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSB8fCAhY29uc3RydWN0b3ItPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Cisg
ICAgQVNTRVJUKGhhc0luc3RhbmNlVmFsdWUgIT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIHx8ICFjb25zdHJ1Y3Rv
ci0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
KCkpOwogCiAgICAgaWYgKGNvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgaGFz
SW5zdGFuY2VWYWx1ZSkpCiAgICAgICAgIHJldHVybiAxOwpAQCAtMTg3Miw4ICsxODcyLDggQEAg
c3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEIKICAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5n
VHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAotICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGdsb2JhbE9iamVjdC0+
aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpICYmIGdsb2JhbE9i
amVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpOworICAgICAgICAgICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgICAg
ICBza2lwTWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJv
dG90eXBlQ2hhaW5Jc1NhbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFz
a2lwTWFya2luZ091dE9mQm91bmRzICYmICFDb21tb25TbG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3Vt
ZW50SW5kZXhRdWlja2x5KCpvYmplY3QsIGkpKSB7CkBAIC0yNDMyLDcgKzI0MzIsNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0
eVN0b3JhZ2VXaXRoSW5pdGlhbAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgQVNTRVJUKCFvYmplY3Qt
PnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoIW9iamVjdC0+
c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgQnV0dGVyZmx5KiByZXN1
bHQgPSBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIDAsIGluaXRpYWxP
dXRPZkxpbmVDYXBhY2l0eSk7CiAgICAgb2JqZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5KHZtLCBvYmplY3QtPnN0cnVjdHVyZUlEKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0
b3JhZ2UoRXhlY1N0YXRlKgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgQnV0dGVyZmx5KiByZXN1bHQg
PSBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1NpemUpOworICAgIEJ1dHRlcmZseSogcmVz
dWx0ID0gb2JqZWN0LT5hbGxvY2F0ZU1vcmVPdXRPZkxpbmVTdG9yYWdlKHZtLCBvYmplY3QtPnN0
cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1NpemUpOwogICAgIG9iamVjdC0+
bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCBy
ZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOGYxOWZhMzAyZjg2MjAxOGVm
NTRkYjRjYTFkMDQyNjk5ZWJhYzdiMS4uZGQ2YzI1NDc5YTNiZWZiODQxOWYzZGU1YmU3MDRkNDQz
NTFmODI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02MjMsNyAr
NjIzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAg
ICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZXhlYykpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25D
YWNoZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYmFzZS0+c3RydWN0dXJlKCktPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCAoIXdhc0ZvdW5kICYmICFiYXNlLT5zdHJ1Y3R1cmUo
KS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZUZvckFic2VuY2UoKSkpCisgICAgICAgIGlm
ICghYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHx8
ICghd2FzRm91bmQgJiYgIWJhc2UtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVD
YWNoZWFibGVGb3JBYnNlbmNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CiAgICAgICAgIAogICAgICAgICBpZiAod2FzRm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggYzdmODEzOWM5N2FhZDg5N2ZiYzk3YTA5MDVlYWRhOGFkOTliZTBjNC4uNGNiYmIzZDg4YWI4
NGFmZTBhM2YwMWQzZTAyNmY3ZjhjZGViOTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE2
NjIsNyArMTY2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xs
YXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjCiAKICAgICBKU1ZhbHVlIGNh
bGxiYWNrID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGNhbGxiYWNrLCBjYWxsRGF0YSk7
CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGNhbGxiYWNrIikpKSk7CiAgICAgCkBAIC0xOTMyLDcg
KzE5MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9t
UHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdCh2YWx1ZSktPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09i
amVjdCh2YWx1ZSktPmhhc0N1c3RvbVByb3BlcnRpZXMoZXhlYy0+dm0oKSkpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkZTRjMTM0NTJmNGJl
OGNiYTY0N2VjMzdkMWJiNWUzZGMzNDUwYWRjLi5jNzQxNzE0MWUyOTc1NGQ3MmEzOTIwM2M3MGM4
YjExNjA5N2JlYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0g
TExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7CiAKICAgICBBU1NFUlQoY29uc3RydWN0b3IuaXNPYmpl
Y3QoKSk7Ci0gICAgQVNTRVJUKGhhc0luc3RhbmNlVmFsdWUgIT0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIHx8ICFj
b25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKKyAgICBBU1NFUlQoaGFzSW5zdGFuY2VWYWx1ZSAhPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKCkgfHwgIWNvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pLT50
eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7CiAKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzQm9vbGVhbihjb25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+aGFzSW5zdGFuY2Uo
ZXhlYywgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpKTsKICAgICBMTElOVF9SRVRVUk4ocmVzdWx0
KTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0
X2J5X2lkX2RpcmVjdCkKICAgICAgICAgfQogCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNl
bGwtPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkpIHsKICAgICAgICAg
ICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KICAgICAgICAg
ICAgIHBjWzRdLnUucG9pbnRlciA9IG51bGxwdHI7IC8vIG9sZCBzdHJ1Y3R1cmUKQEAgLTY0NSw3
ICs2NDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVj
dCkKIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSogZXhl
YywgVk0mIHZtLCBJbnN0cnVjdGlvbiogcGMsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5U2xv
dCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzMzLDcgKzczMyw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgIH0KIAog
ICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYg
KHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAg
ICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShvcF9nZXRfYnlfaWQpOwpA
QCAtNzYzLDcgKzc2Myw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
aWQpCiAgICAgICAgICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUob3BfZ2V0X2FycmF5X2xlbmd0
aCk7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRP
ckFkZEFycmF5UHJvZmlsZShjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKSk7Ci0gICAgICAg
IGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZSgpKTsKKyAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgIHBjWzRdLnUuYXJyYXlQcm9maWxl
ID0gYXJyYXlQcm9maWxlOwogCiAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNo
ZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgpAQCAtODI3LDcgKzgyNyw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxQdXRC
eUlkRmxhZ3M+KHBjWzhdLnUucHV0QnlJZEZsYWdzICYgUHV0QnlJZFBlcnNpc3RlbnRGbGFnc01h
c2spOwogICAgICAgICAKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJl
KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2
bSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKQogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmcoKQpAQCAtOTE5LDggKzkxOSw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YywKICAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENv
bnRpZ3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50
MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAotICAgICAgICAgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgc2tp
cE1hcmtpbmdPdXRPZkJvdW5kcyA9IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVD
aGFpbklzU2FuZSgpOworICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVj
dC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgICAgICBza2lwTWFya2luZ091dE9mQm91
bmRzID0gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1
Y3R1cmUodm0pKSAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFza2lwTWFya2luZ091dE9mQm91bmRz
ICYmICFDb21tb25TbG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KCpvYmpl
Y3QsIGkpKQpAQCAtMTM2OCw3ICsxMzY4LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywKIAog
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERh
dGEpOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBjYWxsZWUs
IGNhbGxEYXRhKTsKICAgICAKICAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpK
Uyk7CiAgICAgCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBl
IGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLAog
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIAogICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBn
ZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY2FsbGVlLCBjb25zdHJ1Y3RE
YXRhKTsKICAgICAKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpK
Uyk7CiAgICAgCkBAIC0xODM0LDcgKzE4MzQsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbAog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBpZiAoIWV4
ZWMpCi0gICAgICAgIGV4ZWMgPSBwcm90b0ZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgZXhlYyA9IHByb3RvRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKnZtKS0+Z2xvYmFsRXhlYygpOwogICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQu
Y3BwCmluZGV4IGMwNjA5OWY4MmMxZWZlZWZhNTBhZTZiOWRjNzA3N2ZmNjg3MTU3YTQuLmVlODkx
MDFjMzM5Nzg3YWU1YjViN2U4OGQ1OGVlZTQ3MDc1ZTI4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0pCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsK
IAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01hcCog
bWFwID0gSlNNYXA6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0KCktPm1hcFN0cnVjdHVy
ZSgpKTsKKyAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2Jq
ZWN0KHZtKS0+bWFwU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2Vw
dGlvbigpOwogICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwgdGhpcywgbWFwKTsKICAgICBw
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImRl
cGVuZGVuY2llc01hcCIpKSwgbV9kZXBlbmRlbmNpZXNNYXAuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBhYzZm
M2U5NzllMTBiODQzOTlmZGIyNGFmNmRmYTNmNjhhNDg1NjNhLi4yZWY1OTE4ODJhNGRlYTU3MWU1
YmFhZjI3ZjBhOWQ5NzczYmIxNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtODksNyArODksOCBAQCBKU0FycmF5KiBj
b25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRp
b25Qcm9maWxlKiBwcgogCiBzdGF0aWMgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0
aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUg
bmV3VGFyZ2V0KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3Qodm0pOwogCiAgICAgLy8gYSBzaW5nbGUgbnVtZXJpYyBhcmd1bWVudCBkZW5vdGVzIHRoZSBh
cnJheSBzaXplICghKQogICAgIGlmIChhcmdzLnNpemUoKSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGRjMWE5ZGE5N2Yy
N2RlODM3ZGFhZjJkZmQ5MTUzZDExNTg3MTc3NmMuLjNhODIzMzQ5NWZjZWE2ZmMyMzJmNzBiZTQz
NTE2MDkwYmVkYTI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTE5NCw3ICsxOTQsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIHNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIG9iaiwg
dW5zaQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBl
ID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOwogCiAgICAgaWYgKGdsb2JhbE9iamVj
dC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRlT25KU1RocmVhZCgpID09IENsZWFyV2F0
Y2hwb2ludCkgewpAQCAtMjAyLDggKzIwMyw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVjaWVz
V2F0Y2hwb2ludElzVmFsaWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjCiAg
ICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmFycmF5U3BlY2llc1dhdGNocG9pbnQoKS5zdGF0
ZU9uSlNUaHJlYWQoKSAhPSBDbGVhcldhdGNocG9pbnQpOwogICAgIH0KIAotICAgIHJldHVybiAh
dGhpc09iamVjdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpCi0gICAgICAgICYmIGFycmF5UHJvdG90
eXBlID09IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChnbG9iYWxPYmplY3QtPnZtKCkp
CisgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKHZtKQorICAgICAg
ICAmJiBhcnJheVByb3RvdHlwZSA9PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
CiAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRl
T25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIApAQCAtMjM4LDcgKzIzOSw3IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVj
dCo+IHNwZWNpZXNDb25zdHJ1CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGV4
Y2VwdGlvblJlc3VsdCgpKTsKICAgICAgICAgaWYgKGNvbnN0cnVjdG9yLmlzQ29uc3RydWN0b3Io
KSkgewogICAgICAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY29uc3RydWN0b3IpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSAhPSBjb25zdHJ1Y3Rvck9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpCisgICAgICAg
ICAgICBpZiAoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpICE9IGNvbnN0cnVjdG9yT2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7OwogICAgICAgICB9
CiAgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc09iamVjdCgpKSB7CkBAIC00MDYsNyArNDA3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIWZ1bmN0aW9uLmlzQ2VsbCgpKQogICAgICAgICBjdXN0
b21Kb2luQ2FzZSA9IHRydWU7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICBjdXN0b21Kb2luQ2FzZSA9IHRy
dWU7CiAKQEAgLTQ4NSw3ICs0ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
SlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBlbGVtZW50LmdldChleGVjLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b0xvY2FsZVN0cmluZyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjb252ZXJzaW9u
RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodm0sIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICAgICAg
aWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7CiAjaWYgRU5BQkxFKElOVEwpCiAgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGNhbGwoZXhlYywgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGVsZW1lbnQsIGFyZ3VtZW50cyk7CkBAIC0xNDE4LDcgKzE0MTksNyBA
QCB2b2lkIEFycmF5UHJvdG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRh
TG9nKCJJbml0aWFsaXppbmcgQXJyYXkgc3BlY2llcyB3YXRjaHBvaW50cyBmb3IgQXJyYXkucHJv
dG90eXBlOiAiLCBwb2ludGVyRHVtcCh0aGlzKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRl
ckR1bXAodGhpcy0+c3RydWN0dXJlKCkpLCAiXG5hbmQgQXJyYXk6ICIsIHBvaW50ZXJEdW1wKHRo
aXMtPmdsb2JhbE9iamVjdCgpLT5hcnJheUNvbnN0cnVjdG9yKCkpLCAiIHdpdGggc3RydWN0dXJl
OiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3Rvcigp
LT5zdHJ1Y3R1cmUoKSksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJJbml0aWFsaXppbmcgQXJy
YXkgc3BlY2llcyB3YXRjaHBvaW50cyBmb3IgQXJyYXkucHJvdG90eXBlOiAiLCBwb2ludGVyRHVt
cCh0aGlzKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+c3RydWN0dXJl
KHZtKSksICJcbmFuZCBBcnJheTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KHZt
KS0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAo
dGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlDb25zdHJ1Y3RvcigpLT5zdHJ1Y3R1cmUodm0p
KSwgIlxuIik7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgQXJy
YXkucHJvdG90eXBlLmNvbnN0cnVjdG9yIHByb3BlcnR5IHBvaW50cyB0byBBcnJheQogICAgIC8v
IGFuZCB0aGF0IEFycmF5W1N5bWJvbC5zcGVjaWVzXSBpcyB0aGUgcHJpbW9yZGlhbCBHZXR0ZXJT
ZXR0ZXIuCiAKQEAgLTE0MjgsNyArMTQyOSw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OnRyeUlu
aXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHByb3Rv
dHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1
Y3R1cmUodm0sIHRoaXMpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFwcm90b3R5cGVTdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0
aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
dGhpcy0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0
cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5hcnJheUNvbnN0cnVjdG9yKCk7CiAKICAgICBhdXRvIGlu
dmFsaWRhdGVXYXRjaHBvaW50ID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGE3NGE3
NzY1MWFmMTI0ZGY2MzUyNzNmOGMzNzI4ZWQ1YzNjOTM1N2MuLmRhNjRkZWExYzIzNzk1Y2JlYWRj
NTdlZjcxYmIzNzRmOTYwZGE2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzksMTMgKzM5
LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpz
Q2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpBc3luYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24o
ZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5j
KSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQXJnTGlzdCBh
cmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24o
ZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgp
KSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOwogfQogCiBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZTkwYTA2M2M1NTM1M2VkYzllNzY4NzdhNmJhYzIzOGNmMzMzYTIzNi4uOTEyN2FkOWNiMzcy
NWQ3OGFiZWQ2MjA2MzcyMTVmYzdhODUyYTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgY29uc3QgQ2xhc3NJbmZvIEFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNHZW5lcmF0b3JGdW4K
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2VuZXJhdG9yKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8
SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoZXhlYy0+
dm0oKSksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmNHZW5lcmF0b3IpKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBcmdM
aXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5j
dGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5n
bG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVy
YXRvcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhl
YywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jR2Vu
ZXJhdG9yKSk7CiB9CiAKIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVj
dG9yLmNwcAppbmRleCA5Zjk3ZmJlYWQ4ODExZmIzMjAwMjg4NDU0ZGI2ZTc4MTE3OWY2ZjllLi5i
OGZhNjZjNWY2NTMyMDQ3M2M4ODgzMGZlYmJiMTMzNjQ4NDZjYmU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGUKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIGJvb2xlYW4gPSBqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMp
KTsKLSAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpj
cmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwganNDYXN0PElu
dGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPmJvb2xl
YW5PYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0dXJlKiBib29sZWFuU3RydWN0dXJlID0g
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3
VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmds
b2JhbE9iamVjdCh2bSktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQm9vbGVhbk9iamVjdCog
b2JqID0gQm9vbGVhbk9iamVjdDo6Y3JlYXRlKHZtLCBib29sZWFuU3RydWN0dXJlKTsKICAgICBv
YmotPnNldEludGVybmFsVmFsdWUodm0sIGJvb2xlYW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggOGY0NjFkMDAzN2VhNDcw
NmU1YmM3OWUyYTVhNDZjYjc0ODczMjg5OC4uMTg1MjE1NTMwMzQ2ZjVhMjJjY2QxYjBhMGRlMmZh
ODk2YzFkZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVk
QXJndW1lbnRzOjpjcmVhdGVFbXB0eSgKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseTsKLSAgICBpZiAoVU5MSUtFTFkoc3RydWN0dXJlLT5tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMoKSB8fCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpLT5u
ZWVkc1Nsb3dQdXRJbmRleGluZygpKSkgeworICAgIGlmIChVTkxJS0VMWShzdHJ1Y3R1cmUtPm1h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIHx8IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBl
T2JqZWN0KCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSkpIHsKICAgICAgICAgYnV0dGVyZmx5
ID0gY3JlYXRlQXJyYXlTdG9yYWdlQnV0dGVyZmx5KHZtLCBudWxscHRyLCBzdHJ1Y3R1cmUsIGxl
bmd0aCwgdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+
bV9udW1WYWx1ZXNJblZlY3RvciA9IHZlY3Rvckxlbmd0aDsKICAgICB9IGVsc2UgewpAQCAtODAs
NyArODAsNyBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHko
RXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBjYWxsZQogICAgIC8vIE5CLiBTb21lIGNsaWVu
dHMgbWlnaHQgZXhwZWN0IHRoYXQgdGhlIGdsb2JhbCBvYmplY3Qgb2Ygb2YgdGhpcyBvYmplY3Qg
aXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAvLyBvZiB0aGUgY2FsbGVlLiBXZSBkb24ndCBkbyB0
aGlzIGZvciBub3csIGJ1dCBtYXliZSB3ZSBzaG91bGQuCiAgICAgQ2xvbmVkQXJndW1lbnRzKiBy
ZXN1bHQgPSBjcmVhdGVFbXB0eSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOwotICAgIEFTU0VSVCghcmVz
dWx0LT5uZWVkc1Nsb3dQdXRJbmRleGluZygpIHx8IHNob3VsZFVzZVNsb3dQdXQocmVzdWx0LT5z
dHJ1Y3R1cmUodm0pLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVCghcmVzdWx0LT5uZWVk
c1Nsb3dQdXRJbmRleGluZyh2bSkgfHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVy
ZSh2bSktPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIz
LDE1ICsxMjMsMTUgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVdp
dGhJbmxpbmVGcmFtZShFeGVjU3RhdGUqIG15RnJhbWUsIEV4ZWMKICAgICAgICAgYnJlYWs7CiAg
ICAgfSB9CiAKLSAgICBBU1NFUlQobXlGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSA9PSByZXN1bHQtPnN0cnVjdHVyZSgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdC0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93UHV0KHJl
c3VsdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKG15RnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkgPT0gcmVz
dWx0LT5zdHJ1Y3R1cmUobXlGcmFtZS0+dm0oKSkpOworICAgIEFTU0VSVCghcmVzdWx0LT5uZWVk
c1Nsb3dQdXRJbmRleGluZyhteUZyYW1lLT52bSgpKSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3Vs
dC0+c3RydWN0dXJlKG15RnJhbWUtPnZtKCkpLT5pbmRleGluZ1R5cGUoKSkpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVX
aXRoTWFjaGluZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlY1N0YXRlKiB0YXJnZXRGcmFt
ZSwgQXJndW1lbnRzTW9kZSBtb2RlKQogewogICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0g
Y3JlYXRlV2l0aElubGluZUZyYW1lKG15RnJhbWUsIHRhcmdldEZyYW1lLCBudWxscHRyLCBtb2Rl
KTsKLSAgICBBU1NFUlQoIXJlc3VsdC0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRV
c2VTbG93UHV0KHJlc3VsdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNT
RVJUKCFyZXN1bHQtPm5lZWRzU2xvd1B1dEluZGV4aW5nKG15RnJhbWUtPnZtKCkpIHx8IHNob3Vs
ZFVzZVNsb3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUobXlGcmFtZS0+dm0oKSktPmluZGV4aW5nVHlw
ZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIENsb25l
ZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVCeUNvcHlpbmdGcm9tKAogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCBpLCBhcmd1bWVudFN0YXJ0W2ldLmpzVmFsdWUoKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQtPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChy
ZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKCFyZXN1
bHQtPm5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3VsdC0+
c3RydWN0dXJlKHZtKS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0xNzksNyArMTc5LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKIAogICAgICAgICBp
ZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAgICAgICAgICAgICBpZiAo
aXNTdHJpY3RNb2RlKSB7Ci0gICAgICAgICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNP
YmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJT
ZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmpl
Y3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRl
cigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgMCwgdGhpc09iamVjdC0+bV9jYWxsZWUu
Z2V0KCkpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSk7CisgICAgICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheVBy
b3RvVmFsdWVzRnVuY3Rpb24oKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTI1MCwxMSArMjUwLDExIEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjptYXRl
cmlhbGl6ZVNwZWNpYWxzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBib29sIGlzU3RyaWN0TW9kZSA9
IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOwogICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUp
Ci0gICAgICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxl
ZSwgZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVy
R2V0dGVyU2V0dGVyKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKKyAgICAg
ICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCBnbG9i
YWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRl
clNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAgICAgZWxzZQog
ICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgSlNWYWx1ZSht
X2NhbGxlZS5nZXQoKSkpOwogCi0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAKICAgICBtX2NhbGxlZS5j
bGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggY2JhNGY1ZjljMjQ3ZjI0NTE2NDllNGQ2OGEwN2ExODVjZjEzMmU4
ZC4uZWZmZjMyNjM0MWMzN2I5Y2EzNmI2YmJiYzZmZmU1ZWQyYTdkNWY2MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02NjEs
NyArNjYxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdF9vcl9udWxsKQog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQogewogICAgIEJFR0lOKCk7Ci0g
ICAgUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNWYWx1ZSgpKSkp
OworICAgIFJFVFVSTihqc0Jvb2xlYW4oT1BfQygyKS5qc1ZhbHVlKCkuaXNGdW5jdGlvbih2bSkp
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKQEAgLTExNjEsNyAr
MTE2MSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpCiAgICAgewogICAgICAg
ICBKU0Z1bmN0aW9uKiBpdGVyYXRpb25GdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQ
cm90b2NvbEZ1bmN0aW9uKCk7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoaXRlcmF0aW9uRnVuY3Rpb24sIGNh
bGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZt
LCBpdGVyYXRpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICBBU1NFUlQoY2FsbFR5cGUg
IT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKaW5kZXggZTdlMzZhNjYwYmJlNTM1Y2JkZDI2NGYzMWM2ZTVkYWM5N2M5OWY2Mi4uMWVjZTg5
NTkyY2Q2MzExOGRkOWI4OWYxYjk2YmQwMDhkZDBhYjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTE0MywxMiArMTQzLDEzIEBA
IGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICB9CiAgICAgCiAgICAg
aWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCA9PSBzY29wZSB8
fCBnbG9iYWxPYmplY3QtPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+aGFzQmVlbkludmFsaWRh
dGVkKCkpOwogICAgICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKQogICAgICAgICAgICAg
fHwgc2xvdC5iYXNlKCkgIT0gc2NvcGUKICAgICAgICAgICAgIHx8IHNjb3BlICE9IGdsb2JhbE9i
amVjdAotICAgICAgICAgICAgfHwgIXNjb3BlLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgfHwgIXNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSkgewpAQCAtMTU3LDExICsxNTgsMTAgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBzY29wZS0+c3RydWN0dXJlKCktPmRp
ZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAg
ICAgIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0s
IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQodm0s
IGNvZGVCbG9jaywgc2NvcGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgcGNbNV0udS5zdHJ1Y3R1
cmUuc2V0KHZtLCBjb2RlQmxvY2ssIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgcGNb
Nl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICB9CiB9CkBAIC0xOTUsNyAr
MTk1LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwogICAg
ICAgICBBU1NFUlQoc2NvcGUgPT0gZ2xvYmFsT2JqZWN0IHx8IGdsb2JhbE9iamVjdC0+dmFySW5q
ZWN0aW9uV2F0Y2hwb2ludCgpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2Nv
cGUgPT0gZ2xvYmFsT2JqZWN0ICYmIHNjb3BlLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAm
JiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUgPT0gZ2xvYmFsT2JqZWN0ICYmIHNj
b3BlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKICAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc2NvcGUtPnN0cnVjdHVyZSh2bSk7CiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CkBAIC0yMDksNyArMjA5LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2Fj
aGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAKIGlubGluZSBib29sIGNhbkFjY2Vzc0FyZ3VtZW50SW5k
ZXhRdWlja2x5KEpTT2JqZWN0JiBvYmplY3QsIHVpbnQzMl90IGluZGV4KQogewotICAgIHN3aXRj
aCAob2JqZWN0LnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIHN3aXRjaCAo
b2JqZWN0LnR5cGUoKSkgewogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVHlwZTogewogICAgICAg
ICBEaXJlY3RBcmd1bWVudHMqIGRpcmVjdEFyZ3VtZW50cyA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVu
dHMqPigmb2JqZWN0KTsKICAgICAgICAgaWYgKGRpcmVjdEFyZ3VtZW50cy0+aXNNYXBwZWRBcmd1
bWVudEluREZHKGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbnN0cnVjdERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5jcHAKaW5kZXggMDYyZTExY2UzMzdlYzc1MzM1N2NkNTE5OTMwYTM4ODZhOTgw
Y2M1ZC4uZTM1ZGEzNWU0ZDdmOTBiYjFjNWViNmY1NThjN2YxYjk3YTEzNDI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29u
c3RydWN0b3JPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGEKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0g
ICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjb25zdHJ1
Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RU
eXBlID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdERh
dGEpOwogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggY2U5OTYzNDU5MjE0NmYyYjBhNzg1OGJmZTM5ZmU4MDY5YTI2OGYyZi4uZmQ0NDIyMTZm
ZWM3N2NhMmU0YTdiMTg4Y2ZlMGMyNTZmYWFlOTA1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAg
SlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG4KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dERhdGUoZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KCksIGV4ZWMtPm5ld1RhcmdldCgpLCBhcmdzKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3REYXRlKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9u
Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgZXhlYy0+bmV3
VGFyZ2V0KCksIGFyZ3MpKTsKIH0KIAogLy8gRUNNQSAxNS45LjIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggNmYyMzM2ODczNTJjMGJm
ZGY0YTU5NjQxZjkyNmI4MTBkNWFmMWUyMS4uYmZiMDFiMjlkZjNhNmVjYmQyOWI3YWZiYzFhZjUx
ODZmZWRjYjAzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAKQEAgLTExNjUsNyArMTE2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvSVNPVmFsdWUsIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCB0b0lTT1Zh
bHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJ0
b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKaW5kZXggZDMwZjJjZTY3MGQ1NTM3
OWViNmUzMmEyYmJiNmMwMTM5OGU5ZWRmZS4uYjYyOTU1NmUwNTMyNDIwOWVkYzI1YzRlZGI2Yzg2
OWM3ZWQzYmJhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGly
ZWN0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RBcmd1bWVudHMuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBEaXJlY3RBcmd1bWVudHM6
Om92ZXJyaWRlVGhpbmdzKFZNJiB2bSkKICAgICAKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9sZW5ndGgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jYWxsZWUsIG1fY2FsbGVlLmdldCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgZ2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAK
ICAgICB2b2lkKiBiYWNraW5nU3RvcmUgPSB2bS5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKG1fbWFw
cGVkQXJndW1lbnRzLmtpbmQpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbWFwcGVkQXJndW1lbnRz
U2l6ZSgpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CiAgICAgYm9v
bCogb3ZlcnJpZGVzID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KGJhY2tpbmdTdG9yZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggNjAxZjgyMzY1NmExY2NlZjk4ODlh
ODkwNWQ5NmQyZjIxNzc0OWY4NS4uNWY2N2Y4Yzc0Mzc4ODlkMTMxODQ3ZTg3NmY0NmNmMjViYWI0
NDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTYwLDcg
KzE2MCw3IEBAIGNsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Ig
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iamVjdCogb2JqLCBib29sIHVzZUN1cnJlbnRGcmFt
ZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gb2JqLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gb2JqLT5nbG9iYWxPYmpl
Y3Qodm0pOwogICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IgPSBnbG9iYWxP
YmplY3QtPmVycm9yQ29uc3RydWN0b3IoKTsKICAgICBpZiAoIWVycm9yQ29uc3RydWN0b3ItPnN0
YWNrVHJhY2VMaW1pdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmYxMjNm
NWVlYWIzMDg3ZDM0NzBmNDA4ZDFlOTczMGU3ODA2YWM2YS4uYTBlYjM1ODc4MWNiMmUxZGVhOTFh
MGRhOGVlZGRkNzg0MTkxOGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRlcnByZXRlcjo6Y29uc3RydWN0V2l0aEVycm9yQ29uc3RydWN0
b3IoRXhlY1N0YXQKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1
bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2Fz
dDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5l
cnJvclN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0
KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9i
amVjdCh2bSktPmVycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVy
ZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CkBAIC02Niw3ICs2Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50ZXJwcmV0ZXI6OmNvbnN0cnVjdFdp
dGhFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGVycHJldGVyOjpjYWxsRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RydWN0dXJlKiBl
cnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUo
KSktPmdsb2JhbE9iamVjdCgpLT5lcnJvclN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogZXJy
b3JTdHJ1Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoZXhlYy0+dm0oKSktPmVycm9yU3RydWN0dXJlKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1
cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDAzMWZlMzIwYWRhZjlkNTU3ZGRlYTg5OTg4YzA1YWMzNGI4MTljMzguLjYwMzVkY2Ex
YTA0N2ViMDhiMzdmNzAzYmM5N2VjNjRmYTZhYzEyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC00MSwxNCAr
NDEsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpGdW5jdGlvbiwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9u
Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKSwgYXJncywgRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKIH0K
IAogLy8gRUNNQSAxNS4zLjEgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yIENhbGxlZCBhcyBhIEZ1
bmN0aW9uCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganNDYXN0
PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFy
Z3MpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dChleGVjLT52bSgpKSwgYXJncykpOwogfQogCiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCmluZGV4IDgwMGYwZTMzOTNiYjVhZGYxZWZkNjQzNDI2YTQ0ZDZjYjQ3NDA1
NjkuLjQ2OTQ2ZDZiMTJlNWQ1ZGQ1YmQ1ZThiZDUwOTg4ZTMxNWEzZThjOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgY29uc3QgQ2xhc3NJbmZvIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9u
IiwgJkIKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBcmdMaXN0IGFyZ3Mo
ZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVj
LCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgp
KSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywganND
YXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCks
IGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yLCBleGVjLT5uZXdUYXJn
ZXQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhl
YywganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KGV4ZWMtPnZtKCkpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRv
ciwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNB
cmd1bWVudHNJbmxpbmVzLmgKaW5kZXggZTQ5YjYxOWNiZDE3MTlkOGU1ZTFkNWQyNTkzMjNiYmQw
ZDVjZjFlZC4uMWFhNDc1NGNmZmIyZWZkZjc3YjdjY2NiYTVhMzlkNzMxYWUzODZlNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRz
SW5saW5lcy5oCkBAIC01Niw3ICs1Niw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb24oKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3Qodm0pLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
CmluZGV4IDMzMDUyYWNjM2VjNzk4Yjc3YzgzODllZmYxNzY5YTZhMzQwY2M3NjcuLmQzOWU4NmMx
MDFmMDMzMzQxNTNhODVkYjIzYWNmMTJkNjEwNGZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludDo6
ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKQogICAgIGlmICghaW5mZXJyZWRUeXBlLT5p
c0xpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGluZmVycmVkVHlwZS0+cmVtb3Zl
U3RydWN0dXJlKCk7CisgICAgaW5mZXJyZWRUeXBlLT5yZW1vdmVTdHJ1Y3R1cmUoKmluZmVycmVk
VHlwZS0+dm0oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAKaW5kZXggODVmYzJjMGFkNjNjYzQ5Y2I4
YWRiMDllODhlM2JkNTZlYThiMjBiNi4uYWEwNmRiNmEwMjc4MzBmNzI1N2MxZjU0ZjM3ZDFjOWRh
ZmNiNmZkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJy
ZWRUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5
cGUuY3BwCkBAIC00ODQsMTMgKzQ4NCwxMSBAQCBib29sIEluZmVycmVkVHlwZTo6c2V0KGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIERlc2NyaXB0b3IgbmV3RAogICAg
IHJldHVybiBzaG91bGRGaXJlV2F0Y2hwb2ludFNldDsKIH0KIAotdm9pZCBJbmZlcnJlZFR5cGU6
OnJlbW92ZVN0cnVjdHVyZSgpCit2b2lkIEluZmVycmVkVHlwZTo6cmVtb3ZlU3RydWN0dXJlKFZN
JiB2bSkKIHsKICAgICAvLyBGSVhNRTogRmluZCBhbiBlbGVnYW50IGFuZCBjaGVhcCB3YXkgdG8g
dGhyZWFkIGluZm9ybWF0aW9uIGFib3V0IHdoeSB3ZSBnb3QgaGVyZSBpbnRvIHRoZSBmaXJlCiAg
ICAgLy8gZGV0YWlsIGluIHNldCgpLgogICAgIAotICAgIFZNJiB2bSA9ICpIZWFwOjpoZWFwKHRo
aXMpLT52bSgpOwotCiAgICAgRGVzY3JpcHRvciBvbGREZXNjcmlwdG9yOwogICAgIERlc2NyaXB0
b3IgbmV3RGVzY3JpcHRvcjsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmZlcnJlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVHlwZS5oCmluZGV4IDRjYzQ4N2U2Y2RmYzA5YjY4MjViNjE2MjQxNjkxZDIxMDg4
OTU0NWIuLjFmZjAyMzM4ZDdhYjIzYzM5MTAyYTE4MWJmMTEwOWRiOWEwMThmZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5oCkBAIC0yNDcsNyArMjQ3
LDcgQEAgY2xhc3MgSW5mZXJyZWRUeXBlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8g
d2F0Y2hwb2ludCBzZXQuCiAgICAgYm9vbCBzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Vk0mLCBEZXNjcmlwdG9yKTsKICAgICAKLSAgICB2b2lkIHJlbW92ZVN0cnVjdHVyZSgpOworICAg
IHZvaWQgcmVtb3ZlU3RydWN0dXJlKFZNJik7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIEluZmVy
cmVkU3RydWN0dXJlOwogICAgIGZyaWVuZCBjbGFzcyBJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9p
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5
cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVJ
bmxpbmVzLmgKaW5kZXggNDA4MTJiM2M0OWIzOTRmYmIyNzk0YmVjOTU3ZWU5MmJmNWFmMjk2Yy4u
ZjYwY2MzNmZkMWU4YTYwMjYyMGM1MDRjZGU4MjNkMDE3ZTg0YmZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZUlubGluZXMuaApAQCAtMzcs
NyArMzcsNyBAQCBpbmxpbmUgdm9pZCBJbmZlcnJlZFR5cGU6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJiB2bSkKICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fc3RydWN0dXJlLT5zdHJ1
Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgcmVt
b3ZlU3RydWN0dXJlKCk7CisgICAgICAgIHJlbW92ZVN0cnVjdHVyZSh2bSk7CiAgICAgfQogICAg
IAogICAgIHZtLmluZmVycmVkVHlwZXNXaXRoRmluYWxpemVycy5yZW1vdmUodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAppbmRleCBmNzM1
MDg2MmZiZjdiZWJlY2FjMzhlMjI5NDQ5OWJkYmFiZGY3MTI0Li4yOGViOWU2YmUxMzZlYmY4ZmE1
YjI4NjViZTUyY2IyODkyOTM2ZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEludGxDb2xsYXRv
cjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgbG9jYWxlcywg
SlNWYWx1ZQogICAgICAgICBvcHQuYWRkKEFTQ0lJTGl0ZXJhbCgia2YiKSwgY2FzZUZpcnN0KTsK
ICAgICB9CiAKLSAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGUuanNDYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCktPmludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRv
JiBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+
aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwogICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2
ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBy
ZWxldmFudENvbGxhdG9yRXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudENv
bGxhdG9yRXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEpOwogCiAgICAgbV9sb2NhbGUgPSByZXN1
bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDg2
YWUzZjA5MDhmY2E4ZWFjMDg2MmU0YzcxYjliYTA0MGE5M2UzMWQuLmNjYjU2NTA5ZGJkZTNlOTQx
OWU1YmI5OGJjYzRlZWU2YmE4OThkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE0MCw3ICsx
NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjUwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExv
Y2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywg
b3B0aW9ucykuCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0Nh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqc3RhdGUs
IGdsb2JhbE9iamVjdC0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpLCByZXF1ZXN0ZWRM
b2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGJmNDc1
MjlkOGE4YjdjYTNiZTQ5ZDAzYmIyMjJhZTU2YzJkY2VlNjMuLjk5NjcyMmRiMmI2NzY0MGUzZTMy
MGM5MzE0YTc0ODg2OGExYWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVy
Q29tcGFyZShFeGVjU3RhdGUqIHN0YXRlCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBh
cmUgPSBjb2xsYXRvci0+Ym91bmRDb21wYXJlKCk7CiAgICAgLy8gMi4gSWYgY29sbGF0b3IuW1ti
b3VuZENvbXBhcmVdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYgKCFib3VuZENvbXBhcmUpIHsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbGxhdG9yLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbGxhdG9yLT5n
bG9iYWxPYmplY3Qodm0pOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBm
dW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8vIGIuIFRoZSB2
YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMi4KICAgICAgICAgSlNGdW5jdGlvbiog
dGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDIsIEFT
Q0lJTGl0ZXJhbCgiY29tcGFyZSIpLCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5z
aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKaW5kZXggMTU3M2M3Mjk1ZjE0OTc5NmEwNWFkNzk3ODJkMDcyNjMzNDcyMzNl
NC4uM2FhNzc5ZmFhZmM4NTdlMzllNDFlM2EzN2Q4ZGVhNjdiOWM4ZmQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBA
IC00NTQsNyArNDU0LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKIAogICAgIC8vIDExLiBM
ZXQgbG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUgb2YgJURhdGVUaW1lRm9ybWF0JS5bW2xvY2FsZURh
dGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0
JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVG
b3JtYXQlLltbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0sIGxvY2FsZURhdGEpLgotICAgIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZXhlYy5qc0NhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOworICAgIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZXhlYy5qc0NhbGxlZSgpLT5n
bG9iYWxPYmplY3Qodm0pLT5pbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMs
IGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50bERURklu
dGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50bERURklu
dGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsRFRGSW50ZXJuYWw6OmxvY2FsZURh
dGEpOwogCiAgICAgLy8gMTMuIFNldCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2
YWx1ZSBvZiByLltbbG9jYWxlXV0uCkBAIC0xMDAxLDcgKzEwMDEsNyBAQCBKU1ZhbHVlIEludGxE
YXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUmIGV4ZWMsIGRvdWJsZSB2YWx1
ZSkKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZh
bHVlIikpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMuanNDYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBKU0FycmF5KiBwYXJ0cyA9
IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAg
IGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoJmV4ZWMs
IHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCA1MzUxZTQzZGNkYWRk
ZTJiNWNmYWM1ZDI5ZjdjNjYyNzQwNWNmMmMxLi4zMmNlYzdlNjIwYjQwZGY4YzliOWQ1OTUzNTE1
ZjhiYmM5YmM5ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0xMzQsNyAr
MTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YKICAgICAvLyAxMi4yLjIgSW50bC5EYXRl
VGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEt
NDAyIDIuMCkKIAogICAgIC8vIDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVEYXRlVGltZUZv
cm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9iYWxPYmpl
Y3QtPmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKIAogICAgIC8vIDIuIExl
dCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA5Yjc5NzFhZGQxOThkZDBiZmIyM2E2YmNjMDdm
MDNjYzk2ZGQ0OTMxLi40ZjE4OTY2OWFiYWJkNmEwN2VhZTc1NWE5OGFlZGNhODgwYTU1YTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dChFeGVjU3RhdGUqCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91
bmRGb3JtYXQoKTsKICAgICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNs
b3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLAogICAgIGlmICgh
Ym91bmRGb3JtYXQpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGR0
Zi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBkdGYtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1
aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDEyLjMuNC4KICAgICAgICAgLy8g
Yi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLiAoTm90ZTogRuKAmXMg
bGVuZ3RoIHByb3BlcnR5IHdhcyAwIGluIEVDTUEtNDAyIDEuMCkKICAgICAgICAgSlNGdW5jdGlv
biogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
IEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IiksIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRl
VGltZSwgTm9JbnRyaW5zaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCBhMTQ2NjM0NmIyOWFhMTYzZGU5NWRjNTg5YjE0
NmQ0YzA0NzlmYmRkLi5iNzYzMjhiNTVmYTllZWIwZDFkMWUwYTNlNTA5NjdiYjZmNTA0NzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6
ZU51bWJlckZvcm1hdChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGxvY2FsZXMsCiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBvcHQuYWRkKEFTQ0lJTGl0ZXJh
bCgibG9jYWxlTWF0Y2hlciIpLCBtYXRjaGVyKTsKIAotICAgIGF1dG8mIGF2YWlsYWJsZUxvY2Fs
ZXMgPSBzdGF0ZS5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bE51bWJlckZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGUuanND
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2Fs
ZXMoKTsKICAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoc3RhdGUsIGF2YWlsYWJsZUxv
Y2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVsZXZhbnROdW1iZXJFeHRlbnNpb25LZXlz
LCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50TnVtYmVyRXh0ZW5zaW9uS2V5cyksIEludGxORklu
dGVybmFsOjpsb2NhbGVEYXRhKTsKIAogICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldChBU0NJSUxp
dGVyYWwoImxvY2FsZSIpKTsKQEAgLTUzOCw3ICs1MzgsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdFRvUGFydHMoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFsdWUpCiAgICAg
ICAgIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChmaWVsZEl0ci5nZXQoKSwgJmJlZ2lu
SW5kZXgsICZlbmRJbmRleCk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAg
ICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29u
dGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoJmV4ZWMsIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDI3NDcwM2MyNWI4NTg0ZjkxMTgxNzE3NjNmZDVmNjhlZjYwNmVjY2EuLmJmNzYyNDkzMjk2MmYw
MWNmOTk1NWYxNzc4YmNjYTdhYWI3OGVlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApA
QCAtMTM0LDcgKzEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFCiAgICAgLy8gMTEuMi4y
IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNd
KSAoRUNNQS00MDIgMi4wKQogCiAgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJU51
bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBnbG9i
YWxPYmplY3QtPmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7CiAKICAgICAvLyAy
LiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBjOWUxN2RjOWFlOWU2OGE3MDIzYWVlNzQ4MjRh
MjQwN2EzNjdkMmUyLi5mOTU2OGFmMWVlN2NiODYyMDYzYTEzOWRkNzU5NmM2N2E3ZWU4OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVj
U3RhdGUqIHN0CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZv
cm1hdCgpOwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAg
ICAgaWYgKCFib3VuZEZvcm1hdCkgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbmYtPmdsb2JhbE9iamVjdCgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbmYtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEg
bmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAg
ICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAgICAg
ICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNG
b3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKaW5kZXggNjhlMGNhOGFlMTc1OWU2YzEzMDI0ZjcwZjg3MmJiZDgy
MDhiNjhhZS4uZmI3OGU0NjFiMzE1MWNkZThhYzM4N2U1YzkwMmJhYzExZjRlZTkyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTQ5Nyw3ICs0
OTcsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgbG9jYWxlcykKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICBWZWN0b3I8U3RyaW5nPiBzZWVuOwogCiAgICAgaWYgKGxvY2FsZXMuaXNV
bmRlZmluZWQoKSkKQEAgLTU4OCw3ICs1ODgsOCBAQCBTdHJpbmcgZGVmYXVsdExvY2FsZShFeGVj
U3RhdGUmIHN0YXRlKQogICAgIC8vIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0cyB3aWxsIGhhdmUg
dGhlaXIgb3duIGlkZWFzIG9mIGhvdyB0byBkZXRlcm1pbmUgdGhlIGxhbmd1YWdlLiBJdCBtYXkK
ICAgICAvLyBiZSBkZXRlcm1pbmVkIGJ5IFdlYkNvcmUtc3BlY2lmaWMgbG9naWMgbGlrZSBzb21l
IFdLIHNldHRpbmdzLiBVc3VhbGx5IHRoaXMgd2lsbCByZXR1cm4gdGhlCiAgICAgLy8gc2FtZSB0
aGluZyBhcyB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKClbMF0uCi0gICAgaWYgKGF1dG8gZGVmYXVs
dExhbmd1YWdlID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKCktPmRlZmF1bHRMYW5ndWFnZSkgeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgaWYgKGF1dG8gZGVmYXVsdExhbmd1YWdlID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KHZtKS0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+ZGVmYXVsdExhbmd1YWdl
KSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKICAgICAgICAg
aWYgKCFsb2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZUxh
bmd1YWdlVGFnKGxvY2FsZSk7CkBAIC03OTIsNyArNzkzLDcgQEAgc3RhdGljIEpTQXJyYXkqIGxv
b2t1cFN1cHBvcnRlZExvY2FsZXMoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgSGFzaFNldDxTdHJp
bmc+JgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIHNp
emVfdCBsZW4gPSByZXF1ZXN0ZWRMb2NhbGVzLnNpemUoKTsKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVj
dCh2bSk7CiAgICAgSlNBcnJheSogc3Vic2V0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihB
cnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewogICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CkBAIC05MDcsNyArOTA4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2Fs
ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGxlbmd0aCA9IGxvY2FsZUxpc3Quc2l6ZSgpOwogCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmpz
Q2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogbG9jYWxlQXJyYXkgPSBK
U0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBsZW5ndGgpOwog
ICAgIGlmICghbG9jYWxlQXJyYXkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0
YXRlLCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzLmNwcAppbmRleCA0ZGVkMTNiNDJmMzVlMzJjZDg5NmU2ZThjMTNlMWMxYjEzMTNl
YzNkLi5hZGYxNTUwNDJhODYzZjU3NzBiMTllNjkwNmE5OTg3YjZhZDNmMDU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTEy
NSw3ICsxMjUsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbGVzLCBKUwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbG9jYWxlT3B0LmFkZCh2bS5wcm9wZXJ0eU5hbWVz
LT5sb2NhbGVNYXRjaGVyLnN0cmluZygpLCBsb2NhbGVNYXRjaGVyKTsKIAotICAgIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZXhlYy5qc0NhbGxlZSgpLT5nbG9iYWxP
YmplY3QoKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBjb25zdCBI
YXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KHZtKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKICAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxh
YmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCBudWxscHRyLCAwLCBJbnRs
UFJJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0u
cHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0
eSgpKSB7CkBAIC0yMTUsNyArMjE1LDcgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVz
b2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSYgZXhlYykKICAgICB9CiAKICNpZiBKU0NfSUNVX0hBU19Q
TFVSQUxSVUxFU19LRVlXT1JEUwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNBcnJh
eSogY2F0ZWdvcmllcyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGln
dW91cyksIDApOwogICAgIGlmICghY2F0ZWdvcmllcykKICAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcigmZXhlYywgc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCmluZGV4
IDllNTBhOWJhZGNjNzFjMDNlYzBkMGVhMDE3YjdkYjM0NDNiNmJhZDQuLjdhZjY5YzVlYTdkMzVi
ZTVmNTIyOGFlNWNjNjNjZmMxZDViYWIwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKQEAg
LTExOCw3ICsxMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxS
dWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeAogCiAgICAgLy8gMTMuMy4y
IEludGwuUGx1cmFsUnVsZXMuc3VwcG9ydGVkTG9jYWxlc09mIChsb2NhbGVzIFssIG9wdGlvbnMg
XSkKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJh
bHJ1bGVzLnN1cHBvcnRlZGxvY2FsZXNvZgotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdGF0ZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3Qodm0pOwog
ICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZ2xvYmFsT2JqZWN0
LT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZhNzczYzM2NzhmNzdlMDVmMjJmNGI1NzE4
OWQyNDVjY2JiZmYyNi4uNjkxMGYwMWJkYWUwODgxZjg5ODYyZjE0NmVjZTUzZGJlODNkMzM3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJh
dGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgaXRlcmF0b3JOZXh0KEV4ZWNTdGF0
ZSogZXhlYywgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCwgSlNWYWx1ZSBhCiAgICAg
SlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRpb25SZWNvcmQubmV4dE1ldGhvZDsKIAogICAg
IENhbGxEYXRhIG5leHRGdW5jdGlvbkNhbGxEYXRhOwotICAgIENhbGxUeXBlIG5leHRGdW5jdGlv
bkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rpb25DYWxsRGF0
YSk7CisgICAgQ2FsbFR5cGUgbmV4dEZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
bmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKG5leHRGdW5jdGlv
bkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBpdGVyYXRvckNsb3Nl
KEV4ZWNTdGF0ZSogZXhlYywgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCkKICAgICB9
CiAKICAgICBDYWxsRGF0YSByZXR1cm5GdW5jdGlvbkNhbGxEYXRhOwotICAgIENhbGxUeXBlIHJl
dHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZXR1cm5GdW5jdGlvbiwgcmV0dXJu
RnVuY3Rpb25DYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgcmV0dXJuRnVuY3Rpb25DYWxsVHlwZSA9
IGdldENhbGxEYXRhKHZtLCByZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7
CiAgICAgaWYgKHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRo
cm93U2NvcGUsIGV4Y2VwdGlvbik7CkBAIC0xOTMsNyArMTkzLDcgQEAgSXRlcmF0aW9uUmVjb3Jk
IGl0ZXJhdG9yRm9ySXRlcmFibGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmplY3QqIG9iamVjdCwg
SlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IENhbGxEYXRhIGl0ZXJhdG9yTWV0aG9kQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgaXRlcmF0b3JN
ZXRob2RDYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9yTWV0aG9kLCBpdGVyYXRvck1ldGhv
ZENhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBpdGVyYXRvck1ldGhvZENhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEodm0sIGl0ZXJhdG9yTWV0aG9kLCBpdGVyYXRvck1ldGhvZENhbGxEYXRhKTsKICAgICBp
ZiAoaXRlcmF0b3JNZXRob2RDYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTIy
Myw3ICsyMjMsNyBAQCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU1ZhbHVlIGl0ZXJhYmxlKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgCiAgICAgQ2FsbERhdGEgaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJh
dG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgaXRl
cmF0b3JGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGl0ZXJhdG9yRnVuY3Rpb24s
IGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxs
VHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
c2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAppbmRleCBhNTJjZWNhMTNlYTJlZmQ4Yzc2YzViOGQ2N2IzNDJiM2VlZmYw
MjQzLi4xYWQ2ZWIzZWRmMjE4MmQyOWIwNzRhMzMzYTA2ZjdjZjhjZTIxMmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtODYxLDcgKzg2MSw3IEBAIGJv
b2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBz
dGFydEluZGV4LCB1bnNpZ25lZCBjCiAgICAgICAgIC8vIEFkanVzdCB0aGUgQnV0dGVyZmx5IGFu
ZCB0aGUgaW5kZXggYmlhcy4gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgaGVyZSBiZWNhdXNlIHdl
J3JlIGNoYW5naW5nCiAgICAgICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgQnV0dGVyZmx5LCB3aGlj
aCBuZWVkcyB0byBwb2ludCBhdCB0aGUgZmlyc3QgaW5kZXhlZCBwcm9wZXJ0eSBpbiB0aGUgdXNl
ZAogICAgICAgICAvLyBwb3J0aW9uIG9mIHRoZSB2ZWN0b3IuCi0gICAgICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCktPnNoaWZ0KHN0cnVjdHVyZSgpLCBjb3VudCk7
CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCktPnNoaWZ0
KHN0cnVjdHVyZSh2bSksIGNvdW50KTsKICAgICAgICAgc3RvcmFnZSA9IGJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCk7CiAgICAgICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzICs9IGNvdW50OwogCkBA
IC0xMDMxLDcgKzEwMzEsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0
b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LAogICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CiAgICAgCiAgICAgaWYgKG1vdmVGcm9udCAmJiBz
dG9yYWdlLT5tX2luZGV4QmlhcyA+PSBjb3VudCkgewotICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1
dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT51bnNoaWZ0KHN0cnVjdHVyZSgpLCBjb3Vu
dCk7CisgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5
KCktPnVuc2hpZnQoc3RydWN0dXJlKHZtKSwgY291bnQpOwogICAgICAgICBzdG9yYWdlID0gbmV3
QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgc3RvcmFnZS0+bV9pbmRleEJpYXMg
LT0gY291bnQ7CiAgICAgICAgIHN0b3JhZ2UtPnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgg
KyBjb3VudCk7CkBAIC0xMzM1LDcgKzEzMzUsOCBAQCBib29sIEpTQXJyYXk6OmlzSXRlcmF0b3JQ
cm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNB
cnJheVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0
cnVjdHVyZSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgLy8gVGhpcyBpcyB0aGUg
ZmFzdCBjYXNlLiBNYW55IGFycmF5cyB3aWxsIGJlIGFuIG9yaWdpbmFsIGFycmF5LgogICAgIGlm
IChnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNDMsNyArMTM0NCw2IEBAIGJvb2wgSlNBcnJheTo6aXNJ
dGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKQogICAgIGlmIChzdHJ1Y3R1cmUt
Pm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGdldFByb3RvdHlwZURp
cmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IGJmMmU5MTdlZmExMDljZmZmNGZi
OWQzZjhhNWU2NjU0ZjhjYTg4YjcuLmZmNDViM2VlZTg2NjM1N2E2YmE4NmM1OTJmMmVmNmZiMzk1
MzI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEpTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0FycmF5QnVmZmVy
UHJvdG90eXBlKiBwcgogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAKICAgICBpZiAobV9zaGFyaW5nTW9kZSA9PSBBcnJheUJ1ZmZlclNo
YXJpbmdNb2RlOjpEZWZhdWx0KSB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzVmlldywgYXJyYXlC
dWZmZXJGdW5jSXNWaWV3LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMSk7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzVmlld1ByaXZhdGVOYW1l
KCksIGFycmF5QnVmZmVyRnVuY0lzVmlldywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIH0KQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPQog
ICAgICAgICBqc0Nhc3Q8SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKj4oZXhlYy0+anNDYWxsZWUo
KSk7CiAKLSAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoY29uc3RydWN0
b3ItPnNoYXJpbmdNb2RlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+
bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0
cnVjdHVyZShjb25zdHJ1Y3Rvci0+c2hhcmluZ01vZGUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3Bw
CmluZGV4IGE2ZmZhN2E5NTA2OGFkM2M1YzYzNzNlZmI4YWVlZjA1Zjg0ZDAxNzguLjYwM2IyMDhi
YTNlZWQ1NTgzMzMzODU1ZDU4Y2ZjZDNjZmVmYTNjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVm
ZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghbmV3QnVmZmVyKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSkpOwogICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKICAgICAKICAg
ICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShuZXdCdWZmZXIpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4MmU2ODg1MDQyMzNj
OGMxNWMzZWE3ZDFlNmUxMjUwYjYyMTdmYWRiLi43MzBlZWZkZDI0MGQ0NmI5MTdhYWJkYTg5YzVm
MmJjMDM5Yzk5OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xOTksMTIgKzE5OSwxNCBAQCB2b2lkIEpTQXJyYXlC
dWZmZXJWaWV3OjpmaW5hbGl6ZShKU0NlbGwqIGNlbGwpCiAKIEpTQXJyYXlCdWZmZXIqIEpTQXJy
YXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEpTQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gZXhlYy0+dm0oKS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT50b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCgpLCB1bnNoYXJlZEJ1ZmZlcigpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIHJldHVybiB2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT50b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCh2bSksIHVuc2hhcmVkQnVmZmVyKCkpOwogfQogCiBKU0FycmF5QnVmZmVyKiBKU0FycmF5
QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRKU0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWMtPnZtKCkubV90eXBlZEFycmF5Q29udHJvbGxlci0+dG9KUyhleGVjLCBn
bG9iYWxPYmplY3QoKSwgcG9zc2libHlTaGFyZWRCdWZmZXIoKSk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICByZXR1cm4gdm0ubV90eXBlZEFycmF5Q29udHJvbGxlci0+dG9KUyhleGVj
LCBnbG9iYWxPYmplY3Qodm0pLCBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpKTsKIH0KIAogdm9pZCBK
U0FycmF5QnVmZmVyVmlldzo6bmV1dGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCmluZGV4IDAxYjcxNDkwMWM5MTM2NzNlYmY3YjE1
Y2FjY2Y2YjYzOGI1NzUxYTguLmM4OWQwMzJmMWE5ZTRiYWE1Zjc3ZjYwNDE0N2I4YWEzNDExM2M5
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0
aW9uLmNwcApAQCAtNDcsMTQgKzQ3LDE0IEBAIEpTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlCiBKU0Fz
eW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5bmNGdW5jdGlv
bih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKGFzeW5jRnVu
Y3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgQVNTRVJUKGFzeW5jRnVu
Y3Rpb24tPnN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVjdCgpKTsKICAgICBhc3luY0Z1bmN0aW9u
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247CiB9CiAKIEpT
QXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQogewotICAgIEpTQXN5bmNGdW5j
dGlvbiogYXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgSlNB
c3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkp
OwogICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBh
c3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOwogICAgIHJldHVy
biBhc3luY0Z1bmN0aW9uOwogfQpAQCAtNjgsNyArNjgsNyBAQCBKU0FzeW5jRnVuY3Rpb24qIEpT
QXN5bmNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLAogCiBKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUltcGwodm0s
IGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dl
bmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKaW5kZXggYjlhMzdhYjk4YjRiY2FhYTg5Y2M2YzU4YzUy
ODNiNDI3YzFlOTQ5MS4uODdmOTU4Mzk5YjNjZDQwZjFlMTU2ZGI1MDgzYzRjNGM0YjEzZGM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC00NywxNCArNDcsMTQgQEAgSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uOjpKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGUKIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiogSlNBc3luY0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uKiBhc3luY0dlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKGFzeW5j
R2VuZXJhdG9yLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIEFTU0VSVChhc3lu
Y0dlbmVyYXRvci0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGFzeW5jR2Vu
ZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGFzeW5jR2VuZXJhdG9yOwog
fQogCiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKLSAgICBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIGFzeW5jR2VuZXJhdG9yID0g
Y3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+
YXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24qIGFzeW5jR2VuZXJhdG9yID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUsIHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkpOwogICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRl
KHZtLCBhc3luY0dlbmVyYXRvciwgIkFsbG9jYXRpbmcgYW4gYXN5bmMgZ2VuZXJhdG9yIik7CiAg
ICAgcmV0dXJuIGFzeW5jR2VuZXJhdG9yOwogfQpAQCAtNjgsNyArNjgsNyBAQCBKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb24qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdQogCiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24qIEpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCktPmFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgcmV0
dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KHZtKS0+YXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXgg
ZWE2ZTBhYjZhZWZmMDBhYzA3NDNhYzYxZTQxMDY4OTVlMTQ5MjlkYi4uMmNiZGI5MzVjNTJlNDVk
NTYyMmU2ZTc2M2ZhNTEyN2IzYTlhZWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihDb2RlRm9yQ2FsbCwg
TXVzdENoZWNrQXJpdHkpOwogICAgIH0KICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRhcmdldEZ1bmN0aW9uLCBjYWxsRGF0YSk7Cisg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShleGVjLT52bSgpLCB0YXJnZXRGdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSk7CiB9
CkBAIC03Nyw3ICs3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5j
dGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9u
ID0gYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRhcmdldEZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdGFyZ2V0
RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5v
bmUpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYm91bmRGdW5jdGlv
bi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKQEAgLTk0LDcgKzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CiAgICAgQ29uc3RydWN0RGF0
YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENv
bnN0cnVjdERhdGEodGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOworICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoZXhlYy0+dm0oKSwgdGFyZ2V0
RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwogICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENv
bnN0cnVjdFR5cGU6Ok5vbmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdz
KSk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTT2JqZWN0KiB0
YXJnZXRGdW5jdGlvbiA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7CiAgICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlw
ZSA9IGdldENvbnN0cnVjdERhdGEodGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOworICAg
IENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIHRhcmdl
dEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBD
b25zdHJ1Y3RUeXBlOjpOb25lKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgU3Ry
dWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iagogICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIHN0cnVjdHVyZSBt
YXAgd2FzIGtleWVkIGdsb2JhbCBvYmplY3RzIGluIGFkZGl0aW9uIHRvIHRoZSBvdGhlciB0aGlu
Z3MuIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdAogICAgIC8vIGN1cnJlbnRseS4gV2hvZXZlciB3
b3JrcyBvbiBjYWNoaW5nIHN0cnVjdHVyZSBjaGFuZ2VzIGZvciBwcm90b3R5cGUgdHJhbnNpc3Rp
b25zIHNob3VsZCBjb25zaWRlciB0aGlzIHByb2JsZW0gYXMgd2VsbC4KICAgICAvLyBTZWU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MzgKLSAgICBpZiAocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgcHJvdG90eXBlLmdldE9iamVjdCgpLT5nbG9iYWxPYmplY3Qo
KSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgcHJv
dG90eXBlLmdldE9iamVjdCgpLT5nbG9iYWxPYmplY3Qodm0pID09IGdsb2JhbE9iamVjdCkgewog
ICAgICAgICByZXN1bHQgPSB2bS5zdHJ1Y3R1cmVDYWNoZS5lbXB0eVN0cnVjdHVyZUZvclByb3Rv
dHlwZUZyb21CYXNlU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLmdldE9iamVjdCgp
LCByZXN1bHQpOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXN1
bHQtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdCk7CiAgICAgfSBlbHNlCkBAIC0xNzYs
NyArMTc2LDcgQEAgSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QKIHsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRh
OwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0
YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5jdGlvbiwgY29u
c3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5Db25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENv
bnN0cnVjdFR5cGU6Ok5vbmU7CiAgICAgCiAgICAgYm9vbCBzbG93Q2FzZSA9IGJvdW5kQXJncyB8
fCAhZ2V0SlNGdW5jdGlvbih0YXJnZXRGdW5jdGlvbik7CkBAIC0yMTEsNyArMjExLDcgQEAgSlNB
cnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCh2bSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICByZXN1bHQtPnB1
c2goZXhlYywgbV9ib3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDllZGM2MDE5ZGYzZGYxZjdm
NjI3ZjJlZTY0OGMzM2U1MDM4MTc5YzAuLjhhMTgxZjc0ZDA2M2Q5ZGRmNjJhODBkMjZlN2QxOWUz
NzZlMzEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgIT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIGZvciAo
OyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNF
eGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CisgICAgICAgIGZv
ciAoOyAhb2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVy
dGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAg
ICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIApAQCAtMTc1LDcgKzE3NSw3
IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAKICAgICBmb3IgKDsgOyBvYmogPSBhc09iamVj
dChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5z
dHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFs
KFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNDc4ZjQ3ODExMmQxZmZiNGQ3ZTA5MzQ5ODFh
MGI4OGI1YWY1YmM5Ny4uMjM0NzM2ZTQ3NjEyMjc1YzI3NjVkY2MyZWRhNTdmNzdmMGU3ZTFiNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAt
MjU0LDkgKzI1NCw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBj
b25zdAogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1cmUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8o
KSA9PSB0aGlzLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkpOwotICAgIEFTU0VSVCghdGhpcy0+
c3RydWN0dXJlKCkKLSAgICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRj
aHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFz
c0luZm8oKSA9PSB0aGlzLT5zdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSk7CisgICAgQVNTRVJU
KCF0aGlzLT5zdHJ1Y3R1cmUodm0pCisgICAgICAgIHx8IHRoaXMtPnN0cnVjdHVyZSh2bSktPnRy
YW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKICAgICAgICAgfHwgSGVh
cDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkpID09
IHN0cnVjdHVyZSk7CiAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICBt
X2ZsYWdzID0gVHlwZUluZm86Om1lcmdlSW5saW5lVHlwZUZsYWdzKHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSwgbV9mbGFncyk7CkBAIC0yNzYsOCArMjc2LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAKIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJs
ZSgpIGNvbnN0CiB7Ci0gICAgVk0mIHZtID0gKkhlYXA6OmhlYXAodGhpcyktPnZtKCk7Ci0gICAg
cmV0dXJuIG1ldGhvZFRhYmxlKHZtKTsKKyAgICByZXR1cm4gbWV0aG9kVGFibGUoKnZtKCkpOwog
fQogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoVk0mIHZt
KSBjb25zdApAQCAtMzMxLDcgKzMzMCw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFu
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpOwot
ICAgIHJldHVybiAhc3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4gIXN0cnVjdHVyZShleGVjLT52bSgpKS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogfQog
CiBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBhMGI3ZjJjYTg3ODU5YmIy
ZDUwMjRlZDdlODViNzhmYjU5MDJhNmRmLi4xZTc3NjMyYjUxMWYyZTI2ZTJjNGQyYWY4OTJkOWE2
OTY2YjRjNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7
CiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBzdHJ1Y3R1cmUpOwotICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgp
LT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIEFTU0VSVChmdW5jdGlvbi0+c3RydWN0dXJlKHZt
KS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAppbmRleCBjODlhYmMw
OWRkZDRlNjM4YTg5ODc4OGM5NmNjOWU4ZGE4MDQ3YzJkLi4wNWIzNjA0Y2ZmMDJmNzY0MzNhM2Q0
YmVjN2VjOGRmN2VkZDdhYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtNDcsMTQgKzQ3LDE0IEBAIEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsCiBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSlNHZW5lcmF0b3JG
dW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9u
LT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5j
dGlvbi0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGdlbmVyYXRvckZ1bmN0
aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOwog
fQogCiBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0m
IHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQogewot
ICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIHJldHVybiBjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiB9CiAKIEpTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNjYsNyArNjYsNyBA
QCBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZQogCiBKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVy
YXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkK
IHsKLSAgICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5n
bG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgcmV0dXJu
IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KHZt
KS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXgg
NGY0NDkyYzVmMzU4MmU1ZmJiZmMyNzFjNWNkY2ZkNWIzNTQwYjBiZC4uZDA0YWNlZTc3M2MwMmNl
Yjg4OGFjN2UzODRjMzk0YjgwNDBjYWIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNjcsNyArMTY3LDcgQEAgaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSog
ZXhlYywgU3QKICAgICAgICAgICAgIC8vIGl0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSB0aGF0
IHdlIGRvIG5vdCB1c2UgdGhlIGl0ZXJhdG9yLgogCiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9y
RnVuYy5pc1VuZGVmaW5lZCgpCi0gICAgICAgICAgICAgICAgJiYgKGl0ZXJhdG9yRnVuYyAhPSBv
YmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKQorICAgICAg
ICAgICAgICAgICYmIChpdGVyYXRvckZ1bmMgIT0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT5h
cnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKQogICAgICAgICAgICAgICAgICAgICB8fCBsZW5ndGhT
bG90LmlzQWNjZXNzb3IoKSB8fCBsZW5ndGhTbG90LmlzQ3VzdG9tKCkgfHwgbGVuZ3RoU2xvdC5p
c1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpCiAgICAgICAgICAgICAgICAgICAgIHx8IGhhc0FueUFy
cmF5U3RvcmFnZShvYmplY3QtPmluZGV4aW5nVHlwZSgpKSkpIHsKIApAQCAtMjExLDcgKzIxMSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7Ci0gICAgU3RydWN0dXJlKiBwYXJlbnRT
dHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUo
Vmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOworICAgIFN0cnVjdHVyZSogcGFyZW50
U3RydWN0dXJlID0gZnVuY3Rpb24tPmdsb2JhbE9iamVjdCh2bSktPnR5cGVkQXJyYXlTdHJ1Y3R1
cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
ZXhlYy0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggZGVjNTMwZjE1YjQ4MGQxMWNmYTZmZThmODQ4M2U4YWFjNGY2ZTZiYy4uM2UzZjM2
Y2QzNzdhZDE2NjQ4ODAyOTZmNGQ5MTE0MWNlNmZhNjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KAogICAgIH0KIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCgKKyAgICAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QoCiAg
ICAgICAgICAgICB0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3Bl
cnR5TmFtZSksIHNsb3QpOwogICAgIH0KICAgICAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXRCeUluZGV4KAogCiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChKU1ZhbHVlKHRoaXNPYmplY3QpLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gdGhpc09iamVjdC0+c2V0SW5kZXgoZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShjZWxsLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTU3MCwxMCArNTcwLDEwIEBAIEFycmF5
QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2xvd0Rvd25BbmRXYXN0
ZU1lbW9yeShKU0FycmF5QnVmCiAgICAgVk0mIHZtID0gKmhlYXAtPnZtKCk7CiAgICAgRGVmZXJH
Q0ZvckFXaGlsZSBkZWZlckdDKCpoZWFwKTsKICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVCghdGhp
c09iamVjdC0+aGFzSW5kZXhpbmdIZWFkZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXNP
YmplY3QtPmhhc0luZGV4aW5nSGVhZGVyKHZtKSk7CiAgICAgdGhpc09iamVjdC0+c2V0QnV0dGVy
Zmx5KHZtLCBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIHRoaXNP
YmplY3QtPmJ1dHRlcmZseSgpLCB2bSwgdGhpc09iamVjdCwgdGhpc09iamVjdC0+c3RydWN0dXJl
KCksCi0gICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgMCwgMCkpOworICAgICAgICB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKSwgdm0sIHRo
aXNPYmplY3QsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSksCisgICAgICAgIHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLCAwKSk7CiAKICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVu
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IDQ5YmNiYjc4NDg2OWZhNmVkMjc2OGI4
ZGM3M2FkMzBmMjRkM2Q5YTMuLjlhYmM5ODM1MjdjZGJlZjFhMTZjNzNmYWI1OGYxNzk1ZmVjYjVk
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApA
QCAtNDUyLDcgKzQ1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBFeGVjU3RhCiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU0FycmF5QnVmZmVyVmlldyogcmVzdWx0ID0g
c3BlY2llc0NvbnN0cnVjdChleGVjLCB0aGlzT2JqZWN0LCBhcmdzLCBbJl0oKSB7Ci0gICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJh
eVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT50eXBlZEFycmF5
U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKICAgICAgICAgcmV0
dXJuIFZpZXdDbGFzczo6Y3JlYXRlVW5pbml0aWFsaXplZChleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0
aCk7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC01NDgsMTAgKzU0OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mdgogCiAg
ICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQoKSArIG9m
ZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAKLSAgICBKU09iamVjdCogZGVmYXVsdENv
bnN0cnVjdG9yID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheUNvbnN0cnVjdG9y
KFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKKyAgICBKU09iamVjdCogZGVmYXVs
dENvbnN0cnVjdG9yID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT50eXBlZEFycmF5Q29uc3Ry
dWN0b3IoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgIEpTVmFsdWUgc3Bl
Y2llcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgIGlmIChzcGVjaWVzID09IGRl
ZmF1bHRDb25zdHJ1Y3RvcikgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxl
ZS0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFy
cmF5U3RvcmFnZVR5cGUpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+
Z2xvYmFsT2JqZWN0KHZtKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xhc3M6OlR5cGVkQXJy
YXlTdG9yYWdlVHlwZSk7CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3JlYXRlKApAQCAtNTYxLDcgKzU2MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSZ2CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZCh2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVyLT50b0pT
KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBhcnJheUJ1ZmZlci5nZXQoKSkpOwor
ICAgIGFyZ3MuYXBwZW5kKHZtLm1fdHlwZWRBcnJheUNvbnRyb2xsZXItPnRvSlMoZXhlYywgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSwgYXJyYXlCdWZmZXIuZ2V0KCkpKTsKICAgICBhcmdz
LmFwcGVuZChqc051bWJlcihuZXdCeXRlT2Zmc2V0KSk7CiAgICAgYXJncy5hcHBlbmQoanNOdW1i
ZXIobGVuZ3RoKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZDNi
OWQ3OTUyYTEwM2FkNjE3ZTEyZjQ4NjZlYjM1YThiZTlkYjA0Mi4uMTRlZTE0NzA0YzFmNjZhNDM1
NTJiZGE1Y2Q3Y2JlM2YwZmY2OTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKIAotICAgIEJhc2U6OnNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSkpOworICAgIEJhc2U6OnNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUodm0pKSk7CiAKICAgICBtX2RlYnVnZ2VyID0gMDsKIApAQCAtNDc3LDcgKzQ3
Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoImdldCAiLCB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIsIFVu
ZGVyc2NvcmVQcm90b0ludHJpbnNpYyksCiAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgbWFrZVN0cmluZygic2V0ICIsIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQ
cm90by5zdHJpbmcoKSksIGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlcnNjb3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
ciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgbV9mdW5jdGlvblByb3RvdHlw
ZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKHZt
KS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24odm0sIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKTsKICAgICBtX29iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgdm0uc3RydWN0dXJlQ2FjaGUuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUo
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxp
bmVDYXBhY2l0eSgpKSk7CiAgICAgbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbi5zZXQodm0s
IHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0UHJvdG90eXBlKCktPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZikpKTsKICAgICAKQEAgLTk2MCw3ICs5NjAsNyBA
QCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFt
ZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlwZUVycm9yRnVuY3Rpb24p
XSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjp1c2VEb2xsYXJWTSgpKSkKLSAgICAgICAgZXhwb3NlRG9sbGFyVk0oKTsKKyAgICAg
ICAgZXhwb3NlRG9sbGFyVk0odm0pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKSB7CkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBpbmxp
bmUgdm9pZCBPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyOjp2aXNpdChKU0NlbGwqIGNl
bGwpCiAgICAgLy8gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdCB0aGF0IGhhdmUgcHJvdG90eXBl
cyBmcm9tIG91ciBnbG9iYWwgb2JqZWN0LgogICAgIGF1dG8gaXNJbkVmZmVjdGVkR2xvYmFsT2Jq
ZWN0ID0gWyZdIChKU09iamVjdCogb2JqZWN0KSB7CiAgICAgICAgIGZvciAoSlNPYmplY3QqIGN1
cnJlbnQgPSBvYmplY3Q7IDspIHsKLSAgICAgICAgICAgIGlmIChjdXJyZW50LT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX2dsb2JhbE9iamVjdCkKKyAgICAgICAgICAgIGlmIChjdXJyZW50LT5nbG9iYWxP
YmplY3Qodm0pID09IG1fZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3Vy
cmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKQEAgLTE0NjcsMTAgKzE0NjcsOCBAQCBFeGVj
U3RhdGUqIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCkKICAgICByZXR1cm4gQ2FsbEZyYW1l
OjpjcmVhdGUobV9nbG9iYWxDYWxsRnJhbWUpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpl
eHBvc2VEb2xsYXJWTSgpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpleHBvc2VEb2xsYXJWTShWTSYg
dm0pCiB7Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLQogICAgIGlmIChoYXNPd25Qcm9wZXJ0
eShnbG9iYWxFeGVjKCksIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRvbGxhclZN
UHJpdmF0ZU5hbWUoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTYzNyw3ICsxNjM1LDcgQEAg
SlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgc3RydWN0dXJlKCktPnNldEds
b2JhbE9iamVjdCh2bSwgdGhpcyk7CisgICAgc3RydWN0dXJlKHZtKS0+c2V0R2xvYmFsT2JqZWN0
KHZtLCB0aGlzKTsKICAgICBtX3J1bnRpbWVGbGFncyA9IG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUtPmphdmFTY3JpcHRSdW50aW1lRmxhZ3ModGhpcyk7CiAgICAgaW5pdCh2bSk7CiAgICAgc2V0
R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIGdldFByb3RvdHlwZURpcmVjdCh2bSksIFB1cmVGb3J3YXJkaW5nUHJveHlU
eXBlKSwgdGhpcykpOwpAQCAtMTY0Nyw3ICsxNjQ1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogdm9pZCBKU0dsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU09iamVjdCogdGhpc1ZhbHVlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCB0aGlzKTsKKyAg
ICBzdHJ1Y3R1cmUodm0pLT5zZXRHbG9iYWxPYmplY3Qodm0sIHRoaXMpOwogICAgIG1fcnVudGlt
ZUZsYWdzID0gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZS0+amF2YVNjcmlwdFJ1bnRpbWVGbGFn
cyh0aGlzKTsKICAgICBpbml0KHZtKTsKICAgICBzZXRHbG9iYWxUaGlzKHZtLCB0aGlzVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggNTJkMjExYzBiYWY0MDlmYTJmNDk1ZDMwYWE5NjM2OWVkZGJiYjE5Ni4uZDQyY2FhYmUzNGUw
ZDFkYWRhYmY4Yzk0YjRmZGU0OWZmMDZiNmIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC05MDEsNyArOTAxLDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV2Vh
a1JhbmRvbSYgd2Vha1JhbmRvbSgpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbTsgfQogCiAgICAgYm9v
bCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3M7IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGV4cG9zZURvbGxhclZN
KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBleHBvc2VEb2xsYXJWTShWTSYpOwogCiAj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBKU1dyYXBwZXJNYXAqIHdyYXBwZXJNYXAoKSBj
b25zdCB7IHJldHVybiBtX3dyYXBwZXJNYXAuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRl
eCA3MzEzNjczZTExNTE5YTRhODgxM2Y3NzQyMmU1NjZjMjNjMWVlMzdlLi40ZDlkYTBlZjBmNWRh
YmQzMzlkMWI3ODY0MDliYTM3OWIzZjkxNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC00OTgs
NyArNDk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGFyc2VkT2Jq
ZWN0KTsKIAogICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBleGVjLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogY2FsbGVlR2xvYmFsT2JqZWN0ID0gZXhl
Yy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGNhbGxl
ZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhl
YywgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcApp
bmRleCBlYWRmMzQwODQwZjVlMTJkMzQwNGY2OTJlMGY5ZjI4ODRlODg0MzYzLi4xMmY1Mjk0NWYz
MmUxN2JhZDc2NjQ3M2E4Yjk3ODQxMjZhZDk4YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCkBAIC01OCw3ICs1OCw3IEBA
IEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZTo6dGhlbihFeGVjU3RhdGUqIGV4
ZWMsIEpTRnVuY3Rpb24qIG9uRnVsZmlsCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0
PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRo
ZW5QdWJsaWNOYW1lKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGEzZjgxM2QzMzZkMTJl
ZmQ2ZDMwZjM0ZWM4NTE3YWE0YTdlNzg2OS4uMTQ5MzQ0MDgyZmI4ZDMyNmJhMGVhOTFiNmIyMzg1
ZGZiZDBjYzVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDggKzU5LDgg
QEAgU3RydWN0dXJlKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgp
OwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNJbnRlcm5h
bFByb21pc2UqIHByb21pc2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKICAgICBwcm9taXNlLT5pbml0aWFs
aXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0pvYi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pv
Yi5jcHAKaW5kZXggYWQ2MjU0YWY1MjFiNDAzNjgwMGRhNzg0ZWVhOGUyZDNmYTkyNjcyNi4uN2Fj
NjYzYTQ4ZDAxNDRhNjY5ZTk3MzMzYTU1Y2I5ZGE2MTM2NzViOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTSm9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEpTSm9iTWljcm90
YXNrOjpydW4oRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGhhbmRsZXJDYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSBoYW5kbGVyQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShtX2pvYi5nZXQoKSwgaGFuZGxlckNhbGxE
YXRhKTsKKyAgICBDYWxsVHlwZSBoYW5kbGVyQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgbV9q
b2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSk7CiAgICAgQVNTRVJUKGhhbmRsZXJDYWxsVHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBoYW5kbGVyQXJn
dW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IDk5NDNkMGVkNGY4MTFiZmY2MGQ0ZDJmNWU4ZTFhNWQw
OTcxNjM5YTIuLjIwMzRhNzNlMzk0OWE4ZDczNjhhOWI2NjYwMzJhMDc3YjlhZmQwOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHAKQEAgLTk0LDE2ICs5NCwxNyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogICAg
IGlmIChzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKLSAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IHRoaXNPYmplY3QtPmdldERp
cmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKSB7CisgICAgaWYgKEpT
VmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcykpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVz
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIFdlIGRvbid0
IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGdpdmUg
YSAKICAgICAvLyBsZXhpY2FsIGVudmlyb25tZW50IG9iamVjdCBnZXR0ZXIgcHJvcGVydGllcyBv
ciBhIHByb3RvdHlwZS4KLSAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMoKSk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChl
eGVjLT52bSgpKS5pc051bGwoKSk7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKHZtKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSkuaXNOdWxsKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTIxLDcg
KzEyMiw3IEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0
aHJvdWdoIHRvIEpTT2JqZWN0IGJlY2F1c2UgX19wcm90b19fIGFuZCBnZXR0ZXIvc2V0dGVyIAog
ICAgIC8vIHByb3BlcnRpZXMgYXJlIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIHRoYXQgb3RoZXIg
aW1wbGVtZW50YXRpb25zIGRvIG5vdAogICAgIC8vIGV4cG9zZSBpbiB0aGUgbGV4aWNhbEVudmly
b25tZW50IG9iamVjdC4KLSAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKGV4ZWMtPnZtKCkpKTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0T3duRGF0YVBy
b3BlcnR5KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAKaW5kZXggOTZhZTU1ZjdjYWQyNjBiY2Jl
ZjU2ZTllYWQ0MTdmZmRlOWVlYWExZC4uYmU5NjE5OGM2NjUwNDk0OTM5NTFhNGRiMDY5NmVhYzJi
MzEzZjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcApAQCAtNTEs
MTIgKzUxLDEyIEBAIGJvb2wgSlNNYXA6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNl
cnZhYmxlKCkKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNNYXBQcm90b3R5cGVJdGVyYXRvclBy
b3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5z
dHJ1Y3R1cmUodm0pOwogICAgIC8vIFRoaXMgaXMgdGhlIGZhc3QgY2FzZS4gTWFueSBtYXBzIHdp
bGwgYmUgYW4gb3JpZ2luYWwgbWFwLgogICAgIGlmIChzdHJ1Y3R1cmUgPT0gZ2xvYmFsT2JqZWN0
LT5tYXBTdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2bSkgIT0gZ2xv
YmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCmluZGV4IGMz
ZmQ1NmY5NjlhMTY2YTVjYTM0YzA5ZmQxYWYzMTUyOGFiNjA3ZDguLjI1NjBkY2ExNzFkYmY4ZjBj
Yzc5YjQ2NDA1NzQ0NzkwNzQyODU1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFsdWUgSlNNYXBJ
dGVyYXRvcjo6Y3JlYXRlUGFpcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBrZXksIEpT
VmFsdWUgdmFsCiAgICAgYXJncy5hcHBlbmQoa2V5KTsKICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7
CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KGNhbGxGcmFtZS0+dm0oKSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5
KGNhbGxGcmFtZSwgMCwgZ2xvYmFsT2JqZWN0LCBhcmdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDY1OThkNTQ0MzYx
YzMyNWNkMmUzMzU4YjhmMDM4YWU5ZjI4NjhiZDQuLjQ1NTM4MjkwMzlmN2EwM2FkODJiMmYyZmU3
MzJkMzExZWE2MGE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUxvYWRlci5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9h
ZGVyOjpwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgY29uc3QgU291
cmNlQwogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm92aWRlRmV0Y2hQdWJsaWNOYW1l
KCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0
YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpOwogCiAgICAgU291cmNlQ29kZSBzb3VyY2UgeyBzb3VyY2VDb2RlIH07CkBAIC0x
NTAsNyArMTUwLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5k
RXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICBKU09iamVjdCogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubG9hZEFuZEV2YWx1YXRlTW9kdWxlUHVibGljTmFtZSgpKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkBAIC0xNzEsNyArMTcxLDcg
QEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW0KICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNPYmplY3QqPihnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBB
U1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwpAQCAtMTkyLDcgKzE5Miw3IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2Fk
ZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxl
S2V5CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMs
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVB1
YmxpY05hbWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CkBAIC0yMTIsNyArMjEyLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpy
ZXF1ZXN0SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWQKICAgICBhdXRvKiBm
dW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5yZXF1ZXN0SW1wb3J0TW9kdWxlUHVibGljTmFtZSgpKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRh
KTsKKyAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNh
bGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA3ZDg0Mzk0MTdlZWM4NjNiYjQ5Nzk3NWViZjU0
ZDJmMGI5YWJmMDA2Li5kZGNmYzE4ZTlkYzBhYWJkYjgyNDU3ZDNiNDQ5MjRmMmNjNTk5NGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtODE5
LDcgKzgxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1Bh
cnNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHVuZmlsdGVyZWQpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAxOTczM2UwNjFlMTNjM2Y0YjRlMmFj
N2QwOGUxNjM1YTNiOTE0ZjYzLi5hNGM5YmYxZWFmNjUyNGZmYTJkNzM4ZjAwMTM3MGJhZGMzMTdl
NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC03
NzUsNyArNzc1LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIEpTVmFs
dWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdzLmlzR2V0
dGVyU2V0dGVyKCkpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0
aGF0IHdlIGRlY2lkZSB0byBjYWNoZSB0aGlzIHByb3BlcnR5IGJlZm9yZSB3ZSBwb3RlbnRpYWxs
eSBleGVjdXRlIGFyaWJpdHJhcnkgSlMuCi0gICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUodm0pLT5p
c0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0
ZXIob2JqLCBvZmZzZXQpOwogCiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0
dGVyKGV4ZWMsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKQEAgLTc5OSw3ICs3OTksNyBAQCBib29s
IEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQg
YmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBpZiAoIW9iai0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQoKSkgeworICAgICAg
ICBpZiAoIW9iai0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKSB7CiAgICAgICAgICAgICBp
ZiAob2JqLT5jbGFzc0luZm8odm0pLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGll
cygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0
eUhhc2hFbnRyeSh2bSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7CkBAIC04MzQsNyArODM0LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLAog
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICB9CiAKICAg
ICBpZiAoaXNDb3B5T25Xcml0ZSh0aGlzT2JqZWN0LT5pbmRleGluZ01vZGUoKSkpCkBAIC0xMDA2
LDcgKzEwMDYsNyBAQCB2b2lkIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUo
Vk0mIHZtKQogCiB2b2lkIEpTT2JqZWN0Ojpub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjY2Vzc29y
cyhWTSYgdm0pCiB7Ci0gICAgaWYgKG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQorICAg
IGlmIChtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0pKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBZGRJbmRleGVkQWNj
ZXNzb3JzKSk7CkBAIC0xMDIyLDggKzEwMjIsOCBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVh
dGVJbml0aWFsSW5kZXhlZFN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQVNT
RVJUKGxlbmd0aCA8PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKTsKICAgICBJbmRleGluZ1R5
cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwg
IWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKLSAgICBBU1NFUlQoIW5lZWRzU2xvd1B1
dEluZGV4aW5nKCkpOwotICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKKyAg
ICBBU1NFUlQoIW5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSk7CisgICAgQVNTRVJUKCFpbmRleGlu
Z1Nob3VsZEJlU3BhcnNlKHZtKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5z
dHJ1Y3R1cmUodm0pOwogICAgIHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVy
Zmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChwcm9wZXJ0eUNhcGFjaXR5LCBsZW5n
dGgpOwpAQCAtMTExOCw3ICsxMTE4LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRl
QXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2ZWMKIAogICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlQXJyYXlTdG9yYWdlQnV0dGVyZmx5KHZt
LCB0aGlzLCBvbGRTdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkoKSk7
CiAgICAgQXJyYXlTdG9yYWdlKiByZXN1bHQgPSBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
OwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgc3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlv
bigpKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5z
aXRpb24odm0pKTsKICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1
Y3R1cmVJRCwgbmV3QnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVy
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEyMTMsNyArMTIxMyw3IEBAIEFycmF5U3RvcmFn
ZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblBy
b3BlcnR5VHJhbnNpCiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRU
b0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0Fy
cmF5U3RvcmFnZSh2bSwgc3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKKyAgICBy
ZXR1cm4gY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0
b3JhZ2VUcmFuc2l0aW9uKHZtKSk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpj
b252ZXJ0SW50MzJUb0RvdWJsZShWTSYgdm0pCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblBy
b3BlcnR5VHJhbnNpdGlvbgogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJU
b0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlT
dG9yYWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIHJldHVy
biBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSh2bSwgc3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJh
bnNpdGlvbih2bSkpOwogfQogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRE
b3VibGVUb0NvbnRpZ3VvdXMoVk0mIHZtKQpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJv
cGVydHlUcmFuc2l0aW8KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRv
QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvQXJyYXlT
dG9yYWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIHJldHVy
biBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2Uodm0sIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRy
YW5zaXRpb24odm0pKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRp
Z3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0
aW9uKQpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnMKIAogQXJy
YXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYg
dm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN1
Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb250
aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24o
dm0pKTsKIH0KIAogdm9pZCBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE0MjgsNyArMTQyOCw3IEBAIHZvaWQgSlNPYmplY3Q6OmNv
bnZlcnRJbnQzMkZvclZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHZvaWQgSlNPYmplY3Q6
OmNvbnZlcnRGcm9tQ29weU9uV3JpdGUoVk0mIHZtKQogewogICAgIEFTU0VSVChpc0NvcHlPbldy
aXRlKGluZGV4aW5nTW9kZSgpKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pbmRleGluZ01v
ZGUoKSA9PSBpbmRleGluZ01vZGUoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSh2bSktPmluZGV4
aW5nTW9kZSgpID09IGluZGV4aW5nTW9kZSgpKTsKIAogICAgIGNvbnN0IGJvb2wgaGFzSW5kZXhp
bmdIZWFkZXIgPSB0cnVlOwogICAgIEJ1dHRlcmZseSogb2xkQnV0dGVyZmx5ID0gYnV0dGVyZmx5
KCk7CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmVu
c3VyZVdyaXRhYmxlSW50MzJTbG93KFZNJiB2bSkKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGlm
IChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgbmVlZHNTbG93UHV0SW5kZXhp
bmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSB8
fCBuZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNKU1ZhbHVlcygpOwogICAgICAgICByZXR1cm4gY3JlYXRlSW5pdGlhbEludDMyKHZtLCAwKTsK
ICAgICAgICAgCkBAIC0xNTI3LDcgKzE1MjcsNyBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVj
dDo6ZW5zdXJlV3JpdGFibGVEb3VibGVTbG93KFZNJiB2bSkKICAgICAKICAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgbmVlZHNTbG93UHV0
SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNl
KHZtKSB8fCBuZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkpKQogICAgICAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNEb3VibGVzKCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVJbml0aWFsRG91YmxlKHZt
LCAwKTsKICAgICAgICAgCkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMg
SlNPYmplY3Q6OmVuc3VyZVdyaXRhYmxlQ29udGlndW91c1Nsb3coVk0mIHZtKQogICAgIAogICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19U
WVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBu
ZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hv
dWxkQmVTcGFyc2Uodm0pIHx8IG5lZWRzU2xvd1B1dEluZGV4aW5nKHZtKSkpCiAgICAgICAgICAg
ICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVJbml0
aWFsQ29udGlndW91cyh2bSwgMCk7CiAgICAgICAgIApAQCAtMTU5NiwyOCArMTU5NiwyOCBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VTbG93KFZNJiB2bSkKICAg
ICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6Ci0gICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNl
KCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSh2bSkpKQog
ICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlv
bmFyeUluZGV4aW5nTW9kZSh2bSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVJbml0aWFsQXJyYXlT
dG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAg
IEFTU0VSVCghbmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAgIEFTU0VSVCghaW5kZXhp
bmdTaG91bGRCZVNwYXJzZSh2bSkpOworICAgICAgICBBU1NFUlQoIW5lZWRzU2xvd1B1dEluZGV4
aW5nKHZtKSk7CiAgICAgICAgIHJldHVybiBjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uo
dm0pOwogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAg
ICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIW5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVT
cGFyc2Uodm0pKTsKKyAgICAgICAgQVNTRVJUKCFuZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkpOwog
ICAgICAgICByZXR1cm4gY29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAK
ICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIEFTU0VSVCghaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAgICAgQVNTRVJUKCFuZWVkc1Nsb3dQdXRJbmRl
eGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSk7Cisg
ICAgICAgIEFTU0VSVCghbmVlZHNTbG93UHV0SW5kZXhpbmcodm0pKTsKICAgICAgICAgcmV0dXJu
IGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxM
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpKTsKLSAgICAgICAgQVNTRVJUKCFuZWVkc1Nsb3dQdXRJbmRleGluZygpKTsK
KyAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSk7CisgICAgICAgIEFT
U0VSVCghbmVlZHNTbG93UHV0SW5kZXhpbmcodm0pKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRD
b250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAt
MTcxNiw3ICsxNzE2LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2
bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgfSBlbHNlCiAgICAgICAgIHB1dERpcmVjdCh2bSwg
a25vd25Qb2x5UHJvdG9PZmZzZXQsIHByb3RvdHlwZSk7CiAKLSAgICBpZiAoIWFueU9iamVjdElu
Q2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKKyAgICBpZiAoIWFueU9iamVjdElu
Q2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0pKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgaWYgKG1heUJlUHJvdG90eXBlKCkpIHsKQEAgLTE4ODksNyArMTg4OSw3IEBAIGJv
b2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVyCiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogCi0gICAg
aWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgpKSB7CisgICAgaWYgKCF0
aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpIHsKICAgICAgICAgaWYgKGF1
dG8gZW50cnkgPSB0aGlzT2JqZWN0LT5maW5kUHJvcGVydHlIYXNoRW50cnkodm0sIHByb3BlcnR5
TmFtZSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBzdGF0aWMgdGFibGUgY29udGFpbnMgYSBu
b24tY29uZmlndXJhYmxlIChEb250RGVsZXRlKSBwcm9wZXJ0eSB0aGVuIHdlIGNhbiByZXR1cm4g
ZWFybHk7CiAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIHByb3BlcnR5IGluIHRoZSBzdG9y
YWdlIGFycmF5IGl0IHRvbyBtdXN0IGJlIG5vbi1jb25maWd1cmFibGUgKHRoZSBsYW5ndWFnZSBk
b2VzCkBAIC0yMDA5LDcgKzIwMDksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNh
bGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNPYgogICAgIGlm
IChmdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpU
YWtlc0hpbnQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERh
dGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAg
IGlmIChtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KQogICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJpbWl0aXZlIGlz
IG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51bGwiKSk7CkBAIC0yMTM5LDcgKzIxMzks
NyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYQogCiAgICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgaGFzSW5zdGFuY2VWYWx1ZSAhPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkp
IHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShoYXNJbnN0YW5jZVZhbHVlLCBjYWxsRGF0YSk7CisgICAgICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgaGFzSW5zdGFuY2VWYWx1
ZSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRo
aXMpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHZv
aWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiB2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoIW9iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQo
KSkKKyAgICBpZiAoIW9iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKQogICAgICAg
ICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgb2JqZWN0LT5jbGFzc0luZm8odm0pLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIAogICAgIGlmICghbW9kZS5pbmNsdWRlSlNPYmplY3RQcm9wZXJ0
aWVzKCkpCkBAIC0yMzczLDIyICsyMzczLDIyIEBAIHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYg
dm0pCiAKIGJvb2wgSlNPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAoIW9iamVjdC0+aXNTdHJ1Y3R1cmVFeHRlbnNp
YmxlKCkpIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICghb2JqZWN0LT5pc1N0
cnVjdHVyZUV4dGVuc2libGUodm0pKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc2V0IHRo
ZSBpbnRlcm5hbCBbW1ByZXZlbnRFeHRlbnNpb25zXV0gZmllbGQgdG8gZmFsc2UuCiAgICAgICAg
IC8vIFdlIGRvbid0IGNhbGwgdGhlIG1ldGhvZFRhYmxlIGlzRXh0ZW5zaWJsZSBoZXJlIGJlY2F1
c2UgaXQncyBub3QgZGVmaW5lZAogICAgICAgICAvLyB0aGF0IHdheSBpbiB0aGUgc3BlY2lmaWNh
dGlvbi4gV2UgYXJlIGp1c3QgZG9pbmcgYW4gb3B0aW1pemF0aW9uIGhlcmUuCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgb2JqZWN0
LT5lbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pOwogICAgIG9iamVjdC0+c2V0U3RydWN0
dXJlKHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbih2bSwgb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6
OmlzRXh0ZW5zaWJsZShKU09iamVjdCogb2JqLCBFeGVjU3RhdGUqKQorYm9vbCBKU09iamVjdDo6
aXNFeHRlbnNpYmxlKEpTT2JqZWN0KiBvYmosIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1
cm4gb2JqLT5pc0V4dGVuc2libGVJbXBsKCk7CisgICAgcmV0dXJuIG9iai0+aXNFeHRlbnNpYmxl
SW1wbChleGVjLT52bSgpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6aXNFeHRlbnNpYmxlKEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTIzOTksOCArMjM5OSw4IEBAIGJvb2wgSlNPYmplY3Q6OmlzRXh0ZW5z
aWJsZShFeGVjU3RhdGUqIGV4ZWMpCiAKIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJv
cGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgQVNTRVJUKCFzdGF0aWNQcm9wZXJ0aWVz
UmVpZmllZCgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEFTU0VSVCghc3RhdGlj
UHJvcGVydGllc1JlaWZpZWQodm0pKTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0J3MgQ2xhc3NJ
bmZvIGhhcyBubyBzdGF0aWMgcHJvcGVydGllcywgdGhlbiBub3RoaW5nIHRvIHJlaWZ5IQogICAg
IC8vIFdlIGNhbiBzYWZlbHkgc2V0IHRoZSBmbGFnIHRvIGF2b2lkIHRoZSBleHBlbnNpdmUgY2hl
Y2sgYWdhaW4gaW4gdGhlIGZ1dHVyZS4KQEAgLTI0MjksOSArMjQyOSw5IEBAIHZvaWQgSlNPYmpl
Y3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgc3RydWN0
dXJlKHZtKS0+c2V0U3RhdGljUHJvcGVydGllc1JlaWZpZWQodHJ1ZSk7CiB9CiAKLU5FVkVSX0lO
TElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYg
c2xvdCwgSlNDZWxsKiBnZXR0ZXJTZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKK05FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJv
cGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqIGdldHRlclNldHRl
ciwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewotICAgIGlm
IChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgeworICAgIGlmIChzdHJ1
Y3R1cmUodm0pLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHNsb3Quc2V0
R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVy
U2V0dGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTI1LDcgKzI1MjUsNyBAQCBi
b29sIEpTT2JqZWN0OjpkZWZpbmVPd25JbmRleGVkUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBpbmRleCwgY29uc3QgUAogICAgIC8vIDMuIElmIGN1cnJlbnQgaXMgdW5kZWZpbmVk
IGFuZCBleHRlbnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJlamVjdC4KICAgICAvLyA0LiBJZiBjdXJy
ZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0cnVlLCB0aGVuCiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGlmICghaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkp
IHsKKyAgICAgICAgaWYgKCFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKSB7CiAgICAgICAgICAg
ICBtYXAtPnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihleGVjLCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIEFTQ0lJTGl0ZXJhbChOb25FeHRlbnNp
YmxlT2JqZWN0UHJvcGVydHlEZWZpbmVFcnJvcikpOwogICAgICAgICB9CkBAIC0yNjgwLDcgKzI2
ODAsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91
dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwog
ICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhp
bmdTaGFwZSk7Ci0gICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOworICAgIEFT
U0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSh2bSkpOwogCiAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKQEAgLTI3NTIsNyArMjc1Miw3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBjYXNlcyB3aGVyZSB3
ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhIHNwYXJzZSBtYXAuCiAgICAgaWYgKExJS0VMWSghbWFw
KSkgewogICAgICAgICAvLyBJZiB0aGUgYXJyYXkgaXMgbm90IGV4dGVuc2libGUsIHdlIHNob3Vs
ZCBoYXZlIGVudGVyZWQgZGljdGlvbmFyeSBtb2RlLCBhbmQgY3JlYXRlZCB0aGUgc3BhcnNlIG1h
cC4KLSAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNT
RVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUg
bV9sZW5ndGggaWYgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgo
KSkKQEAgLTI3NzgsNyArMjc3OCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7CiAgICAgaWYgKGkgPj0gbGVuZ3RoKSB7
CiAgICAgICAgIC8vIFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qg
d3JpdGFibGUuCi0gICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1
Y3R1cmVFeHRlbnNpYmxlKCkpCisgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8
fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKICAgICAgICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpKTsKICAgICAgICAgbGVuZ3RoID0gaSArIDE7CiAgICAgICAgIHN0b3JhZ2Ut
PnNldExlbmd0aChsZW5ndGgpOwpAQCAtMjgyMiw3ICsyODIyLDcgQEAgYm9vbCBKU09iamVjdDo6
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
TExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVT
cGFyc2UoKSkgeworICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSh2bSkpIHsKICAg
ICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3Rv
cmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3csCiAgICAg
ICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5k
ZXhpbmdNb2RlKHZtKSk7CkBAIC0yODMxLDkgKzI4MzEsOSBAQCBib29sIEpTT2JqZWN0OjpwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNW
YWx1ZQogICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJv
dywgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KG5lZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKKyAgICAgICAgaWYgKG5lZWRzU2xvd1B1dEluZGV4
aW5nKHZtKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgaW5kZXhpbmcgdHlwZSB0byB0
aGUgU2xvd1B1dEFycmF5U3RvcmFnZSBhbmQgcmV0cnkuCi0gICAgICAgICAgICBjcmVhdGVBcnJh
eVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgMCwgaSArIDEpKTsK
KyAgICAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxl
bmd0aCh2bSwgMCwgMCwgMCwgaSArIDEpKTsKICAgICAgICAgICAgIHJldHVybiBwdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC0yODkxLDcgKzI4OTEsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLAogICAgIC8vIEZp
cnN0LCBoYW5kbGUgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBzcGFyc2Ug
bWFwLgogICAgIGlmIChMSUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGFycmF5IGlz
IG5vdCBleHRlbnNpYmxlLCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRpY3Rpb25hcnkgbW9kZSwg
YW5kIGNyZWF0ZWQgdGhlIHNwYXJlIG1hcC4KLSAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0
ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpOwog
ICAgIAogICAgICAgICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgogICAgICAgICBp
ZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKQEAgLTI5MjIsNyArMjkyMiw3IEBAIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJh
eSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICAgICAgaWYgKG1hcC0+bGVuZ3Ro
SXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2Nv
cGUsIG1vZGUgPT0gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgICAgICAgICBpZiAoIWlzU3RydWN0dXJlRXh0
ZW5zaWJsZSgpKQorICAgICAgICAgICAgaWYgKCFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIG1vZGUgPT0gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdywgQVNDSUlMaXRlcmFsKE5vbkV4dGVuc2libGVPYmplY3RQ
cm9wZXJ0eURlZmluZUVycm9yKSk7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7
CkBAIC0yOTc0LDcgKzI5NzQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleFNsb3dP
ckJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiAgICAgCiAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOiB7Ci0gICAgICAgIGlmIChpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgYXR0cmlidXRl
cykgeworICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSh2bSkgfHwgYXR0cmlidXRl
cykgewogICAgICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgYXR0cmli
dXRlcywgbW9kZSwKICAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRF
bnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pKTsKQEAgLTI5ODMsOCArMjk4Myw4IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4U2xvd09yQmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQKICAgICAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywg
aSwgdmFsdWUsIGF0dHJpYnV0ZXMsIG1vZGUsIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkp
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChuZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7Ci0gICAg
ICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkg
KyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgMCwgaSArIDEpKTsKKyAgICAgICAgaWYgKG5l
ZWRzU2xvd1B1dEluZGV4aW5nKHZtKSkgeworICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9y
YWdlID0gY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCBpICsgMSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKHZt
LCAwLCAwLCAwLCBpICsgMSkpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0
KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yKys7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMwMDEsNyArMzAwMSw3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4U2xvd09yQmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJz
ZSgpKTsKKyAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSk7CiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzKQogICAgICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRl
cywgbW9kZSwgZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhp
bmdNb2RlKHZtKSk7CiAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKSB7CkBAIC0zMDEzLDcg
KzMwMTMsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleFNsb3dPckJleW9uZFZlY3Rv
ckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQVNTRVJUKCFpbmRleGlu
Z1Nob3VsZEJlU3BhcnNlKCkpOworICAgICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFy
c2Uodm0pKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMpCiAgICAgICAgICAgICByZXR1cm4gcHV0
RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIGksIHZh
bHVlLCBhdHRyaWJ1dGVzLCBtb2RlLCBlbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRp
Y3Rpb25hcnlJbmRleGluZ01vZGUodm0pKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigp
KSB7CkBAIC0zMDMwLDcgKzMwMzAsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleFNs
b3dPckJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiAgICAgfQog
ICAgICAgICAKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAg
ICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKKyAgICAgICAgQVNTRVJUKCFp
bmRleGluZ1Nob3VsZEJlU3BhcnNlKHZtKSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzKQogICAg
ICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5
U3RvcmFnZShleGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSwgZW5zdXJlQXJyYXlTdG9y
YWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKSk7CiAgICAgICAgIHB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxDb250aWd1b3VzU2hh
cGU+KGV4ZWMsIGksIHZhbHVlKTsKQEAgLTMxMDYsNyArMzEwNiw3IEBAIEpTRnVuY3Rpb24qIEpT
T2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYgdm0s
IEpTR2xvYmFsCiB9CiAKIC8vIE5PVEU6IFRoaXMgbWV0aG9kIGlzIGZvciBBcnJheVN0b3JhZ2Ug
dmVjdG9ycy4KLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgSlNPYmplY3Q6OmdldE5ld1ZlY3Rvckxl
bmd0aCh1bnNpZ25lZCBpbmRleEJpYXMsIHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVu
c2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpCitBTFdBWVNfSU5M
SU5FIHVuc2lnbmVkIEpTT2JqZWN0OjpnZXROZXdWZWN0b3JMZW5ndGgoVk0mIHZtLCB1bnNpZ25l
ZCBpbmRleEJpYXMsIHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJl
bnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKGRlc2lyZWRM
ZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CiAKQEAgLTMxMjYsMTEgKzMxMjYs
MTEgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3Ro
KHVuc2lnbmVkIGluZGV4QmlhcywgdW5zaWduZWQKICAgICBsYXN0QXJyYXlTaXplID0gc3RkOjpt
aW4oaW5jcmVhc2VkTGVuZ3RoLCBGSVJTVF9BUlJBWV9TVE9SQUdFX1ZFQ1RPUl9HUk9XKTsKIAog
ICAgIHJldHVybiBBcnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoCi0gICAgICAgIGlu
ZGV4Qmlhcywgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksCisgICAgICAgIGluZGV4
Qmlhcywgc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwKICAgICAgICAgc3RkOjpt
aW4oaW5jcmVhc2VkTGVuZ3RoLCBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgdW5zaWduZWQgSlNPYmplY3Q6OmdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25l
ZCBkZXNpcmVkTGVuZ3RoKQorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3
VmVjdG9yTGVuZ3RoKFZNJiB2bSwgdW5zaWduZWQgZGVzaXJlZExlbmd0aCkKIHsKICAgICB1bnNp
Z25lZCBpbmRleEJpYXMgPSAwOwogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IDA7CkBAIC0z
MTQzLDcgKzMxNDMsNyBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpTT2JqZWN0OjpnZXROZXdW
ZWN0b3JMZW5ndGgodW5zaWduZWQgZGVzaXJlZExlbmd0aCkKICAgICAgICAgbGVuZ3RoID0gbV9i
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogICAgIH0KIAotICAgIHJldHVybiBnZXROZXdWZWN0
b3JMZW5ndGgoaW5kZXhCaWFzLCB2ZWN0b3JMZW5ndGgsIGxlbmd0aCwgZGVzaXJlZExlbmd0aCk7
CisgICAgcmV0dXJuIGdldE5ld1ZlY3Rvckxlbmd0aCh2bSwgaW5kZXhCaWFzLCB2ZWN0b3JMZW5n
dGgsIGxlbmd0aCwgZGVzaXJlZExlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBp
bmRleGluZ1NoYXBlPgpAQCAtMzIxOSw3ICszMjE5LDcgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVh
c2VWZWN0b3JMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBuZXdMZW5ndGgpCiAKICAgICB1bnNpZ25l
ZCBpbmRleEJpYXMgPSBzdG9yYWdlLT5tX2luZGV4QmlhczsKICAgICBBU1NFUlQobmV3TGVuZ3Ro
ID4gdmVjdG9yTGVuZ3RoKTsKLSAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGggPSBnZXROZXdW
ZWN0b3JMZW5ndGgobmV3TGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGggPSBn
ZXROZXdWZWN0b3JMZW5ndGgodm0sIG5ld0xlbmd0aCk7CiAKICAgICAvLyBGYXN0IGNhc2UgLSB0
aGVyZSBpcyBubyBwcmVjYXBhY2l0eS4gSW4gdGhlc2UgY2FzZXMgYSByZWFsbG9jIG1ha2VzIHNl
bnNlLgogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKQEAg
LTMzMTYsMTAgKzMzMTYsMTAgQEAgdm9pZCBKU09iamVjdDo6cmVhbGxvY2F0ZUFuZFNocmlua0J1
dHRlcmZseShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKICAgICBBU1NFUlQobGVuZ3RoIDw9IE1B
WF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpOwogICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4
aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKGluZGV4
aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICBBU1NFUlQo
bV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpID4gbGVuZ3RoKTsKLSAgICBBU1NFUlQoIW1fYnV0
dGVyZmx5LT5pbmRleGluZ0hlYWRlcigpLT5wcmVDYXBhY2l0eShzdHJ1Y3R1cmUoKSkpOworICAg
IEFTU0VSVCghbV9idXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFjaXR5KHN0cnVj
dHVyZSh2bSkpKTsKIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSh2bSwgdGhpcywgc3Ry
dWN0dXJlKCksIDAsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcihsZW5ndGgpKTsKKyAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSh2bSwgdGhpcywgc3Ry
dWN0dXJlKHZtKSwgMCwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKGxlbmd0aCkpOwogICAgIG5ld0J1
dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7CiAgICAgbmV3QnV0dGVyZmx5LT5zZXRQ
dWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwpAQCAtMzYz
Nyw3ICszNjM3LDcgQEAgdm9pZCBKU09iamVjdDo6c2hpZnRCdXR0ZXJmbHlBZnRlckZsYXR0ZW5p
bmcoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0KICAgICBCdXR0ZXJmbHkqIG9s
ZEJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgIHNpemVfdCBwcmVDYXBhY2l0eTsK
ICAgICBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXM7Ci0gICAgYm9vbCBoYXNJbmRl
eGluZ0hlYWRlciA9IHRoaXMtPmhhc0luZGV4aW5nSGVhZGVyKCk7CisgICAgYm9vbCBoYXNJbmRl
eGluZ0hlYWRlciA9IHRoaXMtPmhhc0luZGV4aW5nSGVhZGVyKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoaGFzSW5kZXhpbmdIZWFkZXIpKSB7CiAgICAgICAgIHByZUNhcGFjaXR5ID0gb2xkQnV0dGVy
Zmx5LT5pbmRleGluZ0hlYWRlcigpLT5wcmVDYXBhY2l0eShzdHJ1Y3R1cmUpOwogICAgICAgICBp
bmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG9sZEJ1dHRlcmZseS0+aW5kZXhpbmdIZWFkZXIo
KS0+aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMoc3RydWN0dXJlKTsKQEAgLTM3NzEsOSArMzc3
MSw4IEBAIEpTVmFsdWUgSlNPYmplY3Q6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxE
YXRhJiBjYWxsRGF0YSwgQ2FsbFR5cGUmIGNhbGxUCiAgICAgcmV0dXJuIG1ldGhvZDsKIH0KIAot
Ym9vbCBKU09iamVjdDo6YW55T2JqZWN0SW5DaGFpbk1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cygpIGNvbnN0Citib29sIEpTT2JqZWN0OjphbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKFZNJiB2bSkgY29uc3QKIHsKLSAgICBWTSYgdm0gPSAqdGhpcy0+dm0oKTsK
ICAgICBmb3IgKGNvbnN0IEpTT2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAgICBp
ZiAoY3VycmVudC0+c3RydWN0dXJlKHZtKS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3ODksNyArMzc4OCw3IEBAIGJvb2wgSlNP
YmplY3Q6OmFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBjb25z
dAogYm9vbCBKU09iamVjdDo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAocGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gYW55T2JqZWN0SW5DaGFpbk1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlcygpOworICAgICAgICByZXR1cm4gYW55T2JqZWN0SW5DaGFpbk1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3Nlcyh2bSk7CiAgICAgCiAgICAgZm9yIChKU09iamVjdCogY3VycmVu
dCA9IHRoaXM7IDspIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBjdXJyZW50LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pOwpAQCAtMzgxMCwxNCArMzgwOSwxNCBAQCBib29sIEpTT2JqZWN0
Ojpwcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYQogICAgIH0KIH0KIAotYm9vbCBKU09iamVjdDo6bmVlZHNTbG93UHV0SW5kZXhp
bmcoKSBjb25zdAorYm9vbCBKU09iamVjdDo6bmVlZHNTbG93UHV0SW5kZXhpbmcoVk0mIHZtKSBj
b25zdAogewotICAgIHJldHVybiBhbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKCkgfHwgZ2xvYmFsT2JqZWN0KCktPmlzSGF2aW5nQUJhZFRpbWUoKTsKKyAgICByZXR1
cm4gYW55T2JqZWN0SW5DaGFpbk1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyh2bSkgfHwgZ2xv
YmFsT2JqZWN0KHZtKS0+aXNIYXZpbmdBQmFkVGltZSgpOwogfQogCi1Ob25Qcm9wZXJ0eVRyYW5z
aXRpb24gSlNPYmplY3Q6OnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSBjb25zdAor
Tm9uUHJvcGVydHlUcmFuc2l0aW9uIEpTT2JqZWN0OjpzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFu
c2l0aW9uKFZNJiB2bSkgY29uc3QKIHsKLSAgICBpZiAobmVlZHNTbG93UHV0SW5kZXhpbmcoKSkK
KyAgICBpZiAobmVlZHNTbG93UHV0SW5kZXhpbmcodm0pKQogICAgICAgICByZXR1cm4gTm9uUHJv
cGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2U7CiAgICAgCiAgICAg
cmV0dXJuIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVBcnJheVN0b3JhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0YTYxMjhhMzk1NmQ4NzAz
MWZhZTIzNmIxOGMwMzM4NDAwMjA2MzRiLi5mYWFiYzVkNmM2ZTQxNGU2OGQ1NmM1YWRjYmQ1ZDYz
N2RhNWI4Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAg
LTE1OSw5ICsxNTksOSBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgc2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wg
c2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90
b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgICAgICAKLSAgICBib29sIG1h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpCisgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXMoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5tYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSkt
Pm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpOwogICAgIH0KICAgICAgICAgCiAgICAgSlNW
YWx1ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTI1Nyw5ICsyNTcs
OSBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIHdhbnQgdG8gZW5z
dXJlIHRoYXQgdGhpcyB3b24ndCB0aHJvdyBhbiBleGNlcHRpb24uCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSk7CiAgICAgICAgIAotICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoKSBjb25zdAor
ICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoVk0mIHZtKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzKTsKKyAgICAgICAgcmV0
dXJuIHN0cnVjdHVyZSh2bSktPmhhc0luZGV4aW5nSGVhZGVyKHRoaXMpOwogICAgIH0KICAgICAK
ICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQpAQCAtNzAzLDkgKzcwMyw5
IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lkIHRyYW5zaXRp
b25UbyhWTSYsIFN0cnVjdHVyZSopOwogCi0gICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkg
eyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQotICAgIGJvb2wgaGFzR2V0
dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKCk7IH0KLSAgICBib29sIGhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRp
ZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGll
cygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKFZNJiB2bSkgeyByZXR1cm4gc3Ry
dWN0dXJlKHZtKS0+ZGlkVHJhbnNpdGlvbigpOyB9CisgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpOyB9CiAKICAgICAvLyBwdXRPd25EYXRhUHJvcGVydHkgaGFzICdwdXQnIGxpa2Ug
c2VtYW50aWNzLCBob3dldmVyIHRoaXMgbWV0aG9kOgogICAgIC8vICAtIGFzc3VtZXMgdGhlIG9i
amVjdCBjb250YWlucyBubyBvd24gZ2V0dGVyL3NldHRlciBwcm9wZXJ0aWVzLgpAQCAtNzQ3LDMx
ICs3NDcsMzEgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlz
U2VhbGVkKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNTZWFsZWQodm0pOyB9CiAg
ICAgYm9vbCBpc0Zyb3plbihWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmlzRnJvemVu
KHZtKTsgfQogCi0gICAgYm9vbCBhbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKCkgY29uc3Q7CisgICAgYm9vbCBhbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKFZNJikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90
b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oVk0mLCBQcm9wZXJ0eU5hbWUpOwotICAgIGJv
b2wgbmVlZHNTbG93UHV0SW5kZXhpbmcoKSBjb25zdDsKLSAgICBOb25Qcm9wZXJ0eVRyYW5zaXRp
b24gc3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpIGNvbnN0OworICAgIGJvb2wgbmVl
ZHNTbG93UHV0SW5kZXhpbmcoVk0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNFeHRlbnNpYmxlSW1wbCgpIHsgcmV0dXJuIGlzU3RydWN0dXJlRXh0ZW5zaWJs
ZSgpOyB9CisgICAgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRy
YW5zaXRpb24oVk0mKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHRlbnNpYmxl
SW1wbChWTSYgdm0pIHsgcmV0dXJuIGlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSk7IH0KIHB1Ymxp
YzoKICAgICAvLyBZb3Ugc2hvdWxkIG9ubHkgY2FsbCBpc1N0cnVjdHVyZUV4dGVuc2libGUoKSB3
aGVuOgogICAgIC8vIC0gUGVyZm9ybWluZyB0aGlzIGNoZWNrIGluIGEgd2F5IHRoYXQgaXNuJ3Qg
ZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uIAogICAgIC8vICAgYXMgY2FsbGluZyB0aGUg
dmlydHVhbCBbW0lzRXh0ZW5zaWJsZV1dIHRyYXAuCiAgICAgLy8gLSBXaGVuIHlvdSdyZSBndWFy
YW50ZWVkIHRoYXQgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5pc0V4dGVuc2libGUgaXNuJ3QKICAg
ICAvLyAgIG92ZXJyaWRkZW4uCi0gICAgQUxXQVlTX0lOTElORSBib29sIGlzU3RydWN0dXJlRXh0
ZW5zaWJsZSgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc1N0cnVjdHVyZUV4dGVuc2libGUoKTsg
fQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1N0cnVjdHVyZUV4dGVuc2libGUoVk0mIHZtKSB7
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc1N0cnVjdHVyZUV4dGVuc2libGUoKTsgfQogICAgIC8v
IFlvdSBzaG91bGQgY2FsbCB0aGlzIHdoZW4gcGVyZm9ybWluZyBbW0lzRXh0ZW5zaWJsZV1dIHRy
YXAgaW4gYSBwbGFjZQogICAgIC8vIHRoYXQgaXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0
aW9uLiBUaGlzIHBlcmZvcm1zIHRoZSBmdWxseSB2aXJ0dWFsCiAgICAgLy8gW1tJc0V4dGVuc2li
bGVdXSB0cmFwLgogICAgIGJvb2wgaXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSopOwotICAgIGJvb2wg
aW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpCisgICAgYm9vbCBpbmRleGluZ1Nob3VsZEJlU3BhcnNl
KFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkK
LSAgICAgICAgICAgIHx8IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKKyAgICAgICAgcmV0
dXJuICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pCisgICAgICAgICAgICB8fCBzdHJ1Y3R1cmUo
dm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8oKTsKICAgICB9CiAKLSAgICBib29sIHN0YXRpY1Byb3BlcnRpZXNS
ZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCk7
IH0KKyAgICBib29sIHN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKFZNJiB2bSkgeyByZXR1cm4gc3Ry
dWN0dXJlKHZtKS0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQoKTsgfQogICAgIHZvaWQgcmVpZnlB
bGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
QnV0dGVyZmx5KiBhbGxvY2F0ZU1vcmVPdXRPZkxpbmVTdG9yYWdlKFZNJiwgc2l6ZV90IG9sZFNp
emUsIHNpemVfdCBuZXdTaXplKTsKQEAgLTgwMyw3ICs4MDMsNyBAQCBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoVk0mIHZt
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVj
dCgpKTsKLSAgICAgICAgQVNTRVJUKCFpc0dsb2JhbE9iamVjdCgpIHx8ICgoSlNPYmplY3QqKXN0
cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVCghaXNH
bG9iYWxPYmplY3QoKSB8fCAoKEpTT2JqZWN0KilzdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3Qo
KSkgPT0gdGhpcyk7CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3Qo
KTsKICAgICB9CiAgICAgICAgIApAQCAtODg3LDggKzg4Nyw4IEBAIGNsYXNzIEpTT2JqZWN0IDog
cHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHRoaXMpKTsKLSAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVE
aXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChnZXRQ
cm90b3R5cGVEaXJlY3Qodm0pKSk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmpl
Y3QoKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5oYXNQb2x5UHJvdG8oKSB8fCBn
ZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVh
cDo6aGVhcChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUodm0pLT5pc09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbyh2bSkpOwogICAg
IH0KIApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIGJvb2wgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIGdldE93bk5vbkluZGV4UHJvcGVydHlT
bG90KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90
JiwgSlNDZWxsKiwgdW5zaWduZWQsIFByb3BlcnR5T2Zmc2V0KTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eVNsb3QmLCBKU0Nl
bGwqLCB1bnNpZ25lZCwgUHJvcGVydHlPZmZzZXQpOwogICAgIHZvaWQgZmlsbEN1c3RvbUdldHRl
clByb3BlcnR5U2xvdChWTSYsIFByb3BlcnR5U2xvdCYsIEN1c3RvbUdldHRlclNldHRlciosIHVu
c2lnbmVkLCBTdHJ1Y3R1cmUqKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0T3du
U3RhdGljUHJvcGVydHlTbG90KFZNJiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAg
LTEwNDgsOCArMTA0OCw4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ym9vbCBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBQdXREaXJlY3RJbmRleE1vZGUsIEFycmF5U3RvcmFnZSopOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0SW5kZXhTbG93T3JCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBQdXREaXJlY3RJbmRleE1vZGUpOwogICAgICAgICAKLSAgICB1bnNpZ25lZCBnZXROZXdWZWN0
b3JMZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCB1bnNpZ25lZCBjdXJyZW50VmVjdG9yTGVuZ3Ro
LCB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoLCB1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKLSAgICB1
bnNpZ25lZCBnZXROZXdWZWN0b3JMZW5ndGgodW5zaWduZWQgZGVzaXJlZExlbmd0aCk7CisgICAg
dW5zaWduZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKFZNJiwgdW5zaWduZWQgaW5kZXhCaWFzLCB1bnNp
Z25lZCBjdXJyZW50VmVjdG9yTGVuZ3RoLCB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoLCB1bnNpZ25l
ZCBkZXNpcmVkTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBnZXROZXdWZWN0b3JMZW5ndGgoVk0mLCB1
bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKIAogICAgIEFycmF5U3RvcmFnZSogY29uc3RydWN0Q29u
dmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyhWTSYsIHVuc2lnbmVkIG5l
ZWRlZExlbmd0aCk7CiAgICAgICAgIApAQCAtMTA5NSw3ICsxMDk1LDcgQEAgY2xhc3MgSlNOb25G
aW5hbE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAg
IEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAg
IEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKHZtKS0+aGFzSW5saW5lU3RvcmFnZSgpKTsKICAgICAg
ICAgQVNTRVJUKGNsYXNzSW5mbyh2bSkpOwogICAgIH0KIH07CkBAIC0xMTQ4LDcgKzExNDgsNyBA
QCBjbGFzcyBKU0ZpbmFsT2JqZWN0IGZpbmFsIDogcHVibGljIEpTT2JqZWN0IHsKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0
eSgpID09IHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSh2bSktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlKHZtKS0+aW5s
aW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8odm0pKTsKICAgICB9CiAK
QEAgLTEyNzUsMTYgKzEyNzUsMTYgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6Om51a2VTdHJ1Y3R1
cmVBbmRTZXRCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3QKICAgICBtX2J1
dHRlcmZseS5zZXQodm0sIHRoaXMsIGJ1dHRlcmZseSk7CiB9CiAKLWlubGluZSBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCitpbmxpbmUgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERh
dGEpCiB7Ci0gICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0Nl
bGwoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEodmFsdWUuYXNDZWxsKCksIGNhbGxEYXRh
KSA6IENhbGxUeXBlOjpOb25lOworICAgIENhbGxUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgp
ID8gdmFsdWUuYXNDZWxsKCktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodmFsdWUuYXND
ZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlOjpOb25lOwogICAgIEFTU0VSVChyZXN1bHQgPT0g
Q2FsbFR5cGU6Ok5vbmUgfHwgdmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1pbmxpbmUgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTVmFsdWUg
dmFsdWUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCitpbmxpbmUgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKIHsKLSAgICBDb25zdHJ1Y3RUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2Vs
bCgpID8gdmFsdWUuYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEodmFs
dWUuYXNDZWxsKCksIGNvbnN0cnVjdERhdGEpIDogQ29uc3RydWN0VHlwZTo6Tm9uZTsKKyAgICBD
b25zdHJ1Y3RUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh2YWx1ZS5hc0NlbGwoKSwgY29uc3RydWN0
RGF0YSkgOiBDb25zdHJ1Y3RUeXBlOjpOb25lOwogICAgIEFTU0VSVChyZXN1bHQgPT0gQ29uc3Ry
dWN0VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1YwogICAg
ICAgICBKU1R5cGUgdHlwZSA9IGNlbGwtPnR5cGUoKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgICAgIGNhc2UgR2V0dGVyU2V0dGVyVHlwZToKLSAgICAgICAgICAgIGZpbGxHZXR0ZXJQ
cm9wZXJ0eVNsb3Qoc2xvdCwgY2VsbCwgYXR0cmlidXRlcywgb2Zmc2V0KTsKKyAgICAgICAgICAg
IGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qodm0sIHNsb3QsIGNlbGwsIGF0dHJpYnV0ZXMsIG9mZnNl
dCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBDdXN0b21HZXR0ZXJT
ZXR0ZXJUeXBlOgogICAgICAgICAgICAgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdCh2bSwg
c2xvdCwganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGNlbGwpLCBhdHRyaWJ1dGVzLCBzdHJ1
Y3R1cmUpOwpAQCAtMTQ1NSwyMyArMTQ1NSwyNCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYQog
ewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKLSAgICBBU1NFUlQoIXN0cnVj
dHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIEFTU0VSVCghc3RydWN0
dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCFz
dHJ1Y3R1cmUodm0pLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOworICAgIEFTU0VSVCgh
c3RydWN0dXJlKHZtKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKIAogICAg
IHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgMCwgc2xvdCk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJv
cGVydHlNYXlCZUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAo
dmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwotICAgIEFT
U0VSVCghc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7Ci0gICAgQVNT
RVJUKCFzdHJ1Y3R1cmUoKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKKyAg
ICBBU1NFUlQoIXN0cnVjdHVyZSh2bSktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7Cisg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkpOwogCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5k
ZXgudmFsdWUoKSwgdmFsdWUsIDAsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAg
ICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZXhlYy0+dm0oKSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKIH0KIAogaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC0xNTA3LDE4ICsxNTA4
LDIwIEBAIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5CdXR0ZXJmbHkoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KQogCiBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpidXR0ZXJmbHlQcmVDYXBhY2l0eSgpCiB7
Ci0gICAgaWYgKFVOTElLRUxZKGhhc0luZGV4aW5nSGVhZGVyKCkpKQotICAgICAgICByZXR1cm4g
YnV0dGVyZmx5KCktPmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFjaXR5KHN0cnVjdHVyZSgpKTsK
KyAgICBWTSYgdm0gPSAqdGhpcy0+dm0oKTsKKyAgICBpZiAoVU5MSUtFTFkoaGFzSW5kZXhpbmdI
ZWFkZXIodm0pKSkKKyAgICAgICAgcmV0dXJuIGJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRlcigp
LT5wcmVDYXBhY2l0eShzdHJ1Y3R1cmUodm0pKTsKICAgICByZXR1cm4gMDsKIH0KIAogaW5saW5l
IHNpemVfdCBKU09iamVjdDo6YnV0dGVyZmx5VG90YWxTaXplKCkKIHsKLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIFZNJiB2bSA9ICp0aGlzLT52bSgp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgIHNpemVfdCBwcmVD
YXBhY2l0eTsKICAgICBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXM7Ci0gICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciA9IHRoaXMtPmhhc0luZGV4aW5nSGVhZGVyKCk7CisgICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciA9IHRoaXMtPmhhc0luZGV4aW5nSGVhZGVyKHZtKTsKIAogICAg
IGlmIChVTkxJS0VMWShoYXNJbmRleGluZ0hlYWRlcikpIHsKICAgICAgICAgcHJlQ2FwYWNpdHkg
PSBidXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFjaXR5KHN0cnVjdHVyZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4
IDUyN2ZjMjI5NWZkMTZiMjIzNzI2OWI3YzNmNzg0Y2E4MDkzOGVjNDcuLmVmYjBmNTM1MzQ2MjRi
ZmZlZjk4NGM0MTM5Zjk5OWIyNzgyM2ZiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0yOTYsNyArMjk2LDcgQEAgQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUo
KSkKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVjdHVyZUV4dGVu
c2libGUodm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG9mZnNldCA9
IHByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHN0cnVjdHVyZUlELCBzdHJ1Y3R1cmUpOwpAQCAtMzA0LDEyICszMDQsMTIgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZh
bHVlKTsKICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAg
ICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKLSAgICAgICAg
ICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwor
ICAgICAgICAgICAgdGhpcy0+c3RydWN0dXJlKHZtKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3Bl
cnRpZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSB0aGlzLT5zdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gdGhp
cy0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZSgKICAgICAgICAgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9m
ZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkgewpAQCAtMzE4LDcgKzMxOCw3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgICAgIAogICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRl
cmZseSA9IGJ1dHRlcmZseSgpOwogICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG5ld1N0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewotICAgICAgICAgICAgQVNTRVJUKG5ld1N0
cnVjdHVyZSAhPSB0aGlzLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlICE9IHRoaXMtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAgbmV3QnV0dGVyZmx5
ID0gYWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFjaXR5LCBuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgbnVrZVN0cnVjdHVy
ZUFuZFNldEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgICAg
IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlz
U3RydWN0dXJlRXh0ZW5zaWJsZSgpKQorICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAh
aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gV2Ugd2FudCB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFm
dGVyIHRoaXMgb2JqZWN0IGhhcyBzd2l0Y2hlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggM2U2ODg3ZTU5NWM4NzU2MTk3Y2Q2MGZkZDJjZjQyMWQ2
OWFjNjU5Zi4uNzVlMWUyM2NhYWZlZmI4YzdkMDAxYzYxYzU5NDc1ODBmM2FkNjc2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgSlNQcm9taXNlOjppbml0aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiB7CiAgICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6
ZVByb21pc2UgPSBnbG9iYWxPYmplY3QtPmluaXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEoaW5pdGlhbGl6ZVByb21pc2UsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZXhlYy0+dm0oKSwgaW5pdGlhbGl6ZVByb21pc2UsIGNhbGxE
YXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEpTUHJvbWlz
ZSogSlNQcm9taXNlOjpyZXNvbHZlKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCiAKICAgICBhdXRvKiBwcm9taXNlUmVzb2x2ZUZ1bmN0aW9uID0gZ2xvYmFsT2Jq
ZWN0LnByb21pc2VSZXNvbHZlRnVuY3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShwcm9taXNlUmVzb2x2ZUZ1bmN0aW9u
LCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIHBy
b21pc2VSZXNvbHZlRnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGQ0N2I4ZDQ1NDNjNDZkZjc0NGZhYzhjNzdiYzBkYzIyOTJlODNhZDcu
LmM1YzUxMmJkNWQyMjkyMjI0MTcxOTM0NjRkNWUxZTNhODJlZjM5ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAK
QEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmpzQ2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCh2bSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1Rh
cmdldCgpOwogICAgIGlmIChuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAppbmRleCBkN2Y3
ZDc4OWZlMTQzZjcwOTYyMWUzYzRlYWI5YzI1OGE3NTM0N2QwLi4xNDdhOTQ5ZWFkZThiMjI4NTc5
NjFlMDE0YjkwNTE0NDA2NTk3YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEpTVmFsdWUg
bmV3UHJvbWlzZUNhcGFiaWxpdHkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ByCiB7CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpOwog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRD
YWxsRGF0YShuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGV4ZWMtPnZtKCksIG5ld1Byb21pc2VD
YXBhYmlsaXR5RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGU6Ok5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAt
OTIsNyArOTIsNyBAQCBKU1Byb21pc2VEZWZlcnJlZDo6SlNQcm9taXNlRGVmZXJyZWQoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxsRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBKU1ZhbHVlIHZhbHVlKQogewogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggM2Y3ZjNmMTQ5
N2QwYWEyYzllNTM0NGU3YTNhOGVmNDBiMTYwZjgwYy4uY2NjMDAxNTYxMDIyYmY2NmNiZjJlOGIz
NDJmNmZlZTZkNzZhZGVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKQEAgLTE2MSw5ICsxNjEsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNj
ZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmICghc2xvdC5p
c0NhY2hlYWJsZVZhbHVlKCkKLSAgICAgICAgICAgIHx8ICFnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZSgpLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkKLSAgICAgICAgICAgIHx8IChnbG9i
YWxPYmplY3QtPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGll
c0V4Y2x1ZGluZ1Byb3RvKCkgJiYgZ2V0T3JQdXQgPT0gUHV0KSkgeworICAgICAgICAgICAgfHwg
IXN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCisgICAgICAgICAgICB8
fCAoc3RydWN0dXJlLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGlu
Z1Byb3RvKCkgJiYgZ2V0T3JQdXQgPT0gUHV0KSkgewogICAgICAgICAgICAgLy8gV2Uga25vdyB0
aGUgcHJvcGVydHkgd2lsbCBiZSBhdCBnbG9iYWwgc2NvcGUsIGJ1dCB3ZSBkb24ndCBrbm93IGhv
dyB0byBjYWNoZSBpdC4KICAgICAgICAgICAgIEFTU0VSVCghc2NvcGUtPm5leHQoKSk7CiAgICAg
ICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShHbG9iYWxQcm9wZXJ0eSwgbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MpLCAwLCAwLCAwLCAwLCAwKTsKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgY29uc3QgSWRlbnRpZgogICAgICAgICB9CiAKICAgICAgICAgCi0gICAgICAgIFdhdGNo
cG9pbnRTdGF0ZSBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmVuc3VyZVByb3Bl
cnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KGV4ZWMtPnZtKCksIHNsb3QuY2FjaGVkT2Zmc2V0
KCkpLT5zdGF0ZSgpOworICAgICAgICBXYXRjaHBvaW50U3RhdGUgc3RhdGUgPSBzdHJ1Y3R1cmUt
PmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KHZtLCBzbG90LmNhY2hlZE9m
ZnNldCgpKS0+c3RhdGUoKTsKICAgICAgICAgaWYgKHN0YXRlID09IElzV2F0Y2hlZCAmJiBnZXRP
clB1dCA9PSBQdXQpIHsKICAgICAgICAgICAgIC8vIFRoZSBmaWVsZCBleGlzdHMsIGJ1dCBiZWNh
dXNlIHRoZSByZXBsYWNlbWVudCB3YXRjaHBvaW50IGlzIHN0aWxsIGludGFjdC4gVGhpcyBpcwog
ICAgICAgICAgICAgLy8ga2luZCBvZiBkYW5nZXJvdXMuIFdlIGhhdmUgdHdvIG9wdGlvbnM6CkBA
IC0xODIsNyArMTgzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNT
dGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAgICAgICAgIC8v
IFdlIGdvIHdpdGggb3B0aW9uICgyKSBoZXJlIGJlY2F1c2UgaXQgc2VlbXMgbGVzcyBldmlsLgog
ICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoR2xvYmFsUHJvcGVydHksIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIDAsIDAsIDApOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKEdsb2JhbFByb3BlcnR5LCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLCAw
LCAwLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1h
a2VUeXBlKEdsb2JhbFByb3BlcnR5LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCBz
dHJ1Y3R1cmUsIDAsIDAsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCA2
ZjIzOWM1M2FjNTk1MDY2ODYzMzdmOThiMjE3ZmUyNDE1ODRmNzRiLi5mNmI3NzNhN2FkMWJmNmU0
Y2Q5NmVlMjczYmI2ZTE5ZmNmYTkyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oCkBAIC03MCw4ICs3MCw2IEBAIGNsYXNzIEpTU2NvcGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpOwogICAgIEpTU2NvcGUq
IG5leHQoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFZNJik7CiAgICAgSlNPYmplY3QqIGdsb2JhbFRoaXMo
KTsKIAogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZShWTSYpOwpAQCAtMTMxLDE2ICsxMjks
NiBAQCBpbmxpbmUgSlNTY29wZSogSlNTY29wZTo6bmV4dCgpCiAgICAgcmV0dXJuIG1fbmV4dC5n
ZXQoKTsKIH0KIAotaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxPYmplY3Qo
KQoteyAKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpOwotfQotCi1pbmxp
bmUgSlNHbG9iYWxPYmplY3QqIEpTU2NvcGU6Omdsb2JhbE9iamVjdChWTSYgdm0pCi17IAotICAg
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKTsKLX0KLQogaW5saW5lIFJlZ2lz
dGVyJiBSZWdpc3Rlcjo6b3BlcmF0b3I9KEpTU2NvcGUqIHNjb3BlKQogewogICAgICp0aGlzID0g
SlNWYWx1ZShzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAKaW5k
ZXggNGI2ODc5YjRkNGZhZWRlNjNhMzg5Y2Y5NTBiMGY4YTcyYzMwYWM4My4uNzJjZjVjYjU0ZGUw
OTgyYmM5ZDExMjA4NDI5MDZlNWI3ZTA5MzZlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0LmNwcApAQCAtNTEsMTIgKzUxLDEyIEBAIGJvb2wgSlNTZXQ6OmlzSXRlcmF0b3JQ
cm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNT
ZXRQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1
Y3R1cmUoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIC8vIFRoaXMgaXMgdGhlIGZh
c3QgY2FzZS4gTWFueSBzZXRzIHdpbGwgYmUgYW4gb3JpZ2luYWwgc2V0LgogICAgIGlmIChzdHJ1
Y3R1cmUgPT0gZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGdldFByb3Rv
dHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5qc1NldFByb3RvdHlwZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
ZXRJdGVyYXRvci5jcHAKaW5kZXggZTJiODkxYTAyNzQ1MmY0MTFjOTM0ZGVjMzU2M2YwYTg3Njk2
NjBjYS4uZDQ1MWUwNTlmZTM1YzhmZWNmMTA5ZmU0NmVjZWJmNDUxZjZlMzgyMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgSlNWYWx1ZSBKU1NldEl0ZXJhdG9yOjpjcmVhdGVQYWlyKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWwKICAgICBhcmdzLmFwcGVuZChrZXkpOwog
ICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5qc0NhbGxl
ZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoY2FsbEZyYW1lLT52bSgpKTsKICAg
ICByZXR1cm4gY29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCAwLCBnbG9iYWxPYmplY3QsIGFyZ3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRl
cmF0b3IuY3BwCmluZGV4IDZkMjAxZDljYTAzNThjOTk5ZDQ3N2MwYTk5NzY2M2I1NzNmN2QzZDAu
LmViYzlmNTcxNjIxN2ZlYmU4Yjk1ZGI0NDk0MWM3MDk1NWQ5MzY5MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuY3BwCkBAIC01Myw3
ICs1Myw3IEBAIEpTU3RyaW5nSXRlcmF0b3IqIEpTU3RyaW5nSXRlcmF0b3I6OmNsb25lKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIGl0ZXJhdGVkU3RyaW5nID0gZ2V0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZFN0cmluZ1ByaXZhdGVOYW1l
KCkpOwogICAgIEpTVmFsdWUgbmV4dEluZGV4ID0gZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdJdGVyYXRvck5leHRJbmRleFByaXZhdGVOYW1lKCkp
OwogCi0gICAgYXV0byBjbG9uZSA9IEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVj
LT5qc0NhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
YXNTdHJpbmcoaXRlcmF0ZWRTdHJpbmcpKTsKKyAgICBhdXRvIGNsb25lID0gSlNTdHJpbmdJdGVy
YXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSktPnN0
cmluZ0l0ZXJhdG9yU3RydWN0dXJlKCksIGFzU3RyaW5nKGl0ZXJhdGVkU3RyaW5nKSk7CiAgICAg
Y2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3Ry
aW5nSXRlcmF0b3JOZXh0SW5kZXhQcml2YXRlTmFtZSgpLCBuZXh0SW5kZXgpOwogICAgIHJldHVy
biBjbG9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4
IGJkMjRkZmViMGIyNmM1Njg5MTUzZGU4ODAwMmZjYTE3ZTljZTY1MGUuLjMwNWYzNGVhMGJjNjMx
NjI1OTNlNWQ1Mjc4MTJiNjhlOTg5MGQ5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmNwcApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBy
ZWlmeVN0YXRpY0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBK
U09iamVjdCYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC5nbG9iYWxPYmpl
Y3Qodm0pOwogICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBudWxscHRyOwogICAgIGlmICh2YWx1ZS5h
Y2Nlc3NvckdldHRlcigpKSB7CiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCByZWlmeVN0YXRp
Y0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYg
dGhpc09iamUKIAogYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYgdm0sIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnksIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSk7CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29y
T3JMYXp5UHJvcGVydHkpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgYm9vbCBpc0Fj
Y2Vzc29yID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
cjsKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYgdm0s
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBIYXNoVGFibGUKICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAvLyBJZiBhIHByb3BlcnR5IGlzIGV2ZXIg
ZGVsZXRlZCBmcm9tIGFuIG9iamVjdCB3aXRoIGEgc3RhdGljIHRhYmxlLCB0aGVuIHdlIHJlaWZ5
CiAgICAgICAgIC8vIGFsbCBzdGF0aWMgZnVuY3Rpb25zIGF0IHRoYXQgdGltZSAtIGFmdGVyIHRo
aXMgd2Ugc2hvdWxkbid0IGJlIHJlLWFkZGluZyBhbnl0aGluZy4KLSAgICAgICAgaWYgKHRoaXNP
YmplY3QtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkpCisgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5h
bWUsICplbnRyeSwgKnRoaXNPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAppbmRleCBiZmVlNTFlMGIxYWNiNDQ2YTM1MDgyYjQ1YmYwMWU5MzhhNjg4YWY3Li44OTBh
MTZiOTJkNzVlODQwZWY5ODliYThkYWVhZGRjOWEzYjE3M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjIyLDcgKzIyMiw3IEBAIGlubGluZSBCdWlsdGluR2Vu
ZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JTZXR0ZXJHZW5lcmF0b3IoKSBj
b25zdAogCiBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFibGUoVk0mIHZt
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwgSlNP
YmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQo
KSkKKyAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBlbnRyeSA9IHRhYmxlLmVudHJ5KHByb3Bl
cnR5TmFtZSk7CkBAIC0yNTcsOCArMjU3LDggQEAgaW5saW5lIGJvb2wgcmVwbGFjZVN0YXRpY1By
b3BlcnR5U2xvdChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAg
ICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghdGhpc09iamVjdC0+c3RhdGljUHJvcGVy
dGllc1JlaWZpZWQoKSkKLSAgICAgICAgdGhpc09iamVjdC0+SlNPYmplY3Q6OnNldFN0cnVjdHVy
ZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKHZtLCB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCAwKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5z
dGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpCisgICAgICAgIHRoaXNPYmplY3QtPkpTT2JqZWN0
OjpzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbih2
bSwgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKSwgcHJvcGVydHlOYW1lLCAwKSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTMyNSwxOSArMzI1LDE5IEBAIGlubGluZSB2b2lkIHJlaWZ5U3Rh
dGljUHJvcGVydHkoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJv
cGVyCiAgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
QWNjZXNzb3IpCiAgICAgICAgICAgICByZWlmeVN0YXRpY0FjY2Vzc29yKHZtLCB2YWx1ZSwgdGhp
c09iaiwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iai5w
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVj
dHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCh2bSksIHByb3BlcnR5TmFt
ZSwgdmFsdWUuYnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2
YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pIHsKICAgICAg
ICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpET01KSVRGdW5j
dGlvbikgewogICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAg
ICAgICAgICAgICAgICB2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZS5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2Jh
bE9iamVjdCh2bSksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKICAgICAg
ICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2ln
bmF0dXJlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3RO
YXRpdmVGdW5jdGlvbigKLSAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICB2bSwgdGhp
c09iai5nbG9iYWxPYmplY3Qodm0pLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3Ro
KCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVj
dG9yLmNwcAppbmRleCA1ZWIyMzRkOTE5MmFmYjNkNjE0NWIzMGUxYWE5YTYxYjlkYzk0M2RmLi5l
ZTg1ZTAxY2EzMjQzNmE5YmU5MjIyNGJkYjVjZjdiMGRhYWQzZmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
U3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1
Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25D
YWxsRGF0YTsKLSAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOworICAgIENhbGxUeXBlIGFk
ZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uLCBhZGRl
ckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDJlN2NiNzJmZDgyNzMyMWQzMDU1ZWU2YmE3
ODM5YTg4OWQ4NzI1ZGIuLjM0NzFkZGUzZjk1NTg1MjdiZWVkNGQ1N2NkMWM5ZDhhNWE2YzJkNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgTnVtYmVyUHJvdG90eXBlOjppbmZvKCktPmNsYXNzTmFt
ZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9i
amVjdCh2bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKQEAgLTc5LDggKzc5LDggQEAgdm9p
ZCBOdW1iZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOdW1iZXJQcm90b3R5
cGUqIG51bWJlclByb3RvdHlwZSkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJQT1NJVElWRV9JTkZJTklUWSIpLCBqc0RvdWJs
ZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPnBhcnNlSW50LCBudW1iZXJQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
LT5wYXJzZUludEZ1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cGFyc2VGbG9hdCwgbnVtYmVyUHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KS0+cGFyc2VGbG9hdEZ1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cGFyc2VJbnQsIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KHZtKS0+cGFyc2VJbnRGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnBhcnNlRmxvYXQsIG51bWJlclByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KHZtKS0+cGFyc2VGbG9hdEZ1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlz
SW50ZWdlciIpLCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc0ludGVnZXIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBOdW1iZXJJc0ludGVnZXJJ
bnRyaW5zaWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDk5MjEwZTQ5ZGJhYzc0NzQwN2IxZTkwZDE1ZmY5Y2Vm
MWU2MGYwZmYuLjgxNTJiZTdiM2FhZTYzZTU0YWQ4Y2UxMDUzOTMxMDQxY2EzYjUyMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogLy8gRVMgMTku
MS4xLjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29u
c3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0b3IqPihleGVjLT5qc0NhbGxlZSgpKTsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0Q29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpOwotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2
bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
V2UgbmVlZCB0byBjaGVjayBuZXdUYXJnZXQgY29uZGl0aW9uIGluIHRoaXMgY2FsbGVyIHNpZGUg
aW5zdGVhZCBvZiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZSBzaWRl
LgpAQCAtMzEzLDcgKzMxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICh0YXJnZXRDYW5QZXJmb3JtRmFzdFB1
dCkgewotICAgICAgICAgICAgaWYgKCFzb3VyY2UtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkp
IHsKKyAgICAgICAgICAgIGlmICghc291cmNlLT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkp
IHsKICAgICAgICAgICAgICAgICBzb3VyY2UtPnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhleGVj
KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAg
ICAgICAgICAgfQpAQCAtNTI0LDcgKzUyNCw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2MpCiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFn
ZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
ICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUp
IHsKKyAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgZ2V0LCBjYWxsRGF0YSkgPT0gQ2Fs
bFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC01NDAsNyArNTQwLDcgQEAg
Ym9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzYykKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwogICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNh
bGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgaWYgKGdldENhbGxEYXRh
KHZtLCBzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJl
IGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCmluZGV4IDJhMTJkZjU1MzBjZmY3ZDliNGZlMzIzYWQyN2I4NzU4MTRkZTRjYjEuLjA4
YTNhMDVkZDBkYzVhM2RjNmI0YWE0YTcxMTY5NDllNTBhYTkwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMTU0LDcgKzE1
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTVmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgaWYgKGdldENhbGxEYXRhKGdldCwg
Y2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQorICAgIGlmIChnZXRDYWxsRGF0YSh2bSwgZ2V0
LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImludmFsaWQgZ2V0dGVyIHVzYWdlIikp
OwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5
S2V5KGV4ZWMpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpT
VmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQorICAg
IGlmIChnZXRDYWxsRGF0YSh2bSwgc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
ImludmFsaWQgc2V0dGVyIHVzYWdlIikpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVj
LT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gSWYgSXNDYWxsYWJsZSh0b1N0cmluZykgaXMgZmFs
c2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvU3RyaW5nLCBjYWxsRGF0YSk7
CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgdG9TdHJpbmcsIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA1N2FlYzAzMzY3YWZjZjQ1ZjUxZTU4NGZl
MzY4NTU5NTVhOGMxN2FlLi5jMTFkOTA1YzhkNjdiZWQ0OTVmYWQzNGFhMjk4MzE4NGQxMGM5N2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAt
MTIwLDE3ICsxMjAsNiBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wganNJc0Z1bmN0
aW9uVHlwZShKU1ZhbHVlIHYpCi17Ci0gICAgaWYgKHYuaXNPYmplY3QoKSkgewotICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYp
OwotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3Qs
IGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBiYXNlLCBib29sJiBzYXdQb2x5UHJv
dG8pCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDlhOTdiYTk1ZWVlOGY3MjU2MTJiYWI3MGM3
YjhiYjI3MWM3MzZhYzkuLmY4YWE5ZjdlYWY5NTY1NmQzNzUzNjZlMGViOTI4ZjU1YjQ0YTQzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTM1LDcg
KzM1LDYgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqLCBK
U1ZhbHVlLCBKU1ZhbHVlKTsKIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1l
KiwgSlNWYWx1ZSk7CiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiwg
SlNWYWx1ZSk7Ci1ib29sIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1ZSk7CiBzaXplX3Qgbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiwgSlNDZWxsKiwgYm9vbCYgc2F3UG9seVByb3Rv
KTsKIAogQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBK
U1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCA5YzRhODAzNTE3YmUxMWQxYzE3
ODU1MjkwYjBkNTJlMmIxYjZjNGEwLi41M2EyNDYxNWExNzMzOGJhY2YwMjc2YTYzOGMzNDFkMTFi
YWI3NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFt
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxG
CiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoc2NvcGUpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgQVNTRVJUKCZnbG9iYWxPYmplY3QtPnZtKCkgPT0gJnZtKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGU4ZDQ4NWIzMGZmMjBiN2IyZmMyYzdjNmU5NGI5OTBiMDRlM2I4YTMuLjA0ZDFhNTg3NDg3
MjRkYTUxZTNiNjMyM2ZjZThhZWMxMzgwM2M1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxNCwxMyArMzE0LDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjUmVnRXhwQ3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYykKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQXJnTGlzdCBh
cmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGV4
ZWMsIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpLCBhcmdzLCBleGVjLT5qc0NhbGxlZSgpLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGV4ZWMsIGpzQ2FzdDxJbnRl
cm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgp
KSwgYXJncywgZXhlYy0+anNDYWxsZWUoKSwgZXhlYy0+bmV3VGFyZ2V0KCkpKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RSZWdFeHAoZXhlYywganNDYXN0PEludGVybmFsRnVuY3Rp
b24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIGV4ZWMtPmpzQ2Fs
bGVlKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4cChleGVj
LCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoZXhlYy0+dm0oKSksIGFyZ3MsIGV4ZWMtPmpzQ2FsbGVlKCkpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCmluZGV4IDU5MmFmNDFjYTFiZDg1MjA5NGE4MTE2ZmMxYzFkNWMxOTA2Mjlh
NmUuLjVkYWQ2NDBmZWVhMzg3ODA1NzQ2NjUzYjFkZjMxZjQzNmMxOTZkMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC01
MDQsNyArNTA0LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0
YWNrVHJhY2VzKCkKICAgICAgICAgICAgICAgICBGcmFtZVR5cGUgcmVzdWx0ID0gRnJhbWVUeXBl
OjpVbmtub3duOwogICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAg
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlOwotICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoY2FsbGVlQ2VsbCwgY2FsbERhdGEpOworICAgICAgICAgICAgICAgIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVlQ2VsbCwgY2FsbERhdGEpOwogICAgICAgICAgICAg
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gRnJhbWVUeXBlOjpIb3N0OwogCkBAIC03MTYsNyArNzE2LDcgQEAgU3RyaW5nIFNh
bXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6Om5hbWVGcm9tQ2FsbGVlKFZNJiB2bSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2
bSktPmdsb2JhbEV4ZWMoKTsKICAgICBhdXRvIGdldFByb3BlcnR5SWZQdXJlT3BlcmF0aW9uID0g
WyZdIChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgLT4gU3RyaW5nIHsKICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKICAgICAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShpZGVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAppbmRl
eCA5YzI0YzBkOTIyN2Q0ZGZjMzI0YjYyYzE5YmNiZDVmODYyNmU2YjE3Li5kMWI4YzIwNjhlMjNi
Yjg2Mjg0ODY1ZWYyNDJkMmM3N2Q4ODY1ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IFNjb3BlZEFyZ3VtZW50czo6b3ZlcnJpZGVUaGluZ3MoVk0mIHZtKQogICAgIAogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3RhYmxlLT5sZW5n
dGgoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgbV9jYWxsZWUu
Z2V0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBn
bG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3Qodm0pLT5hcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIAogICAgIHN0b3JhZ2VIZWFkZXIoKS5vdmVycm9kZVRo
aW5ncyA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDVlZGY3YWEyOTQyODRhNzQ4ODI1ZTVlYjBhZWFkMTc2
MzRjNDAwNDcuLjM5MGNkZGVjNWNiYjAzNTRhNjRhNjdhZWUxZTJkNDgyYzY3ZGMwNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3Bw
CkBAIC0xNzcsNyArMTc3LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IoCiAgICAgQVNTRVJUKHZtLT5oZWFwLmlzRGVmZXJyZWQoKSk7CiAgICAgQVNTRVJU
KGVuZENvbHVtbigpICE9IFVJTlRfTUFYKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3QoKnZtKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIGlmIChjbGFzc0luZm8oKnZtKSA9
PSBFdmFsRXhlY3V0YWJsZTo6aW5mbygpKSB7CkBAIC0zMzEsNyArMzMxLDcgQEAgSlNPYmplY3Qq
IFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogICAgIERlZmVyR0NG
b3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKIAogICAgIGlmICh2bS5nZXRBbmRDbGVhckZhaWxO
ZXh0TmV3Q29kZUJsb2NrKCkpIHsKLSAgICAgICAgYXV0byYgc3RhdGUgPSAqc2NvcGUtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIGF1dG8mIHN0YXRlID0gKnNjb3BlLT5n
bG9iYWxPYmplY3Qodm0pLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJGb3JjZWQgRmFpbHVyZSIpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmY5ZDJiMmZlNThmYjA3M2IyY2Zl
NTYzYzM3YmVhYzY3ZDkzNTI2Yy4uMDQxMmU1MWJkNWFmMWVlZTUyMmYxOWJhZmFhYjEzOWJkYTVk
ZjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5n
bG9iYWxPYmplY3Qodm0pOwogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBD
YWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlv
bkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxE
YXRhKTsKKyAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2
bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoVU5MSUtF
TFkoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwCmluZGV4IGU5OTI5ODhlNGNiODM2ZDM2YWQxZTZiZGRlMjU1YzFjYzY1N2EwYzcuLmE2ODgy
Mzk1YmFmYWQwMTg0ODJjNjg5ZDQwZGMyNDU2NmJkOWE4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0xMTcs
NyArMTE3LDcgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgdW5zaWduZWQgaSwKICAgICAvLyBUbyBzYXZlIGEgc2Vw
YXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4K
ICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHks
IGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhl
IHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgeworICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2
bSkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICB9CkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBTcGFy
c2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJy
YXksIHVuc2lnbmVkIGkKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2Ug
Zmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21t
b24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90
CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUg
ZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAobW9kZSAhPSBQdXREaXJlY3RJbmRleExp
a2VQdXREaXJlY3QgJiYgcmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc1N0cnVjdHVyZUV4
dGVuc2libGUoKSkgeworICAgIGlmIChtb2RlICE9IFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVj
dCAmJiByZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2
bSkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBBU0NJSUxpdGVyYWwoTm9uRXh0ZW5z
aWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3IpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMGIxMGQ4
ZjQwYjgzNjNjYmQwNDM2ODk4NmMzMzliNTk1MTJiMjA5ZS4uZGE2MzIwMGQ0NDU0YTg4N2M3OWUx
ZTE3YzgwZWYwODhiMzBmZmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApAQCAtMTMwLDggKzEzMCw4IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRl
KiBleGVjKQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RX
aXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPnN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGI1MGIxNzRjZjkwZTM3YTQ5ZTEyNzZkNGNiZTJj
MGUxMDYyOWZjYTcuLjZiZjkxYmQzMmUyNmU2YWNmZjU4ODMyNTM0MTcyNzQ5NmUyNmYyZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cApAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBs
YWNlVXNpbmdSZWdFeHBTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAKICAgICBTdHJp
bmcgcmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZXBsYWNlVmFsdWUsIGNhbGxEYXRhKTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlVmFsdWUsIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgcmVwbGFj
ZW1lbnRTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtNzkyLDcgKzc5Miw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHJldHVybiBqc1N0cmluZzsKIAogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEocmVw
bGFjZVZhbHVlLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YSh2bSwgcmVwbGFjZVZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxU
eXBlOjpOb25lKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgICAg
IGFyZ3MuYXBwZW5kKGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgbWF0Y2hTdGFydCwgc2VhcmNo
U3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkpKTsKQEAgLTE4MTIsNyArMTgxMiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5qc0NhbGxlZSgp
LT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc3RyaW5nKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywg
ZXhlYy0+anNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KHZtKS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgc3RyaW5nKSk7CiB9CiAKIGVudW0gY2xhc3MgTm9ybWFsaXphdGlvbkZvcm0gewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggYzU5NTliMmY1
NGU5Y2E2YmMyYjg3YTQ1NGFiMTZlOTk4N2Q1OTE3ZC4uYTdmZWY0NTQyMjYzZjBmY2FjYzJhZjc4
NjAwMGQzOWJhYmJhYzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmZpbmRTdHJ1Y3R1
cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiYgc3QKIAog
UHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5VGFibGUoVk0mIHZt
LCBib29sIHNldFByb3BlcnR5VGFibGUpCiB7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSBpbmZvKCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8o
KSA9PSBpbmZvKCkpOwogICAgIEFTU0VSVCghaXNBZGRpbmdQcm9wZXJ0eUZvclRyYW5zaXRpb24o
KSk7CiAgICAgCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwpAQCAtODk3LDcgKzg5Nyw3
IEBAIHZvaWQgU3RydWN0dXJlOjp3aWxsU3RvcmVWYWx1ZVNsb3coCiAgICAgSW5mZXJyZWRUeXBl
VGFibGU6OlN0b3JlZFByb3BlcnR5QWdlIGFnZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRp
b25UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZv
KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOwog
ICAgIEFTU0VSVCghaGFzQmVlbkRpY3Rpb25hcnkoKSk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKFZNOjpjYW5Vc2VKSVQoKSwgIldlIGRvbid0IHdhbnQgdG8gdXNlIG1lbW9yeSBmb3IgaW5m
ZXJyZWQgdHlwZXMgdW5sZXNzIHdlJ3JlIHVzaW5nIHRoZSBKSVQuIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAKaW5kZXggMjA1ZGVhNmIw
MjY4NzNjZTczOWM0MGVhYTg4MThhODk2NGQ0MWFlMS4uN2RjZGVhMjMxNDVjNmI2MjE0NDQ0MDNj
ZWQxMjEzNjEyZTlhNTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZUNhY2hlOjplbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTR2xv
YmFsTwogewogICAgIC8vIFdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBpbmxpbmUgY2FwYWNpdHkg
c3RhdGljIGFuYWx5c2lzIGZvciBzdWJjbGFzc2VzIGFuZCBhbGwgaW50ZXJuYWwgZnVuY3Rpb24g
Y29uc3RydWN0b3JzIGhhdmUgYSBkZWZhdWx0IGlubGluZSBjYXBhY2l0eSBvZiAwLgogICAgIElu
ZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBiYXNlU3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsK
LSAgICBpZiAocHJvdG90eXBlLT5hbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKCkgJiYgaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKSkKKyAgICBpZiAo
cHJvdG90eXBlLT5hbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGds
b2JhbE9iamVjdC0+dm0oKSkgJiYgaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKSkK
ICAgICAgICAgaW5kZXhpbmdUeXBlID0gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFz
aykgfCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7CiAKICAgICByZXR1cm4gY3JlYXRlRW1wdHlT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VTdHJ1Y3R1cmUtPnR5cGVJbmZv
KCksIGJhc2VTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpbmRleGluZ1R5cGUsIDAsIGZhbHNlLCBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaAppbmRleCA4Y2YyOGE4OWYxODUxMDY3ZjVjMTkxZGM4ZDIwZWI0MDJkNWQxZjUxLi42
YmQ4ZWY0ZmUyODgyMDYwNTcyNGNiMTMzNGU3OGZlZjI2MDZjYmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0xMTksNyArMTE5
LDcgQEAgQUxXQVlTX0lOTElORSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHUKIEFMV0FZU19JTkxJTkUgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpnZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgYm9vbCYgaGFzSW5mZXJyZWRUeXBlKQogewogICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09IGluZm8oKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpID09
IGluZm8oKSk7CiAKICAgICBQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0eVRhYmxlID0gZW5zdXJlUHJv
cGVydHlUYWJsZUlmTm90RW1wdHkodm0pOwogICAgIGlmICghcHJvcGVydHlUYWJsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDE5NjM2NTllM2YyNDhjOGFlMzliZGI1OTMzYTI5ZTY3YjY2OTg0ZjQuLmUwZmUyYTgx
NTMwYjUwNjYyZmY4OGE1ZDYyMWEzYWM1ZjU3YTBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFw
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsK
ICAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0
LT53ZWFrTWFwU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIEpTV2Vha01hcCogd2Vha01hcCA9IEpTV2Vha01hcDo6Y3Jl
YXRlKHZtLCB3ZWFrTWFwU3RydWN0dXJlKTsKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5j
dGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0
YSh2bSwgYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRk
ZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDAwMWM4NjUxMDIxMTA2NGU4MDc5NjQ0N2UxN2I0ZTJiNTc2MThjMTIuLjA3ZGQyZmIyYWQ4MzE4
M2YwMDAyZmI0MDZlZWY5MmIyZmIzY2U1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVy
bmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBT
dHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFr
U2V0U3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEpTV2Vha1NldCogd2Vha1NldCA9IEpTV2Vha1NldDo6Y3JlYXRlKHZt
LCB3ZWFrU2V0U3RydWN0dXJlKTsKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBDYWxs
RGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
KTsKKyAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwg
YWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5j
dGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggYTdmOTI3ZjliOWYwNWExNjFkMDZk
ZDkwMmExMWVmY2MyMDYyZDI2MS4uZGZmMTcwN2JjNzYzODQxYjY0YWQxN2VhYzlkOTJmZTYyZGY4
M2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmll
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAK
QEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cmVwb3J0Q2VsbChDZWxsUHJv
ZmlsZSYgcHJvZmlsZSwgaW50IGN5Y2xlSW5kZXgsIEhlYXBWZXJpZmllcgogCiAgICAgaWYgKHBy
b2ZpbGUuaXNMaXZlKCkgJiYgcHJvZmlsZS5pc0pTQ2VsbCgpKSB7CiAgICAgICAgIEpTQ2VsbCog
anNDZWxsID0gcHJvZmlsZS5qc0NlbGwoKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBqc0NlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpz
Q2VsbC0+c3RydWN0dXJlKCp2bSk7CiAgICAgICAgIGRhdGFMb2coIiBzdHJ1Y3R1cmU6IiwgUmF3
UG9pbnRlcihzdHJ1Y3R1cmUpKTsKICAgICAgICAgaWYgKGpzQ2VsbC0+aXNPYmplY3QoKSkgewog
ICAgICAgICAgICAgSlNPYmplY3QqIG9iaiA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggM2Y0NjY4
MDhiZDc2ZjdkYjM5MjZjZmQ5NWMxMDFiMTA0NGQ3ZDE5MS4uMTIwNGZjM2IwZTc3ODQ1NDAzMWVk
MjcxM2ZjYzM3ZDExNzA2NTU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoRXhlY1N0YXRlKiBleGUK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQodmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKS0+Z2xvYmFs
T2JqZWN0KGV4ZWMtPnZtKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QpOwogfQpAQCAtMTc2Nyw3ICsx
NzY3LDcgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qodm0pOwogCiAgICAgYXV0byBhZGRG
dW5jdGlvbiA9IFsmXSAoVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKSB7CiAgICAgICAgIEpTRG9sbGFyVk06OmFkZEZ1
bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG5hbWUsIGZ1bmN0aW9uLCBhcmd1bWVudHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAKaW5kZXggNmJkMDU2YmYzMTBlZTdhYjA5ZGViZTZlYTM0MzZiMTk1MGEwODk2OS4u
ZDlkZmQ4NWUzNGRlMDUxY2E5ZmEwYjYxZTNlY2JlZWZlYjQ3MmI3NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNy
ZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCF3YXNtQ29kZUJsb2NrLT5y
dW5uYWJsZSgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBKU1dlYkFz
c2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdCgpLT5XZWJBc3Nl
bWJseUxpbmtFcnJvclN0cnVjdHVyZSgpLCB3YXNtQ29kZUJsb2NrLT5lcnJvck1lc3NhZ2UoKSkp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgSlNXZWJBc3NlbWJseUxpbmtF
cnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3Qodm0pLT5XZWJBc3NlbWJseUxpbmtF
cnJvclN0cnVjdHVyZSgpLCB3YXNtQ29kZUJsb2NrLT5lcnJvck1lc3NhZ2UoKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OmZpbmFsaXplQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZjxX
YXNtOjoKICAgICB9IGVsc2UgewogICAgICAgICBqc0NvZGVCbG9jayA9IEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2s6OmNyZWF0ZSh2bSwgV1RGTW92ZSh3YXNtQ29kZUJsb2NrKSwgbW9kdWxlKCktPm1v
ZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWpzQ29k
ZUJsb2NrLT5ydW5uYWJsZSgpKSkgewotICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2Jq
ZWN0KCktPldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCksIGpzQ29kZUJsb2NrLT5lcnJv
ck1lc3NhZ2UoKSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpT
V2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0KHZtKS0+
V2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKSwganNDb2RlQmxvY2stPmVycm9yTWVzc2Fn
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9jb2RlQmxv
Y2suc2V0KHZtLCB0aGlzLCBqc0NvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggOTZjYTZmZWMzMzIwYTZlZDQyOGI3Njg1NzMzNWQzOTFh
ZDI1YmQzOS4uN2NkY2U0MGQ5NGJjNWVlNmQxNGQwMjI1ZTcyZDFmZjY0M2IzYzMwOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0YXRpYyBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFn
PiwgQmluZGluZ0ZhaWx1cmU+IGhhbmRsZUJhCiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
aW5zdGFuY2UtPmdsb2JhbE9iamVjdCgqdm0pOwogICAgICAgICAgICAgICAgIGF1dG8qIGVycm9y
ID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJy
b3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2NCBub3Qg
YWxsb3dlZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBmdW5jdGlv
biIpKTsKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBl
cnJvcik7CiAgICAgICAgICAgICB9CkBAIC02NjcsNiArNjY3LDggQEAgdm9pZCogd2FzbVRvSlNF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEluc3Rh
bmNlKiB3YXMKICAgICB3YXNtSW5zdGFuY2UtPnN0b3JlVG9wQ2FsbEZyYW1lKGV4ZWMpOwogICAg
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSB3YXNtSW5zdGFuY2UtPm93bmVyPEpT
V2ViQXNzZW1ibHlJbnN0YW5jZT4oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworCisgICAgLy8gRG8gbm90IHJldHJpZXZlIFZN
JiBmcm9tIEV4ZWNTdGF0ZSBzaW5jZSBFeGVjU3RhdGUncyBjYWxsZWUgaXMgbm90IGEgSlNDZWxs
LgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjQwYTRiNTg3ZDA5M2QwOGIwNDAwOGY1
YWQxNWVhMjk1MWJhYjI2YS4uNTNmNzk4ZGJmZTBiMjRmY2UwYTBiNWE5NjJhOThkYTRjOTk2MDM4
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUKICAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUg
bWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1Rhcmdl
dCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxP
YmplY3QoKS0+V2ViQXNzZW1ibHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKSk7CisgICAgYXV0byog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anND
YWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0
dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KQEAgLTU3LDcgKzU3LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJ1Y3R1cmUq
IGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCk7
CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9u
Kj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52bSgpKS0+V2ViQXNzZW1i
bHlDb21waWxlRXJyb3JTdHJ1Y3R1cmUoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0
ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggMTQzMDAyODJmYzNjMDczYzBkMTcyM2E5OTY4OGVmYWM4YWFmZjIxMy4uOTkx
NjYyNzUxNjE3YmYyNDIzY2VmNzcyOTE4MGYwZjkwMTg2ZTUwNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUq
IGUKICAgICBhdXRvJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
OwotICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlMaW5rRXJy
b3JTdHJ1Y3R1cmUoKSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCh2bSktPldl
YkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2Up
KTsKIH0KQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIGUKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rp
b24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TGlua0Vy
cm9yU3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGpzQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdChleGVjLT52
bSgpKS0+V2ViQXNzZW1ibHlMaW5rRXJyb3JTdHJ1Y3R1cmUoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVz
c2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcsIGZhbHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cAppbmRleCA0YzAwYTg0ZmRkNGMxMDc0ZTlkODY5NWExOWEyYTExNjA2MjQxODhlLi41NjQwNDU5
OWVkNjg0M2Y0YzNlOGIzOTRkYjhkMmU5MTMwMjAzMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBA
IC01MTAsNiArNTEwLDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChVTkxJS0VMWShleGNlcHRpb24pKQogICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uLnZhbHVlKCk7CiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9pbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBmb3JFYWNoRWxlbWVu
dChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgp
IHsKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGVsZW1lbnQuZnVuY3Rpb25JbmRp
Y2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxs
eSBtZWFucyB3ZSdyZSBleHBvcnRpbmcgYW4gaW1wb3J0LgpAQCAtNTMyLDcgKzUzMyw3IEBAIEpT
VmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICB0YWJsZS0+c2V0RnVuY3Rpb24o
dm0sIHRhYmxlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uOjpjcmVhdGUodm0sIG1faW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLCBmdW5jdGlvbklt
cG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0YW5jZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpKTsK
KyAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0YW5j
ZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpKTsKICAgICAgICAgICAgICAgICArK3RhYmxlSW5kZXg7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC01NDUsNyArNTQ2
LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgLy8gRG9lcyAobmV3IEluc3RhbmNlKC4uLikpLmV4cG9ydHMu
Zm9vID09PSB0YWJsZS5nZXQoMCk/CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODI1CiAgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0
aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSgKLSAgICAgICAgICAg
ICAgICB2bSwgbV9pbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCksIHNpZ25hdHVyZS5hcmd1bWVudENv
dW50KCksIFN0cmluZygpLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxs
ZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAg
ICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBTdHJpbmco
KSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50
TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAKICAgICAgICAgICAgIHRhYmxlLT5zZXRG
dW5jdGlvbih2bSwgdGFibGVJbmRleCwgZnVuY3Rpb24pOwogICAgICAgICAgICAgKyt0YWJsZUlu
ZGV4OwpAQCAtNTY2LDcgKzU2Nyw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGlmIChKU09iamVjdCogc3RhcnRGdW5j
dGlvbiA9IG1fc3RhcnRGdW5jdGlvbi5nZXQoKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHN0YXJ0RnVu
Y3Rpb24sIGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENh
bGxEYXRhKHZtLCBzdGFydEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGNhbGwoZXhlYywg
c3RhcnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCAqdm0uZW1w
dHlMaXN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVBy
b3RvdHlwZS5jcHAKaW5kZXggYmU1NWYwNTJlZDMwNDM1NTk4YjU1MjgxM2Q5Nzk1ZjIwNDkxZTcw
YS4uMWU0MGI4YTk5Njk2OWFkNTE4ZGRkZjFiYjY2NDc0MDdkMTQ2NWIwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNw
cApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXCiAgICAgbW9kdWxl
LT5tb2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5
TW9kZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihb
cHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3Jl
YXRpb25Nb2RlLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0
YWJsZSB7CiAgICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jayA9IFdURk1v
dmUocmVmQ29kZUJsb2NrKTsKICAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVk
dWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9i
amVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3Zl
KGNvZGVCbG9jayldICgpIG11dGFibGUgewotICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
aW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsRXhlYygpOwog
ICAgICAgICAgICAgcmVzb2x2ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwg
aW1wb3J0T2JqZWN0LCBjb2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2ZUtpbmQsIGNy
ZWF0aW9uTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pLCAmV2FzbTo6Y3JlYXRlSlNUb1dhc21X
cmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmNwcAppbmRleCBmNWEwNDQ5NmVhNjI3ZDk1YjBjMjc1MGM0ZTYyNzg2ZmYy
ZjQ0NGNmLi5iMTAxOWRjYjJiOWRkMjNkN2RiOGViOTI4YzdlZDRhOGE4NzZmMWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yKEV4ZWNTdGF0ZQogICAgIGF1dG8mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGpzQ2Fz
dDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5X
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpKTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5u
ZXdUYXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KHZtKS0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhl
Yywgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yKEV4ZWNTdGF0ZQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFs
dWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1
Y3R1cmUgPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9i
YWxPYmplY3QoKS0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5q
c0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KGV4ZWMtPnZtKCkpLT5XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclN0cnVjdHVyZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90
aGluZywgZmFsc2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKaW5kZXggOGRkZDRkMjM4ZDI4OTRhMzZl
MzZhZjc0YzMxNDVlMTNlYTVlY2ViNC4uNTUwZDdhOTJlOWM1ODFmNGM0NGIwYjNmY2E4NjBlZmRj
MjMxNmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5VG9KU0NhbGxl
ZSIsICZCYXNlCiAKIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
OjpjcmVhdGUoVk0mIHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUpCiB7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtb2R1bGUtPmdsb2JhbE9iamVjdCgpLT53ZWJBc3NlbWJseVRv
SlNDYWxsZWVTdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1vZHVsZS0+
Z2xvYmFsT2JqZWN0KHZtKS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlKCk7CiAgICAg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXZWJBc3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRvSlNDYWxsZWUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwgbW9kdWxlKTsK
ICAgICByZXR1cm4gY2FsbGVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1J1bGVMaXN0Q3VzdG9tLmNwcAppbmRleCAyY2MwM2M5MjQ5MzVlZDk3NDNmN2NjNDFiMTM1
NDVlMTMxYTczMTczLi5mMDU1MGFhNjQ0M2VlOWQ0NDY1NWI5NWMwOTcyMGU0NjJkY2Q3YmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogYm9vbCBKU0NTU1J1
bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlND
U1NSdWxlTGlzdCoganNDU1NSdWxlTGlzdCA9IGpzQ2FzdDxKU0NTU1J1bGVMaXN0Kj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlmICghanNDU1NSdWxlTGlzdC0+aGFzQ3VzdG9tUHJv
cGVydGllcygpKQorICAgIGlmICghanNDU1NSdWxlTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygq
anNDU1NSdWxlTGlzdC0+dm0oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPndyYXBwZWQoKS5zdHlsZVNo
ZWV0KCkpCiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0
eWxlU2hlZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fs
bGJhY2tEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmNwcAppbmRleCA1NjViYzc0MDc5OWJiZjc3NjBhZGJiYmU1NzE1MGNjZjdkODc3MjRjLi45MGE4
MzdlZWFhZGQ2Nzc0NjU1Yjg2MzVkYjgxZGJlMmMxNTMwNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEpTVmFs
dWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0CiAKICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbk5hbWUuaXNOdWxs
KCkpOwogICAgICAgICBmdW5jdGlvbiA9IGNhbGxiYWNrLT5nZXQoZXhlYywgZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwor
ICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwog
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIHJl
dHVybmVkRXhjZXB0aW9uID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKaW5k
ZXggOTc4MTQ1OWRmODZiNmExZTlmNTFjYWUxZTA0MzE0YTZlZjMwNWY1YS4uZWQxNTZkN2Q2MjVl
NjY1YTExMzUzNDdhNzg2N2MzNmVkNmExY2YxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtNjksMTIgKzY5
LDEzIEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJ
KGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkp
OwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICAKICAgICBKU1ZhbHVlIGZ1bmN0aW9u
ID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgImxvb2t1cE5hbWVzcGFjZVVSSSIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsK
ICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgY2FsbFR5cGUg
PSBtX2N1c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX2N1c3RvbVJl
c29sdmVyLmdldCgpLCBjYWxsRGF0YSk7CisgICAgICAgIGNhbGxUeXBlID0gbV9jdXN0b21SZXNv
bHZlci0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShtX2N1c3RvbVJlc29sdmVyLmdldCgp
LCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewog
ICAgICAgICAgICAgaWYgKFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlID0gbV9nbG9iYWxPYmpl
Y3QtPndyYXBwZWQoKS5jb25zb2xlKCkpCiAgICAgICAgICAgICAgICAgY29uc29sZS0+YWRkTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBtZXRo
b2QuIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWls
dGluQ29uc3RydWN0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAKaW5kZXggMzMzMTUwZTExYTU3YzI0MjAyZTgwZjAx
MDRjNzM5MDk2OWU3ZGU0OC4uODhiMzRkZTUxZTBkMjU5ZmExZmZjOWM4MjU2YzI2ODg5MTIwYWE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29u
c3RydWN0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1
aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHZvaWQgSlNET01CdWls
dGluQ29uc3RydWN0b3JCYXNlOjpjYWxsRnVuY3Rpb25XaXRoQ3VycmVudEFyZ3VtZW50cyhKU0M6
OkV4ZWNTdGF0CiAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKCZmdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRh
KHZtLCAmZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGU6Ok5vbmUpOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVs
ZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNjaGVk
dWxlZEFjdGlvbi5oCmluZGV4IDJlZmY5M2FhMTFkZTc4YzIxMmMyZmY5Y2Y1NmNhZDc1NzI0MmYw
NjQuLmY3MDQwNDVhZmM5MjdmY2FhMTljMThlNWE0OGQ2OTJiNmZkYThiMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNjaGVkdWxlZEFj
dGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExT
Y2hlZHVsZWRBY3Rpb24+IDogRGVmYXVsdENvbnZlcnRlcjxJRExTY2hlZHVsZWRBCiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgICAgICBKU0M6OkNh
bGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBpZiAoZ2V0Q2FsbERhdGEodmFsdWUsIGNhbGxEYXRh
KSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIGlmIChnZXRDYWxsRGF0YSh2bSwg
dmFsdWUsIGNhbGxEYXRhKSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBh
dXRvIGNvZGUgPSBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6Y29udmVydChzdGF0ZSwgdmFsdWUp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm4gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0Lndvcmxk
KCksIFdURk1vdmUoY29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCmluZGV4IGYyZWQ3MjRmZDliOGI4MzhjMDZhY2JjNjE0NDY4MzliM2Q5ZjllZDYuLjhm
OWNhMjZjNDlkMTViZDUyMDMwYTkzMjEwNmFjMzNiYzExNmU0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTIwNiw3ICsyMDYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0l0ZXJhdG9yPiBKU0M6OkpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZQogICAgIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS5hcmd1
bWVudCgxKTsKIAogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxsVHlw
ZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICBK
U0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShzdGF0ZS52bSgpLCBjYWxs
YmFjaywgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25l
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgY2FsbCBjYWxsYmFjayIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTWFwTGlrZS5jcHAKaW5kZXggMzc4ZGUyOTYxNDk0YTgxYWI4Zjk1YjlkMzE1ODVk
ZmE1MmY2MTgzYS4uZmZhMzViMDVmZDE1ZWE3MWVhMTBmNmJjY2YwYTYzYTM3MDJlYWQ3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIEpTQzo6SlNWYWx1ZSBmb3J3YXJkRnVuY3Rpb25DYWxsVG9CYWNraW5nTWFwKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjCiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIAog
ICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9
IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBKU0M6OkNhbGxUeXBl
IGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShzdGF0ZS52bSgpLCBmdW5jdGlvbiwgY2FsbERh
dGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKICAgICBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBmb3IgKHNpemVfdCBjcHRy
ID0gMDsgY3B0ciA8IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsgKytjcHRyKQpAQCAtODUsNyArODUs
NyBAQCBKU0M6OkpTVmFsdWUgZm9yd2FyZEZvckVhY2hDYWxsVG9CYWNraW5nTWFwKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYgogICAgIGdldEJhY2tpbmdNYXAoc3RhdGUsIG1h
cExpa2UpOwogCiAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU0M6OkNhbGxUeXBl
IGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEpT
Qzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHN0YXRlLnZtKCksIGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5v
bmUpOwogICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGZvciAo
c2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgc3RhdGUuYXJndW1lbnRDb3VudCgpOyArK2NwdHIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAppbmRleCA3YTg4ZDgz
MDU1NjlhMmU3Mzg1MmQ5MjQ1YjgzYjgxMjMyNTE4MTUwLi4yNGM1Y2U3MTFhYzYwZTYyYjEyNGJi
NDYyNGNkOWYwNTI1NmNmMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5jcHAKQEAgLTQwLDkgKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIGpzRnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEpTQzo6QXJnTGlzdCYgYXJndW1lbnRzKQogewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQzo6Q2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwg
Y2FsbERhdGEpOworICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBqc0Z1
bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6
Ok5vbmUpOwogICAgIGF1dG8gcmVzdWx0ID0gY2FsbCgmc3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKaW5kZXggMmJjMjU3
ZDVjOTNmZmUwZmYwNGVjZTUzZjY2NDU3MzJmMjVkODYwOC4uMDlhZDI3MzM0MmViY2ZjNjYyMWUw
MTUzNmQwNTBkN2RhNmFjZWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIERlZmVy
cmVkUHJvbWlzZTo6Y2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBmdW5jdGlv
biwgSlNWYWx1ZSByZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBD
YWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkBA
IC0yMDcsNyArMjA3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVhdGVSZWplY3RlZFByb21p
c2VXaXRoVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY28KICAgICBhdXRvIHJlamVj
dGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKIAogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWpl
Y3RGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGF1dG8gY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShz
dGF0ZS52bSgpLCByZWplY3RGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlcHJlY2F0ZWRD
U1NPTVZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVj
YXRlZENTU09NVmFsdWVDdXN0b20uY3BwCmluZGV4IDM3ODY3OTA1NjkwOTFhM2NjODkzYTk0MTE1
MmMzZGFkMjI2ODZmNWEuLjM1Yzc1ZmUzNDcxMjY0MjE3NzU2MDljNDQyOGNhY2YwYTNjZGYxMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZENTU09N
VmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVj
YXRlZENTU09NVmFsdWVDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiBib29sIEpTRGVwcmVjYXRlZENTU09NVmFsdWVPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU0RlcHJlY2F0ZWRDU1NPTVZhbHVlKiBqc0NTU1Zh
bHVlID0ganNDYXN0PEpTRGVwcmVjYXRlZENTU09NVmFsdWUqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7Ci0gICAgaWYgKCFqc0NTU1ZhbHVlLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAg
aWYgKCFqc0NTU1ZhbHVlLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCpqc0NTU1ZhbHVlLT52bSgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVl
Um9vdChyb290KCZqc0NTU1ZhbHVlLT53cmFwcGVkKCkub3duZXIoKSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMTIzZGU0YzBh
MjQ0NGM4NTYyYTg0YTM3ZDhlYmMyNWUyZjQzMzI4ZS4uOWFmYWNiNWY2N2Y5NGU0ZjE2NmY4ZDMx
YzYyMWU4NDdlYmZjNjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICBKU1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uOwogCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSho
YW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YSh2bSwgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOwogCiAgICAgLy8g
SWYganNGdW5jdGlvbiBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwgc2VlIGlmIGl0IGltcGxl
bWVudHMgdGhlIEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhhdAogICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSlNF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0CiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0
aW9uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICAgICAgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOwog
ICAgIH0KIAogICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAppbmRleCA4NDQ4ODA3
NDcwMDRlODM1ZjdlYmUxYmJhYmE4ZGM4ZGE2ZmM2NTM5Li45YTFjODczNDQ2OTUzZTMyMWZiOGU1
NTY5Yzk0ZjM0ODFjY2VmOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7CiAgICAgSlNOb2RlTGlzdCoganNOb2RlTGlzdCA9IGpzQ2FzdDxKU05vZGVMaXN0Kj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlmICghanNOb2RlTGlzdC0+aGFzQ3VzdG9tUHJv
cGVydGllcygpKQorICAgIGlmICghanNOb2RlTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygqanNO
b2RlTGlzdC0+dm0oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoanNOb2RlTGlz
dC0+d3JhcHBlZCgpLmlzTGl2ZU5vZGVMaXN0KCkpCiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNv
bnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+KGpzTm9kZUxp
c3QtPndyYXBwZWQoKSkub3duZXJOb2RlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDRlMTM2YzEx
MGU0OWJiY2I3YTllYmZkNjFjMGIyNzZiODU1ZDhmZDUuLjc2NjllYzdmMmU3ZjA3YWUyNGUwMzZl
MjI3MDNhMDhmMjg1NGJhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIGJv
b2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNj
cmlwdE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHB1dFJlc3VsdCA9IHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+
cHV0KHNjcmlwdE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
cHV0UmVzdWx0ID0gc2NyaXB0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHNj
cmlwdE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsUGx1Z2luKEV4ZWNTdGF0ZSogZXhlYykKICAgICBBU1NFUlQoIWFyZ3Vt
ZW50TGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShzY3JpcHRPYmplY3QsIGNhbGxEYXRhKTsK
KyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGV4ZWMtPnZtKCksIHNjcmlwdE9i
amVjdCwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCk7
CiAKICAgICAvLyBDYWxsIHRoZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCmluZGV4IGNhMzJiYjZhNmU2MTEzYzVjMGE4MWNkMjRlYWQxYzYz
ZDk2YzliZDUuLmJmMGUyMjU5MWU1NDZkMGQ4MWY2M2U0OGQ2NjcwN2ZiYWNkNjFkNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIHdpbmRvdykKIHsKICAgICBBU1NFUlQod2luZG93LmNsYXNzSW5mbygpID09IEpTRE9N
V2luZG93OjppbmZvKCkgfHwgd2luZG93LmNsYXNzSW5mbygpID09IEpTUmVtb3RlRE9NV2luZG93
OjppbmZvKCkpOwogICAgIHNldFRhcmdldCh2bSwgJndpbmRvdyk7Ci0gICAgc3RydWN0dXJlKCkt
PnNldEdsb2JhbE9iamVjdCh2bSwgJndpbmRvdyk7CisgICAgc3RydWN0dXJlKHZtKS0+c2V0R2xv
YmFsT2JqZWN0KHZtLCAmd2luZG93KTsKICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdh
cmJhZ2VDb2xsZWN0U29vbigpOwogfQogCkBAIC0xMDcsMTEgKzEwNywxMSBAQCB2b2lkIEpTV2lu
ZG93UHJveHk6OnNldFdpbmRvdyhBYnN0cmFjdERPTVdpbmRvdyYgZG9tV2luZG93KQogICAgICAg
ICB3aW5kb3cgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlKHZtLCAmd2luZG93U3RydWN0dXJlLCBkb3du
Y2FzdDxET01XaW5kb3c+KGRvbVdpbmRvdyksIHRoaXMpOwogICAgIH0KIAotICAgIHByb3RvdHlw
ZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwgd2luZG93KTsKKyAgICBwcm90b3R5
cGUtPnN0cnVjdHVyZSh2bSktPnNldEdsb2JhbE9iamVjdCh2bSwgd2luZG93KTsKIAogICAgIGF1
dG8mIHByb3BlcnRpZXNTdHJ1Y3R1cmUgPSAqSlNET01XaW5kb3dQcm9wZXJ0aWVzOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHdpbmRvdywgSlNFdmVudFRhcmdldDo6cHJvdG90eXBlKHZtLCAqd2luZG93
KSk7CiAgICAgYXV0byYgcHJvcGVydGllcyA9ICpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmNyZWF0
ZSgmcHJvcGVydGllc1N0cnVjdHVyZSwgKndpbmRvdyk7Ci0gICAgcHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24odm0sICZwcm9wZXJ0aWVzKTsKKyAg
ICBwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCAmcHJvcGVydGllcyk7CiAKICAgICBzZXRXaW5kb3codm0sICp3aW5kb3cpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggNWQ2MTg2
YjZhOWZiYzg4YzUxYTUyOGE4ZDU3NDc3NTEyYzFjOTE5My4uYjc5M2Q0MWJhOTBjZDgwYTk0NWM0
YjczYjAwM2QyYTc3MmQwZDdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlU3RyZWFtLmNwcApAQCAtNjIsOSArNjIsMTAgQEAgUmVmPFJlYWRhYmxlU3RyZWFtPiBS
ZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxS
ZWEKIG5hbWVzcGFjZSBSZWFkYWJsZVN0cmVhbUludGVybmFsIHsKIHN0YXRpYyBpbmxpbmUgSlND
OjpKU1ZhbHVlIGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc0Z1bmN0aW9uLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3Qm
IGFyZ3VtZW50cykKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShzdGF0
ZS52bSgpKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIGF1
dG8gY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAg
ICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwganNGdW5jdGlvbiwgY2FsbERh
dGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKICAgICBh
dXRvIHJlc3VsdCA9IGNhbGwoJnN0YXRlLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAppbmRleCA1NzJlZjU2NzAxMTkxMjE0ODUzMWU1MDgy
NzdjNjRlMTkyMjg0NWU5Li5hYTEyZDNlYmNhNTE1ZmU4YmNmYjU4Nzc3ODk4Zjk4NTI3ODlhMjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUganNGdW5jdGlvbiwgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmd1bWVudHMpCiB7CiAgICAgSlNDOjpD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBhdXRvIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShq
c0Z1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgYXV0byBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERh
dGEoc3RhdGUudm0oKSwganNGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIHJldHVybiBjYWxsKCZz
dGF0ZSwganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCmluZGV4IDUxMDg5NWZjZDU5OTYxODIxZGNkMmZlM2MyOWFkNzI1MGZiMjczNzIuLjE1ZDEy
NmJlMzUzMmI1MzdiMzQwZDQ5YWFmYTUyNjRjMDFmZjMzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0Q2FsbERhdGEobV9mdW5jdGlvbi5nZXQoKSwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxEYXRhKTsKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggMTFmNzY2NGJiOGU3YWZkNmU2YTk3MTg3YTc0OWJmMzgxNmExZjdiOS4uNzM4OGUw
Y2ZhNWMxZTg0ZTc3OTA5ZGFiOGFhODY0OTcyYzhjZDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02OTksMTAg
KzY5OSwxMCBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICB3
cml0ZShUZXJtaW5hdG9yVGFnKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIGdldFByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICBKU1Zh
bHVlIGdldFByb3BlcnR5KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgaWYgKG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbV9leGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIG1fZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKG1fZXhlYywgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CkBAIC0xNTQ3LDcgKzE1NDcsNyBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVl
IGluKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLnJlbW92ZUxhc3QoKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGluVmFsdWUgPSBnZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnRpZXNbaW5kZXhdKTsKKyAg
ICAgICAgICAgICAgICBpblZhbHVlID0gZ2V0UHJvcGVydHkodm0sIG9iamVjdCwgcHJvcGVydGll
c1tpbmRleF0pOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
dHJ1Y3R1cmVkQ2xvbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJl
ZENsb25lLmNwcAppbmRleCBlZWQyMjEyMzVkYzA3ZDFhYzdmNDY3NmRjZDA4ZjE2Yzc4NmNiMGEx
Li4zYTM4YWM1ZWM2YTIzMDExYmRiMTExZWEwMTYxMjhhNWIzYmZlNTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTkwLDI3ICs5MCwy
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVm
ZmVyVmlldyhFeGVjU3RhdGUqIHN0YXRlKQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAg
ICBhdXRvIGJ1ZmZlckNsb25lID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYnVm
ZmVyVmlldy0+c3RydWN0dXJlKHZtKTsKIAogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTSW50OEFy
cmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDhB
cnJheTo6Y3JlYXRlKHN0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZm
ZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDhBcnJheTo6Y3JlYXRlKHN0
YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zm
c2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNJ
bnQxNkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0ludDE2QXJyYXk6OmNyZWF0ZShzdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQxNkFycmF5Ojpj
cmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU0ludDMyQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTSW50MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUo
KSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVy
Vmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDMy
QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVm
ZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVWludDhBcnJheSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNVaW50OEFycmF5OjpjcmVhdGUoc3RhdGUsIGJ1ZmZlclZpZXctPnN0
cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgp
LCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVWludDhBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xv
bmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+KHZtLCB2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRl
KHN0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1
ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoc3RhdGUs
IHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1VpbnQx
NkFycmF5Kj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Vp
bnQxNkFycmF5OjpjcmVhdGUoc3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3Zl
KGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5n
dGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDE2QXJyYXk6OmNy
ZWF0ZShzdGF0ZSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVWludDMyQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0ZShzdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJl
KCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZl
clZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50
MzJBcnJheTo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBi
dWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNGbG9hdDMyQXJyYXkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIGJ1ZmZlclZp
ZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9m
ZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTRmxvYXQzMkFycmF5OjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgV1RGTW92ZShi
dWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3Ro
KCkpKTsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KHZtLCB2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShz
dGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZm
ZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShzdGF0ZSwgc3RydWN0
dXJlLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZm
ZXJWaWV3LT5sZW5ndGgoKSkpOwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2
bSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNy
ZWF0ZShzdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUp
LCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNEYXRhVmlldzo6Y3JlYXRlKHN0YXRlLCBzdHJ1
Y3R1cmUsIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1
ZmZlclZpZXctPmxlbmd0aCgpKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1NDdi
YjY3NDA1YzE4MDU3YTExYzBmZjJlYzYyNmE1MjQ4NDc0YjEwLi44M2FlNTY3NjRhNGJiMWNjNzI4
YTEyZDAwMDljYTg2YzNlYmY3ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgICAgIG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLnNldCgqbV92bSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlJj4oKm1fd29ya2VyR2xvYmFsU2NvcGUpLCBwcm94eSkpOwogICAgICAgICBkZWRp
Y2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgpLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgICAgIGRlZGljYXRl
ZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgZGVkaWNhdGVkQ29udGV4
dFByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCpt
X3ZtLCBKU1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci5nZXQoKSkpOworICAgICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyKTsKKyAgICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS0+c3Ry
dWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7CisgICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnN0cnVj
dHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU1dvcmtl
ckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKSkpOwogCiAgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgcHJveHktPnN0cnVjdHVyZSgpLT5zZXRH
bG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAg
ICAgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB9IGVsc2UgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPmlzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBjb250ZXh0UHJvdG90eXBlU3RydWN0
dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOwpAQCAtMTA0LDExICsxMDQsMTEgQEAgdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICAgICAgY29udGV4dFByb3Rv
dHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
ID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICAgICAgQVNTRVJUKG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIpOwotICAgICAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5n
ZXQoKSk7Ci0gICAgICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5
cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBl
KCptX3ZtLCAqbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKyAgICAgICAgY29u
dGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBt
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgICAgIGNvbnRleHRQcm90b3R5
cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3Zt
LCBKU1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlci5nZXQoKSkpOwogCiAgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAgcHJveHktPnN0cnVjdHVy
ZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdl
dCgpKTsKKyAgICAgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgq
bV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCiAgICAgfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggZDFhZDNlYjg3OTZh
OWE5MDU4YjMxZTc5OGJjMDViM2MxNjhlNzNhZi4uZDk0NThjNTE2YmE3MzcxNjE3MmI5YzUxZGUw
M2U4MWQ0YWRmZWM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgYm9vbCBfTlBOX0ludm9rZURlZmF1bHQoTlBQLCBOUE9iamVjdCogbywg
Y29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3UKICAgICAgICAgLy8gQ2FsbCB0
aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqLT5pbXA7
CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBfTlBOX0ludm9rZShOUFAgbnBwLCBOUE9i
amVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCoKICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBvYmotPmltcC0+Z2V0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJ
ZGVudGlmaWVyKGV4ZWMsIGktPnN0cmluZygpKSk7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgX05Q
Tl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50
MzJfdCBhcmdDb3VudCwKICAgICAgICAgLy8gQ2FsbCB0aGUgY29uc3RydWN0b3Igb2JqZWN0Lgog
ICAgICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gb2JqLT5pbXA7CiAgICAgICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKLSAgICAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gZ2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSk7CisgICAgICAg
IENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0
cnVjdG9yLCBjb25zdHJ1Y3REYXRhKTsKICAgICAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29u
c3RydWN0VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggYTM5
NjRiYmE1NTUxMmJjZDM3YTVlNzI5ZTVjYjdkZTFiNTkxYmI1NC4uMGI1ZjhhOWQ5ZGZiZTRmMzg3
M2M2YTA3YThhODEwOWQzMTMyMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtMzQ4LDcgKzM0OCw3IEBAIC0gKGlkKWNhbGxXZWJTY3Jp
cHRNZXRob2Q6KE5TU3RyaW5nICopbmFtZSB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJncwog
CiAgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlv
biwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGYw
YjhjNTVhYWYyNWM2ZjBiNWEyN2NhMTczMmU3MWZlMWJhMzU2OGIuLjVjYmU1YjQxZTQzMGE3OTIy
MjExM2ViZmEyMzI5MzFiMTEzZTNmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTQwNDUsNyArNDA0NSw3IEBAIEpTVmFsdWUgSW50ZXJuYWxzOjpjbG9uZUFycmF5QnVm
ZmVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBidWZmZXIsIEpTVmFsCiAKICAgICBK
U09iamVjdCogZnVuY3Rpb24gPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0s
IGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5
cGU6Ok5vbmUpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1
bWVudHMuYXBwZW5kKGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggOWY2ZmYyYTY5ZDUxMmQ2NzYyYTY1ZjRiOWQ0NWQ5
MjUxNjdlYmY4Ny4uMDdkZWQ0NGQ4OTUzZWZiMGJmODhkMzYyZTJkMmRhMWQ0OGY3MWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApA
QCAtNTgsOCArNTgsOSBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKGlzPERvY3VtZW50Pigqc2NyaXB0Q29udGV4dCkp
IHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCBJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QsIEludGVybmFsczo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0
Q29udGV4dCkpKSk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+ZXhwb3NlRG9sbGFyVk0oKTsKKyAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBJbnRlcm5hbHM6OmludGVybmFsc0lk
KSwgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIEludGVybmFsczo6Y3JlYXRlKGRvd25jYXN0PERv
Y3VtZW50Pigqc2NyaXB0Q29udGV4dCkpKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+ZXhwb3Nl
RG9sbGFyVk0odm0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCBkMTI2N2Q3N2U1
NzU4NjY0MWYzZDBhYTRiOTk5YjNlMjY5YjM2MmM3Li5mYWY3MWRjMjJiZTBjY2M1OWFlMjRlNGY3
NzNjMzNhNWYzNjQ5ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIGJv
b2wgTlBKU09iamVjdDo6aGFzTWV0aG9kKE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQogICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICByZXR1
cm4gZ2V0Q2FsbERhdGEodmFsdWUsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZTsKKyAgICBy
ZXR1cm4gZ2V0Q2FsbERhdGEodm0sIHZhbHVlLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmU7
CiB9CiAKIGJvb2wgTlBKU09iamVjdDo6aW52b2tlKE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBj
b25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwgTlBWYXJp
YW50KiByZXN1bHQpCkBAIC0yNzgsNyArMjc4LDcgQEAgYm9vbCBOUEpTT2JqZWN0Ojpjb25zdHJ1
Y3QoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE4K
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBDb25zdHJ1
Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0g
Z2V0Q29uc3RydWN0RGF0YShtX2pzT2JqZWN0LmdldCgpLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBtX2pzT2Jq
ZWN0LmdldCgpLCBjb25zdHJ1Y3REYXRhKTsKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25z
dHJ1Y3RUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMyw3ICszMDMs
NyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9rZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzllOWM0NDc2MWUzNDJm
ZTQ2NzQ1NjAxZDc0MWU1ZjgwY2Q1YzMzNy4uMWM4ZDUzMjZmMTRhOTBlNzZkZDlhNWFiYTgyMWJk
Zjc5ZmQ0ZDhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpA
QCAtOTIxLDcgKzkyMSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZv
a2UodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElkZW50aWZpZXImIG1lCiAgICAgRXhlY1N0YXRl
KiBleGVjID0gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKS0+Z2xv
YmFsRXhlYygpOwogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBvYmplY3QtPmdldChleGVjLCBtZXRo
b2ROYW1lKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXggNGU1OWJl
M2QwZDU0M2MzM2MwMzI1OTc5NDhkNmEwMWQ5OGM5NzVhNC4uZTYyYmYyNjNlMzg2MDUwZjFhNjVh
NWQ4ZTU5MjdjNTEwMjc1ZmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgc3RhdGljIGJvb2wg
TlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUs
IGNvbnN0IE5QVmEKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqLT5pbXAt
PmdldChleGVjLCBKU0M6OkJpbmRpbmdzOjppZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihleGVj
LCBpLT5zdHJpbmcoKSkpOwogICAgICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgICAg
ICBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRh
KTsKKyAgICAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbiwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6
Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>